<?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>188212</bug_id>
          
          <creation_ts>2018-07-31 20:32:26 -0700</creation_ts>
          <short_desc>Add self.queueMicrotask(f) on DOMWindow</short_desc>
          <delta_ts>2018-09-18 02:25:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>188247</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>cdumez</cc>
    
    <cc>chi187</cc>
    
    <cc>d</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1446804</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-07-31 20:32:26 -0700</bug_when>
    <thetext>See https://github.com/whatwg/html/issues/512</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1446871</commentid>
    <comment_count>1</comment_count>
      <attachid>346275</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-01 07:22:16 -0700</bug_when>
    <thetext>Created attachment 346275
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447004</commentid>
    <comment_count>2</comment_count>
      <attachid>346275</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-08-01 14:43:33 -0700</bug_when>
    <thetext>Comment on attachment 346275
Patch

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

&gt; Source/WebCore/workers/WorkerGlobalScope.cpp:256
&gt; +    postTask([callback = WTFMove(callback)](ScriptExecutionContext&amp;) {

How can this be correct? Microtasks &amp; tasks are completely different concepts &amp; timing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447010</commentid>
    <comment_count>3</comment_count>
    <who name="Domenic Denicola">d</who>
    <bug_when>2018-08-01 14:49:25 -0700</bug_when>
    <thetext>Spec: https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#microtask-queuing

Tests: https://github.com/web-platform-tests/wpt/pull/6334</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447012</commentid>
    <comment_count>4</comment_count>
      <attachid>346275</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-08-01 14:53:56 -0700</bug_when>
    <thetext>Comment on attachment 346275
Patch

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

&gt;&gt; Source/WebCore/workers/WorkerGlobalScope.cpp:256
&gt;&gt; +    postTask([callback = WTFMove(callback)](ScriptExecutionContext&amp;) {
&gt; 
&gt; How can this be correct? Microtasks &amp; tasks are completely different concepts &amp; timing.

I think we need to hook into JSC&apos;s microtask queue instead here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447113</commentid>
    <comment_count>5</comment_count>
      <attachid>346275</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-01 19:44:28 -0700</bug_when>
    <thetext>Comment on attachment 346275
Patch

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

&gt;&gt;&gt; Source/WebCore/workers/WorkerGlobalScope.cpp:256
&gt;&gt;&gt; +    postTask([callback = WTFMove(callback)](ScriptExecutionContext&amp;) {
&gt;&gt; 
&gt;&gt; How can this be correct? Microtasks &amp; tasks are completely different concepts &amp; timing.
&gt; 
&gt; I think we need to hook into JSC&apos;s microtask queue instead here.

&quot;How can this be correct? Microtasks &amp; tasks are completely different concepts &amp; timing.&quot;

Yes, this is correct in terms of our current implementation.

Unfortunately, our Worker does not support Microtasks as our main thread does. So this code is the same to the current Worker&apos;s microtask queuing mechanism.
We can find that JSWorkerGlobalScopeBase::queueTaskToEventLoop does the same thing, while JSDOMWindowBase::queueTaskToEventLoop posts microtasks correctly.

&quot;I think we need to hook into JSC&apos;s microtask queue instead here.&quot;

The current approach against using JSC&apos;s microtask queue has Pros and Cons.

Pros:
- It skips one level indirection (JSC -&gt; WebCore through function pointer)
- It leverages binding VoidCallback type checking instead of manually typechecking in custom binding code
Cons:
- It does not use JSC&apos;s microtask stack, consistency

Given that this `self.queueMicrotask` is performance-sensitive (If it is not performance-sensitive, we can just use `Promise.resolve().then(callback)`), and I prefer non-custom binding code, I took the current approach in this patch.
But if the consistency is preferable, we can use JSC&apos;s stack in binding custom code. I&apos;ll upload this version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447116</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-08-01 19:58:26 -0700</bug_when>
    <thetext>Here&apos;s a problem though.

If the worker ever supports a feature which schedules a task, then all microtasks are supposed to be drained before such a task is executed. The proposed patch doesn&apos;t implement this semantics.

I don&apos;t think we want to be in the business of auditing everything worker supports and making sure they never schedules a task.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447117</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-01 20:03:59 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #6)
&gt; Here&apos;s a problem though.
&gt; 
&gt; If the worker ever supports a feature which schedules a task, then all
&gt; microtasks are supposed to be drained before such a task is executed. The
&gt; proposed patch doesn&apos;t implement this semantics.
&gt; 
&gt; I don&apos;t think we want to be in the business of auditing everything worker
&gt; supports and making sure they never schedules a task.

OK, then, I&apos;ll implement only DOM window version for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447118</commentid>
    <comment_count>8</comment_count>
      <attachid>346353</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-01 20:09:44 -0700</bug_when>
    <thetext>Created attachment 346353
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447119</commentid>
    <comment_count>9</comment_count>
      <attachid>346354</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-01 20:19:31 -0700</bug_when>
    <thetext>Created attachment 346354
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447120</commentid>
    <comment_count>10</comment_count>
      <attachid>346355</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-01 20:21:27 -0700</bug_when>
    <thetext>Created attachment 346355
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447130</commentid>
    <comment_count>11</comment_count>
      <attachid>346355</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-08-01 20:26:17 -0700</bug_when>
    <thetext>Comment on attachment 346355
Patch

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

&gt; Source/JavaScriptCore/runtime/JSJob.cpp:-48
&gt; -    virtual ~JSJobMicrotask()

Where did the destructor go?

&gt; Source/WebCore/page/DOMWindow.idl:92
&gt; +    [Custom] void queueMicrotask(VoidCallback callback);

So we&apos;re not gonna implement the one in worker??</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447138</commentid>
    <comment_count>12</comment_count>
      <attachid>346355</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-08-01 20:28:17 -0700</bug_when>
    <thetext>Comment on attachment 346355
Patch

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

&gt; Source/JavaScriptCore/runtime/JSJob.cpp:60
&gt; +Ref&lt;Microtask&gt; createJSJob(VM&amp; vm, JSValue job)

I think we should call this createJSTask instead to use the consistent terminology.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447139</commentid>
    <comment_count>13</comment_count>
      <attachid>346355</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-01 20:28:30 -0700</bug_when>
    <thetext>Comment on attachment 346355
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/JSJob.cpp:-48
&gt;&gt; -    virtual ~JSJobMicrotask()
&gt; 
&gt; Where did the destructor go?

Microtask has `virtual ~Microtask()`, so this is not necessary.

&gt;&gt; Source/WebCore/page/DOMWindow.idl:92
&gt;&gt; +    [Custom] void queueMicrotask(VoidCallback callback);
&gt; 
&gt; So we&apos;re not gonna implement the one in worker??

Yes, we will implement it after MicrotaskQueue is adopted in worker environments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447140</commentid>
    <comment_count>14</comment_count>
      <attachid>346355</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-08-01 20:29:24 -0700</bug_when>
    <thetext>Comment on attachment 346355
Patch

Sounds good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447141</commentid>
    <comment_count>15</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-08-01 20:29:43 -0700</bug_when>
    <thetext>Let&apos;s file a bug for the worker one so that we don&apos;t forget though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447150</commentid>
    <comment_count>16</comment_count>
      <attachid>346355</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-01 20:33:14 -0700</bug_when>
    <thetext>Comment on attachment 346355
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/JSJob.cpp:60
&gt;&gt; +Ref&lt;Microtask&gt; createJSJob(VM&amp; vm, JSValue job)
&gt; 
&gt; I think we should call this createJSTask instead to use the consistent terminology.

The interesting thing is that this &quot;Job&quot; is a word used in ECMA262 :P https://tc39.github.io/ecma262/#sec-enqueuejob
Using a word &quot;microtask&quot; in WebKit tree consistently sounds fine. Fixed.

&gt;&gt;&gt; Source/WebCore/page/DOMWindow.idl:92
&gt;&gt;&gt; +    [Custom] void queueMicrotask(VoidCallback callback);
&gt;&gt; 
&gt;&gt; So we&apos;re not gonna implement the one in worker??
&gt; 
&gt; Yes, we will implement it after MicrotaskQueue is adopted in worker environments.

The interesting thing is that this &quot;Job&quot; is a word used in ECMA262 :P https://tc39.github.io/ecma262/#sec-enqueuejob
Using a word &quot;microtask&quot; in WebKit tree consistently sounds fine. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447157</commentid>
    <comment_count>17</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-01 20:37:10 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #15)
&gt; Let&apos;s file a bug for the worker one so that we don&apos;t forget though.

OK, filed in bug 188246 and bug 188247</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447158</commentid>
    <comment_count>18</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-08-01 20:38:12 -0700</bug_when>
    <thetext>Oh, you&apos;re right:
https://html.spec.whatwg.org/#integration-with-the-javascript-job-queue

But I think the definition of job there is slightly different from what we&apos;re doing here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447161</commentid>
    <comment_count>19</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-01 20:55:52 -0700</bug_when>
    <thetext>Committed r234491: &lt;https://trac.webkit.org/changeset/234491&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447162</commentid>
    <comment_count>20</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-01 21:07:52 -0700</bug_when>
    <thetext>&lt;rdar://problem/42841210&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346275</attachid>
            <date>2018-08-01 07:22:16 -0700</date>
            <delta_ts>2018-08-01 20:09:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188212-20180801232215.patch</filename>
            <type>text/plain</type>
            <size>16809</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0NDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2FlMWRiNGUwZWRiZDdl
Y2EzZTdhOTg0NjYyMzEzMGE2MjExYjBlNi4uZDYxMjAzMWE0NjZkMjIyZTFlOGI4YjQzM2E3ODhl
ZDI3MGUwNzE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE4LTA4LTAxICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIEFkZCBzZWxmLnF1
ZXVlTWljcm90YXNrKGYpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODgyMTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFkZHMgc2VsZi5xdWV1ZU1pY3JvdGFzayhmKSwgd2hpY2ggdGFr
ZXMgYSBmdW5jdGlvbiBhbmQgZW5xdWV1ZSBpdCBpbnRvIG1pY3JvdGFzayBxdWV1ZS4KKworICAg
ICAgICBUZXN0czoganMvZG9tL3F1ZXVlLW1pY3JvdGFzay13aW5kb3cuaHRtbAorICAgICAgICAg
ICAgICAganMvZG9tL3F1ZXVlLW1pY3JvdGFzay13b3JrZXJzLmh0bWwKKworICAgICAgICAqIHBh
Z2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cXVldWVNaWNy
b3Rhc2spOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmg6CisgICAgICAgICogcGFnZS9XaW5k
b3dPcldvcmtlckdsb2JhbFNjb3BlLmlkbDoKKyAgICAgICAgVXNlIFZvaWRDYWxsYmFjayBmb3Ig
aG9sZGluZyBhIGZ1bmN0aW9uLgorCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29w
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6cXVldWVNaWNyb3Rh
c2spOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaDoKKwogMjAxOC0wOC0w
MSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0Nvb3Jk
R3JhcGhpY3NdIE1vdmUgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUgdG8gV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDgxM2ZjYWY1NTI1MzA3NWYxOWI4MTIyY2YwMWM2YTk0
MzQ4MzNmYjEuLmMyMmMzNjE5OGFiMTg4MjkzZjgyZDcwYmQ3N2M2ZTlmMTBmY2M4NjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKIAorI2luY2x1ZGUgIkFjdGl2ZURPTUNhbGxi
YWNrTWljcm90YXNrLmgiCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiQmFyUHJvcC5oIgogI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5o
IgpAQCAtNzMsNiArNzQsNyBAQAogI2luY2x1ZGUgIk1lZGlhUXVlcnlNYXRjaGVyLmgiCiAjaW5j
bHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMu
aCIKKyNpbmNsdWRlICJNaWNyb3Rhc2tzLmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlvblNjaGVkdWxl
ci5oIgogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTEwNCw2
ICsxMDYsNyBAQAogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNh
dG9yLmgiCiAjaW5jbHVkZSAiVmlzdWFsVmlld3BvcnQuaCIKKyNpbmNsdWRlICJWb2lkQ2FsbGJh
Y2suaCIKICNpbmNsdWRlICJXZWJLaXRQb2ludC5oIgogI2luY2x1ZGUgIldpbmRvd0ZlYXR1cmVz
LmgiCiAjaW5jbHVkZSAiV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmgiCkBAIC0xNzY0LDYg
KzE3NjcsMTcgQEAgdm9pZCBET01XaW5kb3c6OmNsZWFySW50ZXJ2YWwoaW50IHRpbWVvdXRJZCkK
ICAgICBET01UaW1lcjo6cmVtb3ZlQnlJZCgqY29udGV4dCwgdGltZW91dElkKTsKIH0KIAordm9p
ZCBET01XaW5kb3c6OnF1ZXVlTWljcm90YXNrKFJlZjxWb2lkQ2FsbGJhY2s+JiYgY2FsbGJhY2sp
Cit7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRv
IG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+
KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKSwgKmNvbnRleHQsIFtjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXSgpIHsKKyAgICAgICAgY2FsbGJhY2stPmhhbmRsZUV2ZW50KCk7
CisgICAgfSk7CisgICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChX
VEZNb3ZlKG1pY3JvdGFzaykpOworfQorCiBpbnQgRE9NV2luZG93OjpyZXF1ZXN0QW5pbWF0aW9u
RnJhbWUoUmVmPFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrPiYmIGNhbGxiYWNrKQogewog
ICAgIGNhbGxiYWNrLT5tX3VzZUxlZ2FjeVRpbWVCYXNlID0gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaAppbmRleCA1YzQ4ZTdjZGZkZTQ2NWUyODM2YTI1NzI5NmM5Zjk1Zjc4MGVlOTRmLi5k
NzcxZDc2YTViNWYyOWY1ODRkYTZlYjViNTExNzIzN2M0Njc2MDBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmgKQEAgLTgxLDYgKzgxLDcgQEAgY2xhc3MgU3R5bGVNZWRpYTsKIGNsYXNzIFZpc3Vh
bFZpZXdwb3J0OwogY2xhc3MgV2ViS2l0TmFtZXNwYWNlOwogY2xhc3MgV2ViS2l0UG9pbnQ7Citj
bGFzcyBWb2lkQ2FsbGJhY2s7CiAKIHN0cnVjdCBJbWFnZUJpdG1hcE9wdGlvbnM7CiBzdHJ1Y3Qg
V2luZG93RmVhdHVyZXM7CkBAIC0yNTUsNiArMjU2LDggQEAgY2xhc3MgRE9NV2luZG93IGZpbmFs
CiAgICAgRXhjZXB0aW9uT3I8aW50PiBzZXRJbnRlcnZhbChKU0M6OkV4ZWNTdGF0ZSYsIHN0ZDo6
dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+LCBpbnQgdGltZW91dCwgVmVjdG9yPEpTQzo6U3Ry
b25nPEpTQzo6VW5rbm93bj4+JiYgYXJndW1lbnRzKTsKICAgICB2b2lkIGNsZWFySW50ZXJ2YWwo
aW50IHRpbWVvdXRJZCk7CiAKKyAgICB2b2lkIHF1ZXVlTWljcm90YXNrKFJlZjxWb2lkQ2FsbGJh
Y2s+JiYpOworCiAgICAgaW50IHJlcXVlc3RBbmltYXRpb25GcmFtZShSZWY8UmVxdWVzdEFuaW1h
dGlvbkZyYW1lQ2FsbGJhY2s+JiYpOwogICAgIGludCB3ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJh
bWUoUmVmPFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrPiYmKTsKICAgICB2b2lkIGNhbmNl
bEFuaW1hdGlvbkZyYW1lKGludCBpZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1dpbmRvd09yV29ya2VyR2xvYmFsU2NvcGUuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5k
b3dPcldvcmtlckdsb2JhbFNjb3BlLmlkbAppbmRleCBhMjRmNDI2MTdhNDgxY2E1MDk4ZTEzMzgx
MGM3MTIwM2FkOGNjY2UwLi45N2IwNDAwZGJhMjQ5MDFiNWU2MmFmY2ZjY2IxNTEyZWVhZDY5ZDZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd09yV29ya2VyR2xvYmFsU2Nv
cGUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93T3JXb3JrZXJHbG9iYWxTY29w
ZS5pZGwKQEAgLTQ2LDYgKzQ2LDggQEAgdHlwZWRlZiAoQ2FudmFzSW1hZ2VTb3VyY2Ugb3IgQmxv
YiBvciBJbWFnZURhdGEpIEltYWdlQml0bWFwU291cmNlOwogICAgIFtDYWxsV2l0aD1TY3JpcHRT
dGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIGxvbmcgc2V0SW50ZXJ2YWwoU2NoZWR1bGVkQWN0aW9u
IGhhbmRsZXIsIG9wdGlvbmFsIGxvbmcgdGltZW91dCA9IDAsIGFueS4uLiBhcmd1bWVudHMpOwog
ICAgIHZvaWQgY2xlYXJJbnRlcnZhbChvcHRpb25hbCBsb25nIGhhbmRsZSA9IDApOwogCisgICAg
dm9pZCBxdWV1ZU1pY3JvdGFzayhWb2lkQ2FsbGJhY2sgY2FsbGJhY2spOworCiAgICAgLy8gQmFz
ZTY0IHV0aWxpdHkgbWV0aG9kcy4KICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBh
dG9iKERPTVN0cmluZyBzdHJpbmcpOwogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5n
IGJ0b2EoRE9NU3RyaW5nIHN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGUuY3BwCmluZGV4IGE1YjFiMzZlZGEyZDY4MTE0ODA2YWFhZWQ0NWM1Yjg5Nzk2
ZmExZmIuLjAwNTI5ZWEwOTZjMTgzNGJkMDhhYzA5NTg0OWJhN2QwNTRkMDgwZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC00MCw2ICs0MCw3
IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5Qb2xpY3kuaCIKICNpbmNsdWRlICJTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJTb2NrZXRQcm92aWRlci5oIgorI2luY2x1
ZGUgIlZvaWRDYWxsYmFjay5oIgogI2luY2x1ZGUgIldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJXb3JrZXJMb2FkZXJQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlckxvY2F0
aW9uLmgiCkBAIC0yNTAsNiArMjUxLDEzIEBAIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmNsZWFy
SW50ZXJ2YWwoaW50IHRpbWVvdXRJZCkKICAgICBET01UaW1lcjo6cmVtb3ZlQnlJZCgqdGhpcywg
dGltZW91dElkKTsKIH0KIAordm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6cXVldWVNaWNyb3Rhc2so
UmVmPFZvaWRDYWxsYmFjaz4mJiBjYWxsYmFjaykKK3sKKyAgICBwb3N0VGFzayhbY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICAgICAg
Y2FsbGJhY2stPmhhbmRsZUV2ZW50KCk7CisgICAgfSk7Cit9CisKIEV4Y2VwdGlvbk9yPHZvaWQ+
IFdvcmtlckdsb2JhbFNjb3BlOjppbXBvcnRTY3JpcHRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1
cmxzKQogewogICAgIEFTU0VSVChjb250ZW50U2VjdXJpdHlQb2xpY3koKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKaW5kZXggYmFjMGRiODhkYWQ1NTI3OGE0
MjNkOTg5NmQ3ODA2MTU2YzRkZjhlZC4uZDVjMWI4ZjQzNmNlMGJhZTA4NTBhMGVmZjhhYmE0MWVi
MTVlMDIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxT
Y29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaApA
QCAtNTAsNiArNTAsNyBAQCBjbGFzcyBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOwogY2xhc3Mg
V29ya2VyTG9jYXRpb247CiBjbGFzcyBXb3JrZXJOYXZpZ2F0b3I7CiBjbGFzcyBXb3JrZXJUaHJl
YWQ7CitjbGFzcyBWb2lkQ2FsbGJhY2s7CiAKIG5hbWVzcGFjZSBJREJDbGllbnQgewogY2xhc3Mg
SURCQ29ubmVjdGlvblByb3h5OwpAQCAtOTgsNiArOTksOCBAQCBjbGFzcyBXb3JrZXJHbG9iYWxT
Y29wZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtlckdsb2JhbFNjb3BlPiwgcHVibGljIFN1cHBs
ZW1lbgogICAgIEV4Y2VwdGlvbk9yPGludD4gc2V0SW50ZXJ2YWwoSlNDOjpFeGVjU3RhdGUmLCBz
dGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiwgaW50IHRpbWVvdXQsIFZlY3RvcjxKU0M6
OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFyZ3VtZW50cyk7CiAgICAgdm9pZCBjbGVhckludGVy
dmFsKGludCB0aW1lb3V0SWQpOwogCisgICAgdm9pZCBxdWV1ZU1pY3JvdGFzayhSZWY8Vm9pZENh
bGxiYWNrPiYmKTsKKwogICAgIGJvb2wgaXNDb250ZXh0VGhyZWFkKCkgY29uc3QgZmluYWw7CiAg
ICAgYm9vbCBpc1NlY3VyZUNvbnRleHQoKSBjb25zdCBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDIyZTk1ODcw
YmFlMjgwNjY4NGVmOTJkMGYyMGIwMDViMWNiMmE4MTcuLmIzNTI0NzlmY2QwOTkxNTc1MzM1NTBh
NmM5MGRhNjFiZjZmZWExNzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxOC0wOC0wMSAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBBZGQgc2VsZi5x
dWV1ZU1pY3JvdGFzayhmKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTg4MjEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBqcy9kb20vcXVldWUtbWljcm90YXNrLXdpbmRvdy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGpzL2RvbS9xdWV1ZS1taWNyb3Rhc2std2luZG93Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGpzL2RvbS9xdWV1ZS1taWNyb3Rhc2std29ya2Vycy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9xdWV1ZS1taWNyb3Rhc2std29ya2Vycy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBqcy9kb20vc2NyaXB0LXRlc3RzL3F1ZXVlLW1pY3JvdGFzay13b3Jr
ZXJzLmpzOiBBZGRlZC4KKyAgICAgICAgKG5ldy5Qcm9taXNlKToKKyAgICAgICAgKHRoZW4uKToK
KyAgICAgICAgKHRoZW4pOgorCiAyMDE4LTA3LTMxICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJz
bGluZ0Bzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dIFVucmV2aWV3ZWQgdGVzdCBnYXJk
ZW5pbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vcXVldWUtbWljcm90YXNrLXdp
bmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20vcXVldWUtbWljcm90YXNrLXdp
bmRvdy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2MwNmY1OGNjYjg0ZmRjZjczMjQwNzFiYzA0
ZDA2ZDMwZDNiYWZhZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9xdWV1
ZS1taWNyb3Rhc2std2luZG93LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKKworCitQQVNT
IFF1ZXVlZCBtaWNyb3Rhc2tzIHNob3VsZCBiZSBkcmFpbmVkIGJlZm9yZSBleGVjdXRpbmcgbWFj
cm90YXNrcyAKK1BBU1MgcXVldWVNaWNyb3Rhc2sncyBjYWxsYmFjayBoYXMgemVybyBhcmd1bWVu
dHMgYW5kIHNlbGYgYXMgfHRoaXN8IAorUEFTUyBxdWV1ZU1pY3JvdGFzayBhbmQgUHJvbWlzZSB1
c2VzIHRoZSBzYW1lIE1pY3JvdGFzayBxdWV1ZSAKK1BBU1MgcXVldWVNaWNyb3Rhc2sgc2hvdWxk
IHJlamVjdCBub24tZnVuY3Rpb24gYXJndW1lbnRzIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9qcy9kb20vcXVldWUtbWljcm90YXNrLXdpbmRvdy5odG1sIGIvTGF5b3V0VGVzdHMvanMvZG9t
L3F1ZXVlLW1pY3JvdGFzay13aW5kb3cuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjVlNGY5NDUzYjUxZTYz
NjY5OTU3YzYwYzVmMTA1NmEwMmNlOGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
anMvZG9tL3F1ZXVlLW1pY3JvdGFzay13aW5kb3cuaHRtbApAQCAtMCwwICsxLDExMCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPnNlbGYucXVldWVNaWNyb3Rhc2sg
d29ya3MgaW4gV2luZG93PC90aXRsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpZnJhbWU+PC9p
ZnJhbWU+Cis8c2NyaXB0PgorcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICB2YXIgY291bnRlciA9
IDA7CisgICAgc2VsZi5xdWV1ZU1pY3JvdGFzaygoKSA9PiB7CisgICAgICAgIGFzc2VydF9lcXVh
bHMoY291bnRlcisrLCAxKTsKKyAgICAgICAgc2VsZi5xdWV1ZU1pY3JvdGFzaygoKSA9PiB7Cisg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGNvdW50ZXIrKywgMik7CisgICAgICAgIH0pOworICAg
IH0pOworICAgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4g
eworICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMo
Y291bnRlcisrLCAzKTsKKyAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgfSwgMCk7Cisg
ICAgfSk7CisgICAgYXNzZXJ0X2VxdWFscyhjb3VudGVyKyssIDApOworICAgIHJldHVybiBwcm9t
aXNlOworfSwgYFF1ZXVlZCBtaWNyb3Rhc2tzIHNob3VsZCBiZSBkcmFpbmVkIGJlZm9yZSBleGVj
dXRpbmcgbWFjcm90YXNrc2ApOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICAgIHJldHVybiBu
ZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIHNlbGYucXVldWVNaWNy
b3Rhc2soZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBh
c3NlcnRfZXF1YWxzKGFyZ3VtZW50cy5sZW5ndGgsIDApOworICAgICAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHModGhpcywgc2VsZik7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhmcmFt
ZXMubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhmcmFtZXNb
MF0sIHNlbGYpOworICAgICAgICAgICAgICAgIHZhciBpZnJhbWUgPSBmcmFtZXNbMF07CisgICAg
ICAgICAgICAgICAgaWZyYW1lLnF1ZXVlTWljcm90YXNrKGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMo
dGhpcywgc2VsZik7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyh0
aGlzLCBpZnJhbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5xdWV1ZU1pY3JvdGFz
ayhmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZSBzdHJpY3Qn
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFzc2VydF9lcXVhbHModGhpcywgdW5kZWZpbmVkKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0
KGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICByZWplY3QoZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICByZWpl
Y3QoZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0pOworfSwgYHF1ZXVlTWlj
cm90YXNrJ3MgY2FsbGJhY2sgaGFzIHplcm8gYXJndW1lbnRzIGFuZCBzZWxmIGFzIHx0aGlzfGAp
OworCitwcm9taXNlX3Rlc3QoKCkgPT4geworICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2
ZSAscmVqZWN0KSA9PiB7CisgICAgICAgIHZhciBjb3VudGVyID0gMDsKKyAgICAgICAgUHJvbWlz
ZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGNvdW50
ZXIrKywgMSk7CisgICAgICAgICAgICBzZWxmLnF1ZXVlTWljcm90YXNrKCgpID0+IHsKKyAgICAg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGNvdW50ZXIrKywgMyk7CisgICAgICAgICAgICAgICAg
cmVzb2x2ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgICAgICBzZWxmLnF1
ZXVlTWljcm90YXNrKCgpID0+IHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoY291bnRlcisr
LCAyKTsKKyAgICAgICAgfSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoY291bnRlcisrLCAwKTsK
KyAgICB9KTsKK30sIGBxdWV1ZU1pY3JvdGFzayBhbmQgUHJvbWlzZSB1c2VzIHRoZSBzYW1lIE1p
Y3JvdGFzayBxdWV1ZWApOworCit0ZXN0KCgpID0+IHsKKyAgICBhc3NlcnRfdGhyb3dzKG5ldyBU
eXBlRXJyb3IsICgpID0+IHsKKyAgICAgICAgc2VsZi5xdWV1ZU1pY3JvdGFzaygpOworICAgIH0p
OworICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICBzZWxm
LnF1ZXVlTWljcm90YXNrKG51bGwpOworICAgIH0pOworICAgIGFzc2VydF90aHJvd3MobmV3IFR5
cGVFcnJvciwgKCkgPT4geworICAgICAgICBzZWxmLnF1ZXVlTWljcm90YXNrKHVuZGVmaW5lZCk7
CisgICAgfSk7CisgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yLCAoKSA9PiB7CisgICAg
ICAgIHNlbGYucXVldWVNaWNyb3Rhc2soNDIpOworICAgIH0pOworICAgIGFzc2VydF90aHJvd3Mo
bmV3IFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICBzZWxmLnF1ZXVlTWljcm90YXNrKCI0MiIp
OworICAgIH0pOworICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4geworICAg
ICAgICBzZWxmLnF1ZXVlTWljcm90YXNrKHRydWUpOworICAgIH0pOworICAgIGFzc2VydF90aHJv
d3MobmV3IFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICBzZWxmLnF1ZXVlTWljcm90YXNrKFN5
bWJvbCgiNDIiKSk7CisgICAgfSk7CisgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yLCAo
KSA9PiB7CisgICAgICAgIHNlbGYucXVldWVNaWNyb3Rhc2soe30pOworICAgIH0pOworICAgIGFz
c2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICBzZWxmLnF1ZXVlTWlj
cm90YXNrKHsgaGFuZGxlRXZlbnQoKSB7IH0gfSk7CisgICAgfSk7Cit9LCBgcXVldWVNaWNyb3Rh
c2sgc2hvdWxkIHJlamVjdCBub24tZnVuY3Rpb24gYXJndW1lbnRzYCk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9xdWV1ZS1taWNy
b3Rhc2std29ya2Vycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20vcXVldWUtbWlj
cm90YXNrLXdvcmtlcnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3YjNjZWMzYjg1NTE3ZDQx
ZWQxNmE2MzU3YTQzNWQ3OWZhOTQxMmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9q
cy9kb20vcXVldWUtbWljcm90YXNrLXdvcmtlcnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjUg
QEAKK1N0YXJ0aW5nIHdvcmtlcjogLi9zY3JpcHQtdGVzdHMvcXVldWUtbWljcm90YXNrLXdvcmtl
cnMuanMKK1BBU1MgW1dvcmtlcl0gY291bnRlcisrIGlzIDAKK1BBU1MgW1dvcmtlcl0gY291bnRl
cisrIGlzIDEKK1BBU1MgW1dvcmtlcl0gY291bnRlcisrIGlzIDIKK1BBU1MgW1dvcmtlcl0gY291
bnRlcisrIGlzIDMKK1BBU1MgW1dvcmtlcl0gYXJnc1ZhbHVlLmxlbmd0aCBpcyAwCitQQVNTIFtX
b3JrZXJdIHRoaXNWYWx1ZSBpcyBzZWxmCitQQVNTIFtXb3JrZXJdIHRoaXNWYWx1ZSBpcyB1bmRl
ZmluZWQKK1BBU1MgW1dvcmtlcl0gY291bnRlcisrIGlzIDAKK1BBU1MgW1dvcmtlcl0gY291bnRl
cisrIGlzIDEKK1BBU1MgW1dvcmtlcl0gY291bnRlcisrIGlzIDIKK1BBU1MgW1dvcmtlcl0gY291
bnRlcisrIGlzIDMKK1BBU1MgW1dvcmtlcl0gc2VsZi5xdWV1ZU1pY3JvdGFzaygpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgorUEFTUyBbV29ya2VyXSBz
ZWxmLnF1ZXVlTWljcm90YXNrKG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3Vt
ZW50IDEgKCdjYWxsYmFjaycpIHRvIFdvcmtlckdsb2JhbFNjb3BlLnF1ZXVlTWljcm90YXNrIG11
c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgW1dvcmtlcl0gc2VsZi5xdWV1ZU1pY3JvdGFzayh1bmRl
ZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdjYWxsYmFjaycp
IHRvIFdvcmtlckdsb2JhbFNjb3BlLnF1ZXVlTWljcm90YXNrIG11c3QgYmUgYSBmdW5jdGlvbi4K
K1BBU1MgW1dvcmtlcl0gc2VsZi5xdWV1ZU1pY3JvdGFzayg0MikgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogQXJndW1lbnQgMSAoJ2NhbGxiYWNrJykgdG8gV29ya2VyR2xvYmFsU2NvcGUucXVl
dWVNaWNyb3Rhc2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbV29ya2VyXSBzZWxmLnF1ZXVl
TWljcm90YXNrKCI0MiIpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdj
YWxsYmFjaycpIHRvIFdvcmtlckdsb2JhbFNjb3BlLnF1ZXVlTWljcm90YXNrIG11c3QgYmUgYSBm
dW5jdGlvbi4KK1BBU1MgW1dvcmtlcl0gc2VsZi5xdWV1ZU1pY3JvdGFzayh0cnVlKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAxICgnY2FsbGJhY2snKSB0byBXb3JrZXJHbG9i
YWxTY29wZS5xdWV1ZU1pY3JvdGFzayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFtXb3JrZXJd
IHNlbGYucXVldWVNaWNyb3Rhc2soU3ltYm9sKCI0MiIpKSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBBcmd1bWVudCAxICgnY2FsbGJhY2snKSB0byBXb3JrZXJHbG9iYWxTY29wZS5xdWV1ZU1p
Y3JvdGFzayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFtXb3JrZXJdIHNlbGYucXVldWVNaWNy
b3Rhc2soe30pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdjYWxsYmFj
aycpIHRvIFdvcmtlckdsb2JhbFNjb3BlLnF1ZXVlTWljcm90YXNrIG11c3QgYmUgYSBmdW5jdGlv
bi4KK1BBU1MgW1dvcmtlcl0gc2VsZi5xdWV1ZU1pY3JvdGFzayh7IGhhbmRsZUV2ZW50KCkgeyB9
IH0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdjYWxsYmFjaycpIHRv
IFdvcmtlckdsb2JhbFNjb3BlLnF1ZXVlTWljcm90YXNrIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vcXVldWUtbWljcm90YXNrLXdvcmtlcnMuaHRtbCBiL0xh
eW91dFRlc3RzL2pzL2RvbS9xdWV1ZS1taWNyb3Rhc2std29ya2Vycy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmFjYTI4MDIwNWZkZmU4ZDMyMTRmM2IzNzAxODg0NTQyNWQ2N2QwZGIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9qcy9kb20vcXVldWUtbWljcm90YXNrLXdvcmtlcnMuaHRtbApAQCAt
MCwwICsxLDE0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0Pgord29ya2VyID0gc3RhcnRXb3JrZXIoJy4vc2NyaXB0LXRlc3RzL3F1ZXVl
LW1pY3JvdGFzay13b3JrZXJzLmpzJyk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9zY3JpcHQtdGVzdHMvcXVldWUtbWljcm90YXNr
LXdvcmtlcnMuanMgYi9MYXlvdXRUZXN0cy9qcy9kb20vc2NyaXB0LXRlc3RzL3F1ZXVlLW1pY3Jv
dGFzay13b3JrZXJzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFkYmJiOWZlZDYxMjExZDc3MWM0NGI0YTcwZTc0
NTE2ZmVkYzE3Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vc2NyaXB0
LXRlc3RzL3F1ZXVlLW1pY3JvdGFzay13b3JrZXJzLmpzCkBAIC0wLDAgKzEsNzEgQEAKK2ltcG9y
dFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworCit2YXIgZ2xv
YmFsID0gdGhpczsKKworZ2xvYmFsLmpzVGVzdElzQXN5bmMgPSB0cnVlOwordmFyIHJlamVjdDsK
KwordmFyIGNvdW50ZXIgPSAwOwordmFyIGFyZ3NWYWx1ZSA9IG51bGw7Cit2YXIgdGhpc1ZhbHVl
ID0gbnVsbDsKK25ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICBzZWxmLnF1
ZXVlTWljcm90YXNrKCgpID0+IHsKKyAgICAgICAgc2hvdWxkQmUoYGNvdW50ZXIrK2AsIGAxYCk7
CisgICAgICAgIHNlbGYucXVldWVNaWNyb3Rhc2soKCkgPT4geworICAgICAgICAgICAgc2hvdWxk
QmUoYGNvdW50ZXIrK2AsIGAyYCk7CisgICAgICAgIH0pOworICAgIH0pOworICAgIHNldFRpbWVv
dXQoKCkgPT4geworICAgICAgICBzaG91bGRCZShgY291bnRlcisrYCwgYDNgKTsKKyAgICAgICAg
cmVzb2x2ZSgpOworICAgIH0sIDApOworICAgIHNob3VsZEJlKGBjb3VudGVyKytgLCBgMGApOwor
fSkudGhlbigoKSA9PiB7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3Qp
ID0+IHsKKyAgICAgICAgc2VsZi5xdWV1ZU1pY3JvdGFzayhmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICB0cnkgeworICAgICAgICAgICAgICAgIGFyZ3NWYWx1ZSA9IGFyZ3VtZW50czsKKyAgICAg
ICAgICAgICAgICB0aGlzVmFsdWUgPSB0aGlzOworICAgICAgICAgICAgICAgIHNob3VsZEJlKGBh
cmdzVmFsdWUubGVuZ3RoYCwgYDBgKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZShgdGhpc1Zh
bHVlYCwgYHNlbGZgKTsKKyAgICAgICAgICAgICAgICBzZWxmLnF1ZXVlTWljcm90YXNrKGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgJ3VzZSBzdHJpY3QnOworICAgICAgICAgICAg
ICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1ZhbHVlID0gdGhpczsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKGB0aGlzVmFsdWVgLCBgdW5kZWZpbmVk
YCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICAgICAg
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlKTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSBj
YXRjaCAoZSkgeworICAgICAgICAgICAgICAgIHJlamVjdChlKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSk7CisgICAgfSk7Cit9KS50aGVuKCgpID0+IHsKKyAgICBjb3VudGVyID0gMDsKKyAg
ICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUgLHJlamVjdCkgPT4geworICAgICAgICBQcm9t
aXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIHNob3VsZEJlKGBjb3VudGVy
KytgLCBgMWApOworICAgICAgICAgICAgc2VsZi5xdWV1ZU1pY3JvdGFzaygoKSA9PiB7CisgICAg
ICAgICAgICAgICAgc2hvdWxkQmUoYGNvdW50ZXIrK2AsIGAzYCk7CisgICAgICAgICAgICAgICAg
cmVzb2x2ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgICAgICBzZWxmLnF1
ZXVlTWljcm90YXNrKCgpID0+IHsKKyAgICAgICAgICAgIHNob3VsZEJlKGBjb3VudGVyKytgLCBg
MmApOworICAgICAgICB9KTsKKyAgICAgICAgc2hvdWxkQmUoYGNvdW50ZXIrK2AsIGAwYCk7Cisg
ICAgfSk7Cit9KS50aGVuKCgpID0+IHsKKyAgICBzaG91bGRUaHJvdyhgc2VsZi5xdWV1ZU1pY3Jv
dGFzaygpYCk7CisgICAgc2hvdWxkVGhyb3coYHNlbGYucXVldWVNaWNyb3Rhc2sobnVsbClgKTsK
KyAgICBzaG91bGRUaHJvdyhgc2VsZi5xdWV1ZU1pY3JvdGFzayh1bmRlZmluZWQpYCk7CisgICAg
c2hvdWxkVGhyb3coYHNlbGYucXVldWVNaWNyb3Rhc2soNDIpYCk7CisgICAgc2hvdWxkVGhyb3co
YHNlbGYucXVldWVNaWNyb3Rhc2soIjQyIilgKTsKKyAgICBzaG91bGRUaHJvdyhgc2VsZi5xdWV1
ZU1pY3JvdGFzayh0cnVlKWApOworICAgIHNob3VsZFRocm93KGBzZWxmLnF1ZXVlTWljcm90YXNr
KFN5bWJvbCgiNDIiKSlgKTsKKyAgICBzaG91bGRUaHJvdyhgc2VsZi5xdWV1ZU1pY3JvdGFzayh7
fSlgKTsKKyAgICBzaG91bGRUaHJvdyhgc2VsZi5xdWV1ZU1pY3JvdGFzayh7IGhhbmRsZUV2ZW50
KCkgeyB9IH0pYCk7Cit9KS50aGVuKGZpbmlzaEpTVGVzdCwgZmluaXNoSlNUZXN0KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346353</attachid>
            <date>2018-08-01 20:09:44 -0700</date>
            <delta_ts>2018-08-01 20:19:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188212-20180802120943.patch</filename>
            <type>text/plain</type>
            <size>11048</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0NDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
ZTgxMWM0YzE0ZDAzNjgzMDUxNzc5OTg2NzExNDU1M2E5NzBkZmY2Li4yMzViYjg3ZWFmZGE4MGU5
YmNhZjk3OTg4MmQ2MzBkYWI1N2IzYTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxOC0wOC0wMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBBZGQgc2VsZi5xdWV1ZU1pY3JvdGFzayhmKSBvbiBET01XaW5kb3cK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODIxMgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcnVudGlt
ZS9KU0pvYi5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZUpTSm9iKToKKyAgICAgICAgKEpTQzo6
SlNKb2JNaWNyb3Rhc2s6OnJ1bik6CisgICAgICAgICogcnVudGltZS9KU0pvYi5oOgorCiAyMDE4
LTA3LTMxICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQgMzItYml0IGJ1aWxkIGZpeC4uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGNhZTFkYjRlMGVk
YmQ3ZWNhM2U3YTk4NDY2MjMxMzBhNjIxMWIwZTYuLmUzYWY4MGM3ZGY4YWUyYjdkNjViOTJkYmJk
NWUyNTViOGI1NDA4MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxOC0wOC0wMSAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBBZGQgc2Vs
Zi5xdWV1ZU1pY3JvdGFzayhmKSBvbiBET01XaW5kb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODIxMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBzZWxmLnF1ZXVlTWljcm90
YXNrKGYpIGluIERPTVdpbmRvdywgd2hpY2ggdGFrZXMgYSBmdW5jdGlvbiBhbmQgZW5xdWV1ZSBp
dCBpbnRvIG1pY3JvdGFzayBxdWV1ZS4KKyAgICAgICAgV2UgZG8gbm90IGFkZCB0aGlzIHRvIFdv
cmtlcidzIGdsb2JhbCBzY29wZSBzaW5jZSBvdXIgd29ya2VyIGRvZXMgbm90IHN1cHBvcnQgbWlj
cm90YXNrcyBjb3JyZWN0bHkuCisKKyAgICAgICAgVGVzdHM6IGpzL2RvbS9xdWV1ZS1taWNyb3Rh
c2std2luZG93Lmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpxdWV1ZU1pY3JvdGFzayk6Cisg
ICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorCiAyMDE4LTA4LTAxICBaYW4gRG9iZXJzZWsg
IDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBbQ29vcmRHcmFwaGljc10gTW92ZSBD
b29yZGluYXRlZEJhY2tpbmdTdG9yZSB0byBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0pvYi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0pvYi5jcHAKaW5kZXggN2FjNjYzYTQ4ZDAxNDRhNjY5ZTk3MzMzYTU1Y2I5ZGE2MTM2
NzViOS4uODMwNzZlZGIxNjQ4MjAyYzdjMjQ1NWJiNWY4M2I2NGYzN2Y0NjAxYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNKb2IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSm9iLmNwcApAQCAtNDUsOCArNDUsOSBAQCBjbGFzcyBK
U0pvYk1pY3JvdGFzayBmaW5hbCA6IHB1YmxpYyBNaWNyb3Rhc2sgewogICAgICAgICBtX2FyZ3Vt
ZW50cy5zZXQodm0sIGFyZ3VtZW50cyk7CiAgICAgfQogCi0gICAgdmlydHVhbCB+SlNKb2JNaWNy
b3Rhc2soKQorICAgIEpTSm9iTWljcm90YXNrKFZNJiB2bSwgSlNWYWx1ZSBqb2IpCiAgICAgewor
ICAgICAgICBtX2pvYi5zZXQodm0sIGpvYik7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtNTYsNiAr
NTcsMTEgQEAgY2xhc3MgSlNKb2JNaWNyb3Rhc2sgZmluYWwgOiBwdWJsaWMgTWljcm90YXNrIHsK
ICAgICBTdHJvbmc8SlNBcnJheT4gbV9hcmd1bWVudHM7CiB9OwogCitSZWY8TWljcm90YXNrPiBj
cmVhdGVKU0pvYihWTSYgdm0sIEpTVmFsdWUgam9iKQoreworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEpTSm9iTWljcm90YXNrKHZtLCBqb2IpKTsKK30KKwogUmVmPE1pY3JvdGFzaz4gY3JlYXRl
SlNKb2IoVk0mIHZtLCBKU1ZhbHVlIGpvYiwgSlNBcnJheSogYXJndW1lbnRzKQogewogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEpTSm9iTWljcm90YXNrKHZtLCBqb2IsIGFyZ3VtZW50cykpOwpA
QCAtNzEsMTMgKzc3LDE1IEBAIHZvaWQgSlNKb2JNaWNyb3Rhc2s6OnJ1bihFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgQVNTRVJUKGhhbmRsZXJDYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7CiAKICAg
ICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBoYW5kbGVyQXJndW1lbnRzOwotICAgIGZvciAodW5zaWdu
ZWQgaW5kZXggPSAwLCBsZW5ndGggPSBtX2FyZ3VtZW50cy0+bGVuZ3RoKCk7IGluZGV4IDwgbGVu
Z3RoOyArK2luZGV4KSB7Ci0gICAgICAgIEpTVmFsdWUgYXJnID0gbV9hcmd1bWVudHMtPkpTQXJy
YXk6OmdldChleGVjLCBpbmRleCk7Ci0gICAgICAgIENMRUFSX0FORF9SRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBoYW5kbGVyQXJndW1lbnRzLm92ZXJmbG93Q2hlY2tOb3ROZWVkZWQoKSk7Ci0g
ICAgICAgIGhhbmRsZXJBcmd1bWVudHMuYXBwZW5kKGFyZyk7CisgICAgaWYgKG1fYXJndW1lbnRz
KSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwLCBsZW5ndGggPSBtX2FyZ3VtZW50
cy0+bGVuZ3RoKCk7IGluZGV4IDwgbGVuZ3RoOyArK2luZGV4KSB7CisgICAgICAgICAgICBKU1Zh
bHVlIGFyZyA9IG1fYXJndW1lbnRzLT5KU0FycmF5OjpnZXQoZXhlYywgaW5kZXgpOworICAgICAg
ICAgICAgQ0xFQVJfQU5EX1JFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGhhbmRsZXJBcmd1bWVu
dHMub3ZlcmZsb3dDaGVja05vdE5lZWRlZCgpKTsKKyAgICAgICAgICAgIGhhbmRsZXJBcmd1bWVu
dHMuYXBwZW5kKGFyZyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFVOTElLRUxZKGhhbmRsZXJB
cmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKSkKKyAgICAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgaWYgKFVOTElLRUxZKGhhbmRsZXJBcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKSkKLSAgICAg
ICAgcmV0dXJuOwogICAgIHByb2ZpbGVkQ2FsbChleGVjLCBQcm9maWxpbmdSZWFzb246Ok1pY3Jv
dGFzaywgbV9qb2IuZ2V0KCksIGhhbmRsZXJDYWxsVHlwZSwgaGFuZGxlckNhbGxEYXRhLCBqc1Vu
ZGVmaW5lZCgpLCBoYW5kbGVyQXJndW1lbnRzKTsKICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNKb2IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSm9iLmgKaW5kZXggMGE5ZTYzNmQ5ZWU1
ZGU3ZTVjMDExNzMxZDQ4YzU1ZDVlYTNiOTIyOS4uM2Y4NzlhY2RlOTUxODA5ZjgyZjM3Y2NiMWQ1
ZTc1ZWRiYzQxMzU5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNKb2IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0pvYi5oCkBAIC0z
Myw2ICszMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgTWljcm90YXNrOwogY2xhc3MgSlNB
cnJheTsKIAotUmVmPE1pY3JvdGFzaz4gY3JlYXRlSlNKb2IoVk0mLCBKU1ZhbHVlIGpvYiwgSlNB
cnJheSogYXJndW1lbnRzKTsKK0pTX0VYUE9SVF9QUklWQVRFIFJlZjxNaWNyb3Rhc2s+IGNyZWF0
ZUpTSm9iKFZNJiwgSlNWYWx1ZSBqb2IpOworSlNfRVhQT1JUX1BSSVZBVEUgUmVmPE1pY3JvdGFz
az4gY3JlYXRlSlNKb2IoVk0mLCBKU1ZhbHVlIGpvYiwgSlNBcnJheSogYXJndW1lbnRzKTsKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggMTQwNTAxNWNmMTNmZGZlNjUzYjBmZDQ2NzExYjg3ZjNm
NTA5YzViMi4uYjc0Yjc3NWFlNzhlZTFkZGRkODU2M2ZkMWEwMDQ5NzVmZmFmOGYwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAt
NTIxLDYgKzUyMSwyMyBAQCBKU1ZhbHVlIEpTRE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2coRXhl
Y1N0YXRlJiBzdGF0ZSkKICAgICByZXR1cm4gaGFuZGxlci5yZXR1cm5WYWx1ZSgpOwogfQogCitK
U1ZhbHVlIEpTRE9NV2luZG93OjpxdWV1ZU1pY3JvdGFzayhFeGVjU3RhdGUmIHN0YXRlKQorewor
ICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEp
KQorICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisKKyAgICBKU1ZhbHVlIGZ1bmN0aW9uVmFs
dWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICBpZiAoVU5MSUtFTFkoIWZ1bmN0
aW9uVmFsdWUuaXNGdW5jdGlvbih2bSkpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKHN0YXRlLCBzY29wZSwgMCwgImNhbGxi
YWNrIiwgIldpbmRvdyIsICJxdWV1ZU1pY3JvdGFzayIpKTsKKworICAgIHNjb3BlLnJlbGVhc2Uo
KTsKKyAgICBxdWV1ZU1pY3JvdGFzayhKU0M6OmNyZWF0ZUpTSm9iKHZtLCBmdW5jdGlvblZhbHVl
KSk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKIERPTVdpbmRvdyogSlNET01XaW5k
b3c6OnRvV3JhcHBlZChWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKCF2YWx1ZS5p
c09iamVjdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRs
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IDE0YzM5MmQzNDNlYzYw
MjVkYTE1NWQ3NTUwOWMzMWE4NGMwYTY4ZDcuLmZmNGQ5NTc1MjkwYjc2NDNjN2I5OTcwNWQ3NDVi
YTlmMmJiZGJhMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93Lmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKQEAgLTg5LDYgKzg5LDgg
QEAgdHlwZWRlZiBVU1ZTdHJpbmcgQ1NTT01TdHJpbmc7CiAgICAgRE9NU3RyaW5nPyBwcm9tcHQo
b3B0aW9uYWwgRE9NU3RyaW5nIG1lc3NhZ2UgPSAiIiwgb3B0aW9uYWwgRE9NU3RyaW5nIGRlZmF1
bHRWYWx1ZSA9ICIiKTsKICAgICB2b2lkIHByaW50KCk7CiAKKyAgICBbQ3VzdG9tXSB2b2lkIHF1
ZXVlTWljcm90YXNrKFZvaWRDYWxsYmFjayBjYWxsYmFjayk7CisKICAgICBsb25nIHJlcXVlc3RB
bmltYXRpb25GcmFtZShSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjayBjYWxsYmFjayk7IC8v
IEZJWE1FOiBTaG91bGQgcmV0dXJuIGFuIHVuc2lnbmVkIGxvbmcuCiAgICAgdm9pZCBjYW5jZWxB
bmltYXRpb25GcmFtZShsb25nIGhhbmRsZSk7IC8vIEZJWE1FOiBoYW5kbGUgc2hvdWxkIGJlIGFu
IHVuc2lnbmVkIGxvbmcuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyMmU5NTg3MGJhZTI4MDY2ODRlZjkyZDBmMjBiMDA1
YjFjYjJhODE3Li4xOWJmZTg4MjUwODk1ZmFkNGJmOGM5YWJjYWRmYzUyZWM4NWEzOGNkIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMDgtMDEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+CisKKyAgICAgICAgQWRkIHNlbGYucXVldWVNaWNyb3Rhc2soZikgb24gRE9N
V2luZG93CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODgyMTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGpzL2RvbS9xdWV1ZS1taWNyb3Rhc2std2luZG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICoganMvZG9tL3F1ZXVlLW1pY3JvdGFzay13aW5kb3cuaHRtbDogQWRkZWQuCisKIDIwMTgt
MDctMzEgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAg
IFtXaW5DYWlyb10gVW5yZXZpZXdlZCB0ZXN0IGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL2RvbS9xdWV1ZS1taWNyb3Rhc2std2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2pzL2RvbS9xdWV1ZS1taWNyb3Rhc2std2luZG93LWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jYzA2ZjU4Y2NiODRmZGNmNzMyNDA3MWJjMDRkMDZkMzBkM2JhZmFkCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL3F1ZXVlLW1pY3JvdGFzay13aW5kb3ctZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorCisKK1BBU1MgUXVldWVkIG1pY3JvdGFza3Mgc2hvdWxk
IGJlIGRyYWluZWQgYmVmb3JlIGV4ZWN1dGluZyBtYWNyb3Rhc2tzIAorUEFTUyBxdWV1ZU1pY3Jv
dGFzaydzIGNhbGxiYWNrIGhhcyB6ZXJvIGFyZ3VtZW50cyBhbmQgc2VsZiBhcyB8dGhpc3wgCitQ
QVNTIHF1ZXVlTWljcm90YXNrIGFuZCBQcm9taXNlIHVzZXMgdGhlIHNhbWUgTWljcm90YXNrIHF1
ZXVlIAorUEFTUyBxdWV1ZU1pY3JvdGFzayBzaG91bGQgcmVqZWN0IG5vbi1mdW5jdGlvbiBhcmd1
bWVudHMgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9xdWV1ZS1taWNyb3Rhc2st
d2luZG93Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9kb20vcXVldWUtbWljcm90YXNrLXdpbmRvdy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRiNWU0Zjk0NTNiNTFlNjM2Njk5NTdjNjBjNWYxMDU2YTAyY2U4ZDQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vcXVldWUtbWljcm90YXNrLXdp
bmRvdy5odG1sCkBAIC0wLDAgKzEsMTEwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8dGl0bGU+c2VsZi5xdWV1ZU1pY3JvdGFzayB3b3JrcyBpbiBXaW5kb3c8L3RpdGxlPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGlmcmFtZT48L2lmcmFtZT4KKzxzY3JpcHQ+Citwcm9taXNl
X3Rlc3QoKCkgPT4geworICAgIHZhciBjb3VudGVyID0gMDsKKyAgICBzZWxmLnF1ZXVlTWljcm90
YXNrKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb3VudGVyKyssIDEpOworICAgICAg
ICBzZWxmLnF1ZXVlTWljcm90YXNrKCgpID0+IHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMo
Y291bnRlcisrLCAyKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisgICAgdmFyIHByb21pc2UgPSBu
ZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIHNldFRpbWVvdXQoKCkg
PT4geworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhjb3VudGVyKyssIDMpOworICAgICAgICAg
ICAgcmVzb2x2ZSgpOworICAgICAgICB9LCAwKTsKKyAgICB9KTsKKyAgICBhc3NlcnRfZXF1YWxz
KGNvdW50ZXIrKywgMCk7CisgICAgcmV0dXJuIHByb21pc2U7Cit9LCBgUXVldWVkIG1pY3JvdGFz
a3Mgc2hvdWxkIGJlIGRyYWluZWQgYmVmb3JlIGV4ZWN1dGluZyBtYWNyb3Rhc2tzYCk7CisKK3By
b21pc2VfdGVzdCgoKSA9PiB7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWpl
Y3QpID0+IHsKKyAgICAgICAgc2VsZi5xdWV1ZU1pY3JvdGFzayhmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoYXJndW1lbnRzLmxl
bmd0aCwgMCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0aGlzLCBzZWxmKTsKKyAg
ICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGZyYW1lcy5sZW5ndGgsIDEpOworICAgICAgICAg
ICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGZyYW1lc1swXSwgc2VsZik7CisgICAgICAgICAgICAg
ICAgdmFyIGlmcmFtZSA9IGZyYW1lc1swXTsKKyAgICAgICAgICAgICAgICBpZnJhbWUucXVldWVN
aWNyb3Rhc2soZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0aGlzLCBzZWxmKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKHRoaXMsIGlmcmFtZSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLnF1ZXVlTWljcm90YXNrKGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAndXNlIHN0cmljdCc7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyh0aGlzLCB1bmRlZmluZWQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNv
bHZlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAg
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlKTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSBj
YXRjaCAoZSkgeworICAgICAgICAgICAgICAgIHJlamVjdChlKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSk7CisgICAgfSk7Cit9LCBgcXVldWVNaWNyb3Rhc2sncyBjYWxsYmFjayBoYXMgemVy
byBhcmd1bWVudHMgYW5kIHNlbGYgYXMgfHRoaXN8YCk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7
CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlICxyZWplY3QpID0+IHsKKyAgICAgICAg
dmFyIGNvdW50ZXIgPSAwOworICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHsK
KyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoY291bnRlcisrLCAxKTsKKyAgICAgICAgICAgIHNl
bGYucXVldWVNaWNyb3Rhc2soKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMo
Y291bnRlcisrLCAzKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSk7CisgICAgICAgIHNlbGYucXVldWVNaWNyb3Rhc2soKCkgPT4geworICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhjb3VudGVyKyssIDIpOworICAgICAgICB9KTsKKyAgICAg
ICAgYXNzZXJ0X2VxdWFscyhjb3VudGVyKyssIDApOworICAgIH0pOworfSwgYHF1ZXVlTWljcm90
YXNrIGFuZCBQcm9taXNlIHVzZXMgdGhlIHNhbWUgTWljcm90YXNrIHF1ZXVlYCk7CisKK3Rlc3Qo
KCkgPT4geworICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4geworICAgICAg
ICBzZWxmLnF1ZXVlTWljcm90YXNrKCk7CisgICAgfSk7CisgICAgYXNzZXJ0X3Rocm93cyhuZXcg
VHlwZUVycm9yLCAoKSA9PiB7CisgICAgICAgIHNlbGYucXVldWVNaWNyb3Rhc2sobnVsbCk7Cisg
ICAgfSk7CisgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yLCAoKSA9PiB7CisgICAgICAg
IHNlbGYucXVldWVNaWNyb3Rhc2sodW5kZWZpbmVkKTsKKyAgICB9KTsKKyAgICBhc3NlcnRfdGhy
b3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IHsKKyAgICAgICAgc2VsZi5xdWV1ZU1pY3JvdGFzayg0
Mik7CisgICAgfSk7CisgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yLCAoKSA9PiB7Cisg
ICAgICAgIHNlbGYucXVldWVNaWNyb3Rhc2soIjQyIik7CisgICAgfSk7CisgICAgYXNzZXJ0X3Ro
cm93cyhuZXcgVHlwZUVycm9yLCAoKSA9PiB7CisgICAgICAgIHNlbGYucXVldWVNaWNyb3Rhc2so
dHJ1ZSk7CisgICAgfSk7CisgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yLCAoKSA9PiB7
CisgICAgICAgIHNlbGYucXVldWVNaWNyb3Rhc2soU3ltYm9sKCI0MiIpKTsKKyAgICB9KTsKKyAg
ICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IHsKKyAgICAgICAgc2VsZi5xdWV1
ZU1pY3JvdGFzayh7fSk7CisgICAgfSk7CisgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9y
LCAoKSA9PiB7CisgICAgICAgIHNlbGYucXVldWVNaWNyb3Rhc2soeyBoYW5kbGVFdmVudCgpIHsg
fSB9KTsKKyAgICB9KTsKK30sIGBxdWV1ZU1pY3JvdGFzayBzaG91bGQgcmVqZWN0IG5vbi1mdW5j
dGlvbiBhcmd1bWVudHNgKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346354</attachid>
            <date>2018-08-01 20:19:31 -0700</date>
            <delta_ts>2018-08-01 20:21:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188212-20180802121930.patch</filename>
            <type>text/plain</type>
            <size>12067</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0NDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
ZTgxMWM0YzE0ZDAzNjgzMDUxNzc5OTg2NzExNDU1M2E5NzBkZmY2Li5mMzFiMTU5NDZjODg0OTZk
YjYxNTNjYmI4ZGQyOTM0ZDJmMTM3YmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxOC0wOC0wMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBBZGQgc2VsZi5xdWV1ZU1pY3JvdGFzayhmKSBvbiBET01XaW5kb3cK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODIxMgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogcnVudGltZS9KU0pvYi5jcHA6CisgICAgICAgIChKU0M6OmNy
ZWF0ZUpTSm9iKToKKyAgICAgICAgRXhwb3J0IHRoZW0gdG8gV2ViQ29yZS4KKworICAgICAgICAo
SlNDOjpKU0pvYk1pY3JvdGFzazo6cnVuKToKKyAgICAgICAgKiBydW50aW1lL0pTSm9iLmg6Cisg
ICAgICAgIEFkZCBhbm90aGVyIHZlcnNpb24gb2YgSlNKb2JNaWNyb3Rhc2sgd2hpY2ggZG9lcyBu
b3QgaGF2ZSBhcmd1bWVudHMuCisKIDIwMTgtMDctMzEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21p
bGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCAzMi1iaXQgYnVpbGQgZml4Li4u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggY2FlMWRiNGUwZWRiZDdlY2EzZTdhOTg0NjYyMzEzMGE2MjExYjBlNi4u
NzcwZGJhZjkzZWEzOGFhOWE1YWE3ZDAwNTNhMzYwNzdiMDM5OGY2MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIxIEBACisyMDE4LTA4LTAxICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorCisgICAgICAgIEFkZCBzZWxmLnF1ZXVlTWljcm90YXNrKGYpIG9uIERPTVdpbmRv
dworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4MjEy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBhZGRzIHNlbGYucXVldWVNaWNyb3Rhc2soZikgaW4gRE9NV2luZG93LCB3aGljaCB0YWtl
cyBhIGZ1bmN0aW9uIGFuZCBlbnF1ZXVlIGl0IGludG8gbWljcm90YXNrIHF1ZXVlLgorICAgICAg
ICBXZSBkbyBub3QgYWRkIHRoaXMgdG8gV29ya2VyJ3MgZ2xvYmFsIHNjb3BlIHNpbmNlIG91ciB3
b3JrZXIgZG9lcyBub3Qgc3VwcG9ydCBtaWNyb3Rhc2tzIGNvcnJlY3RseS4KKworICAgICAgICBU
ZXN0czoganMvZG9tL3F1ZXVlLW1pY3JvdGFzay13aW5kb3cuaHRtbAorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01X
aW5kb3c6OnF1ZXVlTWljcm90YXNrKToKKyAgICAgICAgUG9zdCBhIG1pY3JvdGFzayB0byBKU0Mn
cyBtaWNyb3Rhc2sgbWVjaGFuaXNtLiBUaGlzIHdpbGwgZXZlbnR1YWxseSBnbyB0byBXZWJDb3Jl
J3MgTWljcm90YXNrUXVldWUgY29kZS4KKworICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDoK
KwogMjAxOC0wOC0wMSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0Nvb3JkR3JhcGhpY3NdIE1vdmUgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUgdG8gV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDM0OWYxN2QwN2RmMjk3
OWE0NGZhZjA1MWRhMzBkODZkYzNmM2NjZDMuLjUyODc1NjA5ZGNhZTk4ZmY0ZjEyZmQxMGExNjIw
NjgzMjFjYjQ4MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTc5NCw2
ICs3OTQsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwog
ICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RJbmxpbmVzLmgKICAgICBydW50aW1lL0pTSW50ZXJu
YWxQcm9taXNlLmgKICAgICBydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuaAorICAg
IHJ1bnRpbWUvSlNKb2IuaAogICAgIHJ1bnRpbWUvSlNMb2NrLmgKICAgICBydW50aW1lL0pTTWFw
LmgKICAgICBydW50aW1lL0pTTWFwSXRlcmF0b3IuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNKb2IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNKb2IuY3BwCmluZGV4IDdhYzY2M2E0OGQwMTQ0YTY2OWU5NzMzM2E1NWNiOWRhNjEzNjc1
YjkuLjgzMDc2ZWRiMTY0ODIwMmM3YzI0NTViYjVmODNiNjRmMzdmNDYwMWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSm9iLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0pvYi5jcHAKQEAgLTQ1LDggKzQ1LDkgQEAgY2xhc3MgSlNK
b2JNaWNyb3Rhc2sgZmluYWwgOiBwdWJsaWMgTWljcm90YXNrIHsKICAgICAgICAgbV9hcmd1bWVu
dHMuc2V0KHZtLCBhcmd1bWVudHMpOwogICAgIH0KIAotICAgIHZpcnR1YWwgfkpTSm9iTWljcm90
YXNrKCkKKyAgICBKU0pvYk1pY3JvdGFzayhWTSYgdm0sIEpTVmFsdWUgam9iKQogICAgIHsKKyAg
ICAgICAgbV9qb2Iuc2V0KHZtLCBqb2IpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTU2LDYgKzU3
LDExIEBAIGNsYXNzIEpTSm9iTWljcm90YXNrIGZpbmFsIDogcHVibGljIE1pY3JvdGFzayB7CiAg
ICAgU3Ryb25nPEpTQXJyYXk+IG1fYXJndW1lbnRzOwogfTsKIAorUmVmPE1pY3JvdGFzaz4gY3Jl
YXRlSlNKb2IoVk0mIHZtLCBKU1ZhbHVlIGpvYikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBKU0pvYk1pY3JvdGFzayh2bSwgam9iKSk7Cit9CisKIFJlZjxNaWNyb3Rhc2s+IGNyZWF0ZUpT
Sm9iKFZNJiB2bSwgSlNWYWx1ZSBqb2IsIEpTQXJyYXkqIGFyZ3VtZW50cykKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBKU0pvYk1pY3JvdGFzayh2bSwgam9iLCBhcmd1bWVudHMpKTsKQEAg
LTcxLDEzICs3NywxNSBAQCB2b2lkIEpTSm9iTWljcm90YXNrOjpydW4oRXhlY1N0YXRlKiBleGVj
KQogICAgIEFTU0VSVChoYW5kbGVyQ2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOwogCiAgICAg
TWFya2VkQXJndW1lbnRCdWZmZXIgaGFuZGxlckFyZ3VtZW50czsKLSAgICBmb3IgKHVuc2lnbmVk
IGluZGV4ID0gMCwgbGVuZ3RoID0gbV9hcmd1bWVudHMtPmxlbmd0aCgpOyBpbmRleCA8IGxlbmd0
aDsgKytpbmRleCkgewotICAgICAgICBKU1ZhbHVlIGFyZyA9IG1fYXJndW1lbnRzLT5KU0FycmF5
OjpnZXQoZXhlYywgaW5kZXgpOwotICAgICAgICBDTEVBUl9BTkRfUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgaGFuZGxlckFyZ3VtZW50cy5vdmVyZmxvd0NoZWNrTm90TmVlZGVkKCkpOwotICAg
ICAgICBoYW5kbGVyQXJndW1lbnRzLmFwcGVuZChhcmcpOworICAgIGlmIChtX2FyZ3VtZW50cykg
eworICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMCwgbGVuZ3RoID0gbV9hcmd1bWVudHMt
Pmxlbmd0aCgpOyBpbmRleCA8IGxlbmd0aDsgKytpbmRleCkgeworICAgICAgICAgICAgSlNWYWx1
ZSBhcmcgPSBtX2FyZ3VtZW50cy0+SlNBcnJheTo6Z2V0KGV4ZWMsIGluZGV4KTsKKyAgICAgICAg
ICAgIENMRUFSX0FORF9SRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBoYW5kbGVyQXJndW1lbnRz
Lm92ZXJmbG93Q2hlY2tOb3ROZWVkZWQoKSk7CisgICAgICAgICAgICBoYW5kbGVyQXJndW1lbnRz
LmFwcGVuZChhcmcpOworICAgICAgICB9CisgICAgICAgIGlmIChVTkxJS0VMWShoYW5kbGVyQXJn
dW1lbnRzLmhhc092ZXJmbG93ZWQoKSkpCisgICAgICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IGlmIChVTkxJS0VMWShoYW5kbGVyQXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSkpCi0gICAgICAg
IHJldHVybjsKICAgICBwcm9maWxlZENhbGwoZXhlYywgUHJvZmlsaW5nUmVhc29uOjpNaWNyb3Rh
c2ssIG1fam9iLmdldCgpLCBoYW5kbGVyQ2FsbFR5cGUsIGhhbmRsZXJDYWxsRGF0YSwganNVbmRl
ZmluZWQoKSwgaGFuZGxlckFyZ3VtZW50cyk7CiAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSm9iLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0pvYi5oCmluZGV4IDBhOWU2MzZkOWVlNWRl
N2U1YzAxMTczMWQ0OGM1NWQ1ZWEzYjkyMjkuLjNmODc5YWNkZTk1MTgwOWY4MmYzN2NjYjFkNWU3
NWVkYmM0MTM1OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Sm9iLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNKb2IuaApAQCAtMzMs
NiArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIE1pY3JvdGFzazsKIGNsYXNzIEpTQXJy
YXk7CiAKLVJlZjxNaWNyb3Rhc2s+IGNyZWF0ZUpTSm9iKFZNJiwgSlNWYWx1ZSBqb2IsIEpTQXJy
YXkqIGFyZ3VtZW50cyk7CitKU19FWFBPUlRfUFJJVkFURSBSZWY8TWljcm90YXNrPiBjcmVhdGVK
U0pvYihWTSYsIEpTVmFsdWUgam9iKTsKK0pTX0VYUE9SVF9QUklWQVRFIFJlZjxNaWNyb3Rhc2s+
IGNyZWF0ZUpTSm9iKFZNJiwgSlNWYWx1ZSBqb2IsIEpTQXJyYXkqIGFyZ3VtZW50cyk7CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dDdXN0b20uY3BwCmluZGV4IDE0MDUwMTVjZjEzZmRmZTY1M2IwZmQ0NjcxMWI4N2YzZjUw
OWM1YjIuLmViYWY3Njk0YzgwMzRlM2JkNzI0NzE4YTc1NTU2NGYyMmQxNmM5MjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTQ2
LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0Ns
aWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNKb2IuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9M
b29rdXAuaD4KIAogI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCkBAIC01MjEsNiAr
NTIyLDIzIEBAIEpTVmFsdWUgSlNET01XaW5kb3c6OnNob3dNb2RhbERpYWxvZyhFeGVjU3RhdGUm
IHN0YXRlKQogICAgIHJldHVybiBoYW5kbGVyLnJldHVyblZhbHVlKCk7CiB9CiAKK0pTVmFsdWUg
SlNET01XaW5kb3c6OnF1ZXVlTWljcm90YXNrKEV4ZWNTdGF0ZSYgc3RhdGUpCit7CisgICAgVk0m
IHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCisgICAg
ICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKworICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IHN0
YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApOworICAgIGlmIChVTkxJS0VMWSghZnVuY3Rpb25WYWx1
ZS5pc0Z1bmN0aW9uKHZtKSkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dB
cmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3Ioc3RhdGUsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAi
V2luZG93IiwgInF1ZXVlTWljcm90YXNrIikpOworCisgICAgc2NvcGUucmVsZWFzZSgpOworICAg
IHF1ZXVlTWljcm90YXNrKEpTQzo6Y3JlYXRlSlNKb2Iodm0sIGZ1bmN0aW9uVmFsdWUpKTsKKyAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKwogRE9NV2luZG93KiBKU0RPTVdpbmRvdzo6dG9X
cmFwcGVkKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKaW5kZXggMTRjMzkyZDM0M2VjNjAyNWRhMTU1
ZDc1NTA5YzMxYTg0YzBhNjhkNy4uZmY0ZDk1NzUyOTBiNzY0M2M3Yjk5NzA1ZDc0NWJhOWYyYmJk
YmEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbApAQCAtODksNiArODksOCBAQCB0eXBl
ZGVmIFVTVlN0cmluZyBDU1NPTVN0cmluZzsKICAgICBET01TdHJpbmc/IHByb21wdChvcHRpb25h
bCBET01TdHJpbmcgbWVzc2FnZSA9ICIiLCBvcHRpb25hbCBET01TdHJpbmcgZGVmYXVsdFZhbHVl
ID0gIiIpOwogICAgIHZvaWQgcHJpbnQoKTsKIAorICAgIFtDdXN0b21dIHZvaWQgcXVldWVNaWNy
b3Rhc2soVm9pZENhbGxiYWNrIGNhbGxiYWNrKTsKKwogICAgIGxvbmcgcmVxdWVzdEFuaW1hdGlv
bkZyYW1lKFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrIGNhbGxiYWNrKTsgLy8gRklYTUU6
IFNob3VsZCByZXR1cm4gYW4gdW5zaWduZWQgbG9uZy4KICAgICB2b2lkIGNhbmNlbEFuaW1hdGlv
bkZyYW1lKGxvbmcgaGFuZGxlKTsgLy8gRklYTUU6IGhhbmRsZSBzaG91bGQgYmUgYW4gdW5zaWdu
ZWQgbG9uZy4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDIyZTk1ODcwYmFlMjgwNjY4NGVmOTJkMGYyMGIwMDViMWNiMmE4
MTcuLjE5YmZlODgyNTA4OTVmYWQ0YmY4YzlhYmNhZGZjNTJlYzg1YTM4Y2QgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxOC0wOC0wMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBBZGQgc2VsZi5xdWV1ZU1pY3JvdGFzayhmKSBvbiBET01XaW5kb3cK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODIxMgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoganMvZG9t
L3F1ZXVlLW1pY3JvdGFzay13aW5kb3ctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBq
cy9kb20vcXVldWUtbWljcm90YXNrLXdpbmRvdy5odG1sOiBBZGRlZC4KKwogMjAxOC0wNy0zMSAg
Um9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgW1dpbkNh
aXJvXSBVbnJldmlld2VkIHRlc3QgZ2FyZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvZG9tL3F1ZXVlLW1pY3JvdGFzay13aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
anMvZG9tL3F1ZXVlLW1pY3JvdGFzay13aW5kb3ctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNj
MDZmNThjY2I4NGZkY2Y3MzI0MDcxYmMwNGQwNmQzMGQzYmFmYWQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9qcy9kb20vcXVldWUtbWljcm90YXNrLXdpbmRvdy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw3IEBACisKKworUEFTUyBRdWV1ZWQgbWljcm90YXNrcyBzaG91bGQgYmUgZHJh
aW5lZCBiZWZvcmUgZXhlY3V0aW5nIG1hY3JvdGFza3MgCitQQVNTIHF1ZXVlTWljcm90YXNrJ3Mg
Y2FsbGJhY2sgaGFzIHplcm8gYXJndW1lbnRzIGFuZCBzZWxmIGFzIHx0aGlzfCAKK1BBU1MgcXVl
dWVNaWNyb3Rhc2sgYW5kIFByb21pc2UgdXNlcyB0aGUgc2FtZSBNaWNyb3Rhc2sgcXVldWUgCitQ
QVNTIHF1ZXVlTWljcm90YXNrIHNob3VsZCByZWplY3Qgbm9uLWZ1bmN0aW9uIGFyZ3VtZW50cyAK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL3F1ZXVlLW1pY3JvdGFzay13aW5kb3cu
aHRtbCBiL0xheW91dFRlc3RzL2pzL2RvbS9xdWV1ZS1taWNyb3Rhc2std2luZG93Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGI1ZTRmOTQ1M2I1MWU2MzY2OTk1N2M2MGM1ZjEwNTZhMDJjZThkNAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9xdWV1ZS1taWNyb3Rhc2std2luZG93Lmh0
bWwKQEAgLTAsMCArMSwxMTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0
aXRsZT5zZWxmLnF1ZXVlTWljcm90YXNrIHdvcmtzIGluIFdpbmRvdzwvdGl0bGU+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8aWZyYW1lPjwvaWZyYW1lPgorPHNjcmlwdD4KK3Byb21pc2VfdGVzdCgo
KSA9PiB7CisgICAgdmFyIGNvdW50ZXIgPSAwOworICAgIHNlbGYucXVldWVNaWNyb3Rhc2soKCkg
PT4geworICAgICAgICBhc3NlcnRfZXF1YWxzKGNvdW50ZXIrKywgMSk7CisgICAgICAgIHNlbGYu
cXVldWVNaWNyb3Rhc2soKCkgPT4geworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhjb3VudGVy
KyssIDIpOworICAgICAgICB9KTsKKyAgICB9KTsKKyAgICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9t
aXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7Cisg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGNvdW50ZXIrKywgMyk7CisgICAgICAgICAgICByZXNv
bHZlKCk7CisgICAgICAgIH0sIDApOworICAgIH0pOworICAgIGFzc2VydF9lcXVhbHMoY291bnRl
cisrLCAwKTsKKyAgICByZXR1cm4gcHJvbWlzZTsKK30sIGBRdWV1ZWQgbWljcm90YXNrcyBzaG91
bGQgYmUgZHJhaW5lZCBiZWZvcmUgZXhlY3V0aW5nIG1hY3JvdGFza3NgKTsKKworcHJvbWlzZV90
ZXN0KCgpID0+IHsKKyAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4g
eworICAgICAgICBzZWxmLnF1ZXVlTWljcm90YXNrKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
IHRyeSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhhcmd1bWVudHMubGVuZ3RoLCAw
KTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHRoaXMsIHNlbGYpOworICAgICAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHMoZnJhbWVzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICAgICAg
YXNzZXJ0X25vdF9lcXVhbHMoZnJhbWVzWzBdLCBzZWxmKTsKKyAgICAgICAgICAgICAgICB2YXIg
aWZyYW1lID0gZnJhbWVzWzBdOworICAgICAgICAgICAgICAgIGlmcmFtZS5xdWV1ZU1pY3JvdGFz
ayhmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHRoaXMsIHNlbGYpOworICAgICAgICAgICAgICAgICAg
ICAgICAgYXNzZXJ0X25vdF9lcXVhbHModGhpcywgaWZyYW1lKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYucXVldWVNaWNyb3Rhc2soZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICd1c2Ugc3RyaWN0JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHRoaXMs
IHVuZGVmaW5lZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlamVjdChlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgfSBj
YXRjaCAoZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGUpOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9IGNhdGNoIChl
KSB7CisgICAgICAgICAgICAgICAgcmVqZWN0KGUpOworICAgICAgICAgICAgfQorICAgICAgICB9
KTsKKyAgICB9KTsKK30sIGBxdWV1ZU1pY3JvdGFzaydzIGNhbGxiYWNrIGhhcyB6ZXJvIGFyZ3Vt
ZW50cyBhbmQgc2VsZiBhcyB8dGhpc3xgKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICBy
ZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUgLHJlamVjdCkgPT4geworICAgICAgICB2YXIgY291
bnRlciA9IDA7CisgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4geworICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhjb3VudGVyKyssIDEpOworICAgICAgICAgICAgc2VsZi5xdWV1
ZU1pY3JvdGFzaygoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhjb3VudGVy
KyssIDMpOworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9KTsKKyAgICAgICAgc2VsZi5xdWV1ZU1pY3JvdGFzaygoKSA9PiB7CisgICAgICAgICAg
ICBhc3NlcnRfZXF1YWxzKGNvdW50ZXIrKywgMik7CisgICAgICAgIH0pOworICAgICAgICBhc3Nl
cnRfZXF1YWxzKGNvdW50ZXIrKywgMCk7CisgICAgfSk7Cit9LCBgcXVldWVNaWNyb3Rhc2sgYW5k
IFByb21pc2UgdXNlcyB0aGUgc2FtZSBNaWNyb3Rhc2sgcXVldWVgKTsKKwordGVzdCgoKSA9PiB7
CisgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yLCAoKSA9PiB7CisgICAgICAgIHNlbGYu
cXVldWVNaWNyb3Rhc2soKTsKKyAgICB9KTsKKyAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJy
b3IsICgpID0+IHsKKyAgICAgICAgc2VsZi5xdWV1ZU1pY3JvdGFzayhudWxsKTsKKyAgICB9KTsK
KyAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IHsKKyAgICAgICAgc2VsZi5x
dWV1ZU1pY3JvdGFzayh1bmRlZmluZWQpOworICAgIH0pOworICAgIGFzc2VydF90aHJvd3MobmV3
IFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICBzZWxmLnF1ZXVlTWljcm90YXNrKDQyKTsKKyAg
ICB9KTsKKyAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IHsKKyAgICAgICAg
c2VsZi5xdWV1ZU1pY3JvdGFzaygiNDIiKTsKKyAgICB9KTsKKyAgICBhc3NlcnRfdGhyb3dzKG5l
dyBUeXBlRXJyb3IsICgpID0+IHsKKyAgICAgICAgc2VsZi5xdWV1ZU1pY3JvdGFzayh0cnVlKTsK
KyAgICB9KTsKKyAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IHsKKyAgICAg
ICAgc2VsZi5xdWV1ZU1pY3JvdGFzayhTeW1ib2woIjQyIikpOworICAgIH0pOworICAgIGFzc2Vy
dF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICBzZWxmLnF1ZXVlTWljcm90
YXNrKHt9KTsKKyAgICB9KTsKKyAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+
IHsKKyAgICAgICAgc2VsZi5xdWV1ZU1pY3JvdGFzayh7IGhhbmRsZUV2ZW50KCkgeyB9IH0pOwor
ICAgIH0pOworfSwgYHF1ZXVlTWljcm90YXNrIHNob3VsZCByZWplY3Qgbm9uLWZ1bmN0aW9uIGFy
Z3VtZW50c2ApOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346355</attachid>
            <date>2018-08-01 20:21:27 -0700</date>
            <delta_ts>2018-08-01 20:29:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188212-20180802122125.patch</filename>
            <type>text/plain</type>
            <size>12073</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0NDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
ZTgxMWM0YzE0ZDAzNjgzMDUxNzc5OTg2NzExNDU1M2E5NzBkZmY2Li5mMzFiMTU5NDZjODg0OTZk
YjYxNTNjYmI4ZGQyOTM0ZDJmMTM3YmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxOC0wOC0wMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBBZGQgc2VsZi5xdWV1ZU1pY3JvdGFzayhmKSBvbiBET01XaW5kb3cK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODIxMgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogcnVudGltZS9KU0pvYi5jcHA6CisgICAgICAgIChKU0M6OmNy
ZWF0ZUpTSm9iKToKKyAgICAgICAgRXhwb3J0IHRoZW0gdG8gV2ViQ29yZS4KKworICAgICAgICAo
SlNDOjpKU0pvYk1pY3JvdGFzazo6cnVuKToKKyAgICAgICAgKiBydW50aW1lL0pTSm9iLmg6Cisg
ICAgICAgIEFkZCBhbm90aGVyIHZlcnNpb24gb2YgSlNKb2JNaWNyb3Rhc2sgd2hpY2ggZG9lcyBu
b3QgaGF2ZSBhcmd1bWVudHMuCisKIDIwMTgtMDctMzEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21p
bGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCAzMi1iaXQgYnVpbGQgZml4Li4u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggY2FlMWRiNGUwZWRiZDdlY2EzZTdhOTg0NjYyMzEzMGE2MjExYjBlNi4u
NzcwZGJhZjkzZWEzOGFhOWE1YWE3ZDAwNTNhMzYwNzdiMDM5OGY2MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIxIEBACisyMDE4LTA4LTAxICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorCisgICAgICAgIEFkZCBzZWxmLnF1ZXVlTWljcm90YXNrKGYpIG9uIERPTVdpbmRv
dworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4MjEy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBhZGRzIHNlbGYucXVldWVNaWNyb3Rhc2soZikgaW4gRE9NV2luZG93LCB3aGljaCB0YWtl
cyBhIGZ1bmN0aW9uIGFuZCBlbnF1ZXVlIGl0IGludG8gbWljcm90YXNrIHF1ZXVlLgorICAgICAg
ICBXZSBkbyBub3QgYWRkIHRoaXMgdG8gV29ya2VyJ3MgZ2xvYmFsIHNjb3BlIHNpbmNlIG91ciB3
b3JrZXIgZG9lcyBub3Qgc3VwcG9ydCBtaWNyb3Rhc2tzIGNvcnJlY3RseS4KKworICAgICAgICBU
ZXN0czoganMvZG9tL3F1ZXVlLW1pY3JvdGFzay13aW5kb3cuaHRtbAorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01X
aW5kb3c6OnF1ZXVlTWljcm90YXNrKToKKyAgICAgICAgUG9zdCBhIG1pY3JvdGFzayB0byBKU0Mn
cyBtaWNyb3Rhc2sgbWVjaGFuaXNtLiBUaGlzIHdpbGwgZXZlbnR1YWxseSBnbyB0byBXZWJDb3Jl
J3MgTWljcm90YXNrUXVldWUgY29kZS4KKworICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDoK
KwogMjAxOC0wOC0wMSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0Nvb3JkR3JhcGhpY3NdIE1vdmUgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUgdG8gV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDM0OWYxN2QwN2RmMjk3
OWE0NGZhZjA1MWRhMzBkODZkYzNmM2NjZDMuLjUyODc1NjA5ZGNhZTk4ZmY0ZjEyZmQxMGExNjIw
NjgzMjFjYjQ4MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTc5NCw2
ICs3OTQsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwog
ICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RJbmxpbmVzLmgKICAgICBydW50aW1lL0pTSW50ZXJu
YWxQcm9taXNlLmgKICAgICBydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuaAorICAg
IHJ1bnRpbWUvSlNKb2IuaAogICAgIHJ1bnRpbWUvSlNMb2NrLmgKICAgICBydW50aW1lL0pTTWFw
LmgKICAgICBydW50aW1lL0pTTWFwSXRlcmF0b3IuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNKb2IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNKb2IuY3BwCmluZGV4IDdhYzY2M2E0OGQwMTQ0YTY2OWU5NzMzM2E1NWNiOWRhNjEzNjc1
YjkuLjgzMDc2ZWRiMTY0ODIwMmM3YzI0NTViYjVmODNiNjRmMzdmNDYwMWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSm9iLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0pvYi5jcHAKQEAgLTQ1LDggKzQ1LDkgQEAgY2xhc3MgSlNK
b2JNaWNyb3Rhc2sgZmluYWwgOiBwdWJsaWMgTWljcm90YXNrIHsKICAgICAgICAgbV9hcmd1bWVu
dHMuc2V0KHZtLCBhcmd1bWVudHMpOwogICAgIH0KIAotICAgIHZpcnR1YWwgfkpTSm9iTWljcm90
YXNrKCkKKyAgICBKU0pvYk1pY3JvdGFzayhWTSYgdm0sIEpTVmFsdWUgam9iKQogICAgIHsKKyAg
ICAgICAgbV9qb2Iuc2V0KHZtLCBqb2IpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTU2LDYgKzU3
LDExIEBAIGNsYXNzIEpTSm9iTWljcm90YXNrIGZpbmFsIDogcHVibGljIE1pY3JvdGFzayB7CiAg
ICAgU3Ryb25nPEpTQXJyYXk+IG1fYXJndW1lbnRzOwogfTsKIAorUmVmPE1pY3JvdGFzaz4gY3Jl
YXRlSlNKb2IoVk0mIHZtLCBKU1ZhbHVlIGpvYikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBKU0pvYk1pY3JvdGFzayh2bSwgam9iKSk7Cit9CisKIFJlZjxNaWNyb3Rhc2s+IGNyZWF0ZUpT
Sm9iKFZNJiB2bSwgSlNWYWx1ZSBqb2IsIEpTQXJyYXkqIGFyZ3VtZW50cykKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBKU0pvYk1pY3JvdGFzayh2bSwgam9iLCBhcmd1bWVudHMpKTsKQEAg
LTcxLDEzICs3NywxNSBAQCB2b2lkIEpTSm9iTWljcm90YXNrOjpydW4oRXhlY1N0YXRlKiBleGVj
KQogICAgIEFTU0VSVChoYW5kbGVyQ2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOwogCiAgICAg
TWFya2VkQXJndW1lbnRCdWZmZXIgaGFuZGxlckFyZ3VtZW50czsKLSAgICBmb3IgKHVuc2lnbmVk
IGluZGV4ID0gMCwgbGVuZ3RoID0gbV9hcmd1bWVudHMtPmxlbmd0aCgpOyBpbmRleCA8IGxlbmd0
aDsgKytpbmRleCkgewotICAgICAgICBKU1ZhbHVlIGFyZyA9IG1fYXJndW1lbnRzLT5KU0FycmF5
OjpnZXQoZXhlYywgaW5kZXgpOwotICAgICAgICBDTEVBUl9BTkRfUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgaGFuZGxlckFyZ3VtZW50cy5vdmVyZmxvd0NoZWNrTm90TmVlZGVkKCkpOwotICAg
ICAgICBoYW5kbGVyQXJndW1lbnRzLmFwcGVuZChhcmcpOworICAgIGlmIChtX2FyZ3VtZW50cykg
eworICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMCwgbGVuZ3RoID0gbV9hcmd1bWVudHMt
Pmxlbmd0aCgpOyBpbmRleCA8IGxlbmd0aDsgKytpbmRleCkgeworICAgICAgICAgICAgSlNWYWx1
ZSBhcmcgPSBtX2FyZ3VtZW50cy0+SlNBcnJheTo6Z2V0KGV4ZWMsIGluZGV4KTsKKyAgICAgICAg
ICAgIENMRUFSX0FORF9SRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBoYW5kbGVyQXJndW1lbnRz
Lm92ZXJmbG93Q2hlY2tOb3ROZWVkZWQoKSk7CisgICAgICAgICAgICBoYW5kbGVyQXJndW1lbnRz
LmFwcGVuZChhcmcpOworICAgICAgICB9CisgICAgICAgIGlmIChVTkxJS0VMWShoYW5kbGVyQXJn
dW1lbnRzLmhhc092ZXJmbG93ZWQoKSkpCisgICAgICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IGlmIChVTkxJS0VMWShoYW5kbGVyQXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSkpCi0gICAgICAg
IHJldHVybjsKICAgICBwcm9maWxlZENhbGwoZXhlYywgUHJvZmlsaW5nUmVhc29uOjpNaWNyb3Rh
c2ssIG1fam9iLmdldCgpLCBoYW5kbGVyQ2FsbFR5cGUsIGhhbmRsZXJDYWxsRGF0YSwganNVbmRl
ZmluZWQoKSwgaGFuZGxlckFyZ3VtZW50cyk7CiAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSm9iLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0pvYi5oCmluZGV4IDBhOWU2MzZkOWVlNWRl
N2U1YzAxMTczMWQ0OGM1NWQ1ZWEzYjkyMjkuLjNmODc5YWNkZTk1MTgwOWY4MmYzN2NjYjFkNWU3
NWVkYmM0MTM1OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Sm9iLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNKb2IuaApAQCAtMzMs
NiArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIE1pY3JvdGFzazsKIGNsYXNzIEpTQXJy
YXk7CiAKLVJlZjxNaWNyb3Rhc2s+IGNyZWF0ZUpTSm9iKFZNJiwgSlNWYWx1ZSBqb2IsIEpTQXJy
YXkqIGFyZ3VtZW50cyk7CitKU19FWFBPUlRfUFJJVkFURSBSZWY8TWljcm90YXNrPiBjcmVhdGVK
U0pvYihWTSYsIEpTVmFsdWUgam9iKTsKK0pTX0VYUE9SVF9QUklWQVRFIFJlZjxNaWNyb3Rhc2s+
IGNyZWF0ZUpTSm9iKFZNJiwgSlNWYWx1ZSBqb2IsIEpTQXJyYXkqIGFyZ3VtZW50cyk7CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dDdXN0b20uY3BwCmluZGV4IDE0MDUwMTVjZjEzZmRmZTY1M2IwZmQ0NjcxMWI4N2YzZjUw
OWM1YjIuLmM0NmEzODEyMDQ3NWUzODNmYTBmMGQ5NzhhYWU1MDBjOGQ5YWRiMDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTQ2
LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0Ns
aWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNKb2IuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9M
b29rdXAuaD4KIAogI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCkBAIC01MjEsNiAr
NTIyLDIzIEBAIEpTVmFsdWUgSlNET01XaW5kb3c6OnNob3dNb2RhbERpYWxvZyhFeGVjU3RhdGUm
IHN0YXRlKQogICAgIHJldHVybiBoYW5kbGVyLnJldHVyblZhbHVlKCk7CiB9CiAKK0pTVmFsdWUg
SlNET01XaW5kb3c6OnF1ZXVlTWljcm90YXNrKEV4ZWNTdGF0ZSYgc3RhdGUpCit7CisgICAgVk0m
IHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCisgICAg
ICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKworICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IHN0
YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApOworICAgIGlmIChVTkxJS0VMWSghZnVuY3Rpb25WYWx1
ZS5pc0Z1bmN0aW9uKHZtKSkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dB
cmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3Ioc3RhdGUsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAi
V2luZG93IiwgInF1ZXVlTWljcm90YXNrIikpOworCisgICAgc2NvcGUucmVsZWFzZSgpOworICAg
IEJhc2U6OnF1ZXVlTWljcm90YXNrKEpTQzo6Y3JlYXRlSlNKb2Iodm0sIGZ1bmN0aW9uVmFsdWUp
KTsKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKwogRE9NV2luZG93KiBKU0RPTVdpbmRv
dzo6dG9XcmFwcGVkKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAoIXZhbHVlLmlz
T2JqZWN0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKaW5kZXggMTRjMzkyZDM0M2VjNjAy
NWRhMTU1ZDc1NTA5YzMxYTg0YzBhNjhkNy4uZmY0ZDk1NzUyOTBiNzY0M2M3Yjk5NzA1ZDc0NWJh
OWYyYmJkYmEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbApAQCAtODksNiArODksOCBA
QCB0eXBlZGVmIFVTVlN0cmluZyBDU1NPTVN0cmluZzsKICAgICBET01TdHJpbmc/IHByb21wdChv
cHRpb25hbCBET01TdHJpbmcgbWVzc2FnZSA9ICIiLCBvcHRpb25hbCBET01TdHJpbmcgZGVmYXVs
dFZhbHVlID0gIiIpOwogICAgIHZvaWQgcHJpbnQoKTsKIAorICAgIFtDdXN0b21dIHZvaWQgcXVl
dWVNaWNyb3Rhc2soVm9pZENhbGxiYWNrIGNhbGxiYWNrKTsKKwogICAgIGxvbmcgcmVxdWVzdEFu
aW1hdGlvbkZyYW1lKFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrIGNhbGxiYWNrKTsgLy8g
RklYTUU6IFNob3VsZCByZXR1cm4gYW4gdW5zaWduZWQgbG9uZy4KICAgICB2b2lkIGNhbmNlbEFu
aW1hdGlvbkZyYW1lKGxvbmcgaGFuZGxlKTsgLy8gRklYTUU6IGhhbmRsZSBzaG91bGQgYmUgYW4g
dW5zaWduZWQgbG9uZy4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDIyZTk1ODcwYmFlMjgwNjY4NGVmOTJkMGYyMGIwMDVi
MWNiMmE4MTcuLjE5YmZlODgyNTA4OTVmYWQ0YmY4YzlhYmNhZGZjNTJlYzg1YTM4Y2QgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMyBAQAorMjAxOC0wOC0wMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4KKworICAgICAgICBBZGQgc2VsZi5xdWV1ZU1pY3JvdGFzayhmKSBvbiBET01X
aW5kb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
ODIxMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
anMvZG9tL3F1ZXVlLW1pY3JvdGFzay13aW5kb3ctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9kb20vcXVldWUtbWljcm90YXNrLXdpbmRvdy5odG1sOiBBZGRlZC4KKwogMjAxOC0w
Ny0zMSAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAg
W1dpbkNhaXJvXSBVbnJldmlld2VkIHRlc3QgZ2FyZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvanMvZG9tL3F1ZXVlLW1pY3JvdGFzay13aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvanMvZG9tL3F1ZXVlLW1pY3JvdGFzay13aW5kb3ctZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmNjMDZmNThjY2I4NGZkY2Y3MzI0MDcxYmMwNGQwNmQzMGQzYmFmYWQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vcXVldWUtbWljcm90YXNrLXdpbmRvdy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw3IEBACisKKworUEFTUyBRdWV1ZWQgbWljcm90YXNrcyBzaG91bGQg
YmUgZHJhaW5lZCBiZWZvcmUgZXhlY3V0aW5nIG1hY3JvdGFza3MgCitQQVNTIHF1ZXVlTWljcm90
YXNrJ3MgY2FsbGJhY2sgaGFzIHplcm8gYXJndW1lbnRzIGFuZCBzZWxmIGFzIHx0aGlzfCAKK1BB
U1MgcXVldWVNaWNyb3Rhc2sgYW5kIFByb21pc2UgdXNlcyB0aGUgc2FtZSBNaWNyb3Rhc2sgcXVl
dWUgCitQQVNTIHF1ZXVlTWljcm90YXNrIHNob3VsZCByZWplY3Qgbm9uLWZ1bmN0aW9uIGFyZ3Vt
ZW50cyAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL3F1ZXVlLW1pY3JvdGFzay13
aW5kb3cuaHRtbCBiL0xheW91dFRlc3RzL2pzL2RvbS9xdWV1ZS1taWNyb3Rhc2std2luZG93Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGI1ZTRmOTQ1M2I1MWU2MzY2OTk1N2M2MGM1ZjEwNTZhMDJjZThkNAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9xdWV1ZS1taWNyb3Rhc2std2lu
ZG93Lmh0bWwKQEAgLTAsMCArMSwxMTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzx0aXRsZT5zZWxmLnF1ZXVlTWljcm90YXNrIHdvcmtzIGluIFdpbmRvdzwvdGl0bGU+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8aWZyYW1lPjwvaWZyYW1lPgorPHNjcmlwdD4KK3Byb21pc2Vf
dGVzdCgoKSA9PiB7CisgICAgdmFyIGNvdW50ZXIgPSAwOworICAgIHNlbGYucXVldWVNaWNyb3Rh
c2soKCkgPT4geworICAgICAgICBhc3NlcnRfZXF1YWxzKGNvdW50ZXIrKywgMSk7CisgICAgICAg
IHNlbGYucXVldWVNaWNyb3Rhc2soKCkgPT4geworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhj
b3VudGVyKyssIDIpOworICAgICAgICB9KTsKKyAgICB9KTsKKyAgICB2YXIgcHJvbWlzZSA9IG5l
dyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgc2V0VGltZW91dCgoKSA9
PiB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGNvdW50ZXIrKywgMyk7CisgICAgICAgICAg
ICByZXNvbHZlKCk7CisgICAgICAgIH0sIDApOworICAgIH0pOworICAgIGFzc2VydF9lcXVhbHMo
Y291bnRlcisrLCAwKTsKKyAgICByZXR1cm4gcHJvbWlzZTsKK30sIGBRdWV1ZWQgbWljcm90YXNr
cyBzaG91bGQgYmUgZHJhaW5lZCBiZWZvcmUgZXhlY3V0aW5nIG1hY3JvdGFza3NgKTsKKworcHJv
bWlzZV90ZXN0KCgpID0+IHsKKyAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVj
dCkgPT4geworICAgICAgICBzZWxmLnF1ZXVlTWljcm90YXNrKGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhhcmd1bWVudHMubGVu
Z3RoLCAwKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHRoaXMsIHNlbGYpOworICAg
ICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZnJhbWVzLmxlbmd0aCwgMSk7CisgICAgICAgICAg
ICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoZnJhbWVzWzBdLCBzZWxmKTsKKyAgICAgICAgICAgICAg
ICB2YXIgaWZyYW1lID0gZnJhbWVzWzBdOworICAgICAgICAgICAgICAgIGlmcmFtZS5xdWV1ZU1p
Y3JvdGFzayhmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHRoaXMsIHNlbGYpOworICAgICAgICAgICAg
ICAgICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHModGhpcywgaWZyYW1lKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYucXVldWVNaWNyb3Rhc2soZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICd1c2Ugc3RyaWN0JzsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KHRoaXMsIHVuZGVmaW5lZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29s
dmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAg
ICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGUpOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9IGNh
dGNoIChlKSB7CisgICAgICAgICAgICAgICAgcmVqZWN0KGUpOworICAgICAgICAgICAgfQorICAg
ICAgICB9KTsKKyAgICB9KTsKK30sIGBxdWV1ZU1pY3JvdGFzaydzIGNhbGxiYWNrIGhhcyB6ZXJv
IGFyZ3VtZW50cyBhbmQgc2VsZiBhcyB8dGhpc3xgKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsK
KyAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUgLHJlamVjdCkgPT4geworICAgICAgICB2
YXIgY291bnRlciA9IDA7CisgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4gewor
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhjb3VudGVyKyssIDEpOworICAgICAgICAgICAgc2Vs
Zi5xdWV1ZU1pY3JvdGFzaygoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhj
b3VudGVyKyssIDMpOworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9KTsKKyAgICAgICAgc2VsZi5xdWV1ZU1pY3JvdGFzaygoKSA9PiB7CisgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKGNvdW50ZXIrKywgMik7CisgICAgICAgIH0pOworICAgICAg
ICBhc3NlcnRfZXF1YWxzKGNvdW50ZXIrKywgMCk7CisgICAgfSk7Cit9LCBgcXVldWVNaWNyb3Rh
c2sgYW5kIFByb21pc2UgdXNlcyB0aGUgc2FtZSBNaWNyb3Rhc2sgcXVldWVgKTsKKwordGVzdCgo
KSA9PiB7CisgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yLCAoKSA9PiB7CisgICAgICAg
IHNlbGYucXVldWVNaWNyb3Rhc2soKTsKKyAgICB9KTsKKyAgICBhc3NlcnRfdGhyb3dzKG5ldyBU
eXBlRXJyb3IsICgpID0+IHsKKyAgICAgICAgc2VsZi5xdWV1ZU1pY3JvdGFzayhudWxsKTsKKyAg
ICB9KTsKKyAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IHsKKyAgICAgICAg
c2VsZi5xdWV1ZU1pY3JvdGFzayh1bmRlZmluZWQpOworICAgIH0pOworICAgIGFzc2VydF90aHJv
d3MobmV3IFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICBzZWxmLnF1ZXVlTWljcm90YXNrKDQy
KTsKKyAgICB9KTsKKyAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IHsKKyAg
ICAgICAgc2VsZi5xdWV1ZU1pY3JvdGFzaygiNDIiKTsKKyAgICB9KTsKKyAgICBhc3NlcnRfdGhy
b3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IHsKKyAgICAgICAgc2VsZi5xdWV1ZU1pY3JvdGFzayh0
cnVlKTsKKyAgICB9KTsKKyAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IHsK
KyAgICAgICAgc2VsZi5xdWV1ZU1pY3JvdGFzayhTeW1ib2woIjQyIikpOworICAgIH0pOworICAg
IGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICBzZWxmLnF1ZXVl
TWljcm90YXNrKHt9KTsKKyAgICB9KTsKKyAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3Is
ICgpID0+IHsKKyAgICAgICAgc2VsZi5xdWV1ZU1pY3JvdGFzayh7IGhhbmRsZUV2ZW50KCkgeyB9
IH0pOworICAgIH0pOworfSwgYHF1ZXVlTWljcm90YXNrIHNob3VsZCByZWplY3Qgbm9uLWZ1bmN0
aW9uIGFyZ3VtZW50c2ApOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="364226"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>