<?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>219074</bug_id>
          
          <creation_ts>2020-11-18 02:14:01 -0800</creation_ts>
          <short_desc>scroll-padding should affect paging operations</short_desc>
          <delta_ts>2021-01-25 01:45:58 -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>Scrolling</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>179379</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>changseok</cc>
    
    <cc>diane.ko</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1708539</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2020-11-18 02:14:01 -0800</bug_when>
    <thetext>The specification [1] reads:

These offsets reduce the region of the scrollport that is considered “viewable” for scrolling operations: they have no effect on layout, on the scroll origin or initial position, or on whether or not an element is considered actually visible, but should affect whether an element or the caret is considered scrolled into view (e.g. for targetting or focusing operations), and reduce the amount of scrolling for paging operations (such as using the PgUp and PgDn keys or triggering equivalent operations from the scrollbar) so that within the optimal viewing region of the scrollport the user sees a continuous stream of content.

This bug is specifically for tracking the implementation of scroll-padding&apos;s effect on paging operations.

1. https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710139</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-26 03:23:47 -0800</bug_when>
    <thetext>&lt;rdar://problem/71747786&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720296</commentid>
    <comment_count>2</comment_count>
      <attachid>417817</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-01-18 01:32:03 -0800</bug_when>
    <thetext>Created attachment 417817
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720320</commentid>
    <comment_count>3</comment_count>
      <attachid>417826</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-01-18 03:18:07 -0800</bug_when>
    <thetext>Created attachment 417826
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720330</commentid>
    <comment_count>4</comment_count>
      <attachid>417829</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-01-18 04:52:44 -0800</bug_when>
    <thetext>Created attachment 417829
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720552</commentid>
    <comment_count>5</comment_count>
      <attachid>417829</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-01-19 09:47:15 -0800</bug_when>
    <thetext>Comment on attachment 417829
Patch

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

&gt; Source/WebCore/rendering/RenderLayerModelObject.cpp:176
&gt; +    if (oldStyle &amp;&amp; oldStyle-&gt;scrollPadding() != newStyle.scrollPadding()) {

Does a change to scrollPadding only trigger this code? What does RenderStyle::diff() return when only scroll padding changes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720827</commentid>
    <comment_count>6</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-01-20 00:49:59 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #5)
&gt; Comment on attachment 417829 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=417829&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderLayerModelObject.cpp:176
&gt; &gt; +    if (oldStyle &amp;&amp; oldStyle-&gt;scrollPadding() != newStyle.scrollPadding()) {
&gt; 
&gt; Does a change to scrollPadding only trigger this code? What does
&gt; RenderStyle::diff() return when only scroll padding changes?

It does trigger when only changing scrollPadding (verified by changing this property in the console and with the inspector). RenderStyle:diff() between the old and new styles returns StyleDifference::Equal here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720836</commentid>
    <comment_count>7</comment_count>
      <attachid>417953</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-01-20 01:30:55 -0800</bug_when>
    <thetext>Created attachment 417953
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720917</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-01-20 10:14:51 -0800</bug_when>
    <thetext>(In reply to Martin Robinson from comment #6)
&gt; (In reply to Simon Fraser (smfr) from comment #5)
&gt; &gt; Comment on attachment 417829 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=417829&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/rendering/RenderLayerModelObject.cpp:176
&gt; &gt; &gt; +    if (oldStyle &amp;&amp; oldStyle-&gt;scrollPadding() != newStyle.scrollPadding()) {
&gt; &gt; 
&gt; &gt; Does a change to scrollPadding only trigger this code? What does
&gt; &gt; RenderStyle::diff() return when only scroll padding changes?
&gt; 
&gt; It does trigger when only changing scrollPadding (verified by changing this
&gt; property in the console and with the inspector). RenderStyle:diff() between
&gt; the old and new styles returns StyleDifference::Equal here.

How does that work then? Maybe inspector triggers some additional style recalcs/layouts that make this work.

Try a testcase that changes scroll padding on a timer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720918</commentid>
    <comment_count>9</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-01-20 10:16:41 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #8)

&gt; How does that work then? Maybe inspector triggers some additional style
&gt; recalcs/layouts that make this work.
&gt; 
&gt; Try a testcase that changes scroll padding on a timer.

That&apos;s a really good question. One of the tests already does modify scroll-padding multiple times using CSSOM, which is the main reason that I realized I needed this new bit of code here. Tomorrow I&apos;ll see if I can figure out why this is triggered.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721116</commentid>
    <comment_count>10</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-01-21 03:20:33 -0800</bug_when>
    <thetext>(In reply to Martin Robinson from comment #9)
&gt; (In reply to Simon Fraser (smfr) from comment #8)
&gt; 
&gt; &gt; How does that work then? Maybe inspector triggers some additional style
&gt; &gt; recalcs/layouts that make this work.
&gt; &gt; 
&gt; &gt; Try a testcase that changes scroll padding on a timer.
&gt; 
&gt; That&apos;s a really good question. One of the tests already does modify
&gt; scroll-padding multiple times using CSSOM, which is the main reason that I
&gt; realized I needed this new bit of code here. Tomorrow I&apos;ll see if I can
&gt; figure out why this is triggered.

Here are the results of my investigation. This is the call stack leading up to RenderLayerModelObject::styleDidChange(...):

1   0x5099732c5 WebCore::RenderBox::styleDidChange(WebCore::StyleDifference, WebCore::RenderStyle const*)
2   0x509948afa WebCore::RenderBlock::styleDidChange(WebCore::StyleDifference, WebCore::RenderStyle const*)
3   0x509963d59 WebCore::RenderBlockFlow::styleDidChange(WebCore::StyleDifference, WebCore::RenderStyle const*)
4   0x5099a8ffd WebCore::RenderElement::setStyle(WebCore::RenderStyle&amp;&amp;, WebCore::StyleDifference)
5   0x509b56434 WebCore::RenderTreeUpdater::updateElementRenderer(WebCore::Element&amp;, WebCore::Style::ElementUpdates const&amp;)
6   0x509b55690 WebCore::RenderTreeUpdater::updateRenderTree(WebCore::ContainerNode&amp;)
7   0x509b5519b WebCore::RenderTreeUpdater::commit(std::__1::unique_ptr&lt;WebCore::Style::Update const, std::__1::default_delete&lt;WebCore::Style::Update const&gt; &gt;)
8   0x509046a89 WebCore::Document::updateRenderTree(std::__1::unique_ptr&lt;WebCore::Style::Update const, std::__1::default_delete&lt;WebCore::Style::Update const&gt; &gt;)
9   0x509046e06 WebCore::Document::resolveStyle(WebCore::Document::ResolveStyleType)
10  0x509047277 WebCore::Document::updateStyleIfNeeded()
11  0x5096f9f96 WebCore::ThreadTimers::sharedTimerFiredInternal()
12  0x50972082f WebCore::timerFired(__CFRunLoopTimer*, void*)
13  0x7fff2043090d __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__
14  0x7fff204303e8 __CFRunLoopDoTimer
15  0x7fff2042ff42 __CFRunLoopDoTimers
16  0x7fff2041657f __CFRunLoopRun
17  0x7fff204156ce CFRunLoopRunSpecific
18  0x7fff211a2fa1 -[NSRunLoop(NSRunLoop) runMode:beforeDate:]
19  0x7fff21231384 -[NSRunLoop(NSRunLoop) run]
20  0x7fff2006c3dd _xpc_objc_main
21  0x7fff2006be65 _xpc_copy_xpcservice_dictionary
22  0x10997e2e4 WebKit::XPCServiceMain(int, char const**)
23  0x7fff2033a621 start

The style difference is calculated in RenderElement::setStyle(...):

    StyleDifference diff = StyleDifference::Equal;
    OptionSet&lt;StyleDifferenceContextSensitiveProperty&gt; contextSensitiveProperties;
    if (m_hasInitializedStyle)
        diff = m_style.diff(style, contextSensitiveProperties);

    diff = std::max(diff, minimalStyleDifference);

    diff = adjustStyleDifference(diff, contextSensitiveProperties);

    Style::loadPendingResources(style, document(), element());

    auto didRepaint = repaintBeforeStyleChange(diff, m_style, style);
    styleWillChange(diff, style);

It seems that even if the difference is calculated as StyleDifference::Equal, which it is in this case, styleWillChange(...) is still called and we still reach RenderLayerModelObject styleDidChange(). The method itself does not consult the StyleDifference, but relies of checking the difference of certain properties between the old and new style to update the RenderLayer or FrameView. In that respect, my change does not work differently, but I&apos;m not sure if the pre-existing approach is correct or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721224</commentid>
    <comment_count>11</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-01-21 10:21:30 -0800</bug_when>
    <thetext>I think it&apos;s working through luck. Ideally we&apos;d be able to optimize away styleWill/DidChange if the diff is Equal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721551</commentid>
    <comment_count>12</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-01-22 03:28:29 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #11)
&gt; I think it&apos;s working through luck. Ideally we&apos;d be able to optimize away
&gt; styleWill/DidChange if the diff is Equal

Could it be that there is currently no kind of StyleDifference that captures this sort of change? Changing the padding shouldn&apos;t require a full relayout or a repaint. Instead it should just modify what happens when a scrolling operation happens in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721615</commentid>
    <comment_count>13</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-01-22 10:15:06 -0800</bug_when>
    <thetext>You&apos;re right, our style difference flags are too coarse-grained.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721972</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-25 00:43:31 -0800</bug_when>
    <thetext>commit-queue failed to commit attachment 417953 to WebKit repository.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721977</commentid>
    <comment_count>15</comment_count>
      <attachid>418259</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-01-25 00:54:42 -0800</bug_when>
    <thetext>Created attachment 418259
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721994</commentid>
    <comment_count>16</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-25 01:45:53 -0800</bug_when>
    <thetext>Committed r271788: &lt;https://trac.webkit.org/changeset/271788&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 418259.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417817</attachid>
            <date>2021-01-18 01:32:03 -0800</date>
            <delta_ts>2021-01-18 03:18:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219074-20210118103202.patch</filename>
            <type>text/plain</type>
            <size>23964</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzY3ZDc2NzY0MDMwNjZi
N2IwM2NiMDRiYzE2MTZhYzA3ZTIyZmZkZS4uNmE2Zjk2YTg4NDYxNGZjYmQ0NzA2Y2U2ZWE0NDYy
MWNkNjUzMDZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTAxLTE4ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBzY3JvbGwtcGFk
ZGluZyBzaG91bGQgYWZmZWN0IHBhZ2luZyBvcGVyYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkwNzQKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzcxNzQ3Nzg2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEhhdmUgc2Nyb2xsLXBhZGRpbmcgYWZmZWN0IHRoZSBhbW91bnQgb2YgdGhlIHNjcm9s
bGFibGUgYXJlYSB0aGF0IG1vdmVzIGR1cmluZworICAgICAgICBwYWdpbmcgb3BlcmF0aW9ucy4g
VGhpcyBpcyB0aGUgYmVoYXZpb3Igc3BlY2lmaWVkIGluIHRoZSBzY3JvbGwgc25hcCBzcGVjaWZp
Y2F0aW9uCisgICAgICAgIGFuZCBhbGxvd3Mgc2Nyb2xsYWJsZSBhcmVhcyB3aXRoIHBhcnRpYWxs
eSBvYnNjdXJlZCBhcmVhcyB0byBwcm9wZXJseSBwYWdlIHRocm91Z2gKKyAgICAgICAgdGhlaXIg
Y29udGVudC4KKworICAgICAgICBTZWUgaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1zY3Jv
bGwtc25hcC0xLyNwcm9wZGVmLXNjcm9sbC1wYWRkaW5nLgorCisgICAgICAgIFRlc3RzOiBjc3Mz
L3Njcm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW1haW5mcmFtZS1wYWdpbmcuaHRtbAorICAgICAg
ICAgICAgICAgY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtcGFkZGluZy1vdmVyZmxvdy1wYWdpbmcu
aHRtbAorCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxiYXJTdGVwcyk6IEFkZGVkIHRoaXMgb3ZlcnJpZGUgbWV0
aG9kIHdoaWNoCisgICAgICAgIHByb3Blcmx5IHNldHMgcGFnZSBzdGVwcy4gT25seSBGcmFtZVZp
ZXcgaGFzIGFjY2VzcyB0byB0aGUgZG9jdW1lbnQuCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMpOiBBZGRlZCB0aGlzIGhlbHBlciBtZXRob2Qs
IHdoaWNoIGlzCisgICAgICAgIHZpcnR1YWwgc28gdGhhdCBGcmFtZVZpZXcgY2FuIG92ZXJyaWRl
IGl0LgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFyU3RlcHMp
OiBVc2UgdGhlIGhlbHBlciBtZXRob2QgdG8gYWN0dWFsbHkKKyAgICAgICAgc2V0IHRoZSBzY3Jv
bGxiYXIgc3RlcHMuCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5oOiBBZGQgbmV3IG1l
dGhvZCBkZWNsYXJhdGlvbnMuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnNjcm9sbFBhZGRpbmdGb3JWaWV3cG9ydFJlY3Qp
OiBBZGQgdGhpcyBuZXcgaGVscGVyIHdoaWNoCisgICAgICAgIGdldHMgdGhlIHNjcm9sbC1wYWRk
aW5nIGZvciBhIGJveC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6IEFkZCBuZXcg
aGVscGVyLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpleHBhbmRTY3JvbGxSZWN0VG9WaXNpYmxlVGFyZ2V0UmVjdFRvSW5jbHVkZVNjcm9s
bFBhZGRpbmcpOiBVc2UgdGhlIG5ldworICAgICAgICBSZW5kZXJCb3ggaGVscGVyLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZVNjcm9sbGJhcnNBZnRlckxheW91dCk6IFVz
ZSB0aGUgbmV3IHVwZGF0ZVNjcm9sbGJhclN0ZXBzIGhlbHBlci4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjp1cGRhdGVTY3JvbGxiYXJTdGVwcyk6IEFkZGVkIHRoaXMgaGVscGVyIHNv
IHRoYXQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdAorICAgICAgICBjYW4gdXBkYXRlIHN0ZXBzIHdo
ZW4gbmVjZXNzYXJ5LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOiBBZGRlZCBu
ZXcgZGVjbGFyYXRpb25zLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnN0eWxl
RGlkQ2hhbmdlKTogVXBkYXRlIHN0ZXBzIG9uIEZyYW1lVmlld3MgYW5kIFJlbmRlckxheWVycwor
ICAgICAgICB3aGVuIHRoZSBzdHlsZSBjaGFuZ2UgZGljdGF0ZXMgaXQuCisKIDIwMjEtMDEtMTMg
IEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgogCiAgICAgICAgIENyYXNo
IEFTU0VSVCBpbiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp0ZXh0VW5kZXJFbGVtZW50IGR1
cmluZyBBWElzb2xhdGVkT2JqZWN0IGluaXRpYWxpemF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCmluZGV4IDQ3MGRkYzhmYTIyYzk5YmNkYTRjODdiOTc1OTU5YjFiODE5NGFlOTguLjA3
ODU2NGVmMTliZTQ2ZTNjMjMyMjRhM2Y1ZjY0ODEzYjhiMjAyOWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKQEAgLTU1MzksNiArNTUzOSwyOCBAQCBmbG9hdCBGcmFtZVZpZXc6OnBhZ2VT
Y2FsZUZhY3RvcigpIGNvbnN0CiAgICAgcmV0dXJuIGZyYW1lKCkuZnJhbWVTY2FsZUZhY3Rvcigp
OwogfQogCit2b2lkIEZyYW1lVmlldzo6dXBkYXRlU2Nyb2xsYmFyU3RlcHMoKQoreworICAgIGF1
dG8qIGRvY3VtZW50RWxlbWVudCA9IGZyYW1lKCkuZG9jdW1lbnQoKSA/IGZyYW1lKCkuZG9jdW1l
bnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkgOiBudWxscHRyOworICAgIGF1dG8qIHJlbmRlcmVyID0g
ZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1lbnRFbGVtZW50LT5yZW5kZXJCb3goKSA6IG51bGxwdHI7
CisgICAgaWYgKCFyZW5kZXJlcikgeworICAgICAgICBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxi
YXJTdGVwcygpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgTGF5b3V0UmVjdCBwYWRk
ZWRWaWV3UmVjdChMYXlvdXRQb2ludCgpLCB2aXNpYmxlU2l6ZSgpKTsKKyAgICBwYWRkZWRWaWV3
UmVjdC5jb250cmFjdChyZW5kZXJlci0+c2Nyb2xsUGFkZGluZ0ZvclZpZXdwb3J0UmVjdChwYWRk
ZWRWaWV3UmVjdCkpOworCisgICAgaWYgKGhvcml6b250YWxTY3JvbGxiYXIoKSkgeworICAgICAg
ICBpbnQgcGFnZVN0ZXAgPSBTY3JvbGxiYXI6OnBhZ2VTdGVwKHBhZGRlZFZpZXdSZWN0LndpZHRo
KCkpOworICAgICAgICBob3Jpem9udGFsU2Nyb2xsYmFyKCktPnNldFN0ZXBzKFNjcm9sbGJhcjo6
cGl4ZWxzUGVyTGluZVN0ZXAoKSwgcGFnZVN0ZXApOworCisgICAgfQorICAgIGlmICh2ZXJ0aWNh
bFNjcm9sbGJhcigpKSB7CisgICAgICAgIGludCBwYWdlU3RlcCA9IFNjcm9sbGJhcjo6cGFnZVN0
ZXAocGFkZGVkVmlld1JlY3QuaGVpZ2h0KCkpOworICAgICAgICB2ZXJ0aWNhbFNjcm9sbGJhcigp
LT5zZXRTdGVwcyhTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCksIHBhZ2VTdGVwKTsKKyAg
ICB9Cit9CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICN1bmRlZiBQQUdFX0lECmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuaAppbmRleCBiZGZlMjc4NDlmMjk2MWM2ZGRlNWU5ZmY4ZGRiNTEwMjE1ZjMx
NzI3Li44ODQ3MTY2NWYwNGRmMmJlZjVkZWVhYTIwODNmZTRlYmNkZTY0M2I5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmgKQEAgLTY4MCw2ICs2ODAsOSBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcg
ZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFsOwogCisgICAgLy8gU2Nyb2xsVmlldworICAg
IHZvaWQgdXBkYXRlU2Nyb2xsYmFyU3RlcHMoKSBvdmVycmlkZTsKKwogcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBGcmFtZVZpZXcoRnJhbWUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxW
aWV3LmNwcAppbmRleCA2YTFlNzc0OGVmZjViNTRiYTljMTk3NGIwZDNiYmI3NGM5MmQ0ZDgzLi45
MWM2NTljNzE0MTNlMzJlMzA1NTAzOTEyNDJhMjY0N2MyNmQwOTQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApAQCAtNzMxLDcgKzczMSw2IEBAIHZvaWQgU2Nyb2xsVmll
dzo6dXBkYXRlU2Nyb2xsYmFycyhjb25zdCBTY3JvbGxQb3NpdGlvbiYgZGVzaXJlZFBvc2l0aW9u
KQogCiAgICAgaWYgKG1faG9yaXpvbnRhbFNjcm9sbGJhcikgewogICAgICAgICBpbnQgY2xpZW50
V2lkdGggPSB2aXNpYmxlV2lkdGgoKTsKLSAgICAgICAgaW50IHBhZ2VTdGVwID0gU2Nyb2xsYmFy
OjpwYWdlU3RlcChjbGllbnRXaWR0aCk7CiAgICAgICAgIEludFJlY3Qgb2xkUmVjdChtX2hvcml6
b250YWxTY3JvbGxiYXItPmZyYW1lUmVjdCgpKTsKICAgICAgICAgSW50UmVjdCBoQmFyUmVjdChz
aG91bGRQbGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0KCkgJiYgbV92ZXJ0aWNhbFNj
cm9sbGJhciA/IG1fdmVydGljYWxTY3JvbGxiYXItPm9jY3VwaWVkV2lkdGgoKSA6IDAsCiAgICAg
ICAgICAgICBoZWlnaHQoKSAtIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+aGVpZ2h0KCksCkBAIC03
NDQsNyArNzQzLDYgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKGNvbnN0IFNj
cm9sbFBvc2l0aW9uJiBkZXNpcmVkUG9zaXRpb24pCiAgICAgICAgIGlmIChtX3Njcm9sbGJhcnNT
dXBwcmVzc2VkKQogICAgICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRTdXBwcmVz
c0ludmFsaWRhdGlvbih0cnVlKTsKICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRF
bmFibGVkKGNvbnRlbnRzV2lkdGgoKSA+IGNsaWVudFdpZHRoKTsKLSAgICAgICAgbV9ob3Jpem9u
dGFsU2Nyb2xsYmFyLT5zZXRTdGVwcyhTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCksIHBh
Z2VTdGVwKTsKICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRQcm9wb3J0aW9uKGNs
aWVudFdpZHRoLCBjb250ZW50c1dpZHRoKCkpOwogICAgICAgICBpZiAobV9zY3JvbGxiYXJzU3Vw
cHJlc3NlZCkKICAgICAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0U3VwcHJlc3NJ
bnZhbGlkYXRpb24oZmFsc2UpOyAKQEAgLTc1Miw3ICs3NTAsNiBAQCB2b2lkIFNjcm9sbFZpZXc6
OnVwZGF0ZVNjcm9sbGJhcnMoY29uc3QgU2Nyb2xsUG9zaXRpb24mIGRlc2lyZWRQb3NpdGlvbikK
IAogICAgIGlmIChtX3ZlcnRpY2FsU2Nyb2xsYmFyKSB7CiAgICAgICAgIGludCBjbGllbnRIZWln
aHQgPSB2aXNpYmxlSGVpZ2h0KCk7Ci0gICAgICAgIGludCBwYWdlU3RlcCA9IFNjcm9sbGJhcjo6
cGFnZVN0ZXAoY2xpZW50SGVpZ2h0KTsKICAgICAgICAgSW50UmVjdCBvbGRSZWN0KG1fdmVydGlj
YWxTY3JvbGxiYXItPmZyYW1lUmVjdCgpKTsKICAgICAgICAgSW50UmVjdCB2QmFyUmVjdChzaG91
bGRQbGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0KCkgPyAwIDogd2lkdGgoKSAtIG1f
dmVydGljYWxTY3JvbGxiYXItPndpZHRoKCksCiAgICAgICAgICAgICB0b3BDb250ZW50SW5zZXQo
KSwKQEAgLTc2NSwxMiArNzYyLDEzIEBAIHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFy
cyhjb25zdCBTY3JvbGxQb3NpdGlvbiYgZGVzaXJlZFBvc2l0aW9uKQogICAgICAgICBpZiAobV9z
Y3JvbGxiYXJzU3VwcHJlc3NlZCkKICAgICAgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXItPnNl
dFN1cHByZXNzSW52YWxpZGF0aW9uKHRydWUpOwogICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFy
LT5zZXRFbmFibGVkKHRvdGFsQ29udGVudHNTaXplKCkuaGVpZ2h0KCkgPiBjbGllbnRIZWlnaHQp
OwotICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5zZXRTdGVwcyhTY3JvbGxiYXI6OnBpeGVs
c1BlckxpbmVTdGVwKCksIHBhZ2VTdGVwKTsKICAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhci0+
c2V0UHJvcG9ydGlvbihjbGllbnRIZWlnaHQsIHRvdGFsQ29udGVudHNTaXplKCkuaGVpZ2h0KCkp
OwogICAgICAgICBpZiAobV9zY3JvbGxiYXJzU3VwcHJlc3NlZCkKICAgICAgICAgICAgIG1fdmVy
dGljYWxTY3JvbGxiYXItPnNldFN1cHByZXNzSW52YWxpZGF0aW9uKGZhbHNlKTsKICAgICB9CiAK
KyAgICB1cGRhdGVTY3JvbGxiYXJTdGVwcygpOworCiAgICAgaWYgKGhhc0hvcml6b250YWxTY3Jv
bGxiYXIgIT0gbmV3SGFzSG9yaXpvbnRhbFNjcm9sbGJhciB8fCBoYXNWZXJ0aWNhbFNjcm9sbGJh
ciAhPSBuZXdIYXNWZXJ0aWNhbFNjcm9sbGJhcikgewogICAgICAgICAvLyBGSVhNRTogSXMgZnJh
bWVSZWN0c0NoYW5nZWQgcmVhbGx5IG5lY2Vzc2FyeSBoZXJlPyBIYXZlIGFueSBmcmFtZSByZWN0
cyBjaGFuZ2VkPwogICAgICAgICBmcmFtZVJlY3RzQ2hhbmdlZCgpOwpAQCAtNzkxLDYgKzc4OSwx
NCBAQCB2b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMoY29uc3QgU2Nyb2xsUG9zaXRp
b24mIGRlc2lyZWRQb3NpdGlvbikKICAgICBtX2luVXBkYXRlU2Nyb2xsYmFycyA9IGZhbHNlOwog
fQogCit2b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhclN0ZXBzKCkKK3sKKyAgICBpZiAo
bV9ob3Jpem9udGFsU2Nyb2xsYmFyKQorICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNl
dFN0ZXBzKFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSwgU2Nyb2xsYmFyOjpwYWdlU3Rl
cCh2aXNpYmxlV2lkdGgoKSkpOworICAgIGlmIChtX3ZlcnRpY2FsU2Nyb2xsYmFyKQorICAgICAg
ICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5zZXRTdGVwcyhTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVT
dGVwKCksIFNjcm9sbGJhcjo6cGFnZVN0ZXAodmlzaWJsZUhlaWdodCgpKSk7Cit9CisKIGNvbnN0
IGludCBwYW5JY29uU2l6ZUxlbmd0aCA9IDE2OwogCiBJbnRSZWN0IFNjcm9sbFZpZXc6OnJlY3RU
b0NvcHlPblNjcm9sbCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKaW5k
ZXggZDY5NzRlODVlYzdhODkzOTQxODIxMDlmOGVlMjYxZjY5ODNmYTY0YS4uNmMyODAwZGZjMzBj
ZTk4ZGI3MmZkZTE2MWJmMzFjYWIwMDQ1NDc3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuaApAQCAtMzk3LDYgKzM5Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGFsbG93c1VuY2xh
bXBlZFNjcm9sbFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd3NVbmNsYW1wZWRTY3Jv
bGxQb3NpdGlvbjsgfQogCiAgICAgYm9vbCBtYW5hZ2VzU2Nyb2xsYmFycygpIGNvbnN0OworICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVTY3JvbGxiYXJTdGVwcygpOwogCiBwcm90ZWN0ZWQ6CiAgICAg
U2Nyb2xsVmlldygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCA2
YjljMTE2NmU5N2IzOWMyMmVmMjc4M2MyYzAyZWY2N2QyYTkzY2VkLi44ZjA0MDM1ODFkNDJjY2E1
NTRmNmQyYTllNjM5OGIwZjc4NjNkZmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcApAQCAtNTEwMSw0ICs1MTAxLDEyIEBAIExheW91dFJlY3QgUmVuZGVyQm94OjphYnNv
bHV0ZUFuY2hvclJlY3RXaXRoU2Nyb2xsTWFyZ2luKGJvb2wqIGluc2lkZUZpeGVkKSBjb25zCiAg
ICAgcmV0dXJuIGFuY2hvclJlY3Q7CiB9CiAKK0xheW91dEJveEV4dGVudCBSZW5kZXJCb3g6OnNj
cm9sbFBhZGRpbmdGb3JWaWV3cG9ydFJlY3QoY29uc3QgTGF5b3V0UmVjdCYgdmlld3BvcnRSZWN0
KQoreworICAgIGNvbnN0IGF1dG8mIHBhZGRpbmcgPSBzdHlsZSgpLnNjcm9sbFBhZGRpbmcoKTsK
KyAgICByZXR1cm4gTGF5b3V0Qm94RXh0ZW50KAorICAgICAgICB2YWx1ZUZvckxlbmd0aChwYWRk
aW5nLnRvcCgpLCB2aWV3cG9ydFJlY3QuaGVpZ2h0KCkpLCB2YWx1ZUZvckxlbmd0aChwYWRkaW5n
LnJpZ2h0KCksIHZpZXdwb3J0UmVjdC53aWR0aCgpKSwKKyAgICAgICAgdmFsdWVGb3JMZW5ndGgo
cGFkZGluZy5ib3R0b20oKSwgdmlld3BvcnRSZWN0LmhlaWdodCgpKSwgdmFsdWVGb3JMZW5ndGgo
cGFkZGluZy5sZWZ0KCksIHZpZXdwb3J0UmVjdC53aWR0aCgpKSk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAppbmRleCA2MDRlYTlh
NWQ3N2ViYTI2NmFmNTU0NDk4YjUzOWMwOGQ0YjJjNDNhLi5lNDM1ZTZiMmU3NDFmMzljZjk0ZmM1
OGQ5NWRmM2Q0MjhiYzFmMTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCkBA
IC00OTQsNiArNDk0LDggQEAgb3ZlcnJpZGU7CiAgICAgYm9vbCBoYXNTY3JvbGxhYmxlT3ZlcmZs
b3dYKCkgY29uc3QgeyByZXR1cm4gc2Nyb2xsc092ZXJmbG93WCgpICYmIGhhc0hvcml6b250YWxP
dmVyZmxvdygpOyB9CiAgICAgYm9vbCBoYXNTY3JvbGxhYmxlT3ZlcmZsb3dZKCkgY29uc3QgeyBy
ZXR1cm4gc2Nyb2xsc092ZXJmbG93WSgpICYmIGhhc1ZlcnRpY2FsT3ZlcmZsb3coKTsgfQogCisg
ICAgTGF5b3V0Qm94RXh0ZW50IHNjcm9sbFBhZGRpbmdGb3JWaWV3cG9ydFJlY3QoY29uc3QgTGF5
b3V0UmVjdCYgdmlld3BvcnRSZWN0KTsKKwogICAgIGJvb2wgdXNlc0NvbXBvc2l0ZWRTY3JvbGxp
bmcoKSBjb25zdDsKICAgICAKICAgICBib29sIHBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0SXNSZXNv
bHZhYmxlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApp
bmRleCAzM2Y4ZTZjOWQwNWViNTE1ZjQyOTU3MWVjY2IyOTNkYTFkZTdkOGFiLi5kNGExMjliZGRi
YmMwZTM5NGVjZGE5ZjU1N2VmY2Q0NDUzMzM5ZmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKQEAgLTYwMiwxMSArNjAyLDcgQEAgc3RhdGljIHZvaWQgZXhwYW5k
U2Nyb2xsUmVjdFRvVmlzaWJsZVRhcmdldFJlY3RUb0luY2x1ZGVTY3JvbGxQYWRkaW5nKFJlbmRl
ckJveCoKICAgICAvLyBzY3JvbGwtcGFkZGluZyBhcHBsaWVzIHRvIHRoZSBzY3JvbGwgY29udGFp
bmVyLCBidXQgZXhwYW5kIHRoZSByZWN0YW5nbGUgdGhhdCB3ZSB3YW50IHRvIGV4cG9zZSBpbiBv
cmRlcgogICAgIC8vIHNpbXVsYXRlIHBhZGRpbmcgdGhlIHNjcm9sbCBjb250YWluZXIuIFRoaXMg
cmVjdGFuZ2xlIGlzIHBhc3NlZCB1cCB0aGUgdHJlZSBvZiBzY3JvbGxpbmcgZWxlbWVudHMgdG8K
ICAgICAvLyBlbnN1cmUgdGhhdCB0aGUgcGFkZGluZyBvbiB0aGlzIHNjcm9sbCBjb250YWluZXIg
aXMgbWFpbnRhaW5lZC4KLSAgICBjb25zdCBhdXRvJiBzY3JvbGxQYWRkaW5nID0gcmVuZGVyQm94
LT5zdHlsZSgpLnNjcm9sbFBhZGRpbmcoKTsKLSAgICBMYXlvdXRCb3hFeHRlbnQgc2Nyb2xsUGFk
ZGluZ0V4dGVudHMoCi0gICAgICAgIHZhbHVlRm9yTGVuZ3RoKHNjcm9sbFBhZGRpbmcudG9wKCks
IHZpZXdSZWN0LmhlaWdodCgpKSwgdmFsdWVGb3JMZW5ndGgoc2Nyb2xsUGFkZGluZy5yaWdodCgp
LCB2aWV3UmVjdC53aWR0aCgpKSwKLSAgICAgICAgdmFsdWVGb3JMZW5ndGgoc2Nyb2xsUGFkZGlu
Zy5ib3R0b20oKSwgdmlld1JlY3QuaGVpZ2h0KCkpLCB2YWx1ZUZvckxlbmd0aChzY3JvbGxQYWRk
aW5nLmxlZnQoKSwgdmlld1JlY3Qud2lkdGgoKSkpOwotICAgIHRhcmdldFJlY3QuZXhwYW5kKHNj
cm9sbFBhZGRpbmdFeHRlbnRzKTsKKyAgICB0YXJnZXRSZWN0LmV4cGFuZChyZW5kZXJCb3gtPnNj
cm9sbFBhZGRpbmdGb3JWaWV3cG9ydFJlY3Qodmlld1JlY3QpKTsKIH0KIAogYm9vbCBSZW5kZXJM
YXllcjo6c2hvdWxkQmVOb3JtYWxGbG93T25seSgpIGNvbnN0CkBAIC0zODk5LDIxICszODk1LDM2
IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVNjcm9sbGJhcnNBZnRlckxheW91dCgpCiAgICAg
ICAgICAgICBkb3duY2FzdDxSZW5kZXJGbGV4aWJsZUJveD4ocGFyZW50KS0+Y2xlYXJDYWNoZWRN
YWluU2l6ZUZvckNoaWxkKCpyZW5kZXJCb3goKSk7CiAgICAgfQogCi0gICAgLy8gU2V0IHVwIHRo
ZSByYW5nZSAoYW5kIHBhZ2Ugc3RlcC9saW5lIHN0ZXApLgorICAgIExheW91dFJlY3QgcGFkZGVk
TGF5ZXJCb3VuZHMoMF9sdSwgMF9sdSwgYm94LT5jbGllbnRXaWR0aCgpLCBib3gtPmNsaWVudEhl
aWdodCgpKTsKKyAgICBwYWRkZWRMYXllckJvdW5kcy5jb250cmFjdChib3gtPnNjcm9sbFBhZGRp
bmdGb3JWaWV3cG9ydFJlY3QocGFkZGVkTGF5ZXJCb3VuZHMpKTsKKworICAgIC8vIFNldCB1cCB0
aGUgcmFuZ2UuCisgICAgaWYgKG1faEJhcikKKyAgICAgICAgbV9oQmFyLT5zZXRQcm9wb3J0aW9u
KHJvdW5kVG9JbnQoYm94LT5jbGllbnRXaWR0aCgpKSwgbV9zY3JvbGxTaXplLndpZHRoKCkpOwor
ICAgIGlmIChtX3ZCYXIpCisgICAgICAgIG1fdkJhci0+c2V0UHJvcG9ydGlvbihyb3VuZFRvSW50
KGJveC0+Y2xpZW50SGVpZ2h0KCkpLCBtX3Njcm9sbFNpemUuaGVpZ2h0KCkpOworCisgICAgdXBk
YXRlU2Nyb2xsYmFyU3RlcHMoKTsKKyAgICB1cGRhdGVTY3JvbGxhYmxlQXJlYVNldChoYXNTY3Jv
bGxhYmxlSG9yaXpvbnRhbE92ZXJmbG93KCkgfHwgaGFzU2Nyb2xsYWJsZVZlcnRpY2FsT3ZlcmZs
b3coKSk7Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVNjcm9sbGJhclN0ZXBzKCkKK3sK
KyAgICBSZW5kZXJCb3gqIGJveCA9IHJlbmRlckJveCgpOworICAgIEFTU0VSVChib3gpOworCisg
ICAgTGF5b3V0UmVjdCBwYWRkZWRMYXllckJvdW5kcygwX2x1LCAwX2x1LCBib3gtPmNsaWVudFdp
ZHRoKCksIGJveC0+Y2xpZW50SGVpZ2h0KCkpOworICAgIHBhZGRlZExheWVyQm91bmRzLmNvbnRy
YWN0KGJveC0+c2Nyb2xsUGFkZGluZ0ZvclZpZXdwb3J0UmVjdChwYWRkZWRMYXllckJvdW5kcykp
OworCisgICAgLy8gU2V0IHVwIHRoZSAgcGFnZSBzdGVwL2xpbmUgc3RlcC4KICAgICBpZiAobV9o
QmFyKSB7Ci0gICAgICAgIGludCBjbGllbnRXaWR0aCA9IHJvdW5kVG9JbnQoYm94LT5jbGllbnRX
aWR0aCgpKTsKLSAgICAgICAgaW50IHBhZ2VTdGVwID0gU2Nyb2xsYmFyOjpwYWdlU3RlcChjbGll
bnRXaWR0aCk7CisgICAgICAgIGludCBwYWdlU3RlcCA9IFNjcm9sbGJhcjo6cGFnZVN0ZXAocm91
bmRUb0ludChwYWRkZWRMYXllckJvdW5kcy53aWR0aCgpKSk7CiAgICAgICAgIG1faEJhci0+c2V0
U3RlcHMoU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpLCBwYWdlU3RlcCk7Ci0gICAgICAg
IG1faEJhci0+c2V0UHJvcG9ydGlvbihjbGllbnRXaWR0aCwgbV9zY3JvbGxTaXplLndpZHRoKCkp
OwogICAgIH0KICAgICBpZiAobV92QmFyKSB7Ci0gICAgICAgIGludCBjbGllbnRIZWlnaHQgPSBy
b3VuZFRvSW50KGJveC0+Y2xpZW50SGVpZ2h0KCkpOwotICAgICAgICBpbnQgcGFnZVN0ZXAgPSBT
Y3JvbGxiYXI6OnBhZ2VTdGVwKGNsaWVudEhlaWdodCk7CisgICAgICAgIGludCBwYWdlU3RlcCA9
IFNjcm9sbGJhcjo6cGFnZVN0ZXAocm91bmRUb0ludChwYWRkZWRMYXllckJvdW5kcy5oZWlnaHQo
KSkpOwogICAgICAgICBtX3ZCYXItPnNldFN0ZXBzKFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0
ZXAoKSwgcGFnZVN0ZXApOwotICAgICAgICBtX3ZCYXItPnNldFByb3BvcnRpb24oY2xpZW50SGVp
Z2h0LCBtX3Njcm9sbFNpemUuaGVpZ2h0KCkpOwogICAgIH0KLQotICAgIHVwZGF0ZVNjcm9sbGFi
bGVBcmVhU2V0KGhhc1Njcm9sbGFibGVIb3Jpem9udGFsT3ZlcmZsb3coKSB8fCBoYXNTY3JvbGxh
YmxlVmVydGljYWxPdmVyZmxvdygpKTsKIH0KIAogLy8gVGhpcyBpcyBjYWxsZWQgZnJvbSBsYXlv
dXQgY29kZSAoYmVmb3JlIHVwZGF0ZUxheWVyUG9zaXRpb25zKS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmgKaW5kZXggMzZhMDZhNGJmYjIzNTk1Mzg0ZGFjODFjZTYwMzMzNjY1
NTA0ODNkYS4uMGYxNWFlZmQxOWMxYzBmMDBlMTNkNjVkMjI3Y2M1MjI2MzA0OWY1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTUzMSw2ICs1MzEsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBwYWludFJlc2l6ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0
UG9pbnQmLCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0KTsKIAogICAgIHZvaWQgdXBkYXRl
U2Nyb2xsSW5mb0FmdGVyTGF5b3V0KCk7CisgICAgdm9pZCB1cGRhdGVTY3JvbGxiYXJTdGVwcygp
OwogCiAgICAgYm9vbCBzY3JvbGwoU2Nyb2xsRGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwg
ZmxvYXQgbXVsdGlwbGllciA9IDEpOwogICAgIHZvaWQgYXV0b3Njcm9sbChjb25zdCBJbnRQb2lu
dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9k
ZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxP
YmplY3QuY3BwCmluZGV4IDA1MmE5Yzc1ZTYzNTU2YTNlZWFiYmZkZjFjMjIxYmUzYzEzYjRjYWMu
LmY2ZjAyNTQyYTYyMjlhMGZmN2E5NzQ5MzM4OTUwODIzNmEyZGIyMDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKQEAgLTE3
Miw4ICsxNzIsMTYgQEAgdm9pZCBSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpzdHlsZURpZENoYW5n
ZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3QKICAgICAgICAgICAgIHZpZXco
KS5mcmFtZVZpZXcoKS5yZW1vdmVWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0KCp0aGlzKTsKICAg
ICB9CiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIGNvbnN0IFJlbmRlclN0eWxl
JiBuZXdTdHlsZSA9IHN0eWxlKCk7CisgICAgaWYgKG9sZFN0eWxlICYmIG9sZFN0eWxlLT5zY3Jv
bGxQYWRkaW5nKCkgIT0gbmV3U3R5bGUuc2Nyb2xsUGFkZGluZygpKSB7CisgICAgICAgIGlmIChp
c0RvY3VtZW50RWxlbWVudFJlbmRlcmVyKCkpIHsKKyAgICAgICAgICAgIEZyYW1lVmlldyYgZnJh
bWVWaWV3ID0gdmlldygpLmZyYW1lVmlldygpOworICAgICAgICAgICAgZnJhbWVWaWV3LnVwZGF0
ZVNjcm9sbGJhclN0ZXBzKCk7CisgICAgICAgIH0gZWxzZSBpZiAoUmVuZGVyTGF5ZXIqIHJlbmRl
ckxheWVyID0gbGF5ZXIoKSkKKyAgICAgICAgICAgIHJlbmRlckxheWVyLT51cGRhdGVTY3JvbGxi
YXJTdGVwcygpOworICAgIH0KKworI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgaWYg
KG9sZFN0eWxlICYmIHNjcm9sbFNuYXBDb250YWluZXJSZXF1aXJlc1VwZGF0ZUZvclN0eWxlVXBk
YXRlKCpvbGRTdHlsZSwgbmV3U3R5bGUpKSB7CiAgICAgICAgIGlmIChSZW5kZXJMYXllciogcmVu
ZGVyTGF5ZXIgPSBsYXllcigpKSB7CiAgICAgICAgICAgICByZW5kZXJMYXllci0+dXBkYXRlU25h
cE9mZnNldHMoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCBmMzE3Y2NhZDYyODY4NjcxMWZiYjQzNjY0ODE3MzQ0ZWYwYThi
M2JkLi41ZWJlNmYxMDJiNzhiNjczNWU5YWNiY2EwNzIyNWZjZGNmYWI0OGUwIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMjEtMDEtMTggIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2Fs
aWEuY29tPgorCisgICAgICAgIHNjcm9sbC1wYWRkaW5nIHNob3VsZCBhZmZlY3QgcGFnaW5nIG9w
ZXJhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxOTA3NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzE3NDc3ODY+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjc3MzL3Njcm9sbC1zbmFwL3Nj
cm9sbC1wYWRkaW5nLW1haW5mcmFtZS1wYWdpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBjc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW1haW5mcmFtZS1wYWdpbmcuaHRt
bDogQWRkZWQuCisgICAgICAgICogY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtcGFkZGluZy1vdmVy
Zmxvdy1wYWdpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL3Njcm9sbC1z
bmFwL3Njcm9sbC1wYWRkaW5nLW92ZXJmbG93LXBhZ2luZy5odG1sOiBBZGRlZC4KKwogMjAyMS0w
MS0xMyAgTGF1cm8gTW91cmEgIDxsbW91cmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXSBS
ZWJhc2VsaW5lIGFuZCBnYXJkZW5pbmcgYSBmZXcgdGVzdHMKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXBhZGRpbmctbWFpbmZyYW1lLXBhZ2luZy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW1h
aW5mcmFtZS1wYWdpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3NThhYjk3ZDVkZDM3Mjk0
MGQzMDA3MTdlZjI1NDQ3N2RmMzUxNmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9j
c3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW1haW5mcmFtZS1wYWdpbmctZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTEgQEAKK1BBU1MgcGFnaW5nIG1vdmVkIGJvZHkKK1BBU1MgcGFnaW5n
IG1vdmVkIHBhZGRlZCBib2R5CitQQVNTIGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuc2Nyb2xs
VG9wIGlzIHdpdGhpbiAxIG9mIDUzNS42ODM3NjA2ODM3NjA3CitQQVNTIHBhZ2luZyBtb3ZlZCBw
YWRkZWQgYm9keQorUEFTUyBkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNjcm9sbFRvcCBpcyB3
aXRoaW4gMSBvZiA1MzUuNjgzNzYwNjgzNzYwNworUEFTUyBwYWdpbmcgbW92ZWQgcGFkZGVkIGJv
ZHkKK1BBU1MgZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudC5zY3JvbGxUb3AgaXMgd2l0aGluIDIg
b2YgNTI2LjM2NzUyMTM2NzUyMTQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFw
L3Njcm9sbC1wYWRkaW5nLW1haW5mcmFtZS1wYWdpbmcuaHRtbCBiL0xheW91dFRlc3RzL2NzczMv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXBhZGRpbmctbWFpbmZyYW1lLXBhZ2luZy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA2MzQ3ZmQ0ZWIwMDA1ZmRlMWYyMTI0ZWE2MTM0OWM3MGYyYzNiOWEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW1haW5m
cmFtZS1wYWdpbmcuaHRtbApAQCAtMCwwICsxLDc4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgIGJvZHkgeworICAgICAgICAg
ICAgbWFyZ2luOiAwOworICAgICAgICB9CisKKyAgICAgICAgLmJveCB7CisgICAgICAgICAgICB3
aWR0aDogMTAwdnc7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMHZoOworICAgICAgICB9CisgICAg
ICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWkt
aGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIGFzeW5jIGZ1bmN0aW9uIHJ1blRlc3RzKCkK
KyAgICAgICAgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRl
ci5rZXlEb3duKCJwYWdlRG93biIpOworCisgICAgICAgICAgICAgICAgZXhwZWN0VHJ1ZShkb2N1
bWVudC5zY3JvbGxpbmdFbGVtZW50LnNjcm9sbFRvcCAhPSAwLCAicGFnaW5nIG1vdmVkIGJvZHki
KTsKKyAgICAgICAgICAgICAgICBsZXQgZGVmYXVsdFBhZ2VQb3NpdGlvbiA9IGRvY3VtZW50LnNj
cm9sbGluZ0VsZW1lbnQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGxldCB2aWV3cG9ydEhl
aWdodCA9IGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgICAgIGxldCBwYWdlUHJvcG9ydGlvbiA9IGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuc2Ny
b2xsVG9wIC8gdmlld3BvcnRIZWlnaHQ7CisKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5zY3Jv
bGxpbmdFbGVtZW50LnNjcm9sbFRvcCA9IDA7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9j
dW1lbnRFbGVtZW50LnN0eWxlLnNjcm9sbFBhZGRpbmdUb3AgPSAiMTBweCI7CisgICAgICAgICAg
ICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigicGFnZURvd24iKTsKKworICAgICAgICAgICAgICAg
IGxldCBleHBlY3RlZCA9ICh2aWV3cG9ydEhlaWdodCAtIDEwKSAqIHBhZ2VQcm9wb3J0aW9uOwor
ICAgICAgICAgICAgICAgIGV4cGVjdFRydWUoZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudC5zY3Jv
bGxUb3AgIT0gMCwgInBhZ2luZyBtb3ZlZCBwYWRkZWQgYm9keSIpOworICAgICAgICAgICAgICAg
IHNob3VsZEJlQ2xvc2VUbygiZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudC5zY3JvbGxUb3AiLCBl
eHBlY3RlZCwgMSk7CisKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50
LnNjcm9sbFRvcCA9IDA7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50
LnN0eWxlLnNjcm9sbFBhZGRpbmdUb3AgPSAiMHB4IjsKKyAgICAgICAgICAgICAgICBkb2N1bWVu
dC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2Nyb2xsUGFkZGluZ0JvdHRvbSA9ICIxMHB4IjsKKyAg
ICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJwYWdlRG93biIpOworCisgICAgICAg
ICAgICAgICAgZXhwZWN0VHJ1ZShkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNjcm9sbFRvcCAh
PSAwLCAicGFnaW5nIG1vdmVkIHBhZGRlZCBib2R5Iik7CisgICAgICAgICAgICAgICAgc2hvdWxk
QmVDbG9zZVRvKCJkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNjcm9sbFRvcCIsIGV4cGVjdGVk
LCAxKTsKKworICAgICAgICAgICAgICAgIGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuc2Nyb2xs
VG9wID0gMDsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUu
c2Nyb2xsUGFkZGluZ1RvcCA9ICIxMHB4IjsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1
bWVudEVsZW1lbnQuc3R5bGUuc2Nyb2xsUGFkZGluZ0JvdHRvbSA9ICIxMHB4IjsKKyAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJwYWdlRG93biIpOworCisgICAgICAgICAgICAg
ICAgZXhwZWN0ZWQgPSAodmlld3BvcnRIZWlnaHQgLSAyMCkgKiBwYWdlUHJvcG9ydGlvbjsKKyAg
ICAgICAgICAgICAgICBleHBlY3RUcnVlKGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuc2Nyb2xs
VG9wICE9IDAsICJwYWdpbmcgbW92ZWQgcGFkZGVkIGJvZHkiKTsKKyAgICAgICAgICAgICAgICBz
aG91bGRCZUNsb3NlVG8oImRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuc2Nyb2xsVG9wIiwgZXhw
ZWN0ZWQsIDIpOworICAgICAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgICAgIGNv
bnNvbGUubG9nKGUpOworICAgICAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5k
ZXIpIHsKKyAgICAgICAgICAgICAgICBydW5UZXN0cygpOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICB2YXIgY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
b25zb2xlJyk7CisgICAgICAgICAgICAgICAgY29uc29sZS5pbm5lclRleHQgPSAiVGhpcyB0ZXN0
IGNhbm5vdCBiZSBydW4gbWFudWFsbHkuIgorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+
CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQ6IGdyZWVuOyI+PGRp
diBpZD0iY29uc29sZSI+PC9kaXY+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5
bGU9ImJhY2tncm91bmQ6IHJlZDsiPjwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJib3giIHN0
eWxlPSJiYWNrZ3JvdW5kOiBwaW5rOyI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIg
c3R5bGU9ImJhY2tncm91bmQ6IHllbGxvdzsiPjwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJi
b3giIHN0eWxlPSJiYWNrZ3JvdW5kOiBvcmFuZ2U7Ij48L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1wYWRk
aW5nLW92ZXJmbG93LXBhZ2luZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9s
bC1zbmFwL3Njcm9sbC1wYWRkaW5nLW92ZXJmbG93LXBhZ2luZy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTRjZGQ0ZGIyNmUxMDg2ZTUzNDQyOWNjZGU2NTJlZWFjZjE3ZjJhYwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXBhZGRpbmctb3Zl
cmZsb3ctcGFnaW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitQQVNTIHBhZ2luZyBt
b3ZlZCBjb250YWluZXIKK1BBU1MgcGFnaW5nIG1vdmVkIHBhZGRlZCBjb250YWluZXIKK1BBU1Mg
Y29udGFpbmVyLnNjcm9sbFRvcCBpcyB3aXRoaW4gMSBvZiAxNDAKK1BBU1MgcGFnaW5nIG1vdmVk
IHBhZGRlZCBjb250YWluZXIKK1BBU1MgY29udGFpbmVyLnNjcm9sbFRvcCBpcyB3aXRoaW4gMSBv
ZiAxNDAKK1BBU1MgcGFnaW5nIG1vdmVkIHBhZGRlZCBjb250YWluZXIKK1BBU1MgY29udGFpbmVy
LnNjcm9sbFRvcCBpcyB3aXRoaW4gMSBvZiAxMzIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL3Nj
cm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW92ZXJmbG93LXBhZ2luZy5odG1sIGIvTGF5b3V0VGVz
dHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtcGFkZGluZy1vdmVyZmxvdy1wYWdpbmcuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iNTg5ZWFlNDcxMjhiY2JmYzFjZDczNDE4NmVkZmI4MDA0ODlmMzdjCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtcGFkZGlu
Zy1vdmVyZmxvdy1wYWdpbmcuaHRtbApAQCAtMCwwICsxLDg5IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgIC5ib3ggeworICAg
ICAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICAg
ICAgfQorCisgICAgICAgIC5nYWxsZXJ5IHsKKyAgICAgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7
CisgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0Pgor
ICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgZnVuY3Rpb24g
Y2xpY2tPbkVsZW1lbnQodGFyZ2V0RWxlbWVudCkgeworICAgICAgICAgICAgdmFyIGNsaWVudFJl
Y3QgPSB0YXJnZXRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oY2xpZW50UmVjdC54ICsgNSwgY2xpZW50UmVjdC55ICsg
NSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGFzeW5jIGZ1bmN0aW9uIHJ1blRlc3RzKCkKKyAgICAgICAgeworICAgICAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgICAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNvbnRhaW5lciIpOworCisgICAgICAgICAgICAgICAgY2xpY2tPbkVsZW1lbnQoY29u
dGFpbmVyKTsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJwYWdlRG93biIp
OworCisgICAgICAgICAgICAgICAgZXhwZWN0VHJ1ZShjb250YWluZXIuc2Nyb2xsVG9wICE9IDAs
ICJwYWdpbmcgbW92ZWQgY29udGFpbmVyIik7CisgICAgICAgICAgICAgICAgbGV0IGRlZmF1bHRQ
YWdlUG9zaXRpb24gPSBjb250YWluZXIuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGxldCBw
YWdlUHJvcG9ydGlvbiA9IGNvbnRhaW5lci5zY3JvbGxUb3AgLyBjb250YWluZXIuY2xpZW50SGVp
Z2h0OworCisgICAgICAgICAgICAgICAgY29udGFpbmVyLnNjcm9sbFRvcCA9IDA7CisgICAgICAg
ICAgICAgICAgY29udGFpbmVyLnN0eWxlLnNjcm9sbFBhZGRpbmdUb3AgPSAiMTBweCI7CisgICAg
ICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigicGFnZURvd24iKTsKKworICAgICAgICAg
ICAgICAgIGxldCBleHBlY3RlZCA9IChjb250YWluZXIuY2xpZW50SGVpZ2h0IC0gMTApICogcGFn
ZVByb3BvcnRpb247CisgICAgICAgICAgICAgICAgZXhwZWN0VHJ1ZShjb250YWluZXIuc2Nyb2xs
VG9wICE9IDAsICJwYWdpbmcgbW92ZWQgcGFkZGVkIGNvbnRhaW5lciIpOworICAgICAgICAgICAg
ICAgIHNob3VsZEJlQ2xvc2VUbygiY29udGFpbmVyLnNjcm9sbFRvcCIsIGV4cGVjdGVkLCAxKTsK
KworICAgICAgICAgICAgICAgIGNvbnRhaW5lci5zY3JvbGxUb3AgPSAwOworICAgICAgICAgICAg
ICAgIGNvbnRhaW5lci5zdHlsZS5zY3JvbGxQYWRkaW5nVG9wID0gIjBweCI7CisgICAgICAgICAg
ICAgICAgY29udGFpbmVyLnN0eWxlLnNjcm9sbFBhZGRpbmdCb3R0b20gPSAiMTBweCI7CisgICAg
ICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigicGFnZURvd24iKTsKKworICAgICAgICAg
ICAgICAgIGV4cGVjdFRydWUoY29udGFpbmVyLnNjcm9sbFRvcCAhPSAwLCAicGFnaW5nIG1vdmVk
IHBhZGRlZCBjb250YWluZXIiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZUNsb3NlVG8oImNv
bnRhaW5lci5zY3JvbGxUb3AiLCBleHBlY3RlZCwgMSk7CisKKyAgICAgICAgICAgICAgICBjb250
YWluZXIuc2Nyb2xsVG9wID0gMDsKKyAgICAgICAgICAgICAgICBjb250YWluZXIuc3R5bGUuc2Ny
b2xsUGFkZGluZ1RvcCA9ICIxMHB4IjsKKyAgICAgICAgICAgICAgICBjb250YWluZXIuc3R5bGUu
c2Nyb2xsUGFkZGluZ0JvdHRvbSA9ICIxMHB4IjsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRl
ci5rZXlEb3duKCJwYWdlRG93biIpOworCisgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSAoY29u
dGFpbmVyLmNsaWVudEhlaWdodCAtIDIwKSAqIHBhZ2VQcm9wb3J0aW9uOworICAgICAgICAgICAg
ICAgIGV4cGVjdFRydWUoY29udGFpbmVyLnNjcm9sbFRvcCAhPSAwLCAicGFnaW5nIG1vdmVkIHBh
ZGRlZCBjb250YWluZXIiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZUNsb3NlVG8oImNvbnRh
aW5lci5zY3JvbGxUb3AiLCBleHBlY3RlZCwgMSk7CisgICAgICAgICAgICB9IGNhdGNoIChlKSB7
CisgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZSk7CisgICAgICAgICAgICB9IGZpbmFsbHkg
eworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIHJ1blRlc3RzKCk7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmlu
bmVyVGV4dCA9ICJUaGlzIHRlc3QgY2Fubm90IGJlIHJ1biBtYW51YWxseS4iCisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5
IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cisg
ICAgICAgIDxkaXYgaWQ9ImNvbnRhaW5lciIgY2xhc3M9ImJveCIgc3R5bGU9Im92ZXJmbG93OiBz
Y3JvbGw7Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQ6
IGdyZWVuOyI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJiYWNr
Z3JvdW5kOiByZWQ7Ij48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9
ImJhY2tncm91bmQ6IHBpbms7Ij48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJveCIg
c3R5bGU9ImJhY2tncm91bmQ6IHllbGxvdzsiPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFz
cz0iYm94IiBzdHlsZT0iYmFja2dyb3VuZDogb3JhbmdlOyI+PC9kaXY+CisgICAgICAgIDwvZGl2
PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417826</attachid>
            <date>2021-01-18 03:18:07 -0800</date>
            <delta_ts>2021-01-18 04:59:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219074-20210118121805.patch</filename>
            <type>text/plain</type>
            <size>25098</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODRjMjJlZDkyODNiN2Ri
NDYzZjNiOGYxMDhkZGVjMDgyMzMwZjgwOC4uZGJkYWEzZmYzZjI1MzQyYzNjZmM2YmFjYzRjMmJk
OTkwMDNhMTI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTAxLTE4ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBzY3JvbGwtcGFk
ZGluZyBzaG91bGQgYWZmZWN0IHBhZ2luZyBvcGVyYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkwNzQKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzcxNzQ3Nzg2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEhhdmUgc2Nyb2xsLXBhZGRpbmcgYWZmZWN0IHRoZSBhbW91bnQgb2YgdGhlIHNjcm9s
bGFibGUgYXJlYSB0aGF0IG1vdmVzIGR1cmluZworICAgICAgICBwYWdpbmcgb3BlcmF0aW9ucy4g
VGhpcyBpcyB0aGUgYmVoYXZpb3Igc3BlY2lmaWVkIGluIHRoZSBzY3JvbGwgc25hcCBzcGVjaWZp
Y2F0aW9uCisgICAgICAgIGFuZCBhbGxvd3Mgc2Nyb2xsYWJsZSBhcmVhcyB3aXRoIHBhcnRpYWxs
eSBvYnNjdXJlZCBhcmVhcyB0byBwcm9wZXJseSBwYWdlIHRocm91Z2gKKyAgICAgICAgdGhlaXIg
Y29udGVudC4KKworICAgICAgICBTZWUgaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1zY3Jv
bGwtc25hcC0xLyNwcm9wZGVmLXNjcm9sbC1wYWRkaW5nLgorCisgICAgICAgIFRlc3RzOiBjc3Mz
L3Njcm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW1haW5mcmFtZS1wYWdpbmcuaHRtbAorICAgICAg
ICAgICAgICAgY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtcGFkZGluZy1vdmVyZmxvdy1wYWdpbmcu
aHRtbAorCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxiYXJTdGVwcyk6IEFkZGVkIHRoaXMgb3ZlcnJpZGUgbWV0
aG9kIHdoaWNoCisgICAgICAgIHByb3Blcmx5IHNldHMgcGFnZSBzdGVwcy4gT25seSBGcmFtZVZp
ZXcgaGFzIGFjY2VzcyB0byB0aGUgZG9jdW1lbnQuCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMpOiBBZGRlZCB0aGlzIGhlbHBlciBtZXRob2Qs
IHdoaWNoIGlzCisgICAgICAgIHZpcnR1YWwgc28gdGhhdCBGcmFtZVZpZXcgY2FuIG92ZXJyaWRl
IGl0LgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFyU3RlcHMp
OiBVc2UgdGhlIGhlbHBlciBtZXRob2QgdG8gYWN0dWFsbHkKKyAgICAgICAgc2V0IHRoZSBzY3Jv
bGxiYXIgc3RlcHMuCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5oOiBBZGQgbmV3IG1l
dGhvZCBkZWNsYXJhdGlvbnMuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnNjcm9sbFBhZGRpbmdGb3JWaWV3cG9ydFJlY3Qp
OiBBZGQgdGhpcyBuZXcgaGVscGVyIHdoaWNoCisgICAgICAgIGdldHMgdGhlIHNjcm9sbC1wYWRk
aW5nIGZvciBhIGJveC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6IEFkZCBuZXcg
aGVscGVyLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpleHBhbmRTY3JvbGxSZWN0VG9WaXNpYmxlVGFyZ2V0UmVjdFRvSW5jbHVkZVNjcm9s
bFBhZGRpbmcpOiBVc2UgdGhlIG5ldworICAgICAgICBSZW5kZXJCb3ggaGVscGVyLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZVNjcm9sbGJhcnNBZnRlckxheW91dCk6IFVz
ZSB0aGUgbmV3IHVwZGF0ZVNjcm9sbGJhclN0ZXBzIGhlbHBlci4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjp1cGRhdGVTY3JvbGxiYXJTdGVwcyk6IEFkZGVkIHRoaXMgaGVscGVyIHNv
IHRoYXQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdAorICAgICAgICBjYW4gdXBkYXRlIHN0ZXBzIHdo
ZW4gbmVjZXNzYXJ5LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOiBBZGRlZCBu
ZXcgZGVjbGFyYXRpb25zLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnN0eWxl
RGlkQ2hhbmdlKTogVXBkYXRlIHN0ZXBzIG9uIEZyYW1lVmlld3MgYW5kIFJlbmRlckxheWVycwor
ICAgICAgICB3aGVuIHRoZSBzdHlsZSBjaGFuZ2UgZGljdGF0ZXMgaXQuCisKIDIwMjEtMDEtMTgg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYlJUQyBsaXZl
IE9wdXMgYXVkaW8gc3RyZWFtIHN0dXR0ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5k
ZXggZmMyYjM1Nzg2MzM5MTZmMzQzMmU5MzUyYzFlY2NiMTc3MDQ0NjVjYS4uODM0OGViZTYwYTBl
ZGQzMWMwNjA4ODJmMjg4NTQ3ZDg4NDNkYzQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cApAQCAtNTU0NCw2ICs1NTQ0LDI4IEBAIGZsb2F0IEZyYW1lVmlldzo6cGFnZVNjYWxlRmFjdG9y
KCkgY29uc3QKICAgICByZXR1cm4gZnJhbWUoKS5mcmFtZVNjYWxlRmFjdG9yKCk7CiB9CiAKK3Zv
aWQgRnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxiYXJTdGVwcygpCit7CisgICAgYXV0byogZG9jdW1l
bnRFbGVtZW50ID0gZnJhbWUoKS5kb2N1bWVudCgpID8gZnJhbWUoKS5kb2N1bWVudCgpLT5kb2N1
bWVudEVsZW1lbnQoKSA6IG51bGxwdHI7CisgICAgYXV0byogcmVuZGVyZXIgPSBkb2N1bWVudEVs
ZW1lbnQgPyBkb2N1bWVudEVsZW1lbnQtPnJlbmRlckJveCgpIDogbnVsbHB0cjsKKyAgICBpZiAo
IXJlbmRlcmVyKSB7CisgICAgICAgIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhclN0ZXBzKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBMYXlvdXRSZWN0IHBhZGRlZFZpZXdSZWN0
KExheW91dFBvaW50KCksIHZpc2libGVTaXplKCkpOworICAgIHBhZGRlZFZpZXdSZWN0LmNvbnRy
YWN0KHJlbmRlcmVyLT5zY3JvbGxQYWRkaW5nRm9yVmlld3BvcnRSZWN0KHBhZGRlZFZpZXdSZWN0
KSk7CisKKyAgICBpZiAoaG9yaXpvbnRhbFNjcm9sbGJhcigpKSB7CisgICAgICAgIGludCBwYWdl
U3RlcCA9IFNjcm9sbGJhcjo6cGFnZVN0ZXAocGFkZGVkVmlld1JlY3Qud2lkdGgoKSk7CisgICAg
ICAgIGhvcml6b250YWxTY3JvbGxiYXIoKS0+c2V0U3RlcHMoU2Nyb2xsYmFyOjpwaXhlbHNQZXJM
aW5lU3RlcCgpLCBwYWdlU3RlcCk7CisKKyAgICB9CisgICAgaWYgKHZlcnRpY2FsU2Nyb2xsYmFy
KCkpIHsKKyAgICAgICAgaW50IHBhZ2VTdGVwID0gU2Nyb2xsYmFyOjpwYWdlU3RlcChwYWRkZWRW
aWV3UmVjdC5oZWlnaHQoKSk7CisgICAgICAgIHZlcnRpY2FsU2Nyb2xsYmFyKCktPnNldFN0ZXBz
KFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSwgcGFnZVN0ZXApOworICAgIH0KK30KIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI3VuZGVmIFBBR0VfSUQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5oCmluZGV4IGJkZmUyNzg0OWYyOTYxYzZkZGU1ZTlmZjhkZGI1MTAyMTVmMzE3MjcuLjg4NDcx
NjY1ZjA0ZGYyYmVmNWRlZWFhMjA4M2ZlNGViY2RlNjQzYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuaApAQCAtNjgwLDYgKzY4MCw5IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBkZWJ1Z0Rlc2Ny
aXB0aW9uKCkgY29uc3QgZmluYWw7CiAKKyAgICAvLyBTY3JvbGxWaWV3CisgICAgdm9pZCB1cGRh
dGVTY3JvbGxiYXJTdGVwcygpIG92ZXJyaWRlOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEZy
YW1lVmlldyhGcmFtZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCmlu
ZGV4IDZhMWU3NzQ4ZWZmNWI1NGJhOWMxOTc0YjBkM2JiYjc0YzkyZDRkODMuLjkxYzY1OWM3MTQx
M2UzMmUzMDU1MDM5MTI0MmEyNjQ3YzI2ZDA5NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbFZpZXcuY3BwCkBAIC03MzEsNyArNzMxLDYgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVT
Y3JvbGxiYXJzKGNvbnN0IFNjcm9sbFBvc2l0aW9uJiBkZXNpcmVkUG9zaXRpb24pCiAKICAgICBp
ZiAobV9ob3Jpem9udGFsU2Nyb2xsYmFyKSB7CiAgICAgICAgIGludCBjbGllbnRXaWR0aCA9IHZp
c2libGVXaWR0aCgpOwotICAgICAgICBpbnQgcGFnZVN0ZXAgPSBTY3JvbGxiYXI6OnBhZ2VTdGVw
KGNsaWVudFdpZHRoKTsKICAgICAgICAgSW50UmVjdCBvbGRSZWN0KG1faG9yaXpvbnRhbFNjcm9s
bGJhci0+ZnJhbWVSZWN0KCkpOwogICAgICAgICBJbnRSZWN0IGhCYXJSZWN0KHNob3VsZFBsYWNl
QmxvY2tEaXJlY3Rpb25TY3JvbGxiYXJPbkxlZnQoKSAmJiBtX3ZlcnRpY2FsU2Nyb2xsYmFyID8g
bV92ZXJ0aWNhbFNjcm9sbGJhci0+b2NjdXBpZWRXaWR0aCgpIDogMCwKICAgICAgICAgICAgIGhl
aWdodCgpIC0gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5oZWlnaHQoKSwKQEAgLTc0NCw3ICs3NDMs
NiBAQCB2b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMoY29uc3QgU2Nyb2xsUG9zaXRp
b24mIGRlc2lyZWRQb3NpdGlvbikKICAgICAgICAgaWYgKG1fc2Nyb2xsYmFyc1N1cHByZXNzZWQp
CiAgICAgICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldFN1cHByZXNzSW52YWxpZGF0
aW9uKHRydWUpOwogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldEVuYWJsZWQoY29u
dGVudHNXaWR0aCgpID4gY2xpZW50V2lkdGgpOwotICAgICAgICBtX2hvcml6b250YWxTY3JvbGxi
YXItPnNldFN0ZXBzKFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSwgcGFnZVN0ZXApOwog
ICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldFByb3BvcnRpb24oY2xpZW50V2lkdGgs
IGNvbnRlbnRzV2lkdGgoKSk7CiAgICAgICAgIGlmIChtX3Njcm9sbGJhcnNTdXBwcmVzc2VkKQog
ICAgICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRTdXBwcmVzc0ludmFsaWRhdGlv
bihmYWxzZSk7IApAQCAtNzUyLDcgKzc1MCw2IEBAIHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Ny
b2xsYmFycyhjb25zdCBTY3JvbGxQb3NpdGlvbiYgZGVzaXJlZFBvc2l0aW9uKQogCiAgICAgaWYg
KG1fdmVydGljYWxTY3JvbGxiYXIpIHsKICAgICAgICAgaW50IGNsaWVudEhlaWdodCA9IHZpc2li
bGVIZWlnaHQoKTsKLSAgICAgICAgaW50IHBhZ2VTdGVwID0gU2Nyb2xsYmFyOjpwYWdlU3RlcChj
bGllbnRIZWlnaHQpOwogICAgICAgICBJbnRSZWN0IG9sZFJlY3QobV92ZXJ0aWNhbFNjcm9sbGJh
ci0+ZnJhbWVSZWN0KCkpOwogICAgICAgICBJbnRSZWN0IHZCYXJSZWN0KHNob3VsZFBsYWNlQmxv
Y2tEaXJlY3Rpb25TY3JvbGxiYXJPbkxlZnQoKSA/IDAgOiB3aWR0aCgpIC0gbV92ZXJ0aWNhbFNj
cm9sbGJhci0+d2lkdGgoKSwKICAgICAgICAgICAgIHRvcENvbnRlbnRJbnNldCgpLApAQCAtNzY1
LDEyICs3NjIsMTMgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKGNvbnN0IFNj
cm9sbFBvc2l0aW9uJiBkZXNpcmVkUG9zaXRpb24pCiAgICAgICAgIGlmIChtX3Njcm9sbGJhcnNT
dXBwcmVzc2VkKQogICAgICAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhci0+c2V0U3VwcHJlc3NJ
bnZhbGlkYXRpb24odHJ1ZSk7CiAgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXItPnNldEVuYWJs
ZWQodG90YWxDb250ZW50c1NpemUoKS5oZWlnaHQoKSA+IGNsaWVudEhlaWdodCk7Ci0gICAgICAg
IG1fdmVydGljYWxTY3JvbGxiYXItPnNldFN0ZXBzKFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0
ZXAoKSwgcGFnZVN0ZXApOwogICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5zZXRQcm9wb3J0
aW9uKGNsaWVudEhlaWdodCwgdG90YWxDb250ZW50c1NpemUoKS5oZWlnaHQoKSk7CiAgICAgICAg
IGlmIChtX3Njcm9sbGJhcnNTdXBwcmVzc2VkKQogICAgICAgICAgICAgbV92ZXJ0aWNhbFNjcm9s
bGJhci0+c2V0U3VwcHJlc3NJbnZhbGlkYXRpb24oZmFsc2UpOwogICAgIH0KIAorICAgIHVwZGF0
ZVNjcm9sbGJhclN0ZXBzKCk7CisKICAgICBpZiAoaGFzSG9yaXpvbnRhbFNjcm9sbGJhciAhPSBu
ZXdIYXNIb3Jpem9udGFsU2Nyb2xsYmFyIHx8IGhhc1ZlcnRpY2FsU2Nyb2xsYmFyICE9IG5ld0hh
c1ZlcnRpY2FsU2Nyb2xsYmFyKSB7CiAgICAgICAgIC8vIEZJWE1FOiBJcyBmcmFtZVJlY3RzQ2hh
bmdlZCByZWFsbHkgbmVjZXNzYXJ5IGhlcmU/IEhhdmUgYW55IGZyYW1lIHJlY3RzIGNoYW5nZWQ/
CiAgICAgICAgIGZyYW1lUmVjdHNDaGFuZ2VkKCk7CkBAIC03OTEsNiArNzg5LDE0IEBAIHZvaWQg
U2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyhjb25zdCBTY3JvbGxQb3NpdGlvbiYgZGVzaXJl
ZFBvc2l0aW9uKQogICAgIG1faW5VcGRhdGVTY3JvbGxiYXJzID0gZmFsc2U7CiB9CiAKK3ZvaWQg
U2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFyU3RlcHMoKQoreworICAgIGlmIChtX2hvcml6b250
YWxTY3JvbGxiYXIpCisgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0U3RlcHMoU2Ny
b2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpLCBTY3JvbGxiYXI6OnBhZ2VTdGVwKHZpc2libGVX
aWR0aCgpKSk7CisgICAgaWYgKG1fdmVydGljYWxTY3JvbGxiYXIpCisgICAgICAgIG1fdmVydGlj
YWxTY3JvbGxiYXItPnNldFN0ZXBzKFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSwgU2Ny
b2xsYmFyOjpwYWdlU3RlcCh2aXNpYmxlSGVpZ2h0KCkpKTsKK30KKwogY29uc3QgaW50IHBhbklj
b25TaXplTGVuZ3RoID0gMTY7CiAKIEludFJlY3QgU2Nyb2xsVmlldzo6cmVjdFRvQ29weU9uU2Ny
b2xsKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZp
ZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAppbmRleCBkNjk3NGU4
NWVjN2E4OTM5NDE4MjEwOWY4ZWUyNjFmNjk4M2ZhNjRhLi42YzI4MDBkZmMzMGNlOThkYjcyZmRl
MTYxYmYzMWNhYjAwNDU0NzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCkBA
IC0zOTcsNiArMzk3LDcgQEAgcHVibGljOgogICAgIGJvb2wgYWxsb3dzVW5jbGFtcGVkU2Nyb2xs
UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2FsbG93c1VuY2xhbXBlZFNjcm9sbFBvc2l0aW9u
OyB9CiAKICAgICBib29sIG1hbmFnZXNTY3JvbGxiYXJzKCkgY29uc3Q7CisgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVNjcm9sbGJhclN0ZXBzKCk7CiAKIHByb3RlY3RlZDoKICAgICBTY3JvbGxWaWV3
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDI3NmM2MzQ0NjY0
MjI4Y2FjYTFjMTllMjU3YmZhMzk0MTk1NDM0MTEuLjQ0ZDJiZGNmYTdjMjRmMjcwN2EyNjExMmNj
NGY4NzU5YWNlNmE1ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBA
IC01MTYwLDQgKzUxNjAsMTIgQEAgTGF5b3V0UmVjdCBSZW5kZXJCb3g6OmFic29sdXRlQW5jaG9y
UmVjdFdpdGhTY3JvbGxNYXJnaW4oYm9vbCogaW5zaWRlRml4ZWQpIGNvbnMKICAgICByZXR1cm4g
YW5jaG9yUmVjdDsKIH0KIAorTGF5b3V0Qm94RXh0ZW50IFJlbmRlckJveDo6c2Nyb2xsUGFkZGlu
Z0ZvclZpZXdwb3J0UmVjdChjb25zdCBMYXlvdXRSZWN0JiB2aWV3cG9ydFJlY3QpCit7CisgICAg
Y29uc3QgYXV0byYgcGFkZGluZyA9IHN0eWxlKCkuc2Nyb2xsUGFkZGluZygpOworICAgIHJldHVy
biBMYXlvdXRCb3hFeHRlbnQoCisgICAgICAgIHZhbHVlRm9yTGVuZ3RoKHBhZGRpbmcudG9wKCks
IHZpZXdwb3J0UmVjdC5oZWlnaHQoKSksIHZhbHVlRm9yTGVuZ3RoKHBhZGRpbmcucmlnaHQoKSwg
dmlld3BvcnRSZWN0LndpZHRoKCkpLAorICAgICAgICB2YWx1ZUZvckxlbmd0aChwYWRkaW5nLmJv
dHRvbSgpLCB2aWV3cG9ydFJlY3QuaGVpZ2h0KCkpLCB2YWx1ZUZvckxlbmd0aChwYWRkaW5nLmxl
ZnQoKSwgdmlld3BvcnRSZWN0LndpZHRoKCkpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IGFmOThiNDkyY2U5N2NiYTg5
MWNiYzI1OGY2MGQ0OGU5ZmNjNGM1ZDMuLjc2NGMxZmI1NWJhZGQ4ZGI2ZTIzMTBhMzY5YmExZDFm
M2U2MjVmZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTQ5NSw2ICs0
OTUsOCBAQCBvdmVycmlkZTsKICAgICBib29sIGhhc1Njcm9sbGFibGVPdmVyZmxvd1goKSBjb25z
dCB7IHJldHVybiBzY3JvbGxzT3ZlcmZsb3dYKCkgJiYgaGFzSG9yaXpvbnRhbE92ZXJmbG93KCk7
IH0KICAgICBib29sIGhhc1Njcm9sbGFibGVPdmVyZmxvd1koKSBjb25zdCB7IHJldHVybiBzY3Jv
bGxzT3ZlcmZsb3dZKCkgJiYgaGFzVmVydGljYWxPdmVyZmxvdygpOyB9CiAKKyAgICBMYXlvdXRC
b3hFeHRlbnQgc2Nyb2xsUGFkZGluZ0ZvclZpZXdwb3J0UmVjdChjb25zdCBMYXlvdXRSZWN0JiB2
aWV3cG9ydFJlY3QpOworCiAgICAgYm9vbCB1c2VzQ29tcG9zaXRlZFNjcm9sbGluZygpIGNvbnN0
OwogICAgIAogICAgIGJvb2wgcGVyY2VudGFnZUxvZ2ljYWxIZWlnaHRJc1Jlc29sdmFibGUoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDc0NDBh
MjFiMjBiOTA4OTc0MzI0MmVhZTUzNzZjZjc2OTc5NjU2NzAuLjY1YzU5ZjMyOTBlNWRhZjk5NzUx
YTdjMzcwYWExZGYwYWJmOTBiNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcApAQCAtODA0LDExICs4MDQsNyBAQCBzdGF0aWMgdm9pZCBleHBhbmRTY3JvbGxSZWN0
VG9WaXNpYmxlVGFyZ2V0UmVjdFRvSW5jbHVkZVNjcm9sbFBhZGRpbmcoUmVuZGVyQm94KgogICAg
IC8vIHNjcm9sbC1wYWRkaW5nIGFwcGxpZXMgdG8gdGhlIHNjcm9sbCBjb250YWluZXIsIGJ1dCBl
eHBhbmQgdGhlIHJlY3RhbmdsZSB0aGF0IHdlIHdhbnQgdG8gZXhwb3NlIGluIG9yZGVyCiAgICAg
Ly8gc2ltdWxhdGUgcGFkZGluZyB0aGUgc2Nyb2xsIGNvbnRhaW5lci4gVGhpcyByZWN0YW5nbGUg
aXMgcGFzc2VkIHVwIHRoZSB0cmVlIG9mIHNjcm9sbGluZyBlbGVtZW50cyB0bwogICAgIC8vIGVu
c3VyZSB0aGF0IHRoZSBwYWRkaW5nIG9uIHRoaXMgc2Nyb2xsIGNvbnRhaW5lciBpcyBtYWludGFp
bmVkLgotICAgIGNvbnN0IGF1dG8mIHNjcm9sbFBhZGRpbmcgPSByZW5kZXJCb3gtPnN0eWxlKCku
c2Nyb2xsUGFkZGluZygpOwotICAgIExheW91dEJveEV4dGVudCBzY3JvbGxQYWRkaW5nRXh0ZW50
cygKLSAgICAgICAgdmFsdWVGb3JMZW5ndGgoc2Nyb2xsUGFkZGluZy50b3AoKSwgdmlld1JlY3Qu
aGVpZ2h0KCkpLCB2YWx1ZUZvckxlbmd0aChzY3JvbGxQYWRkaW5nLnJpZ2h0KCksIHZpZXdSZWN0
LndpZHRoKCkpLAotICAgICAgICB2YWx1ZUZvckxlbmd0aChzY3JvbGxQYWRkaW5nLmJvdHRvbSgp
LCB2aWV3UmVjdC5oZWlnaHQoKSksIHZhbHVlRm9yTGVuZ3RoKHNjcm9sbFBhZGRpbmcubGVmdCgp
LCB2aWV3UmVjdC53aWR0aCgpKSk7Ci0gICAgdGFyZ2V0UmVjdC5leHBhbmQoc2Nyb2xsUGFkZGlu
Z0V4dGVudHMpOworICAgIHRhcmdldFJlY3QuZXhwYW5kKHJlbmRlckJveC0+c2Nyb2xsUGFkZGlu
Z0ZvclZpZXdwb3J0UmVjdCh2aWV3UmVjdCkpOwogfQogCiBib29sIFJlbmRlckxheWVyOjpzaG91
bGRCZU5vcm1hbEZsb3dPbmx5KCkgY29uc3QKQEAgLTMwNDEsNiArMzAzNywxMiBAQCB2b2lkIFJl
bmRlckxheWVyOjp1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQoKQogICAgICAgICBtX3Njcm9s
bGFibGVBcmVhLT51cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQoKTsKIH0KIAordm9pZCBSZW5k
ZXJMYXllcjo6dXBkYXRlU2Nyb2xsYmFyU3RlcHMoKQoreworICAgIGlmIChtX3Njcm9sbGFibGVB
cmVhKQorICAgICAgICBtX3Njcm9sbGFibGVBcmVhLT51cGRhdGVTY3JvbGxiYXJTdGVwcygpOwor
fQorCiBib29sIFJlbmRlckxheWVyOjpjYW5Vc2VDb21wb3NpdGVkU2Nyb2xsaW5nKCkgY29uc3QK
IHsKICAgICBpZiAobV9zY3JvbGxhYmxlQXJlYSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmgKaW5kZXggNzYyNWY0MTcxMTZmMGRmMjk5NDljOWI1MzIxY2Y1OWRjMTE3MDI0Zi4u
ZGM3NjA0ZTVkNDEyODljZTc4ZjM1MjY5MzRjNTc5ZWMzYWI2ZTY3YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTUwOSw2ICs1MDksNyBAQCBwdWJsaWM6CiAgICAg
SW50U2l6ZSBvZmZzZXRGcm9tUmVzaXplQ29ybmVyKGNvbnN0IEludFBvaW50JiBsb2NhbFBvaW50
KSBjb25zdDsKIAogICAgIHZvaWQgdXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0KCk7CisgICAg
dm9pZCB1cGRhdGVTY3JvbGxiYXJTdGVwcygpOwogCiAgICAgdm9pZCBhdXRvc2Nyb2xsKGNvbnN0
IEludFBvaW50Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllck1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllck1vZGVsT2JqZWN0LmNwcAppbmRleCBjN2ZjNjZjNzAxM2I3ZThkZTZhYTA2YzQzMTNiZDI5
YTgxODUxYWUzLi4zZDY1NDg0NDE4ZWYyOTAzZGYxZmY2MjNlMzZiZDViZTAwZTI2ZDZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3Qu
Y3BwCkBAIC0xNzIsOCArMTcyLDE2IEBAIHZvaWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c3R5
bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0CiAgICAgICAg
ICAgICB2aWV3KCkuZnJhbWVWaWV3KCkucmVtb3ZlVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdCgq
dGhpcyk7CiAgICAgfQogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBjb25zdCBS
ZW5kZXJTdHlsZSYgbmV3U3R5bGUgPSBzdHlsZSgpOworICAgIGlmIChvbGRTdHlsZSAmJiBvbGRT
dHlsZS0+c2Nyb2xsUGFkZGluZygpICE9IG5ld1N0eWxlLnNjcm9sbFBhZGRpbmcoKSkgeworICAg
ICAgICBpZiAoaXNEb2N1bWVudEVsZW1lbnRSZW5kZXJlcigpKSB7CisgICAgICAgICAgICBGcmFt
ZVZpZXcmIGZyYW1lVmlldyA9IHZpZXcoKS5mcmFtZVZpZXcoKTsKKyAgICAgICAgICAgIGZyYW1l
Vmlldy51cGRhdGVTY3JvbGxiYXJTdGVwcygpOworICAgICAgICB9IGVsc2UgaWYgKFJlbmRlckxh
eWVyKiByZW5kZXJMYXllciA9IGxheWVyKCkpCisgICAgICAgICAgICByZW5kZXJMYXllci0+dXBk
YXRlU2Nyb2xsYmFyU3RlcHMoKTsKKyAgICB9CisKKyNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQ
KQogICAgIGlmIChvbGRTdHlsZSAmJiBzY3JvbGxTbmFwQ29udGFpbmVyUmVxdWlyZXNVcGRhdGVG
b3JTdHlsZVVwZGF0ZSgqb2xkU3R5bGUsIG5ld1N0eWxlKSkgewogICAgICAgICBpZiAoUmVuZGVy
TGF5ZXIqIHJlbmRlckxheWVyID0gbGF5ZXIoKSkgewogICAgICAgICAgICAgYXV0byogc2Nyb2xs
YWJsZUxheWVyID0gcmVuZGVyTGF5ZXItPmVuc3VyZUxheWVyU2Nyb2xsYWJsZUFyZWEoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVB
cmVhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVB
cmVhLmNwcAppbmRleCAzYzk5ODFjNWJjMmUzYzMxMzE0NTI2OTQyOTg3YWY4YjVjMDBiOThhLi44
N2MwMTJjNDQ1NWFiYjljMDBkM2EwZDMyNTkzMWNiMzQ4MzQzZWUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwCkBA
IC0xMDk2LDIzICsxMDk2LDM3IEBAIHZvaWQgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6dXBk
YXRlU2Nyb2xsYmFyc0FmdGVyTGF5b3V0KCkKICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlckZs
ZXhpYmxlQm94PihwYXJlbnQpLT5jbGVhckNhY2hlZE1haW5TaXplRm9yQ2hpbGQoKm1fbGF5ZXIu
cmVuZGVyQm94KCkpOwogICAgIH0KIAotICAgIC8vIFNldCB1cCB0aGUgcmFuZ2UgKGFuZCBwYWdl
IHN0ZXAvbGluZSBzdGVwKS4KKyAgICAvLyBTZXQgdXAgdGhlIHJhbmdlLgorICAgIGlmIChtX2hC
YXIpCisgICAgICAgIG1faEJhci0+c2V0UHJvcG9ydGlvbihyb3VuZFRvSW50KGJveC0+Y2xpZW50
V2lkdGgoKSksIG1fc2Nyb2xsV2lkdGgpOworICAgIGlmIChtX3ZCYXIpCisgICAgICAgIG1fdkJh
ci0+c2V0UHJvcG9ydGlvbihyb3VuZFRvSW50KGJveC0+Y2xpZW50SGVpZ2h0KCkpLCBtX3Njcm9s
bEhlaWdodCk7CisKKyAgICB1cGRhdGVTY3JvbGxiYXJTdGVwcygpOworCisgICAgdXBkYXRlU2Ny
b2xsYWJsZUFyZWFTZXQoaGFzU2Nyb2xsYWJsZUhvcml6b250YWxPdmVyZmxvdygpIHx8IGhhc1Nj
cm9sbGFibGVWZXJ0aWNhbE92ZXJmbG93KCkpOworfQorCit2b2lkIFJlbmRlckxheWVyU2Nyb2xs
YWJsZUFyZWE6OnVwZGF0ZVNjcm9sbGJhclN0ZXBzKCkKK3sKKyAgICBSZW5kZXJCb3gqIGJveCA9
IG1fbGF5ZXIucmVuZGVyQm94KCk7CisgICAgQVNTRVJUKGJveCk7CisKKyAgICBMYXlvdXRSZWN0
IHBhZGRlZExheWVyQm91bmRzKDBfbHUsIDBfbHUsIGJveC0+Y2xpZW50V2lkdGgoKSwgYm94LT5j
bGllbnRIZWlnaHQoKSk7CisgICAgcGFkZGVkTGF5ZXJCb3VuZHMuY29udHJhY3QoYm94LT5zY3Jv
bGxQYWRkaW5nRm9yVmlld3BvcnRSZWN0KHBhZGRlZExheWVyQm91bmRzKSk7CisKKyAgICAvLyBT
ZXQgdXAgdGhlICBwYWdlIHN0ZXAvbGluZSBzdGVwLgogICAgIGlmIChtX2hCYXIpIHsKLSAgICAg
ICAgaW50IGNsaWVudFdpZHRoID0gcm91bmRUb0ludChib3gtPmNsaWVudFdpZHRoKCkpOwotICAg
ICAgICBpbnQgcGFnZVN0ZXAgPSBTY3JvbGxiYXI6OnBhZ2VTdGVwKGNsaWVudFdpZHRoKTsKKyAg
ICAgICAgaW50IHBhZ2VTdGVwID0gU2Nyb2xsYmFyOjpwYWdlU3RlcChyb3VuZFRvSW50KHBhZGRl
ZExheWVyQm91bmRzLndpZHRoKCkpKTsKICAgICAgICAgbV9oQmFyLT5zZXRTdGVwcyhTY3JvbGxi
YXI6OnBpeGVsc1BlckxpbmVTdGVwKCksIHBhZ2VTdGVwKTsKLSAgICAgICAgbV9oQmFyLT5zZXRQ
cm9wb3J0aW9uKGNsaWVudFdpZHRoLCBtX3Njcm9sbFdpZHRoKTsKICAgICB9CiAgICAgaWYgKG1f
dkJhcikgewotICAgICAgICBpbnQgY2xpZW50SGVpZ2h0ID0gcm91bmRUb0ludChib3gtPmNsaWVu
dEhlaWdodCgpKTsKLSAgICAgICAgaW50IHBhZ2VTdGVwID0gU2Nyb2xsYmFyOjpwYWdlU3RlcChj
bGllbnRIZWlnaHQpOworICAgICAgICBpbnQgcGFnZVN0ZXAgPSBTY3JvbGxiYXI6OnBhZ2VTdGVw
KHJvdW5kVG9JbnQocGFkZGVkTGF5ZXJCb3VuZHMuaGVpZ2h0KCkpKTsKICAgICAgICAgbV92QmFy
LT5zZXRTdGVwcyhTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCksIHBhZ2VTdGVwKTsKLSAg
ICAgICAgbV92QmFyLT5zZXRQcm9wb3J0aW9uKGNsaWVudEhlaWdodCwgbV9zY3JvbGxIZWlnaHQp
OwogICAgIH0KLQotICAgIHVwZGF0ZVNjcm9sbGFibGVBcmVhU2V0KGhhc1Njcm9sbGFibGVIb3Jp
em9udGFsT3ZlcmZsb3coKSB8fCBoYXNTY3JvbGxhYmxlVmVydGljYWxPdmVyZmxvdygpKTsKIH0K
IAorCiAvLyBUaGlzIGlzIGNhbGxlZCBmcm9tIGxheW91dCBjb2RlIChiZWZvcmUgdXBkYXRlTGF5
ZXJQb3NpdGlvbnMpLgogdm9pZCBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3Jv
bGxJbmZvQWZ0ZXJMYXlvdXQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmgKaW5kZXggNDczMmIyNjRjNGI5NTQ4NTFhM2Q3
ZjViNjhmMDlmMjE2OGYzN2JlZC4uZGUyNmIzMDQ4OTY2NjZhNWNkZDY0YjUwZjc2ZDZkNTFlZDYz
ZWFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Ny
b2xsYWJsZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJT
Y3JvbGxhYmxlQXJlYS5oCkBAIC0xMjUsNiArMTI1LDcgQEAgcHVibGljOgogICAgIHZvaWQgcGFp
bnRPdmVybGF5U2Nyb2xsYmFycyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiBk
YW1hZ2VSZWN0LCBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4sIFJlbmRlck9iamVjdCogc3VidHJl
ZVBhaW50Um9vdCA9IG51bGxwdHIpOwogCiAgICAgdm9pZCB1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJM
YXlvdXQoKTsKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbGJhclN0ZXBzKCk7CiAKICAgICBib29sIHNj
cm9sbChTY3JvbGxEaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBmbG9hdCBtdWx0aXBsaWVy
ID0gMSk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCAyMzA2YmZmOGVkOTI1NWJiY2JmY2RmMTRlMjhiYmY3NjRhYzE0OWMw
Li42ZDNhNWMyNmExZGUwMTMyMDllNjViN2M2YzEyYTFjY2M2NjExY2FiIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMjEtMDEtMTggIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEu
Y29tPgorCisgICAgICAgIHNjcm9sbC1wYWRkaW5nIHNob3VsZCBhZmZlY3QgcGFnaW5nIG9wZXJh
dGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
OTA3NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzE3NDc3ODY+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjc3MzL3Njcm9sbC1zbmFwL3Njcm9s
bC1wYWRkaW5nLW1haW5mcmFtZS1wYWdpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBjc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW1haW5mcmFtZS1wYWdpbmcuaHRtbDog
QWRkZWQuCisgICAgICAgICogY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtcGFkZGluZy1vdmVyZmxv
dy1wYWdpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL3Njcm9sbC1zbmFw
L3Njcm9sbC1wYWRkaW5nLW92ZXJmbG93LXBhZ2luZy5odG1sOiBBZGRlZC4KKwogMjAyMS0wMS0x
OCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViUlRDIGxp
dmUgT3B1cyBhdWRpbyBzdHJlYW0gc3R1dHRlcnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Nz
czMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXBhZGRpbmctbWFpbmZyYW1lLXBhZ2luZy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW1haW5mcmFt
ZS1wYWdpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3NThhYjk3ZDVkZDM3Mjk0MGQzMDA3
MTdlZjI1NDQ3N2RmMzUxNmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL3Nj
cm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW1haW5mcmFtZS1wYWdpbmctZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTEgQEAKK1BBU1MgcGFnaW5nIG1vdmVkIGJvZHkKK1BBU1MgcGFnaW5nIG1vdmVk
IHBhZGRlZCBib2R5CitQQVNTIGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuc2Nyb2xsVG9wIGlz
IHdpdGhpbiAxIG9mIDUzNS42ODM3NjA2ODM3NjA3CitQQVNTIHBhZ2luZyBtb3ZlZCBwYWRkZWQg
Ym9keQorUEFTUyBkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNjcm9sbFRvcCBpcyB3aXRoaW4g
MSBvZiA1MzUuNjgzNzYwNjgzNzYwNworUEFTUyBwYWdpbmcgbW92ZWQgcGFkZGVkIGJvZHkKK1BB
U1MgZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudC5zY3JvbGxUb3AgaXMgd2l0aGluIDIgb2YgNTI2
LjM2NzUyMTM2NzUyMTQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9s
bC1wYWRkaW5nLW1haW5mcmFtZS1wYWdpbmcuaHRtbCBiL0xheW91dFRlc3RzL2NzczMvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXBhZGRpbmctbWFpbmZyYW1lLXBhZ2luZy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2
MzQ3ZmQ0ZWIwMDA1ZmRlMWYyMTI0ZWE2MTM0OWM3MGYyYzNiOWEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW1haW5mcmFtZS1w
YWdpbmcuaHRtbApAQCAtMCwwICsxLDc4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAg
IDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgIGJvZHkgeworICAgICAgICAgICAgbWFy
Z2luOiAwOworICAgICAgICB9CisKKyAgICAgICAgLmJveCB7CisgICAgICAgICAgICB3aWR0aDog
MTAwdnc7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMHZoOworICAgICAgICB9CisgICAgICAgIDwv
c3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVy
LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOworCisgICAgICAgIGFzeW5jIGZ1bmN0aW9uIHJ1blRlc3RzKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlE
b3duKCJwYWdlRG93biIpOworCisgICAgICAgICAgICAgICAgZXhwZWN0VHJ1ZShkb2N1bWVudC5z
Y3JvbGxpbmdFbGVtZW50LnNjcm9sbFRvcCAhPSAwLCAicGFnaW5nIG1vdmVkIGJvZHkiKTsKKyAg
ICAgICAgICAgICAgICBsZXQgZGVmYXVsdFBhZ2VQb3NpdGlvbiA9IGRvY3VtZW50LnNjcm9sbGlu
Z0VsZW1lbnQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGxldCB2aWV3cG9ydEhlaWdodCA9
IGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgICAg
IGxldCBwYWdlUHJvcG9ydGlvbiA9IGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuc2Nyb2xsVG9w
IC8gdmlld3BvcnRIZWlnaHQ7CisKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5zY3JvbGxpbmdF
bGVtZW50LnNjcm9sbFRvcCA9IDA7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRF
bGVtZW50LnN0eWxlLnNjcm9sbFBhZGRpbmdUb3AgPSAiMTBweCI7CisgICAgICAgICAgICAgICAg
ZXZlbnRTZW5kZXIua2V5RG93bigicGFnZURvd24iKTsKKworICAgICAgICAgICAgICAgIGxldCBl
eHBlY3RlZCA9ICh2aWV3cG9ydEhlaWdodCAtIDEwKSAqIHBhZ2VQcm9wb3J0aW9uOworICAgICAg
ICAgICAgICAgIGV4cGVjdFRydWUoZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudC5zY3JvbGxUb3Ag
IT0gMCwgInBhZ2luZyBtb3ZlZCBwYWRkZWQgYm9keSIpOworICAgICAgICAgICAgICAgIHNob3Vs
ZEJlQ2xvc2VUbygiZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudC5zY3JvbGxUb3AiLCBleHBlY3Rl
ZCwgMSk7CisKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNjcm9s
bFRvcCA9IDA7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxl
LnNjcm9sbFBhZGRpbmdUb3AgPSAiMHB4IjsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1
bWVudEVsZW1lbnQuc3R5bGUuc2Nyb2xsUGFkZGluZ0JvdHRvbSA9ICIxMHB4IjsKKyAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJwYWdlRG93biIpOworCisgICAgICAgICAgICAg
ICAgZXhwZWN0VHJ1ZShkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNjcm9sbFRvcCAhPSAwLCAi
cGFnaW5nIG1vdmVkIHBhZGRlZCBib2R5Iik7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVDbG9z
ZVRvKCJkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNjcm9sbFRvcCIsIGV4cGVjdGVkLCAxKTsK
KworICAgICAgICAgICAgICAgIGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuc2Nyb2xsVG9wID0g
MDsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2Nyb2xs
UGFkZGluZ1RvcCA9ICIxMHB4IjsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVs
ZW1lbnQuc3R5bGUuc2Nyb2xsUGFkZGluZ0JvdHRvbSA9ICIxMHB4IjsKKyAgICAgICAgICAgICAg
ICBldmVudFNlbmRlci5rZXlEb3duKCJwYWdlRG93biIpOworCisgICAgICAgICAgICAgICAgZXhw
ZWN0ZWQgPSAodmlld3BvcnRIZWlnaHQgLSAyMCkgKiBwYWdlUHJvcG9ydGlvbjsKKyAgICAgICAg
ICAgICAgICBleHBlY3RUcnVlKGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuc2Nyb2xsVG9wICE9
IDAsICJwYWdpbmcgbW92ZWQgcGFkZGVkIGJvZHkiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRC
ZUNsb3NlVG8oImRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuc2Nyb2xsVG9wIiwgZXhwZWN0ZWQs
IDIpOworICAgICAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgICAgIGNvbnNvbGUu
bG9nKGUpOworICAgICAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9u
TG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsK
KyAgICAgICAgICAgICAgICBydW5UZXN0cygpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICB2YXIgY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xl
Jyk7CisgICAgICAgICAgICAgICAgY29uc29sZS5pbm5lclRleHQgPSAiVGhpcyB0ZXN0IGNhbm5v
dCBiZSBydW4gbWFudWFsbHkuIgorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwv
c2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAg
ICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQ6IGdyZWVuOyI+PGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJh
Y2tncm91bmQ6IHJlZDsiPjwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJi
YWNrZ3JvdW5kOiBwaW5rOyI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9
ImJhY2tncm91bmQ6IHllbGxvdzsiPjwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJib3giIHN0
eWxlPSJiYWNrZ3JvdW5kOiBvcmFuZ2U7Ij48L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW92
ZXJmbG93LXBhZ2luZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFw
L3Njcm9sbC1wYWRkaW5nLW92ZXJmbG93LXBhZ2luZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTRjZGQ0ZGIyNmUxMDg2ZTUzNDQyOWNjZGU2NTJlZWFjZjE3ZjJhYwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXBhZGRpbmctb3ZlcmZsb3ct
cGFnaW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitQQVNTIHBhZ2luZyBtb3ZlZCBj
b250YWluZXIKK1BBU1MgcGFnaW5nIG1vdmVkIHBhZGRlZCBjb250YWluZXIKK1BBU1MgY29udGFp
bmVyLnNjcm9sbFRvcCBpcyB3aXRoaW4gMSBvZiAxNDAKK1BBU1MgcGFnaW5nIG1vdmVkIHBhZGRl
ZCBjb250YWluZXIKK1BBU1MgY29udGFpbmVyLnNjcm9sbFRvcCBpcyB3aXRoaW4gMSBvZiAxNDAK
K1BBU1MgcGFnaW5nIG1vdmVkIHBhZGRlZCBjb250YWluZXIKK1BBU1MgY29udGFpbmVyLnNjcm9s
bFRvcCBpcyB3aXRoaW4gMSBvZiAxMzIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1z
bmFwL3Njcm9sbC1wYWRkaW5nLW92ZXJmbG93LXBhZ2luZy5odG1sIGIvTGF5b3V0VGVzdHMvY3Nz
My9zY3JvbGwtc25hcC9zY3JvbGwtcGFkZGluZy1vdmVyZmxvdy1wYWdpbmcuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iNTg5ZWFlNDcxMjhiY2JmYzFjZDczNDE4NmVkZmI4MDA0ODlmMzdjCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtcGFkZGluZy1vdmVy
Zmxvdy1wYWdpbmcuaHRtbApAQCAtMCwwICsxLDg5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgIC5ib3ggeworICAgICAgICAg
ICAgd2lkdGg6IDIwMHB4OworICAgICAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICAgICAgfQor
CisgICAgICAgIC5nYWxsZXJ5IHsKKyAgICAgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAg
ICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAg
ICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgZnVuY3Rpb24gY2xpY2tP
bkVsZW1lbnQodGFyZ2V0RWxlbWVudCkgeworICAgICAgICAgICAgdmFyIGNsaWVudFJlY3QgPSB0
YXJnZXRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oY2xpZW50UmVjdC54ICsgNSwgY2xpZW50UmVjdC55ICsgNSk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgfQorCisgICAgICAg
IGFzeW5jIGZ1bmN0aW9uIHJ1blRlc3RzKCkKKyAgICAgICAgeworICAgICAgICAgICAgdHJ5IHsK
KyAgICAgICAgICAgICAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNvbnRhaW5lciIpOworCisgICAgICAgICAgICAgICAgY2xpY2tPbkVsZW1lbnQoY29udGFpbmVy
KTsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJwYWdlRG93biIpOworCisg
ICAgICAgICAgICAgICAgZXhwZWN0VHJ1ZShjb250YWluZXIuc2Nyb2xsVG9wICE9IDAsICJwYWdp
bmcgbW92ZWQgY29udGFpbmVyIik7CisgICAgICAgICAgICAgICAgbGV0IGRlZmF1bHRQYWdlUG9z
aXRpb24gPSBjb250YWluZXIuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGxldCBwYWdlUHJv
cG9ydGlvbiA9IGNvbnRhaW5lci5zY3JvbGxUb3AgLyBjb250YWluZXIuY2xpZW50SGVpZ2h0Owor
CisgICAgICAgICAgICAgICAgY29udGFpbmVyLnNjcm9sbFRvcCA9IDA7CisgICAgICAgICAgICAg
ICAgY29udGFpbmVyLnN0eWxlLnNjcm9sbFBhZGRpbmdUb3AgPSAiMTBweCI7CisgICAgICAgICAg
ICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigicGFnZURvd24iKTsKKworICAgICAgICAgICAgICAg
IGxldCBleHBlY3RlZCA9IChjb250YWluZXIuY2xpZW50SGVpZ2h0IC0gMTApICogcGFnZVByb3Bv
cnRpb247CisgICAgICAgICAgICAgICAgZXhwZWN0VHJ1ZShjb250YWluZXIuc2Nyb2xsVG9wICE9
IDAsICJwYWdpbmcgbW92ZWQgcGFkZGVkIGNvbnRhaW5lciIpOworICAgICAgICAgICAgICAgIHNo
b3VsZEJlQ2xvc2VUbygiY29udGFpbmVyLnNjcm9sbFRvcCIsIGV4cGVjdGVkLCAxKTsKKworICAg
ICAgICAgICAgICAgIGNvbnRhaW5lci5zY3JvbGxUb3AgPSAwOworICAgICAgICAgICAgICAgIGNv
bnRhaW5lci5zdHlsZS5zY3JvbGxQYWRkaW5nVG9wID0gIjBweCI7CisgICAgICAgICAgICAgICAg
Y29udGFpbmVyLnN0eWxlLnNjcm9sbFBhZGRpbmdCb3R0b20gPSAiMTBweCI7CisgICAgICAgICAg
ICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigicGFnZURvd24iKTsKKworICAgICAgICAgICAgICAg
IGV4cGVjdFRydWUoY29udGFpbmVyLnNjcm9sbFRvcCAhPSAwLCAicGFnaW5nIG1vdmVkIHBhZGRl
ZCBjb250YWluZXIiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZUNsb3NlVG8oImNvbnRhaW5l
ci5zY3JvbGxUb3AiLCBleHBlY3RlZCwgMSk7CisKKyAgICAgICAgICAgICAgICBjb250YWluZXIu
c2Nyb2xsVG9wID0gMDsKKyAgICAgICAgICAgICAgICBjb250YWluZXIuc3R5bGUuc2Nyb2xsUGFk
ZGluZ1RvcCA9ICIxMHB4IjsKKyAgICAgICAgICAgICAgICBjb250YWluZXIuc3R5bGUuc2Nyb2xs
UGFkZGluZ0JvdHRvbSA9ICIxMHB4IjsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlE
b3duKCJwYWdlRG93biIpOworCisgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSAoY29udGFpbmVy
LmNsaWVudEhlaWdodCAtIDIwKSAqIHBhZ2VQcm9wb3J0aW9uOworICAgICAgICAgICAgICAgIGV4
cGVjdFRydWUoY29udGFpbmVyLnNjcm9sbFRvcCAhPSAwLCAicGFnaW5nIG1vdmVkIHBhZGRlZCBj
b250YWluZXIiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZUNsb3NlVG8oImNvbnRhaW5lci5z
Y3JvbGxUb3AiLCBleHBlY3RlZCwgMSk7CisgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAg
ICAgICAgICAgICAgY29uc29sZS5sb2coZSk7CisgICAgICAgICAgICB9IGZpbmFsbHkgeworICAg
ICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIHJ1blRlc3RzKCk7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmlubmVyVGV4
dCA9ICJUaGlzIHRlc3QgY2Fubm90IGJlIHJ1biBtYW51YWxseS4iCisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9h
ZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAg
IDxkaXYgaWQ9ImNvbnRhaW5lciIgY2xhc3M9ImJveCIgc3R5bGU9Im92ZXJmbG93OiBzY3JvbGw7
Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQ6IGdyZWVu
OyI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJiYWNrZ3JvdW5k
OiByZWQ7Ij48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tn
cm91bmQ6IHBpbms7Ij48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9
ImJhY2tncm91bmQ6IHllbGxvdzsiPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm94
IiBzdHlsZT0iYmFja2dyb3VuZDogb3JhbmdlOyI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAg
IDwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="commit-queue"
          id="435619"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417829</attachid>
            <date>2021-01-18 04:52:44 -0800</date>
            <delta_ts>2021-01-20 01:30:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219074-20210118135235.patch</filename>
            <type>text/plain</type>
            <size>25122</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODRjMjJlZDkyODNiN2Ri
NDYzZjNiOGYxMDhkZGVjMDgyMzMwZjgwOC4uZGJkYWEzZmYzZjI1MzQyYzNjZmM2YmFjYzRjMmJk
OTkwMDNhMTI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTAxLTE4ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBzY3JvbGwtcGFk
ZGluZyBzaG91bGQgYWZmZWN0IHBhZ2luZyBvcGVyYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkwNzQKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzcxNzQ3Nzg2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEhhdmUgc2Nyb2xsLXBhZGRpbmcgYWZmZWN0IHRoZSBhbW91bnQgb2YgdGhlIHNjcm9s
bGFibGUgYXJlYSB0aGF0IG1vdmVzIGR1cmluZworICAgICAgICBwYWdpbmcgb3BlcmF0aW9ucy4g
VGhpcyBpcyB0aGUgYmVoYXZpb3Igc3BlY2lmaWVkIGluIHRoZSBzY3JvbGwgc25hcCBzcGVjaWZp
Y2F0aW9uCisgICAgICAgIGFuZCBhbGxvd3Mgc2Nyb2xsYWJsZSBhcmVhcyB3aXRoIHBhcnRpYWxs
eSBvYnNjdXJlZCBhcmVhcyB0byBwcm9wZXJseSBwYWdlIHRocm91Z2gKKyAgICAgICAgdGhlaXIg
Y29udGVudC4KKworICAgICAgICBTZWUgaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1zY3Jv
bGwtc25hcC0xLyNwcm9wZGVmLXNjcm9sbC1wYWRkaW5nLgorCisgICAgICAgIFRlc3RzOiBjc3Mz
L3Njcm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW1haW5mcmFtZS1wYWdpbmcuaHRtbAorICAgICAg
ICAgICAgICAgY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtcGFkZGluZy1vdmVyZmxvdy1wYWdpbmcu
aHRtbAorCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxiYXJTdGVwcyk6IEFkZGVkIHRoaXMgb3ZlcnJpZGUgbWV0
aG9kIHdoaWNoCisgICAgICAgIHByb3Blcmx5IHNldHMgcGFnZSBzdGVwcy4gT25seSBGcmFtZVZp
ZXcgaGFzIGFjY2VzcyB0byB0aGUgZG9jdW1lbnQuCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMpOiBBZGRlZCB0aGlzIGhlbHBlciBtZXRob2Qs
IHdoaWNoIGlzCisgICAgICAgIHZpcnR1YWwgc28gdGhhdCBGcmFtZVZpZXcgY2FuIG92ZXJyaWRl
IGl0LgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFyU3RlcHMp
OiBVc2UgdGhlIGhlbHBlciBtZXRob2QgdG8gYWN0dWFsbHkKKyAgICAgICAgc2V0IHRoZSBzY3Jv
bGxiYXIgc3RlcHMuCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5oOiBBZGQgbmV3IG1l
dGhvZCBkZWNsYXJhdGlvbnMuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnNjcm9sbFBhZGRpbmdGb3JWaWV3cG9ydFJlY3Qp
OiBBZGQgdGhpcyBuZXcgaGVscGVyIHdoaWNoCisgICAgICAgIGdldHMgdGhlIHNjcm9sbC1wYWRk
aW5nIGZvciBhIGJveC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6IEFkZCBuZXcg
aGVscGVyLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpleHBhbmRTY3JvbGxSZWN0VG9WaXNpYmxlVGFyZ2V0UmVjdFRvSW5jbHVkZVNjcm9s
bFBhZGRpbmcpOiBVc2UgdGhlIG5ldworICAgICAgICBSZW5kZXJCb3ggaGVscGVyLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZVNjcm9sbGJhcnNBZnRlckxheW91dCk6IFVz
ZSB0aGUgbmV3IHVwZGF0ZVNjcm9sbGJhclN0ZXBzIGhlbHBlci4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjp1cGRhdGVTY3JvbGxiYXJTdGVwcyk6IEFkZGVkIHRoaXMgaGVscGVyIHNv
IHRoYXQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdAorICAgICAgICBjYW4gdXBkYXRlIHN0ZXBzIHdo
ZW4gbmVjZXNzYXJ5LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOiBBZGRlZCBu
ZXcgZGVjbGFyYXRpb25zLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnN0eWxl
RGlkQ2hhbmdlKTogVXBkYXRlIHN0ZXBzIG9uIEZyYW1lVmlld3MgYW5kIFJlbmRlckxheWVycwor
ICAgICAgICB3aGVuIHRoZSBzdHlsZSBjaGFuZ2UgZGljdGF0ZXMgaXQuCisKIDIwMjEtMDEtMTgg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYlJUQyBsaXZl
IE9wdXMgYXVkaW8gc3RyZWFtIHN0dXR0ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5k
ZXggZmMyYjM1Nzg2MzM5MTZmMzQzMmU5MzUyYzFlY2NiMTc3MDQ0NjVjYS4uODM0OGViZTYwYTBl
ZGQzMWMwNjA4ODJmMjg4NTQ3ZDg4NDNkYzQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cApAQCAtNTU0NCw2ICs1NTQ0LDI4IEBAIGZsb2F0IEZyYW1lVmlldzo6cGFnZVNjYWxlRmFjdG9y
KCkgY29uc3QKICAgICByZXR1cm4gZnJhbWUoKS5mcmFtZVNjYWxlRmFjdG9yKCk7CiB9CiAKK3Zv
aWQgRnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxiYXJTdGVwcygpCit7CisgICAgYXV0byogZG9jdW1l
bnRFbGVtZW50ID0gZnJhbWUoKS5kb2N1bWVudCgpID8gZnJhbWUoKS5kb2N1bWVudCgpLT5kb2N1
bWVudEVsZW1lbnQoKSA6IG51bGxwdHI7CisgICAgYXV0byogcmVuZGVyZXIgPSBkb2N1bWVudEVs
ZW1lbnQgPyBkb2N1bWVudEVsZW1lbnQtPnJlbmRlckJveCgpIDogbnVsbHB0cjsKKyAgICBpZiAo
IXJlbmRlcmVyKSB7CisgICAgICAgIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhclN0ZXBzKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBMYXlvdXRSZWN0IHBhZGRlZFZpZXdSZWN0
KExheW91dFBvaW50KCksIHZpc2libGVTaXplKCkpOworICAgIHBhZGRlZFZpZXdSZWN0LmNvbnRy
YWN0KHJlbmRlcmVyLT5zY3JvbGxQYWRkaW5nRm9yVmlld3BvcnRSZWN0KHBhZGRlZFZpZXdSZWN0
KSk7CisKKyAgICBpZiAoaG9yaXpvbnRhbFNjcm9sbGJhcigpKSB7CisgICAgICAgIGludCBwYWdl
U3RlcCA9IFNjcm9sbGJhcjo6cGFnZVN0ZXAocGFkZGVkVmlld1JlY3Qud2lkdGgoKSk7CisgICAg
ICAgIGhvcml6b250YWxTY3JvbGxiYXIoKS0+c2V0U3RlcHMoU2Nyb2xsYmFyOjpwaXhlbHNQZXJM
aW5lU3RlcCgpLCBwYWdlU3RlcCk7CisKKyAgICB9CisgICAgaWYgKHZlcnRpY2FsU2Nyb2xsYmFy
KCkpIHsKKyAgICAgICAgaW50IHBhZ2VTdGVwID0gU2Nyb2xsYmFyOjpwYWdlU3RlcChwYWRkZWRW
aWV3UmVjdC5oZWlnaHQoKSk7CisgICAgICAgIHZlcnRpY2FsU2Nyb2xsYmFyKCktPnNldFN0ZXBz
KFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSwgcGFnZVN0ZXApOworICAgIH0KK30KIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI3VuZGVmIFBBR0VfSUQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5oCmluZGV4IGJkZmUyNzg0OWYyOTYxYzZkZGU1ZTlmZjhkZGI1MTAyMTVmMzE3MjcuLjg4NDcx
NjY1ZjA0ZGYyYmVmNWRlZWFhMjA4M2ZlNGViY2RlNjQzYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuaApAQCAtNjgwLDYgKzY4MCw5IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBkZWJ1Z0Rlc2Ny
aXB0aW9uKCkgY29uc3QgZmluYWw7CiAKKyAgICAvLyBTY3JvbGxWaWV3CisgICAgdm9pZCB1cGRh
dGVTY3JvbGxiYXJTdGVwcygpIG92ZXJyaWRlOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEZy
YW1lVmlldyhGcmFtZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCmlu
ZGV4IDZhMWU3NzQ4ZWZmNWI1NGJhOWMxOTc0YjBkM2JiYjc0YzkyZDRkODMuLjkxYzY1OWM3MTQx
M2UzMmUzMDU1MDM5MTI0MmEyNjQ3YzI2ZDA5NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbFZpZXcuY3BwCkBAIC03MzEsNyArNzMxLDYgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVT
Y3JvbGxiYXJzKGNvbnN0IFNjcm9sbFBvc2l0aW9uJiBkZXNpcmVkUG9zaXRpb24pCiAKICAgICBp
ZiAobV9ob3Jpem9udGFsU2Nyb2xsYmFyKSB7CiAgICAgICAgIGludCBjbGllbnRXaWR0aCA9IHZp
c2libGVXaWR0aCgpOwotICAgICAgICBpbnQgcGFnZVN0ZXAgPSBTY3JvbGxiYXI6OnBhZ2VTdGVw
KGNsaWVudFdpZHRoKTsKICAgICAgICAgSW50UmVjdCBvbGRSZWN0KG1faG9yaXpvbnRhbFNjcm9s
bGJhci0+ZnJhbWVSZWN0KCkpOwogICAgICAgICBJbnRSZWN0IGhCYXJSZWN0KHNob3VsZFBsYWNl
QmxvY2tEaXJlY3Rpb25TY3JvbGxiYXJPbkxlZnQoKSAmJiBtX3ZlcnRpY2FsU2Nyb2xsYmFyID8g
bV92ZXJ0aWNhbFNjcm9sbGJhci0+b2NjdXBpZWRXaWR0aCgpIDogMCwKICAgICAgICAgICAgIGhl
aWdodCgpIC0gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5oZWlnaHQoKSwKQEAgLTc0NCw3ICs3NDMs
NiBAQCB2b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMoY29uc3QgU2Nyb2xsUG9zaXRp
b24mIGRlc2lyZWRQb3NpdGlvbikKICAgICAgICAgaWYgKG1fc2Nyb2xsYmFyc1N1cHByZXNzZWQp
CiAgICAgICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldFN1cHByZXNzSW52YWxpZGF0
aW9uKHRydWUpOwogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldEVuYWJsZWQoY29u
dGVudHNXaWR0aCgpID4gY2xpZW50V2lkdGgpOwotICAgICAgICBtX2hvcml6b250YWxTY3JvbGxi
YXItPnNldFN0ZXBzKFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSwgcGFnZVN0ZXApOwog
ICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldFByb3BvcnRpb24oY2xpZW50V2lkdGgs
IGNvbnRlbnRzV2lkdGgoKSk7CiAgICAgICAgIGlmIChtX3Njcm9sbGJhcnNTdXBwcmVzc2VkKQog
ICAgICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRTdXBwcmVzc0ludmFsaWRhdGlv
bihmYWxzZSk7IApAQCAtNzUyLDcgKzc1MCw2IEBAIHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Ny
b2xsYmFycyhjb25zdCBTY3JvbGxQb3NpdGlvbiYgZGVzaXJlZFBvc2l0aW9uKQogCiAgICAgaWYg
KG1fdmVydGljYWxTY3JvbGxiYXIpIHsKICAgICAgICAgaW50IGNsaWVudEhlaWdodCA9IHZpc2li
bGVIZWlnaHQoKTsKLSAgICAgICAgaW50IHBhZ2VTdGVwID0gU2Nyb2xsYmFyOjpwYWdlU3RlcChj
bGllbnRIZWlnaHQpOwogICAgICAgICBJbnRSZWN0IG9sZFJlY3QobV92ZXJ0aWNhbFNjcm9sbGJh
ci0+ZnJhbWVSZWN0KCkpOwogICAgICAgICBJbnRSZWN0IHZCYXJSZWN0KHNob3VsZFBsYWNlQmxv
Y2tEaXJlY3Rpb25TY3JvbGxiYXJPbkxlZnQoKSA/IDAgOiB3aWR0aCgpIC0gbV92ZXJ0aWNhbFNj
cm9sbGJhci0+d2lkdGgoKSwKICAgICAgICAgICAgIHRvcENvbnRlbnRJbnNldCgpLApAQCAtNzY1
LDEyICs3NjIsMTMgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKGNvbnN0IFNj
cm9sbFBvc2l0aW9uJiBkZXNpcmVkUG9zaXRpb24pCiAgICAgICAgIGlmIChtX3Njcm9sbGJhcnNT
dXBwcmVzc2VkKQogICAgICAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhci0+c2V0U3VwcHJlc3NJ
bnZhbGlkYXRpb24odHJ1ZSk7CiAgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXItPnNldEVuYWJs
ZWQodG90YWxDb250ZW50c1NpemUoKS5oZWlnaHQoKSA+IGNsaWVudEhlaWdodCk7Ci0gICAgICAg
IG1fdmVydGljYWxTY3JvbGxiYXItPnNldFN0ZXBzKFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0
ZXAoKSwgcGFnZVN0ZXApOwogICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5zZXRQcm9wb3J0
aW9uKGNsaWVudEhlaWdodCwgdG90YWxDb250ZW50c1NpemUoKS5oZWlnaHQoKSk7CiAgICAgICAg
IGlmIChtX3Njcm9sbGJhcnNTdXBwcmVzc2VkKQogICAgICAgICAgICAgbV92ZXJ0aWNhbFNjcm9s
bGJhci0+c2V0U3VwcHJlc3NJbnZhbGlkYXRpb24oZmFsc2UpOwogICAgIH0KIAorICAgIHVwZGF0
ZVNjcm9sbGJhclN0ZXBzKCk7CisKICAgICBpZiAoaGFzSG9yaXpvbnRhbFNjcm9sbGJhciAhPSBu
ZXdIYXNIb3Jpem9udGFsU2Nyb2xsYmFyIHx8IGhhc1ZlcnRpY2FsU2Nyb2xsYmFyICE9IG5ld0hh
c1ZlcnRpY2FsU2Nyb2xsYmFyKSB7CiAgICAgICAgIC8vIEZJWE1FOiBJcyBmcmFtZVJlY3RzQ2hh
bmdlZCByZWFsbHkgbmVjZXNzYXJ5IGhlcmU/IEhhdmUgYW55IGZyYW1lIHJlY3RzIGNoYW5nZWQ/
CiAgICAgICAgIGZyYW1lUmVjdHNDaGFuZ2VkKCk7CkBAIC03OTEsNiArNzg5LDE0IEBAIHZvaWQg
U2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyhjb25zdCBTY3JvbGxQb3NpdGlvbiYgZGVzaXJl
ZFBvc2l0aW9uKQogICAgIG1faW5VcGRhdGVTY3JvbGxiYXJzID0gZmFsc2U7CiB9CiAKK3ZvaWQg
U2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFyU3RlcHMoKQoreworICAgIGlmIChtX2hvcml6b250
YWxTY3JvbGxiYXIpCisgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0U3RlcHMoU2Ny
b2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpLCBTY3JvbGxiYXI6OnBhZ2VTdGVwKHZpc2libGVX
aWR0aCgpKSk7CisgICAgaWYgKG1fdmVydGljYWxTY3JvbGxiYXIpCisgICAgICAgIG1fdmVydGlj
YWxTY3JvbGxiYXItPnNldFN0ZXBzKFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSwgU2Ny
b2xsYmFyOjpwYWdlU3RlcCh2aXNpYmxlSGVpZ2h0KCkpKTsKK30KKwogY29uc3QgaW50IHBhbklj
b25TaXplTGVuZ3RoID0gMTY7CiAKIEludFJlY3QgU2Nyb2xsVmlldzo6cmVjdFRvQ29weU9uU2Ny
b2xsKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZp
ZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAppbmRleCBkNjk3NGU4
NWVjN2E4OTM5NDE4MjEwOWY4ZWUyNjFmNjk4M2ZhNjRhLi42YzI4MDBkZmMzMGNlOThkYjcyZmRl
MTYxYmYzMWNhYjAwNDU0NzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCkBA
IC0zOTcsNiArMzk3LDcgQEAgcHVibGljOgogICAgIGJvb2wgYWxsb3dzVW5jbGFtcGVkU2Nyb2xs
UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2FsbG93c1VuY2xhbXBlZFNjcm9sbFBvc2l0aW9u
OyB9CiAKICAgICBib29sIG1hbmFnZXNTY3JvbGxiYXJzKCkgY29uc3Q7CisgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVNjcm9sbGJhclN0ZXBzKCk7CiAKIHByb3RlY3RlZDoKICAgICBTY3JvbGxWaWV3
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDI3NmM2MzQ0NjY0
MjI4Y2FjYTFjMTllMjU3YmZhMzk0MTk1NDM0MTEuLjQ0ZDJiZGNmYTdjMjRmMjcwN2EyNjExMmNj
NGY4NzU5YWNlNmE1ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBA
IC01MTYwLDQgKzUxNjAsMTIgQEAgTGF5b3V0UmVjdCBSZW5kZXJCb3g6OmFic29sdXRlQW5jaG9y
UmVjdFdpdGhTY3JvbGxNYXJnaW4oYm9vbCogaW5zaWRlRml4ZWQpIGNvbnMKICAgICByZXR1cm4g
YW5jaG9yUmVjdDsKIH0KIAorTGF5b3V0Qm94RXh0ZW50IFJlbmRlckJveDo6c2Nyb2xsUGFkZGlu
Z0ZvclZpZXdwb3J0UmVjdChjb25zdCBMYXlvdXRSZWN0JiB2aWV3cG9ydFJlY3QpCit7CisgICAg
Y29uc3QgYXV0byYgcGFkZGluZyA9IHN0eWxlKCkuc2Nyb2xsUGFkZGluZygpOworICAgIHJldHVy
biBMYXlvdXRCb3hFeHRlbnQoCisgICAgICAgIHZhbHVlRm9yTGVuZ3RoKHBhZGRpbmcudG9wKCks
IHZpZXdwb3J0UmVjdC5oZWlnaHQoKSksIHZhbHVlRm9yTGVuZ3RoKHBhZGRpbmcucmlnaHQoKSwg
dmlld3BvcnRSZWN0LndpZHRoKCkpLAorICAgICAgICB2YWx1ZUZvckxlbmd0aChwYWRkaW5nLmJv
dHRvbSgpLCB2aWV3cG9ydFJlY3QuaGVpZ2h0KCkpLCB2YWx1ZUZvckxlbmd0aChwYWRkaW5nLmxl
ZnQoKSwgdmlld3BvcnRSZWN0LndpZHRoKCkpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IGFmOThiNDkyY2U5N2NiYTg5
MWNiYzI1OGY2MGQ0OGU5ZmNjNGM1ZDMuLjc2NGMxZmI1NWJhZGQ4ZGI2ZTIzMTBhMzY5YmExZDFm
M2U2MjVmZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTQ5NSw2ICs0
OTUsOCBAQCBvdmVycmlkZTsKICAgICBib29sIGhhc1Njcm9sbGFibGVPdmVyZmxvd1goKSBjb25z
dCB7IHJldHVybiBzY3JvbGxzT3ZlcmZsb3dYKCkgJiYgaGFzSG9yaXpvbnRhbE92ZXJmbG93KCk7
IH0KICAgICBib29sIGhhc1Njcm9sbGFibGVPdmVyZmxvd1koKSBjb25zdCB7IHJldHVybiBzY3Jv
bGxzT3ZlcmZsb3dZKCkgJiYgaGFzVmVydGljYWxPdmVyZmxvdygpOyB9CiAKKyAgICBMYXlvdXRC
b3hFeHRlbnQgc2Nyb2xsUGFkZGluZ0ZvclZpZXdwb3J0UmVjdChjb25zdCBMYXlvdXRSZWN0JiB2
aWV3cG9ydFJlY3QpOworCiAgICAgYm9vbCB1c2VzQ29tcG9zaXRlZFNjcm9sbGluZygpIGNvbnN0
OwogICAgIAogICAgIGJvb2wgcGVyY2VudGFnZUxvZ2ljYWxIZWlnaHRJc1Jlc29sdmFibGUoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDc0NDBh
MjFiMjBiOTA4OTc0MzI0MmVhZTUzNzZjZjc2OTc5NjU2NzAuLjY1YzU5ZjMyOTBlNWRhZjk5NzUx
YTdjMzcwYWExZGYwYWJmOTBiNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcApAQCAtODA0LDExICs4MDQsNyBAQCBzdGF0aWMgdm9pZCBleHBhbmRTY3JvbGxSZWN0
VG9WaXNpYmxlVGFyZ2V0UmVjdFRvSW5jbHVkZVNjcm9sbFBhZGRpbmcoUmVuZGVyQm94KgogICAg
IC8vIHNjcm9sbC1wYWRkaW5nIGFwcGxpZXMgdG8gdGhlIHNjcm9sbCBjb250YWluZXIsIGJ1dCBl
eHBhbmQgdGhlIHJlY3RhbmdsZSB0aGF0IHdlIHdhbnQgdG8gZXhwb3NlIGluIG9yZGVyCiAgICAg
Ly8gc2ltdWxhdGUgcGFkZGluZyB0aGUgc2Nyb2xsIGNvbnRhaW5lci4gVGhpcyByZWN0YW5nbGUg
aXMgcGFzc2VkIHVwIHRoZSB0cmVlIG9mIHNjcm9sbGluZyBlbGVtZW50cyB0bwogICAgIC8vIGVu
c3VyZSB0aGF0IHRoZSBwYWRkaW5nIG9uIHRoaXMgc2Nyb2xsIGNvbnRhaW5lciBpcyBtYWludGFp
bmVkLgotICAgIGNvbnN0IGF1dG8mIHNjcm9sbFBhZGRpbmcgPSByZW5kZXJCb3gtPnN0eWxlKCku
c2Nyb2xsUGFkZGluZygpOwotICAgIExheW91dEJveEV4dGVudCBzY3JvbGxQYWRkaW5nRXh0ZW50
cygKLSAgICAgICAgdmFsdWVGb3JMZW5ndGgoc2Nyb2xsUGFkZGluZy50b3AoKSwgdmlld1JlY3Qu
aGVpZ2h0KCkpLCB2YWx1ZUZvckxlbmd0aChzY3JvbGxQYWRkaW5nLnJpZ2h0KCksIHZpZXdSZWN0
LndpZHRoKCkpLAotICAgICAgICB2YWx1ZUZvckxlbmd0aChzY3JvbGxQYWRkaW5nLmJvdHRvbSgp
LCB2aWV3UmVjdC5oZWlnaHQoKSksIHZhbHVlRm9yTGVuZ3RoKHNjcm9sbFBhZGRpbmcubGVmdCgp
LCB2aWV3UmVjdC53aWR0aCgpKSk7Ci0gICAgdGFyZ2V0UmVjdC5leHBhbmQoc2Nyb2xsUGFkZGlu
Z0V4dGVudHMpOworICAgIHRhcmdldFJlY3QuZXhwYW5kKHJlbmRlckJveC0+c2Nyb2xsUGFkZGlu
Z0ZvclZpZXdwb3J0UmVjdCh2aWV3UmVjdCkpOwogfQogCiBib29sIFJlbmRlckxheWVyOjpzaG91
bGRCZU5vcm1hbEZsb3dPbmx5KCkgY29uc3QKQEAgLTMwNDEsNiArMzAzNywxMiBAQCB2b2lkIFJl
bmRlckxheWVyOjp1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQoKQogICAgICAgICBtX3Njcm9s
bGFibGVBcmVhLT51cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQoKTsKIH0KIAordm9pZCBSZW5k
ZXJMYXllcjo6dXBkYXRlU2Nyb2xsYmFyU3RlcHMoKQoreworICAgIGlmIChtX3Njcm9sbGFibGVB
cmVhKQorICAgICAgICBtX3Njcm9sbGFibGVBcmVhLT51cGRhdGVTY3JvbGxiYXJTdGVwcygpOwor
fQorCiBib29sIFJlbmRlckxheWVyOjpjYW5Vc2VDb21wb3NpdGVkU2Nyb2xsaW5nKCkgY29uc3QK
IHsKICAgICBpZiAobV9zY3JvbGxhYmxlQXJlYSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmgKaW5kZXggNzYyNWY0MTcxMTZmMGRmMjk5NDljOWI1MzIxY2Y1OWRjMTE3MDI0Zi4u
ZGM3NjA0ZTVkNDEyODljZTc4ZjM1MjY5MzRjNTc5ZWMzYWI2ZTY3YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTUwOSw2ICs1MDksNyBAQCBwdWJsaWM6CiAgICAg
SW50U2l6ZSBvZmZzZXRGcm9tUmVzaXplQ29ybmVyKGNvbnN0IEludFBvaW50JiBsb2NhbFBvaW50
KSBjb25zdDsKIAogICAgIHZvaWQgdXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0KCk7CisgICAg
dm9pZCB1cGRhdGVTY3JvbGxiYXJTdGVwcygpOwogCiAgICAgdm9pZCBhdXRvc2Nyb2xsKGNvbnN0
IEludFBvaW50Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllck1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllck1vZGVsT2JqZWN0LmNwcAppbmRleCBjN2ZjNjZjNzAxM2I3ZThkZTZhYTA2YzQzMTNiZDI5
YTgxODUxYWUzLi4zZDY1NDg0NDE4ZWYyOTAzZGYxZmY2MjNlMzZiZDViZTAwZTI2ZDZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3Qu
Y3BwCkBAIC0xNzIsOCArMTcyLDE2IEBAIHZvaWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c3R5
bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0CiAgICAgICAg
ICAgICB2aWV3KCkuZnJhbWVWaWV3KCkucmVtb3ZlVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdCgq
dGhpcyk7CiAgICAgfQogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBjb25zdCBS
ZW5kZXJTdHlsZSYgbmV3U3R5bGUgPSBzdHlsZSgpOworICAgIGlmIChvbGRTdHlsZSAmJiBvbGRT
dHlsZS0+c2Nyb2xsUGFkZGluZygpICE9IG5ld1N0eWxlLnNjcm9sbFBhZGRpbmcoKSkgeworICAg
ICAgICBpZiAoaXNEb2N1bWVudEVsZW1lbnRSZW5kZXJlcigpKSB7CisgICAgICAgICAgICBGcmFt
ZVZpZXcmIGZyYW1lVmlldyA9IHZpZXcoKS5mcmFtZVZpZXcoKTsKKyAgICAgICAgICAgIGZyYW1l
Vmlldy51cGRhdGVTY3JvbGxiYXJTdGVwcygpOworICAgICAgICB9IGVsc2UgaWYgKFJlbmRlckxh
eWVyKiByZW5kZXJMYXllciA9IGxheWVyKCkpCisgICAgICAgICAgICByZW5kZXJMYXllci0+dXBk
YXRlU2Nyb2xsYmFyU3RlcHMoKTsKKyAgICB9CisKKyNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQ
KQogICAgIGlmIChvbGRTdHlsZSAmJiBzY3JvbGxTbmFwQ29udGFpbmVyUmVxdWlyZXNVcGRhdGVG
b3JTdHlsZVVwZGF0ZSgqb2xkU3R5bGUsIG5ld1N0eWxlKSkgewogICAgICAgICBpZiAoUmVuZGVy
TGF5ZXIqIHJlbmRlckxheWVyID0gbGF5ZXIoKSkgewogICAgICAgICAgICAgYXV0byogc2Nyb2xs
YWJsZUxheWVyID0gcmVuZGVyTGF5ZXItPmVuc3VyZUxheWVyU2Nyb2xsYWJsZUFyZWEoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVB
cmVhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVB
cmVhLmNwcAppbmRleCAzYzk5ODFjNWJjMmUzYzMxMzE0NTI2OTQyOTg3YWY4YjVjMDBiOThhLi44
N2MwMTJjNDQ1NWFiYjljMDBkM2EwZDMyNTkzMWNiMzQ4MzQzZWUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwCkBA
IC0xMDk2LDIzICsxMDk2LDM3IEBAIHZvaWQgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6dXBk
YXRlU2Nyb2xsYmFyc0FmdGVyTGF5b3V0KCkKICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlckZs
ZXhpYmxlQm94PihwYXJlbnQpLT5jbGVhckNhY2hlZE1haW5TaXplRm9yQ2hpbGQoKm1fbGF5ZXIu
cmVuZGVyQm94KCkpOwogICAgIH0KIAotICAgIC8vIFNldCB1cCB0aGUgcmFuZ2UgKGFuZCBwYWdl
IHN0ZXAvbGluZSBzdGVwKS4KKyAgICAvLyBTZXQgdXAgdGhlIHJhbmdlLgorICAgIGlmIChtX2hC
YXIpCisgICAgICAgIG1faEJhci0+c2V0UHJvcG9ydGlvbihyb3VuZFRvSW50KGJveC0+Y2xpZW50
V2lkdGgoKSksIG1fc2Nyb2xsV2lkdGgpOworICAgIGlmIChtX3ZCYXIpCisgICAgICAgIG1fdkJh
ci0+c2V0UHJvcG9ydGlvbihyb3VuZFRvSW50KGJveC0+Y2xpZW50SGVpZ2h0KCkpLCBtX3Njcm9s
bEhlaWdodCk7CisKKyAgICB1cGRhdGVTY3JvbGxiYXJTdGVwcygpOworCisgICAgdXBkYXRlU2Ny
b2xsYWJsZUFyZWFTZXQoaGFzU2Nyb2xsYWJsZUhvcml6b250YWxPdmVyZmxvdygpIHx8IGhhc1Nj
cm9sbGFibGVWZXJ0aWNhbE92ZXJmbG93KCkpOworfQorCit2b2lkIFJlbmRlckxheWVyU2Nyb2xs
YWJsZUFyZWE6OnVwZGF0ZVNjcm9sbGJhclN0ZXBzKCkKK3sKKyAgICBSZW5kZXJCb3gqIGJveCA9
IG1fbGF5ZXIucmVuZGVyQm94KCk7CisgICAgQVNTRVJUKGJveCk7CisKKyAgICBMYXlvdXRSZWN0
IHBhZGRlZExheWVyQm91bmRzKDBfbHUsIDBfbHUsIGJveC0+Y2xpZW50V2lkdGgoKSwgYm94LT5j
bGllbnRIZWlnaHQoKSk7CisgICAgcGFkZGVkTGF5ZXJCb3VuZHMuY29udHJhY3QoYm94LT5zY3Jv
bGxQYWRkaW5nRm9yVmlld3BvcnRSZWN0KHBhZGRlZExheWVyQm91bmRzKSk7CisKKyAgICAvLyBT
ZXQgdXAgdGhlICBwYWdlIHN0ZXAvbGluZSBzdGVwLgogICAgIGlmIChtX2hCYXIpIHsKLSAgICAg
ICAgaW50IGNsaWVudFdpZHRoID0gcm91bmRUb0ludChib3gtPmNsaWVudFdpZHRoKCkpOwotICAg
ICAgICBpbnQgcGFnZVN0ZXAgPSBTY3JvbGxiYXI6OnBhZ2VTdGVwKGNsaWVudFdpZHRoKTsKKyAg
ICAgICAgaW50IHBhZ2VTdGVwID0gU2Nyb2xsYmFyOjpwYWdlU3RlcChyb3VuZFRvSW50KHBhZGRl
ZExheWVyQm91bmRzLndpZHRoKCkpKTsKICAgICAgICAgbV9oQmFyLT5zZXRTdGVwcyhTY3JvbGxi
YXI6OnBpeGVsc1BlckxpbmVTdGVwKCksIHBhZ2VTdGVwKTsKLSAgICAgICAgbV9oQmFyLT5zZXRQ
cm9wb3J0aW9uKGNsaWVudFdpZHRoLCBtX3Njcm9sbFdpZHRoKTsKICAgICB9CiAgICAgaWYgKG1f
dkJhcikgewotICAgICAgICBpbnQgY2xpZW50SGVpZ2h0ID0gcm91bmRUb0ludChib3gtPmNsaWVu
dEhlaWdodCgpKTsKLSAgICAgICAgaW50IHBhZ2VTdGVwID0gU2Nyb2xsYmFyOjpwYWdlU3RlcChj
bGllbnRIZWlnaHQpOworICAgICAgICBpbnQgcGFnZVN0ZXAgPSBTY3JvbGxiYXI6OnBhZ2VTdGVw
KHJvdW5kVG9JbnQocGFkZGVkTGF5ZXJCb3VuZHMuaGVpZ2h0KCkpKTsKICAgICAgICAgbV92QmFy
LT5zZXRTdGVwcyhTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCksIHBhZ2VTdGVwKTsKLSAg
ICAgICAgbV92QmFyLT5zZXRQcm9wb3J0aW9uKGNsaWVudEhlaWdodCwgbV9zY3JvbGxIZWlnaHQp
OwogICAgIH0KLQotICAgIHVwZGF0ZVNjcm9sbGFibGVBcmVhU2V0KGhhc1Njcm9sbGFibGVIb3Jp
em9udGFsT3ZlcmZsb3coKSB8fCBoYXNTY3JvbGxhYmxlVmVydGljYWxPdmVyZmxvdygpKTsKIH0K
IAorCiAvLyBUaGlzIGlzIGNhbGxlZCBmcm9tIGxheW91dCBjb2RlIChiZWZvcmUgdXBkYXRlTGF5
ZXJQb3NpdGlvbnMpLgogdm9pZCBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3Jv
bGxJbmZvQWZ0ZXJMYXlvdXQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmgKaW5kZXggNDczMmIyNjRjNGI5NTQ4NTFhM2Q3
ZjViNjhmMDlmMjE2OGYzN2JlZC4uZGUyNmIzMDQ4OTY2NjZhNWNkZDY0YjUwZjc2ZDZkNTFlZDYz
ZWFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Ny
b2xsYWJsZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJT
Y3JvbGxhYmxlQXJlYS5oCkBAIC0xMjUsNiArMTI1LDcgQEAgcHVibGljOgogICAgIHZvaWQgcGFp
bnRPdmVybGF5U2Nyb2xsYmFycyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiBk
YW1hZ2VSZWN0LCBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4sIFJlbmRlck9iamVjdCogc3VidHJl
ZVBhaW50Um9vdCA9IG51bGxwdHIpOwogCiAgICAgdm9pZCB1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJM
YXlvdXQoKTsKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbGJhclN0ZXBzKCk7CiAKICAgICBib29sIHNj
cm9sbChTY3JvbGxEaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBmbG9hdCBtdWx0aXBsaWVy
ID0gMSk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCAyMzA2YmZmOGVkOTI1NWJiY2JmY2RmMTRlMjhiYmY3NjRhYzE0OWMw
Li42ZDNhNWMyNmExZGUwMTMyMDllNjViN2M2YzEyYTFjY2M2NjExY2FiIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMjEtMDEtMTggIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEu
Y29tPgorCisgICAgICAgIHNjcm9sbC1wYWRkaW5nIHNob3VsZCBhZmZlY3QgcGFnaW5nIG9wZXJh
dGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
OTA3NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzE3NDc3ODY+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjc3MzL3Njcm9sbC1zbmFwL3Njcm9s
bC1wYWRkaW5nLW1haW5mcmFtZS1wYWdpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBjc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW1haW5mcmFtZS1wYWdpbmcuaHRtbDog
QWRkZWQuCisgICAgICAgICogY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtcGFkZGluZy1vdmVyZmxv
dy1wYWdpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL3Njcm9sbC1zbmFw
L3Njcm9sbC1wYWRkaW5nLW92ZXJmbG93LXBhZ2luZy5odG1sOiBBZGRlZC4KKwogMjAyMS0wMS0x
OCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViUlRDIGxp
dmUgT3B1cyBhdWRpbyBzdHJlYW0gc3R1dHRlcnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Nz
czMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXBhZGRpbmctbWFpbmZyYW1lLXBhZ2luZy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW1haW5mcmFt
ZS1wYWdpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3NThhYjk3ZDVkZDM3Mjk0MGQzMDA3
MTdlZjI1NDQ3N2RmMzUxNmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL3Nj
cm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW1haW5mcmFtZS1wYWdpbmctZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTEgQEAKK1BBU1MgcGFnaW5nIG1vdmVkIGJvZHkKK1BBU1MgcGFnaW5nIG1vdmVk
IHBhZGRlZCBib2R5CitQQVNTIGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuc2Nyb2xsVG9wIGlz
IHdpdGhpbiAxIG9mIDUzNS42ODM3NjA2ODM3NjA3CitQQVNTIHBhZ2luZyBtb3ZlZCBwYWRkZWQg
Ym9keQorUEFTUyBkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNjcm9sbFRvcCBpcyB3aXRoaW4g
MSBvZiA1MzUuNjgzNzYwNjgzNzYwNworUEFTUyBwYWdpbmcgbW92ZWQgcGFkZGVkIGJvZHkKK1BB
U1MgZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudC5zY3JvbGxUb3AgaXMgd2l0aGluIDIgb2YgNTI2
LjM2NzUyMTM2NzUyMTQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9s
bC1wYWRkaW5nLW1haW5mcmFtZS1wYWdpbmcuaHRtbCBiL0xheW91dFRlc3RzL2NzczMvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXBhZGRpbmctbWFpbmZyYW1lLXBhZ2luZy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4
MjNjZjkwYjJhNzZiMDljN2JjMzA2ZTFkYTZjMmRhMDcyMDMxMmQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW1haW5mcmFtZS1w
YWdpbmcuaHRtbApAQCAtMCwwICsxLDc4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAg
IDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgIGJvZHkgeworICAgICAgICAgICAgbWFy
Z2luOiAwOworICAgICAgICB9CisKKyAgICAgICAgLmJveCB7CisgICAgICAgICAgICB3aWR0aDog
MTAwdnc7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMHZoOworICAgICAgICB9CisgICAgICAgIDwv
c3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVy
LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOworCisgICAgICAgIGFzeW5jIGZ1bmN0aW9uIHJ1blRlc3RzKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5r
ZXlEb3duKCJwYWdlRG93biIpOworCisgICAgICAgICAgICAgICAgZXhwZWN0VHJ1ZShkb2N1bWVu
dC5zY3JvbGxpbmdFbGVtZW50LnNjcm9sbFRvcCAhPSAwLCAicGFnaW5nIG1vdmVkIGJvZHkiKTsK
KyAgICAgICAgICAgICAgICBsZXQgZGVmYXVsdFBhZ2VQb3NpdGlvbiA9IGRvY3VtZW50LnNjcm9s
bGluZ0VsZW1lbnQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGxldCB2aWV3cG9ydEhlaWdo
dCA9IGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
ICAgIGxldCBwYWdlUHJvcG9ydGlvbiA9IGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuc2Nyb2xs
VG9wIC8gdmlld3BvcnRIZWlnaHQ7CisKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5zY3JvbGxp
bmdFbGVtZW50LnNjcm9sbFRvcCA9IDA7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1l
bnRFbGVtZW50LnN0eWxlLnNjcm9sbFBhZGRpbmdUb3AgPSAiMTBweCI7CisgICAgICAgICAgICAg
ICAgYXdhaXQgVUlIZWxwZXIua2V5RG93bigicGFnZURvd24iKTsKKworICAgICAgICAgICAgICAg
IGxldCBleHBlY3RlZCA9ICh2aWV3cG9ydEhlaWdodCAtIDEwKSAqIHBhZ2VQcm9wb3J0aW9uOwor
ICAgICAgICAgICAgICAgIGV4cGVjdFRydWUoZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudC5zY3Jv
bGxUb3AgIT0gMCwgInBhZ2luZyBtb3ZlZCBwYWRkZWQgYm9keSIpOworICAgICAgICAgICAgICAg
IHNob3VsZEJlQ2xvc2VUbygiZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudC5zY3JvbGxUb3AiLCBl
eHBlY3RlZCwgMSk7CisKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50
LnNjcm9sbFRvcCA9IDA7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50
LnN0eWxlLnNjcm9sbFBhZGRpbmdUb3AgPSAiMHB4IjsKKyAgICAgICAgICAgICAgICBkb2N1bWVu
dC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2Nyb2xsUGFkZGluZ0JvdHRvbSA9ICIxMHB4IjsKKyAg
ICAgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5rZXlEb3duKCJwYWdlRG93biIpOworCisgICAg
ICAgICAgICAgICAgZXhwZWN0VHJ1ZShkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNjcm9sbFRv
cCAhPSAwLCAicGFnaW5nIG1vdmVkIHBhZGRlZCBib2R5Iik7CisgICAgICAgICAgICAgICAgc2hv
dWxkQmVDbG9zZVRvKCJkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNjcm9sbFRvcCIsIGV4cGVj
dGVkLCAxKTsKKworICAgICAgICAgICAgICAgIGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuc2Ny
b2xsVG9wID0gMDsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5
bGUuc2Nyb2xsUGFkZGluZ1RvcCA9ICIxMHB4IjsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5k
b2N1bWVudEVsZW1lbnQuc3R5bGUuc2Nyb2xsUGFkZGluZ0JvdHRvbSA9ICIxMHB4IjsKKyAgICAg
ICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5rZXlEb3duKCJwYWdlRG93biIpOworCisgICAgICAg
ICAgICAgICAgZXhwZWN0ZWQgPSAodmlld3BvcnRIZWlnaHQgLSAyMCkgKiBwYWdlUHJvcG9ydGlv
bjsKKyAgICAgICAgICAgICAgICBleHBlY3RUcnVlKGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQu
c2Nyb2xsVG9wICE9IDAsICJwYWdpbmcgbW92ZWQgcGFkZGVkIGJvZHkiKTsKKyAgICAgICAgICAg
ICAgICBzaG91bGRCZUNsb3NlVG8oImRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuc2Nyb2xsVG9w
IiwgZXhwZWN0ZWQsIDIpOworICAgICAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAg
ICAgIGNvbnNvbGUubG9nKGUpOworICAgICAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZl
bnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBydW5UZXN0cygpOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICB2YXIgY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdjb25zb2xlJyk7CisgICAgICAgICAgICAgICAgY29uc29sZS5pbm5lclRleHQgPSAiVGhp
cyB0ZXN0IGNhbm5vdCBiZSBydW4gbWFudWFsbHkuIgorICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9h
ZCgpOyI+CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQ6IGdyZWVu
OyI+PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImJv
eCIgc3R5bGU9ImJhY2tncm91bmQ6IHJlZDsiPjwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJi
b3giIHN0eWxlPSJiYWNrZ3JvdW5kOiBwaW5rOyI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9
ImJveCIgc3R5bGU9ImJhY2tncm91bmQ6IHllbGxvdzsiPjwvZGl2PgorICAgICAgICA8ZGl2IGNs
YXNzPSJib3giIHN0eWxlPSJiYWNrZ3JvdW5kOiBvcmFuZ2U7Ij48L2Rpdj4KKyAgICA8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9s
bC1wYWRkaW5nLW92ZXJmbG93LXBhZ2luZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3Mz
L3Njcm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW92ZXJmbG93LXBhZ2luZy1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYTRjZGQ0ZGIyNmUxMDg2ZTUzNDQyOWNjZGU2NTJlZWFjZjE3ZjJhYwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXBhZGRp
bmctb3ZlcmZsb3ctcGFnaW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitQQVNTIHBh
Z2luZyBtb3ZlZCBjb250YWluZXIKK1BBU1MgcGFnaW5nIG1vdmVkIHBhZGRlZCBjb250YWluZXIK
K1BBU1MgY29udGFpbmVyLnNjcm9sbFRvcCBpcyB3aXRoaW4gMSBvZiAxNDAKK1BBU1MgcGFnaW5n
IG1vdmVkIHBhZGRlZCBjb250YWluZXIKK1BBU1MgY29udGFpbmVyLnNjcm9sbFRvcCBpcyB3aXRo
aW4gMSBvZiAxNDAKK1BBU1MgcGFnaW5nIG1vdmVkIHBhZGRlZCBjb250YWluZXIKK1BBU1MgY29u
dGFpbmVyLnNjcm9sbFRvcCBpcyB3aXRoaW4gMSBvZiAxMzIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9j
c3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW92ZXJmbG93LXBhZ2luZy5odG1sIGIvTGF5
b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtcGFkZGluZy1vdmVyZmxvdy1wYWdpbmcu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45YzkxNTIxMTVhZjQwZDllNDJmMWZkZWFiZTVkMGM1MzA4OWQ1M2Y3
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwt
cGFkZGluZy1vdmVyZmxvdy1wYWdpbmcuaHRtbApAQCAtMCwwICsxLDg5IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgIC5ib3gg
eworICAgICAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICAgICAgaGVpZ2h0OiAyMDBweDsK
KyAgICAgICAgfQorCisgICAgICAgIC5nYWxsZXJ5IHsKKyAgICAgICAgICAgIG92ZXJmbG93OiBz
Y3JvbGw7CisgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2Ny
aXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgZnVu
Y3Rpb24gY2xpY2tPbkVsZW1lbnQodGFyZ2V0RWxlbWVudCkgeworICAgICAgICAgICAgdmFyIGNs
aWVudFJlY3QgPSB0YXJnZXRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oY2xpZW50UmVjdC54ICsgNSwgY2xpZW50UmVj
dC55ICsgNSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAg
fQorCisgICAgICAgIGFzeW5jIGZ1bmN0aW9uIHJ1blRlc3RzKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNvbnRhaW5lciIpOworCisgICAgICAgICAgICAgICAgY2xpY2tPbkVsZW1l
bnQoY29udGFpbmVyKTsKKyAgICAgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5rZXlEb3duKCJw
YWdlRG93biIpOworCisgICAgICAgICAgICAgICAgZXhwZWN0VHJ1ZShjb250YWluZXIuc2Nyb2xs
VG9wICE9IDAsICJwYWdpbmcgbW92ZWQgY29udGFpbmVyIik7CisgICAgICAgICAgICAgICAgbGV0
IGRlZmF1bHRQYWdlUG9zaXRpb24gPSBjb250YWluZXIuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGxldCBwYWdlUHJvcG9ydGlvbiA9IGNvbnRhaW5lci5zY3JvbGxUb3AgLyBjb250YWluZXIu
Y2xpZW50SGVpZ2h0OworCisgICAgICAgICAgICAgICAgY29udGFpbmVyLnNjcm9sbFRvcCA9IDA7
CisgICAgICAgICAgICAgICAgY29udGFpbmVyLnN0eWxlLnNjcm9sbFBhZGRpbmdUb3AgPSAiMTBw
eCI7CisgICAgICAgICAgICAgICAgYXdhaXQgVUlIZWxwZXIua2V5RG93bigicGFnZURvd24iKTsK
KworICAgICAgICAgICAgICAgIGxldCBleHBlY3RlZCA9IChjb250YWluZXIuY2xpZW50SGVpZ2h0
IC0gMTApICogcGFnZVByb3BvcnRpb247CisgICAgICAgICAgICAgICAgZXhwZWN0VHJ1ZShjb250
YWluZXIuc2Nyb2xsVG9wICE9IDAsICJwYWdpbmcgbW92ZWQgcGFkZGVkIGNvbnRhaW5lciIpOwor
ICAgICAgICAgICAgICAgIHNob3VsZEJlQ2xvc2VUbygiY29udGFpbmVyLnNjcm9sbFRvcCIsIGV4
cGVjdGVkLCAxKTsKKworICAgICAgICAgICAgICAgIGNvbnRhaW5lci5zY3JvbGxUb3AgPSAwOwor
ICAgICAgICAgICAgICAgIGNvbnRhaW5lci5zdHlsZS5zY3JvbGxQYWRkaW5nVG9wID0gIjBweCI7
CisgICAgICAgICAgICAgICAgY29udGFpbmVyLnN0eWxlLnNjcm9sbFBhZGRpbmdCb3R0b20gPSAi
MTBweCI7CisgICAgICAgICAgICAgICAgYXdhaXQgVUlIZWxwZXIua2V5RG93bigicGFnZURvd24i
KTsKKworICAgICAgICAgICAgICAgIGV4cGVjdFRydWUoY29udGFpbmVyLnNjcm9sbFRvcCAhPSAw
LCAicGFnaW5nIG1vdmVkIHBhZGRlZCBjb250YWluZXIiKTsKKyAgICAgICAgICAgICAgICBzaG91
bGRCZUNsb3NlVG8oImNvbnRhaW5lci5zY3JvbGxUb3AiLCBleHBlY3RlZCwgMSk7CisKKyAgICAg
ICAgICAgICAgICBjb250YWluZXIuc2Nyb2xsVG9wID0gMDsKKyAgICAgICAgICAgICAgICBjb250
YWluZXIuc3R5bGUuc2Nyb2xsUGFkZGluZ1RvcCA9ICIxMHB4IjsKKyAgICAgICAgICAgICAgICBj
b250YWluZXIuc3R5bGUuc2Nyb2xsUGFkZGluZ0JvdHRvbSA9ICIxMHB4IjsKKyAgICAgICAgICAg
ICAgICBhd2FpdCBVSUhlbHBlci5rZXlEb3duKCJwYWdlRG93biIpOworCisgICAgICAgICAgICAg
ICAgZXhwZWN0ZWQgPSAoY29udGFpbmVyLmNsaWVudEhlaWdodCAtIDIwKSAqIHBhZ2VQcm9wb3J0
aW9uOworICAgICAgICAgICAgICAgIGV4cGVjdFRydWUoY29udGFpbmVyLnNjcm9sbFRvcCAhPSAw
LCAicGFnaW5nIG1vdmVkIHBhZGRlZCBjb250YWluZXIiKTsKKyAgICAgICAgICAgICAgICBzaG91
bGRCZUNsb3NlVG8oImNvbnRhaW5lci5zY3JvbGxUb3AiLCBleHBlY3RlZCwgMSk7CisgICAgICAg
ICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZSk7CisgICAg
ICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAg
ICAgIHJ1blRlc3RzKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHZh
ciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKTsKKyAgICAgICAg
ICAgICAgICBjb25zb2xlLmlubmVyVGV4dCA9ICJUaGlzIHRlc3QgY2Fubm90IGJlIHJ1biBtYW51
YWxseS4iCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAg
PC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CisgICAgICAgIDxkaXYgaWQ9ImNvbnRhaW5lciIgY2xhc3M9ImJveCIg
c3R5bGU9Im92ZXJmbG93OiBzY3JvbGw7Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJveCIg
c3R5bGU9ImJhY2tncm91bmQ6IGdyZWVuOyI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJib3giIHN0eWxlPSJiYWNrZ3JvdW5kOiByZWQ7Ij48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYg
Y2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQ6IHBpbms7Ij48L2Rpdj4KKyAgICAgICAgICAg
IDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQ6IHllbGxvdzsiPjwvZGl2PgorICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iYm94IiBzdHlsZT0iYmFja2dyb3VuZDogb3JhbmdlOyI+PC9k
aXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417953</attachid>
            <date>2021-01-20 01:30:55 -0800</date>
            <delta_ts>2021-01-25 00:54:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219074-20210120103053.patch</filename>
            <type>text/plain</type>
            <size>26995</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODRjMjJlZDkyODNiN2Ri
NDYzZjNiOGYxMDhkZGVjMDgyMzMwZjgwOC4uZGJkYWEzZmYzZjI1MzQyYzNjZmM2YmFjYzRjMmJk
OTkwMDNhMTI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTAxLTE4ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBzY3JvbGwtcGFk
ZGluZyBzaG91bGQgYWZmZWN0IHBhZ2luZyBvcGVyYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkwNzQKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzcxNzQ3Nzg2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEhhdmUgc2Nyb2xsLXBhZGRpbmcgYWZmZWN0IHRoZSBhbW91bnQgb2YgdGhlIHNjcm9s
bGFibGUgYXJlYSB0aGF0IG1vdmVzIGR1cmluZworICAgICAgICBwYWdpbmcgb3BlcmF0aW9ucy4g
VGhpcyBpcyB0aGUgYmVoYXZpb3Igc3BlY2lmaWVkIGluIHRoZSBzY3JvbGwgc25hcCBzcGVjaWZp
Y2F0aW9uCisgICAgICAgIGFuZCBhbGxvd3Mgc2Nyb2xsYWJsZSBhcmVhcyB3aXRoIHBhcnRpYWxs
eSBvYnNjdXJlZCBhcmVhcyB0byBwcm9wZXJseSBwYWdlIHRocm91Z2gKKyAgICAgICAgdGhlaXIg
Y29udGVudC4KKworICAgICAgICBTZWUgaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1zY3Jv
bGwtc25hcC0xLyNwcm9wZGVmLXNjcm9sbC1wYWRkaW5nLgorCisgICAgICAgIFRlc3RzOiBjc3Mz
L3Njcm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW1haW5mcmFtZS1wYWdpbmcuaHRtbAorICAgICAg
ICAgICAgICAgY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtcGFkZGluZy1vdmVyZmxvdy1wYWdpbmcu
aHRtbAorCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxiYXJTdGVwcyk6IEFkZGVkIHRoaXMgb3ZlcnJpZGUgbWV0
aG9kIHdoaWNoCisgICAgICAgIHByb3Blcmx5IHNldHMgcGFnZSBzdGVwcy4gT25seSBGcmFtZVZp
ZXcgaGFzIGFjY2VzcyB0byB0aGUgZG9jdW1lbnQuCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMpOiBBZGRlZCB0aGlzIGhlbHBlciBtZXRob2Qs
IHdoaWNoIGlzCisgICAgICAgIHZpcnR1YWwgc28gdGhhdCBGcmFtZVZpZXcgY2FuIG92ZXJyaWRl
IGl0LgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFyU3RlcHMp
OiBVc2UgdGhlIGhlbHBlciBtZXRob2QgdG8gYWN0dWFsbHkKKyAgICAgICAgc2V0IHRoZSBzY3Jv
bGxiYXIgc3RlcHMuCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5oOiBBZGQgbmV3IG1l
dGhvZCBkZWNsYXJhdGlvbnMuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnNjcm9sbFBhZGRpbmdGb3JWaWV3cG9ydFJlY3Qp
OiBBZGQgdGhpcyBuZXcgaGVscGVyIHdoaWNoCisgICAgICAgIGdldHMgdGhlIHNjcm9sbC1wYWRk
aW5nIGZvciBhIGJveC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6IEFkZCBuZXcg
aGVscGVyLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpleHBhbmRTY3JvbGxSZWN0VG9WaXNpYmxlVGFyZ2V0UmVjdFRvSW5jbHVkZVNjcm9s
bFBhZGRpbmcpOiBVc2UgdGhlIG5ldworICAgICAgICBSZW5kZXJCb3ggaGVscGVyLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZVNjcm9sbGJhcnNBZnRlckxheW91dCk6IFVz
ZSB0aGUgbmV3IHVwZGF0ZVNjcm9sbGJhclN0ZXBzIGhlbHBlci4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjp1cGRhdGVTY3JvbGxiYXJTdGVwcyk6IEFkZGVkIHRoaXMgaGVscGVyIHNv
IHRoYXQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdAorICAgICAgICBjYW4gdXBkYXRlIHN0ZXBzIHdo
ZW4gbmVjZXNzYXJ5LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOiBBZGRlZCBu
ZXcgZGVjbGFyYXRpb25zLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnN0eWxl
RGlkQ2hhbmdlKTogVXBkYXRlIHN0ZXBzIG9uIEZyYW1lVmlld3MgYW5kIFJlbmRlckxheWVycwor
ICAgICAgICB3aGVuIHRoZSBzdHlsZSBjaGFuZ2UgZGljdGF0ZXMgaXQuCisKIDIwMjEtMDEtMTgg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYlJUQyBsaXZl
IE9wdXMgYXVkaW8gc3RyZWFtIHN0dXR0ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5k
ZXggZmMyYjM1Nzg2MzM5MTZmMzQzMmU5MzUyYzFlY2NiMTc3MDQ0NjVjYS4uODM0OGViZTYwYTBl
ZGQzMWMwNjA4ODJmMjg4NTQ3ZDg4NDNkYzQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cApAQCAtNTU0NCw2ICs1NTQ0LDI4IEBAIGZsb2F0IEZyYW1lVmlldzo6cGFnZVNjYWxlRmFjdG9y
KCkgY29uc3QKICAgICByZXR1cm4gZnJhbWUoKS5mcmFtZVNjYWxlRmFjdG9yKCk7CiB9CiAKK3Zv
aWQgRnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxiYXJTdGVwcygpCit7CisgICAgYXV0byogZG9jdW1l
bnRFbGVtZW50ID0gZnJhbWUoKS5kb2N1bWVudCgpID8gZnJhbWUoKS5kb2N1bWVudCgpLT5kb2N1
bWVudEVsZW1lbnQoKSA6IG51bGxwdHI7CisgICAgYXV0byogcmVuZGVyZXIgPSBkb2N1bWVudEVs
ZW1lbnQgPyBkb2N1bWVudEVsZW1lbnQtPnJlbmRlckJveCgpIDogbnVsbHB0cjsKKyAgICBpZiAo
IXJlbmRlcmVyKSB7CisgICAgICAgIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhclN0ZXBzKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBMYXlvdXRSZWN0IHBhZGRlZFZpZXdSZWN0
KExheW91dFBvaW50KCksIHZpc2libGVTaXplKCkpOworICAgIHBhZGRlZFZpZXdSZWN0LmNvbnRy
YWN0KHJlbmRlcmVyLT5zY3JvbGxQYWRkaW5nRm9yVmlld3BvcnRSZWN0KHBhZGRlZFZpZXdSZWN0
KSk7CisKKyAgICBpZiAoaG9yaXpvbnRhbFNjcm9sbGJhcigpKSB7CisgICAgICAgIGludCBwYWdl
U3RlcCA9IFNjcm9sbGJhcjo6cGFnZVN0ZXAocGFkZGVkVmlld1JlY3Qud2lkdGgoKSk7CisgICAg
ICAgIGhvcml6b250YWxTY3JvbGxiYXIoKS0+c2V0U3RlcHMoU2Nyb2xsYmFyOjpwaXhlbHNQZXJM
aW5lU3RlcCgpLCBwYWdlU3RlcCk7CisKKyAgICB9CisgICAgaWYgKHZlcnRpY2FsU2Nyb2xsYmFy
KCkpIHsKKyAgICAgICAgaW50IHBhZ2VTdGVwID0gU2Nyb2xsYmFyOjpwYWdlU3RlcChwYWRkZWRW
aWV3UmVjdC5oZWlnaHQoKSk7CisgICAgICAgIHZlcnRpY2FsU2Nyb2xsYmFyKCktPnNldFN0ZXBz
KFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSwgcGFnZVN0ZXApOworICAgIH0KK30KIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI3VuZGVmIFBBR0VfSUQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5oCmluZGV4IGJkZmUyNzg0OWYyOTYxYzZkZGU1ZTlmZjhkZGI1MTAyMTVmMzE3MjcuLjg4NDcx
NjY1ZjA0ZGYyYmVmNWRlZWFhMjA4M2ZlNGViY2RlNjQzYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuaApAQCAtNjgwLDYgKzY4MCw5IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBkZWJ1Z0Rlc2Ny
aXB0aW9uKCkgY29uc3QgZmluYWw7CiAKKyAgICAvLyBTY3JvbGxWaWV3CisgICAgdm9pZCB1cGRh
dGVTY3JvbGxiYXJTdGVwcygpIG92ZXJyaWRlOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEZy
YW1lVmlldyhGcmFtZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCmlu
ZGV4IDZhMWU3NzQ4ZWZmNWI1NGJhOWMxOTc0YjBkM2JiYjc0YzkyZDRkODMuLjkxYzY1OWM3MTQx
M2UzMmUzMDU1MDM5MTI0MmEyNjQ3YzI2ZDA5NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbFZpZXcuY3BwCkBAIC03MzEsNyArNzMxLDYgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVT
Y3JvbGxiYXJzKGNvbnN0IFNjcm9sbFBvc2l0aW9uJiBkZXNpcmVkUG9zaXRpb24pCiAKICAgICBp
ZiAobV9ob3Jpem9udGFsU2Nyb2xsYmFyKSB7CiAgICAgICAgIGludCBjbGllbnRXaWR0aCA9IHZp
c2libGVXaWR0aCgpOwotICAgICAgICBpbnQgcGFnZVN0ZXAgPSBTY3JvbGxiYXI6OnBhZ2VTdGVw
KGNsaWVudFdpZHRoKTsKICAgICAgICAgSW50UmVjdCBvbGRSZWN0KG1faG9yaXpvbnRhbFNjcm9s
bGJhci0+ZnJhbWVSZWN0KCkpOwogICAgICAgICBJbnRSZWN0IGhCYXJSZWN0KHNob3VsZFBsYWNl
QmxvY2tEaXJlY3Rpb25TY3JvbGxiYXJPbkxlZnQoKSAmJiBtX3ZlcnRpY2FsU2Nyb2xsYmFyID8g
bV92ZXJ0aWNhbFNjcm9sbGJhci0+b2NjdXBpZWRXaWR0aCgpIDogMCwKICAgICAgICAgICAgIGhl
aWdodCgpIC0gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5oZWlnaHQoKSwKQEAgLTc0NCw3ICs3NDMs
NiBAQCB2b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMoY29uc3QgU2Nyb2xsUG9zaXRp
b24mIGRlc2lyZWRQb3NpdGlvbikKICAgICAgICAgaWYgKG1fc2Nyb2xsYmFyc1N1cHByZXNzZWQp
CiAgICAgICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldFN1cHByZXNzSW52YWxpZGF0
aW9uKHRydWUpOwogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldEVuYWJsZWQoY29u
dGVudHNXaWR0aCgpID4gY2xpZW50V2lkdGgpOwotICAgICAgICBtX2hvcml6b250YWxTY3JvbGxi
YXItPnNldFN0ZXBzKFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSwgcGFnZVN0ZXApOwog
ICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldFByb3BvcnRpb24oY2xpZW50V2lkdGgs
IGNvbnRlbnRzV2lkdGgoKSk7CiAgICAgICAgIGlmIChtX3Njcm9sbGJhcnNTdXBwcmVzc2VkKQog
ICAgICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRTdXBwcmVzc0ludmFsaWRhdGlv
bihmYWxzZSk7IApAQCAtNzUyLDcgKzc1MCw2IEBAIHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Ny
b2xsYmFycyhjb25zdCBTY3JvbGxQb3NpdGlvbiYgZGVzaXJlZFBvc2l0aW9uKQogCiAgICAgaWYg
KG1fdmVydGljYWxTY3JvbGxiYXIpIHsKICAgICAgICAgaW50IGNsaWVudEhlaWdodCA9IHZpc2li
bGVIZWlnaHQoKTsKLSAgICAgICAgaW50IHBhZ2VTdGVwID0gU2Nyb2xsYmFyOjpwYWdlU3RlcChj
bGllbnRIZWlnaHQpOwogICAgICAgICBJbnRSZWN0IG9sZFJlY3QobV92ZXJ0aWNhbFNjcm9sbGJh
ci0+ZnJhbWVSZWN0KCkpOwogICAgICAgICBJbnRSZWN0IHZCYXJSZWN0KHNob3VsZFBsYWNlQmxv
Y2tEaXJlY3Rpb25TY3JvbGxiYXJPbkxlZnQoKSA/IDAgOiB3aWR0aCgpIC0gbV92ZXJ0aWNhbFNj
cm9sbGJhci0+d2lkdGgoKSwKICAgICAgICAgICAgIHRvcENvbnRlbnRJbnNldCgpLApAQCAtNzY1
LDEyICs3NjIsMTMgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKGNvbnN0IFNj
cm9sbFBvc2l0aW9uJiBkZXNpcmVkUG9zaXRpb24pCiAgICAgICAgIGlmIChtX3Njcm9sbGJhcnNT
dXBwcmVzc2VkKQogICAgICAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhci0+c2V0U3VwcHJlc3NJ
bnZhbGlkYXRpb24odHJ1ZSk7CiAgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXItPnNldEVuYWJs
ZWQodG90YWxDb250ZW50c1NpemUoKS5oZWlnaHQoKSA+IGNsaWVudEhlaWdodCk7Ci0gICAgICAg
IG1fdmVydGljYWxTY3JvbGxiYXItPnNldFN0ZXBzKFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0
ZXAoKSwgcGFnZVN0ZXApOwogICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5zZXRQcm9wb3J0
aW9uKGNsaWVudEhlaWdodCwgdG90YWxDb250ZW50c1NpemUoKS5oZWlnaHQoKSk7CiAgICAgICAg
IGlmIChtX3Njcm9sbGJhcnNTdXBwcmVzc2VkKQogICAgICAgICAgICAgbV92ZXJ0aWNhbFNjcm9s
bGJhci0+c2V0U3VwcHJlc3NJbnZhbGlkYXRpb24oZmFsc2UpOwogICAgIH0KIAorICAgIHVwZGF0
ZVNjcm9sbGJhclN0ZXBzKCk7CisKICAgICBpZiAoaGFzSG9yaXpvbnRhbFNjcm9sbGJhciAhPSBu
ZXdIYXNIb3Jpem9udGFsU2Nyb2xsYmFyIHx8IGhhc1ZlcnRpY2FsU2Nyb2xsYmFyICE9IG5ld0hh
c1ZlcnRpY2FsU2Nyb2xsYmFyKSB7CiAgICAgICAgIC8vIEZJWE1FOiBJcyBmcmFtZVJlY3RzQ2hh
bmdlZCByZWFsbHkgbmVjZXNzYXJ5IGhlcmU/IEhhdmUgYW55IGZyYW1lIHJlY3RzIGNoYW5nZWQ/
CiAgICAgICAgIGZyYW1lUmVjdHNDaGFuZ2VkKCk7CkBAIC03OTEsNiArNzg5LDE0IEBAIHZvaWQg
U2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyhjb25zdCBTY3JvbGxQb3NpdGlvbiYgZGVzaXJl
ZFBvc2l0aW9uKQogICAgIG1faW5VcGRhdGVTY3JvbGxiYXJzID0gZmFsc2U7CiB9CiAKK3ZvaWQg
U2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFyU3RlcHMoKQoreworICAgIGlmIChtX2hvcml6b250
YWxTY3JvbGxiYXIpCisgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0U3RlcHMoU2Ny
b2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpLCBTY3JvbGxiYXI6OnBhZ2VTdGVwKHZpc2libGVX
aWR0aCgpKSk7CisgICAgaWYgKG1fdmVydGljYWxTY3JvbGxiYXIpCisgICAgICAgIG1fdmVydGlj
YWxTY3JvbGxiYXItPnNldFN0ZXBzKFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSwgU2Ny
b2xsYmFyOjpwYWdlU3RlcCh2aXNpYmxlSGVpZ2h0KCkpKTsKK30KKwogY29uc3QgaW50IHBhbklj
b25TaXplTGVuZ3RoID0gMTY7CiAKIEludFJlY3QgU2Nyb2xsVmlldzo6cmVjdFRvQ29weU9uU2Ny
b2xsKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZp
ZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAppbmRleCBkNjk3NGU4
NWVjN2E4OTM5NDE4MjEwOWY4ZWUyNjFmNjk4M2ZhNjRhLi42YzI4MDBkZmMzMGNlOThkYjcyZmRl
MTYxYmYzMWNhYjAwNDU0NzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCkBA
IC0zOTcsNiArMzk3LDcgQEAgcHVibGljOgogICAgIGJvb2wgYWxsb3dzVW5jbGFtcGVkU2Nyb2xs
UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2FsbG93c1VuY2xhbXBlZFNjcm9sbFBvc2l0aW9u
OyB9CiAKICAgICBib29sIG1hbmFnZXNTY3JvbGxiYXJzKCkgY29uc3Q7CisgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVNjcm9sbGJhclN0ZXBzKCk7CiAKIHByb3RlY3RlZDoKICAgICBTY3JvbGxWaWV3
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDI3NmM2MzQ0NjY0
MjI4Y2FjYTFjMTllMjU3YmZhMzk0MTk1NDM0MTEuLjQ0ZDJiZGNmYTdjMjRmMjcwN2EyNjExMmNj
NGY4NzU5YWNlNmE1ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBA
IC01MTYwLDQgKzUxNjAsMTIgQEAgTGF5b3V0UmVjdCBSZW5kZXJCb3g6OmFic29sdXRlQW5jaG9y
UmVjdFdpdGhTY3JvbGxNYXJnaW4oYm9vbCogaW5zaWRlRml4ZWQpIGNvbnMKICAgICByZXR1cm4g
YW5jaG9yUmVjdDsKIH0KIAorTGF5b3V0Qm94RXh0ZW50IFJlbmRlckJveDo6c2Nyb2xsUGFkZGlu
Z0ZvclZpZXdwb3J0UmVjdChjb25zdCBMYXlvdXRSZWN0JiB2aWV3cG9ydFJlY3QpCit7CisgICAg
Y29uc3QgYXV0byYgcGFkZGluZyA9IHN0eWxlKCkuc2Nyb2xsUGFkZGluZygpOworICAgIHJldHVy
biBMYXlvdXRCb3hFeHRlbnQoCisgICAgICAgIHZhbHVlRm9yTGVuZ3RoKHBhZGRpbmcudG9wKCks
IHZpZXdwb3J0UmVjdC5oZWlnaHQoKSksIHZhbHVlRm9yTGVuZ3RoKHBhZGRpbmcucmlnaHQoKSwg
dmlld3BvcnRSZWN0LndpZHRoKCkpLAorICAgICAgICB2YWx1ZUZvckxlbmd0aChwYWRkaW5nLmJv
dHRvbSgpLCB2aWV3cG9ydFJlY3QuaGVpZ2h0KCkpLCB2YWx1ZUZvckxlbmd0aChwYWRkaW5nLmxl
ZnQoKSwgdmlld3BvcnRSZWN0LndpZHRoKCkpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IGFmOThiNDkyY2U5N2NiYTg5
MWNiYzI1OGY2MGQ0OGU5ZmNjNGM1ZDMuLjc2NGMxZmI1NWJhZGQ4ZGI2ZTIzMTBhMzY5YmExZDFm
M2U2MjVmZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTQ5NSw2ICs0
OTUsOCBAQCBvdmVycmlkZTsKICAgICBib29sIGhhc1Njcm9sbGFibGVPdmVyZmxvd1goKSBjb25z
dCB7IHJldHVybiBzY3JvbGxzT3ZlcmZsb3dYKCkgJiYgaGFzSG9yaXpvbnRhbE92ZXJmbG93KCk7
IH0KICAgICBib29sIGhhc1Njcm9sbGFibGVPdmVyZmxvd1koKSBjb25zdCB7IHJldHVybiBzY3Jv
bGxzT3ZlcmZsb3dZKCkgJiYgaGFzVmVydGljYWxPdmVyZmxvdygpOyB9CiAKKyAgICBMYXlvdXRC
b3hFeHRlbnQgc2Nyb2xsUGFkZGluZ0ZvclZpZXdwb3J0UmVjdChjb25zdCBMYXlvdXRSZWN0JiB2
aWV3cG9ydFJlY3QpOworCiAgICAgYm9vbCB1c2VzQ29tcG9zaXRlZFNjcm9sbGluZygpIGNvbnN0
OwogICAgIAogICAgIGJvb2wgcGVyY2VudGFnZUxvZ2ljYWxIZWlnaHRJc1Jlc29sdmFibGUoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDc0NDBh
MjFiMjBiOTA4OTc0MzI0MmVhZTUzNzZjZjc2OTc5NjU2NzAuLjY1YzU5ZjMyOTBlNWRhZjk5NzUx
YTdjMzcwYWExZGYwYWJmOTBiNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcApAQCAtODA0LDExICs4MDQsNyBAQCBzdGF0aWMgdm9pZCBleHBhbmRTY3JvbGxSZWN0
VG9WaXNpYmxlVGFyZ2V0UmVjdFRvSW5jbHVkZVNjcm9sbFBhZGRpbmcoUmVuZGVyQm94KgogICAg
IC8vIHNjcm9sbC1wYWRkaW5nIGFwcGxpZXMgdG8gdGhlIHNjcm9sbCBjb250YWluZXIsIGJ1dCBl
eHBhbmQgdGhlIHJlY3RhbmdsZSB0aGF0IHdlIHdhbnQgdG8gZXhwb3NlIGluIG9yZGVyCiAgICAg
Ly8gc2ltdWxhdGUgcGFkZGluZyB0aGUgc2Nyb2xsIGNvbnRhaW5lci4gVGhpcyByZWN0YW5nbGUg
aXMgcGFzc2VkIHVwIHRoZSB0cmVlIG9mIHNjcm9sbGluZyBlbGVtZW50cyB0bwogICAgIC8vIGVu
c3VyZSB0aGF0IHRoZSBwYWRkaW5nIG9uIHRoaXMgc2Nyb2xsIGNvbnRhaW5lciBpcyBtYWludGFp
bmVkLgotICAgIGNvbnN0IGF1dG8mIHNjcm9sbFBhZGRpbmcgPSByZW5kZXJCb3gtPnN0eWxlKCku
c2Nyb2xsUGFkZGluZygpOwotICAgIExheW91dEJveEV4dGVudCBzY3JvbGxQYWRkaW5nRXh0ZW50
cygKLSAgICAgICAgdmFsdWVGb3JMZW5ndGgoc2Nyb2xsUGFkZGluZy50b3AoKSwgdmlld1JlY3Qu
aGVpZ2h0KCkpLCB2YWx1ZUZvckxlbmd0aChzY3JvbGxQYWRkaW5nLnJpZ2h0KCksIHZpZXdSZWN0
LndpZHRoKCkpLAotICAgICAgICB2YWx1ZUZvckxlbmd0aChzY3JvbGxQYWRkaW5nLmJvdHRvbSgp
LCB2aWV3UmVjdC5oZWlnaHQoKSksIHZhbHVlRm9yTGVuZ3RoKHNjcm9sbFBhZGRpbmcubGVmdCgp
LCB2aWV3UmVjdC53aWR0aCgpKSk7Ci0gICAgdGFyZ2V0UmVjdC5leHBhbmQoc2Nyb2xsUGFkZGlu
Z0V4dGVudHMpOworICAgIHRhcmdldFJlY3QuZXhwYW5kKHJlbmRlckJveC0+c2Nyb2xsUGFkZGlu
Z0ZvclZpZXdwb3J0UmVjdCh2aWV3UmVjdCkpOwogfQogCiBib29sIFJlbmRlckxheWVyOjpzaG91
bGRCZU5vcm1hbEZsb3dPbmx5KCkgY29uc3QKQEAgLTMwNDEsNiArMzAzNywxMiBAQCB2b2lkIFJl
bmRlckxheWVyOjp1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQoKQogICAgICAgICBtX3Njcm9s
bGFibGVBcmVhLT51cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQoKTsKIH0KIAordm9pZCBSZW5k
ZXJMYXllcjo6dXBkYXRlU2Nyb2xsYmFyU3RlcHMoKQoreworICAgIGlmIChtX3Njcm9sbGFibGVB
cmVhKQorICAgICAgICBtX3Njcm9sbGFibGVBcmVhLT51cGRhdGVTY3JvbGxiYXJTdGVwcygpOwor
fQorCiBib29sIFJlbmRlckxheWVyOjpjYW5Vc2VDb21wb3NpdGVkU2Nyb2xsaW5nKCkgY29uc3QK
IHsKICAgICBpZiAobV9zY3JvbGxhYmxlQXJlYSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmgKaW5kZXggNzYyNWY0MTcxMTZmMGRmMjk5NDljOWI1MzIxY2Y1OWRjMTE3MDI0Zi4u
ZGM3NjA0ZTVkNDEyODljZTc4ZjM1MjY5MzRjNTc5ZWMzYWI2ZTY3YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTUwOSw2ICs1MDksNyBAQCBwdWJsaWM6CiAgICAg
SW50U2l6ZSBvZmZzZXRGcm9tUmVzaXplQ29ybmVyKGNvbnN0IEludFBvaW50JiBsb2NhbFBvaW50
KSBjb25zdDsKIAogICAgIHZvaWQgdXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0KCk7CisgICAg
dm9pZCB1cGRhdGVTY3JvbGxiYXJTdGVwcygpOwogCiAgICAgdm9pZCBhdXRvc2Nyb2xsKGNvbnN0
IEludFBvaW50Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllck1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllck1vZGVsT2JqZWN0LmNwcAppbmRleCBjN2ZjNjZjNzAxM2I3ZThkZTZhYTA2YzQzMTNiZDI5
YTgxODUxYWUzLi4zZDY1NDg0NDE4ZWYyOTAzZGYxZmY2MjNlMzZiZDViZTAwZTI2ZDZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3Qu
Y3BwCkBAIC0xNzIsOCArMTcyLDE2IEBAIHZvaWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c3R5
bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0CiAgICAgICAg
ICAgICB2aWV3KCkuZnJhbWVWaWV3KCkucmVtb3ZlVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdCgq
dGhpcyk7CiAgICAgfQogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBjb25zdCBS
ZW5kZXJTdHlsZSYgbmV3U3R5bGUgPSBzdHlsZSgpOworICAgIGlmIChvbGRTdHlsZSAmJiBvbGRT
dHlsZS0+c2Nyb2xsUGFkZGluZygpICE9IG5ld1N0eWxlLnNjcm9sbFBhZGRpbmcoKSkgeworICAg
ICAgICBpZiAoaXNEb2N1bWVudEVsZW1lbnRSZW5kZXJlcigpKSB7CisgICAgICAgICAgICBGcmFt
ZVZpZXcmIGZyYW1lVmlldyA9IHZpZXcoKS5mcmFtZVZpZXcoKTsKKyAgICAgICAgICAgIGZyYW1l
Vmlldy51cGRhdGVTY3JvbGxiYXJTdGVwcygpOworICAgICAgICB9IGVsc2UgaWYgKFJlbmRlckxh
eWVyKiByZW5kZXJMYXllciA9IGxheWVyKCkpCisgICAgICAgICAgICByZW5kZXJMYXllci0+dXBk
YXRlU2Nyb2xsYmFyU3RlcHMoKTsKKyAgICB9CisKKyNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQ
KQogICAgIGlmIChvbGRTdHlsZSAmJiBzY3JvbGxTbmFwQ29udGFpbmVyUmVxdWlyZXNVcGRhdGVG
b3JTdHlsZVVwZGF0ZSgqb2xkU3R5bGUsIG5ld1N0eWxlKSkgewogICAgICAgICBpZiAoUmVuZGVy
TGF5ZXIqIHJlbmRlckxheWVyID0gbGF5ZXIoKSkgewogICAgICAgICAgICAgYXV0byogc2Nyb2xs
YWJsZUxheWVyID0gcmVuZGVyTGF5ZXItPmVuc3VyZUxheWVyU2Nyb2xsYWJsZUFyZWEoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVB
cmVhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVB
cmVhLmNwcAppbmRleCAzYzk5ODFjNWJjMmUzYzMxMzE0NTI2OTQyOTg3YWY4YjVjMDBiOThhLi44
N2MwMTJjNDQ1NWFiYjljMDBkM2EwZDMyNTkzMWNiMzQ4MzQzZWUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwCkBA
IC0xMDk2LDIzICsxMDk2LDM3IEBAIHZvaWQgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6dXBk
YXRlU2Nyb2xsYmFyc0FmdGVyTGF5b3V0KCkKICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlckZs
ZXhpYmxlQm94PihwYXJlbnQpLT5jbGVhckNhY2hlZE1haW5TaXplRm9yQ2hpbGQoKm1fbGF5ZXIu
cmVuZGVyQm94KCkpOwogICAgIH0KIAotICAgIC8vIFNldCB1cCB0aGUgcmFuZ2UgKGFuZCBwYWdl
IHN0ZXAvbGluZSBzdGVwKS4KKyAgICAvLyBTZXQgdXAgdGhlIHJhbmdlLgorICAgIGlmIChtX2hC
YXIpCisgICAgICAgIG1faEJhci0+c2V0UHJvcG9ydGlvbihyb3VuZFRvSW50KGJveC0+Y2xpZW50
V2lkdGgoKSksIG1fc2Nyb2xsV2lkdGgpOworICAgIGlmIChtX3ZCYXIpCisgICAgICAgIG1fdkJh
ci0+c2V0UHJvcG9ydGlvbihyb3VuZFRvSW50KGJveC0+Y2xpZW50SGVpZ2h0KCkpLCBtX3Njcm9s
bEhlaWdodCk7CisKKyAgICB1cGRhdGVTY3JvbGxiYXJTdGVwcygpOworCisgICAgdXBkYXRlU2Ny
b2xsYWJsZUFyZWFTZXQoaGFzU2Nyb2xsYWJsZUhvcml6b250YWxPdmVyZmxvdygpIHx8IGhhc1Nj
cm9sbGFibGVWZXJ0aWNhbE92ZXJmbG93KCkpOworfQorCit2b2lkIFJlbmRlckxheWVyU2Nyb2xs
YWJsZUFyZWE6OnVwZGF0ZVNjcm9sbGJhclN0ZXBzKCkKK3sKKyAgICBSZW5kZXJCb3gqIGJveCA9
IG1fbGF5ZXIucmVuZGVyQm94KCk7CisgICAgQVNTRVJUKGJveCk7CisKKyAgICBMYXlvdXRSZWN0
IHBhZGRlZExheWVyQm91bmRzKDBfbHUsIDBfbHUsIGJveC0+Y2xpZW50V2lkdGgoKSwgYm94LT5j
bGllbnRIZWlnaHQoKSk7CisgICAgcGFkZGVkTGF5ZXJCb3VuZHMuY29udHJhY3QoYm94LT5zY3Jv
bGxQYWRkaW5nRm9yVmlld3BvcnRSZWN0KHBhZGRlZExheWVyQm91bmRzKSk7CisKKyAgICAvLyBT
ZXQgdXAgdGhlICBwYWdlIHN0ZXAvbGluZSBzdGVwLgogICAgIGlmIChtX2hCYXIpIHsKLSAgICAg
ICAgaW50IGNsaWVudFdpZHRoID0gcm91bmRUb0ludChib3gtPmNsaWVudFdpZHRoKCkpOwotICAg
ICAgICBpbnQgcGFnZVN0ZXAgPSBTY3JvbGxiYXI6OnBhZ2VTdGVwKGNsaWVudFdpZHRoKTsKKyAg
ICAgICAgaW50IHBhZ2VTdGVwID0gU2Nyb2xsYmFyOjpwYWdlU3RlcChyb3VuZFRvSW50KHBhZGRl
ZExheWVyQm91bmRzLndpZHRoKCkpKTsKICAgICAgICAgbV9oQmFyLT5zZXRTdGVwcyhTY3JvbGxi
YXI6OnBpeGVsc1BlckxpbmVTdGVwKCksIHBhZ2VTdGVwKTsKLSAgICAgICAgbV9oQmFyLT5zZXRQ
cm9wb3J0aW9uKGNsaWVudFdpZHRoLCBtX3Njcm9sbFdpZHRoKTsKICAgICB9CiAgICAgaWYgKG1f
dkJhcikgewotICAgICAgICBpbnQgY2xpZW50SGVpZ2h0ID0gcm91bmRUb0ludChib3gtPmNsaWVu
dEhlaWdodCgpKTsKLSAgICAgICAgaW50IHBhZ2VTdGVwID0gU2Nyb2xsYmFyOjpwYWdlU3RlcChj
bGllbnRIZWlnaHQpOworICAgICAgICBpbnQgcGFnZVN0ZXAgPSBTY3JvbGxiYXI6OnBhZ2VTdGVw
KHJvdW5kVG9JbnQocGFkZGVkTGF5ZXJCb3VuZHMuaGVpZ2h0KCkpKTsKICAgICAgICAgbV92QmFy
LT5zZXRTdGVwcyhTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCksIHBhZ2VTdGVwKTsKLSAg
ICAgICAgbV92QmFyLT5zZXRQcm9wb3J0aW9uKGNsaWVudEhlaWdodCwgbV9zY3JvbGxIZWlnaHQp
OwogICAgIH0KLQotICAgIHVwZGF0ZVNjcm9sbGFibGVBcmVhU2V0KGhhc1Njcm9sbGFibGVIb3Jp
em9udGFsT3ZlcmZsb3coKSB8fCBoYXNTY3JvbGxhYmxlVmVydGljYWxPdmVyZmxvdygpKTsKIH0K
IAorCiAvLyBUaGlzIGlzIGNhbGxlZCBmcm9tIGxheW91dCBjb2RlIChiZWZvcmUgdXBkYXRlTGF5
ZXJQb3NpdGlvbnMpLgogdm9pZCBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3Jv
bGxJbmZvQWZ0ZXJMYXlvdXQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmgKaW5kZXggNDczMmIyNjRjNGI5NTQ4NTFhM2Q3
ZjViNjhmMDlmMjE2OGYzN2JlZC4uZGUyNmIzMDQ4OTY2NjZhNWNkZDY0YjUwZjc2ZDZkNTFlZDYz
ZWFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Ny
b2xsYWJsZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJT
Y3JvbGxhYmxlQXJlYS5oCkBAIC0xMjUsNiArMTI1LDcgQEAgcHVibGljOgogICAgIHZvaWQgcGFp
bnRPdmVybGF5U2Nyb2xsYmFycyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiBk
YW1hZ2VSZWN0LCBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4sIFJlbmRlck9iamVjdCogc3VidHJl
ZVBhaW50Um9vdCA9IG51bGxwdHIpOwogCiAgICAgdm9pZCB1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJM
YXlvdXQoKTsKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbGJhclN0ZXBzKCk7CiAKICAgICBib29sIHNj
cm9sbChTY3JvbGxEaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBmbG9hdCBtdWx0aXBsaWVy
ID0gMSk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCAyMzA2YmZmOGVkOTI1NWJiY2JmY2RmMTRlMjhiYmY3NjRhYzE0OWMw
Li5jNTMxN2VhNjYxNzFiMDkxMjAyMzhmZjhlZjBiZTI4ZjFhM2Y4YjM1IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTggQEAKKzIwMjEtMDEtMTggIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEu
Y29tPgorCisgICAgICAgIHNjcm9sbC1wYWRkaW5nIHNob3VsZCBhZmZlY3QgcGFnaW5nIG9wZXJh
dGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
OTA3NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzE3NDc3ODY+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjc3MzL3Njcm9sbC1zbmFwL3Njcm9s
bC1wYWRkaW5nLW1haW5mcmFtZS1wYWdpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBjc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW1haW5mcmFtZS1wYWdpbmcuaHRtbDog
QWRkZWQuCisgICAgICAgICogY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtcGFkZGluZy1vdmVyZmxv
dy1wYWdpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL3Njcm9sbC1zbmFw
L3Njcm9sbC1wYWRkaW5nLW92ZXJmbG93LXBhZ2luZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnM6IFNraXAgZmFpbGluZyB0ZXN0cy4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnM6IFNraXAgZmFpbGluZyB0
ZXN0cy4KKwogMjAyMS0wMS0xOCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAK
ICAgICAgICAgV2ViUlRDIGxpdmUgT3B1cyBhdWRpbyBzdHJlYW0gc3R1dHRlcnMKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXBhZGRpbmctbWFpbmZyYW1l
LXBhZ2luZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9s
bC1wYWRkaW5nLW1haW5mcmFtZS1wYWdpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3NThh
Yjk3ZDVkZDM3Mjk0MGQzMDA3MTdlZjI1NDQ3N2RmMzUxNmQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW1haW5mcmFtZS1wYWdp
bmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1BBU1MgcGFnaW5nIG1vdmVkIGJvZHkK
K1BBU1MgcGFnaW5nIG1vdmVkIHBhZGRlZCBib2R5CitQQVNTIGRvY3VtZW50LnNjcm9sbGluZ0Vs
ZW1lbnQuc2Nyb2xsVG9wIGlzIHdpdGhpbiAxIG9mIDUzNS42ODM3NjA2ODM3NjA3CitQQVNTIHBh
Z2luZyBtb3ZlZCBwYWRkZWQgYm9keQorUEFTUyBkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNj
cm9sbFRvcCBpcyB3aXRoaW4gMSBvZiA1MzUuNjgzNzYwNjgzNzYwNworUEFTUyBwYWdpbmcgbW92
ZWQgcGFkZGVkIGJvZHkKK1BBU1MgZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudC5zY3JvbGxUb3Ag
aXMgd2l0aGluIDIgb2YgNTI2LjM2NzUyMTM2NzUyMTQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3Mz
L3Njcm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW1haW5mcmFtZS1wYWdpbmcuaHRtbCBiL0xheW91
dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXBhZGRpbmctbWFpbmZyYW1lLXBhZ2luZy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmU4MjNjZjkwYjJhNzZiMDljN2JjMzA2ZTFkYTZjMmRhMDcyMDMxMmQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1w
YWRkaW5nLW1haW5mcmFtZS1wYWdpbmcuaHRtbApAQCAtMCwwICsxLDc4IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgIGJvZHkg
eworICAgICAgICAgICAgbWFyZ2luOiAwOworICAgICAgICB9CisKKyAgICAgICAgLmJveCB7Cisg
ICAgICAgICAgICB3aWR0aDogMTAwdnc7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMHZoOworICAg
ICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAg
ICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIGFzeW5jIGZ1bmN0aW9u
IHJ1blRlc3RzKCkKKyAgICAgICAgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAg
ICBhd2FpdCBVSUhlbHBlci5rZXlEb3duKCJwYWdlRG93biIpOworCisgICAgICAgICAgICAgICAg
ZXhwZWN0VHJ1ZShkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNjcm9sbFRvcCAhPSAwLCAicGFn
aW5nIG1vdmVkIGJvZHkiKTsKKyAgICAgICAgICAgICAgICBsZXQgZGVmYXVsdFBhZ2VQb3NpdGlv
biA9IGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAg
IGxldCB2aWV3cG9ydEhlaWdodCA9IGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgICAgIGxldCBwYWdlUHJvcG9ydGlvbiA9IGRvY3VtZW50LnNjcm9s
bGluZ0VsZW1lbnQuc2Nyb2xsVG9wIC8gdmlld3BvcnRIZWlnaHQ7CisKKyAgICAgICAgICAgICAg
ICBkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNjcm9sbFRvcCA9IDA7CisgICAgICAgICAgICAg
ICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNjcm9sbFBhZGRpbmdUb3AgPSAiMTBw
eCI7CisgICAgICAgICAgICAgICAgYXdhaXQgVUlIZWxwZXIua2V5RG93bigicGFnZURvd24iKTsK
KworICAgICAgICAgICAgICAgIGxldCBleHBlY3RlZCA9ICh2aWV3cG9ydEhlaWdodCAtIDEwKSAq
IHBhZ2VQcm9wb3J0aW9uOworICAgICAgICAgICAgICAgIGV4cGVjdFRydWUoZG9jdW1lbnQuc2Ny
b2xsaW5nRWxlbWVudC5zY3JvbGxUb3AgIT0gMCwgInBhZ2luZyBtb3ZlZCBwYWRkZWQgYm9keSIp
OworICAgICAgICAgICAgICAgIHNob3VsZEJlQ2xvc2VUbygiZG9jdW1lbnQuc2Nyb2xsaW5nRWxl
bWVudC5zY3JvbGxUb3AiLCBleHBlY3RlZCwgMSk7CisKKyAgICAgICAgICAgICAgICBkb2N1bWVu
dC5zY3JvbGxpbmdFbGVtZW50LnNjcm9sbFRvcCA9IDA7CisgICAgICAgICAgICAgICAgZG9jdW1l
bnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNjcm9sbFBhZGRpbmdUb3AgPSAiMHB4IjsKKyAgICAg
ICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2Nyb2xsUGFkZGluZ0Jv
dHRvbSA9ICIxMHB4IjsKKyAgICAgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5rZXlEb3duKCJw
YWdlRG93biIpOworCisgICAgICAgICAgICAgICAgZXhwZWN0VHJ1ZShkb2N1bWVudC5zY3JvbGxp
bmdFbGVtZW50LnNjcm9sbFRvcCAhPSAwLCAicGFnaW5nIG1vdmVkIHBhZGRlZCBib2R5Iik7Cisg
ICAgICAgICAgICAgICAgc2hvdWxkQmVDbG9zZVRvKCJkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50
LnNjcm9sbFRvcCIsIGV4cGVjdGVkLCAxKTsKKworICAgICAgICAgICAgICAgIGRvY3VtZW50LnNj
cm9sbGluZ0VsZW1lbnQuc2Nyb2xsVG9wID0gMDsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5k
b2N1bWVudEVsZW1lbnQuc3R5bGUuc2Nyb2xsUGFkZGluZ1RvcCA9ICIxMHB4IjsKKyAgICAgICAg
ICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2Nyb2xsUGFkZGluZ0JvdHRv
bSA9ICIxMHB4IjsKKyAgICAgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5rZXlEb3duKCJwYWdl
RG93biIpOworCisgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSAodmlld3BvcnRIZWlnaHQgLSAy
MCkgKiBwYWdlUHJvcG9ydGlvbjsKKyAgICAgICAgICAgICAgICBleHBlY3RUcnVlKGRvY3VtZW50
LnNjcm9sbGluZ0VsZW1lbnQuc2Nyb2xsVG9wICE9IDAsICJwYWdpbmcgbW92ZWQgcGFkZGVkIGJv
ZHkiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZUNsb3NlVG8oImRvY3VtZW50LnNjcm9sbGlu
Z0VsZW1lbnQuc2Nyb2xsVG9wIiwgZXhwZWN0ZWQsIDIpOworICAgICAgICAgICAgfSBjYXRjaCAo
ZSkgeworICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpOworICAgICAgICAgICAgfSBmaW5h
bGx5IHsKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBydW5UZXN0cygp
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YXIgY29uc29sZSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJyk7CisgICAgICAgICAgICAgICAgY29uc29s
ZS5pbm5lclRleHQgPSAiVGhpcyB0ZXN0IGNhbm5vdCBiZSBydW4gbWFudWFsbHkuIgorICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8
Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9
ImJhY2tncm91bmQ6IGdyZWVuOyI+PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+PC9kaXY+CisgICAg
ICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQ6IHJlZDsiPjwvZGl2PgorICAg
ICAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJiYWNrZ3JvdW5kOiBwaW5rOyI+PC9kaXY+Cisg
ICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQ6IHllbGxvdzsiPjwvZGl2
PgorICAgICAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJiYWNrZ3JvdW5kOiBvcmFuZ2U7Ij48
L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3Mz
L3Njcm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW92ZXJmbG93LXBhZ2luZy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW92ZXJmbG93LXBh
Z2luZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTRjZGQ0ZGIyNmUxMDg2ZTUzNDQyOWNjZGU2
NTJlZWFjZjE3ZjJhYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXBhZGRpbmctb3ZlcmZsb3ctcGFnaW5nLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDExIEBACitQQVNTIHBhZ2luZyBtb3ZlZCBjb250YWluZXIKK1BBU1MgcGFnaW5nIG1vdmVk
IHBhZGRlZCBjb250YWluZXIKK1BBU1MgY29udGFpbmVyLnNjcm9sbFRvcCBpcyB3aXRoaW4gMSBv
ZiAxNDAKK1BBU1MgcGFnaW5nIG1vdmVkIHBhZGRlZCBjb250YWluZXIKK1BBU1MgY29udGFpbmVy
LnNjcm9sbFRvcCBpcyB3aXRoaW4gMSBvZiAxNDAKK1BBU1MgcGFnaW5nIG1vdmVkIHBhZGRlZCBj
b250YWluZXIKK1BBU1MgY29udGFpbmVyLnNjcm9sbFRvcCBpcyB3aXRoaW4gMSBvZiAxMzIKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW92ZXJmbG93
LXBhZ2luZy5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtcGFkZGlu
Zy1vdmVyZmxvdy1wYWdpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YzkxNTIxMTVhZjQwZDllNDJmMWZk
ZWFiZTVkMGM1MzA4OWQ1M2Y3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9z
Y3JvbGwtc25hcC9zY3JvbGwtcGFkZGluZy1vdmVyZmxvdy1wYWdpbmcuaHRtbApAQCAtMCwwICsx
LDg5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5
bGU+CisgICAgICAgIC5ib3ggeworICAgICAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICAg
ICAgaGVpZ2h0OiAyMDBweDsKKyAgICAgICAgfQorCisgICAgICAgIC5nYWxsZXJ5IHsKKyAgICAg
ICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAg
ICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CisKKyAgICAgICAgZnVuY3Rpb24gY2xpY2tPbkVsZW1lbnQodGFyZ2V0RWxlbWVudCkgewor
ICAgICAgICAgICAgdmFyIGNsaWVudFJlY3QgPSB0YXJnZXRFbGVtZW50LmdldEJvdW5kaW5nQ2xp
ZW50UmVjdCgpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oY2xpZW50UmVj
dC54ICsgNSwgY2xpZW50UmVjdC55ICsgNSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZURvd24oKTsKKyAgICAgICAgfQorCisgICAgICAgIGFzeW5jIGZ1bmN0aW9uIHJ1blRlc3RzKCkK
KyAgICAgICAgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICB2YXIgY29udGFp
bmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRhaW5lciIpOworCisgICAgICAgICAg
ICAgICAgY2xpY2tPbkVsZW1lbnQoY29udGFpbmVyKTsKKyAgICAgICAgICAgICAgICBhd2FpdCBV
SUhlbHBlci5rZXlEb3duKCJwYWdlRG93biIpOworCisgICAgICAgICAgICAgICAgZXhwZWN0VHJ1
ZShjb250YWluZXIuc2Nyb2xsVG9wICE9IDAsICJwYWdpbmcgbW92ZWQgY29udGFpbmVyIik7Cisg
ICAgICAgICAgICAgICAgbGV0IGRlZmF1bHRQYWdlUG9zaXRpb24gPSBjb250YWluZXIuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGxldCBwYWdlUHJvcG9ydGlvbiA9IGNvbnRhaW5lci5zY3Jv
bGxUb3AgLyBjb250YWluZXIuY2xpZW50SGVpZ2h0OworCisgICAgICAgICAgICAgICAgY29udGFp
bmVyLnNjcm9sbFRvcCA9IDA7CisgICAgICAgICAgICAgICAgY29udGFpbmVyLnN0eWxlLnNjcm9s
bFBhZGRpbmdUb3AgPSAiMTBweCI7CisgICAgICAgICAgICAgICAgYXdhaXQgVUlIZWxwZXIua2V5
RG93bigicGFnZURvd24iKTsKKworICAgICAgICAgICAgICAgIGxldCBleHBlY3RlZCA9IChjb250
YWluZXIuY2xpZW50SGVpZ2h0IC0gMTApICogcGFnZVByb3BvcnRpb247CisgICAgICAgICAgICAg
ICAgZXhwZWN0VHJ1ZShjb250YWluZXIuc2Nyb2xsVG9wICE9IDAsICJwYWdpbmcgbW92ZWQgcGFk
ZGVkIGNvbnRhaW5lciIpOworICAgICAgICAgICAgICAgIHNob3VsZEJlQ2xvc2VUbygiY29udGFp
bmVyLnNjcm9sbFRvcCIsIGV4cGVjdGVkLCAxKTsKKworICAgICAgICAgICAgICAgIGNvbnRhaW5l
ci5zY3JvbGxUb3AgPSAwOworICAgICAgICAgICAgICAgIGNvbnRhaW5lci5zdHlsZS5zY3JvbGxQ
YWRkaW5nVG9wID0gIjBweCI7CisgICAgICAgICAgICAgICAgY29udGFpbmVyLnN0eWxlLnNjcm9s
bFBhZGRpbmdCb3R0b20gPSAiMTBweCI7CisgICAgICAgICAgICAgICAgYXdhaXQgVUlIZWxwZXIu
a2V5RG93bigicGFnZURvd24iKTsKKworICAgICAgICAgICAgICAgIGV4cGVjdFRydWUoY29udGFp
bmVyLnNjcm9sbFRvcCAhPSAwLCAicGFnaW5nIG1vdmVkIHBhZGRlZCBjb250YWluZXIiKTsKKyAg
ICAgICAgICAgICAgICBzaG91bGRCZUNsb3NlVG8oImNvbnRhaW5lci5zY3JvbGxUb3AiLCBleHBl
Y3RlZCwgMSk7CisKKyAgICAgICAgICAgICAgICBjb250YWluZXIuc2Nyb2xsVG9wID0gMDsKKyAg
ICAgICAgICAgICAgICBjb250YWluZXIuc3R5bGUuc2Nyb2xsUGFkZGluZ1RvcCA9ICIxMHB4IjsK
KyAgICAgICAgICAgICAgICBjb250YWluZXIuc3R5bGUuc2Nyb2xsUGFkZGluZ0JvdHRvbSA9ICIx
MHB4IjsKKyAgICAgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5rZXlEb3duKCJwYWdlRG93biIp
OworCisgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSAoY29udGFpbmVyLmNsaWVudEhlaWdodCAt
IDIwKSAqIHBhZ2VQcm9wb3J0aW9uOworICAgICAgICAgICAgICAgIGV4cGVjdFRydWUoY29udGFp
bmVyLnNjcm9sbFRvcCAhPSAwLCAicGFnaW5nIG1vdmVkIHBhZGRlZCBjb250YWluZXIiKTsKKyAg
ICAgICAgICAgICAgICBzaG91bGRCZUNsb3NlVG8oImNvbnRhaW5lci5zY3JvbGxUb3AiLCBleHBl
Y3RlZCwgMSk7CisgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICAgY29u
c29sZS5sb2coZSk7CisgICAgICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRl
cikgeworICAgICAgICAgICAgICAgIHJ1blRlc3RzKCk7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nv
bnNvbGUnKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmlubmVyVGV4dCA9ICJUaGlzIHRlc3Qg
Y2Fubm90IGJlIHJ1biBtYW51YWxseS4iCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4K
KyAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDxkaXYgaWQ9ImNvbnRh
aW5lciIgY2xhc3M9ImJveCIgc3R5bGU9Im92ZXJmbG93OiBzY3JvbGw7Ij4KKyAgICAgICAgICAg
IDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQ6IGdyZWVuOyI+PC9kaXY+CisgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJiYWNrZ3JvdW5kOiByZWQ7Ij48L2Rpdj4K
KyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQ6IHBpbms7Ij48
L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQ6IHll
bGxvdzsiPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm94IiBzdHlsZT0iYmFja2dy
b3VuZDogb3JhbmdlOyI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0
aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRl
eCAwZTAyZDIxYzY2NTk1NzUxMmQ4MmM2NWQzNGE3ZTIxNTk5NzllY2JhLi5jZWIxZjc0Zjg0Yzli
OTYxMDU2OGNmYmQ2ZDYzMWY2NzdjYjUzZWIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
aW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMzQsNiArMTM0LDggQEAganMvZG9tL2RmZy1p
bmxpbmUtcmVzb2x2ZS5odG1sCiBzY3JvbGxiYXJzL2Nvcm5lci1yZXNpemVyLXdpbmRvdy1pbmFj
dGl2ZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBzY3JvbGxiYXJzL3Njcm9sbGluZy1ieS1w
YWdlLW9uLWtleWJvYXJkLXNwYWNlYmFyLmh0bWwgWyBGYWlsdXJlIF0KIHNjcm9sbGJhcnMvc2Ny
b2xsYmFycy1vbi1wb3NpdGlvbmVkLWNvbnRlbnQuaHRtbCBbIEZhaWx1cmUgXQorY3NzMy9zY3Jv
bGwtc25hcC9zY3JvbGwtcGFkZGluZy1tYWluZnJhbWUtcGFnaW5nLmh0bWwgWyBGYWlsdXJlIF0K
K2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXBhZGRpbmctb3ZlcmZsb3ctcGFnaW5nLmh0bWwgWyBG
YWlsdXJlIF0KIAogIyBTVkcgdGVzdHMgdGhhdCB0aW1lIG91dCAodGhlc2UgcmVxdWlyZSBFdmVu
dFNlbmRlcikKIHN2Zy9hbmltYXRpb25zL2FuaW1WYWwtYmFzaWNzLmh0bWwKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBiMjUyNGRkNzQ0ZGE1
NTk0OTQ0YTQ2Y2QxMjNjZWRjYjQzMTRhMTE3Li45NzdlNGI4MmZiMzQxZjgwYzJiNzRkMTg5NWYx
NDIyM2IwYmZiODA0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rl
c3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhw
ZWN0YXRpb25zCkBAIC00NDgsOCArNDQ4LDkgQEAgc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2V4
Y2VlZC1vcGVuLWZpbGUtbGltaXQuaHRtbAogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jb29raWVzL3NlY3VyZS9zZXQtZnJvbS13c3MuaHR0cHMuc3ViLmh0bWwgWyBGYWlsdXJlIF0K
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29va2llcy9zZWN1cmUvc2V0LWZyb20t
d3Muc3ViLmh0bWwgWyBGYWlsdXJlIF0KIAotIyBXZWJLaXQxIGZyYW1lcyB1c2UgbmF0aXZlIHNj
cm9sbGJhcnMgY2F1c2luZyB0aGlzIHJlZmVyZW5jZSB0ZXN0IHRvIGZhaWwuCisjIFdlYktpdDEg
ZnJhbWVzIHVzZSBuYXRpdmUgc2Nyb2xsYmFycyBjYXVzaW5nIHRoZXNlIHRlc3RzIHRvIGZhaWwu
CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2Nyb2xsLXNuYXAvc2Ny
b2xsLXRhcmdldC1wYWRkaW5nLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCitjc3MzL3Nj
cm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW1haW5mcmFtZS1wYWdpbmcuaHRtbCBbIEZhaWx1cmUg
XQogCiAjIyMgRU5EIE9GICgyKSBGYWlsdXJlcyB3aXRob3V0IGJ1ZyByZXBvcnRzCiAjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418259</attachid>
            <date>2021-01-25 00:54:42 -0800</date>
            <delta_ts>2021-01-25 01:45:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219074-20210125095440.patch</filename>
            <type>text/plain</type>
            <size>27049</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ4YjU5NTdmYjgxNTc5
ZTg2ZGRhYzcyMTVjOTMwM2NjZTUxMTAzZS4uOTJlY2RiYWIwZjNiYjBhMGU3Y2Y0NWVmYWExMWY3
ZDBiYjdiNmQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTAxLTE4ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBzY3JvbGwtcGFk
ZGluZyBzaG91bGQgYWZmZWN0IHBhZ2luZyBvcGVyYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkwNzQKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzcxNzQ3Nzg2PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAg
ICAgICBIYXZlIHNjcm9sbC1wYWRkaW5nIGFmZmVjdCB0aGUgYW1vdW50IG9mIHRoZSBzY3JvbGxh
YmxlIGFyZWEgdGhhdCBtb3ZlcyBkdXJpbmcKKyAgICAgICAgcGFnaW5nIG9wZXJhdGlvbnMuIFRo
aXMgaXMgdGhlIGJlaGF2aW9yIHNwZWNpZmllZCBpbiB0aGUgc2Nyb2xsIHNuYXAgc3BlY2lmaWNh
dGlvbgorICAgICAgICBhbmQgYWxsb3dzIHNjcm9sbGFibGUgYXJlYXMgd2l0aCBwYXJ0aWFsbHkg
b2JzY3VyZWQgYXJlYXMgdG8gcHJvcGVybHkgcGFnZSB0aHJvdWdoCisgICAgICAgIHRoZWlyIGNv
bnRlbnQuCisKKyAgICAgICAgU2VlIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtc2Nyb2xs
LXNuYXAtMS8jcHJvcGRlZi1zY3JvbGwtcGFkZGluZy4KKworICAgICAgICBUZXN0czogY3NzMy9z
Y3JvbGwtc25hcC9zY3JvbGwtcGFkZGluZy1tYWluZnJhbWUtcGFnaW5nLmh0bWwKKyAgICAgICAg
ICAgICAgIGNzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXBhZGRpbmctb3ZlcmZsb3ctcGFnaW5nLmh0
bWwKKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6dXBkYXRlU2Nyb2xsYmFyU3RlcHMpOiBBZGRlZCB0aGlzIG92ZXJyaWRlIG1ldGhv
ZCB3aGljaAorICAgICAgICBwcm9wZXJseSBzZXRzIHBhZ2Ugc3RlcHMuIE9ubHkgRnJhbWVWaWV3
IGhhcyBhY2Nlc3MgdG8gdGhlIGRvY3VtZW50LgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6
CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKTogQWRkZWQgdGhpcyBoZWxwZXIgbWV0aG9kLCB3
aGljaCBpcworICAgICAgICB2aXJ0dWFsIHNvIHRoYXQgRnJhbWVWaWV3IGNhbiBvdmVycmlkZSBp
dC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhclN0ZXBzKTog
VXNlIHRoZSBoZWxwZXIgbWV0aG9kIHRvIGFjdHVhbGx5CisgICAgICAgIHNldCB0aGUgc2Nyb2xs
YmFyIHN0ZXBzLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuaDogQWRkIG5ldyBtZXRo
b2QgZGVjbGFyYXRpb25zLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpzY3JvbGxQYWRkaW5nRm9yVmlld3BvcnRSZWN0KTog
QWRkIHRoaXMgbmV3IGhlbHBlciB3aGljaAorICAgICAgICBnZXRzIHRoZSBzY3JvbGwtcGFkZGlu
ZyBmb3IgYSBib3guCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOiBBZGQgbmV3IGhl
bHBlci4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZXhwYW5kU2Nyb2xsUmVjdFRvVmlzaWJsZVRhcmdldFJlY3RUb0luY2x1ZGVTY3JvbGxQ
YWRkaW5nKTogVXNlIHRoZSBuZXcKKyAgICAgICAgUmVuZGVyQm94IGhlbHBlci4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVTY3JvbGxiYXJzQWZ0ZXJMYXlvdXQpOiBVc2Ug
dGhlIG5ldyB1cGRhdGVTY3JvbGxiYXJTdGVwcyBoZWxwZXIuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6dXBkYXRlU2Nyb2xsYmFyU3RlcHMpOiBBZGRlZCB0aGlzIGhlbHBlciBzbyB0
aGF0IFJlbmRlckxheWVyTW9kZWxPYmplY3QKKyAgICAgICAgY2FuIHVwZGF0ZSBzdGVwcyB3aGVu
IG5lY2Vzc2FyeS4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDogQWRkZWQgbmV3
IGRlY2xhcmF0aW9ucy4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpzdHlsZURp
ZENoYW5nZSk6IFVwZGF0ZSBzdGVwcyBvbiBGcmFtZVZpZXdzIGFuZCBSZW5kZXJMYXllcnMKKyAg
ICAgICAgd2hlbiB0aGUgc3R5bGUgY2hhbmdlIGRpY3RhdGVzIGl0LgorCiAyMDIxLTAxLTI1ICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBOdWxs
IFB0ciBEZXJlZiBAIFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggMjliYzJiMjc0OWRmZmY5ZjhjZjU1MTQwNzhk
ZTUzNjM0NTBiMTNjOC4uMjgzMzM3ZGNjNjMxM2MzMmQ5MjlhZTlkNmIzMzdiZmQwMzJjZjQwMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtNTU0NCw2ICs1NTQ0LDI4IEBAIGZsb2F0
IEZyYW1lVmlldzo6cGFnZVNjYWxlRmFjdG9yKCkgY29uc3QKICAgICByZXR1cm4gZnJhbWUoKS5m
cmFtZVNjYWxlRmFjdG9yKCk7CiB9CiAKK3ZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxiYXJT
dGVwcygpCit7CisgICAgYXV0byogZG9jdW1lbnRFbGVtZW50ID0gZnJhbWUoKS5kb2N1bWVudCgp
ID8gZnJhbWUoKS5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKSA6IG51bGxwdHI7CisgICAg
YXV0byogcmVuZGVyZXIgPSBkb2N1bWVudEVsZW1lbnQgPyBkb2N1bWVudEVsZW1lbnQtPnJlbmRl
ckJveCgpIDogbnVsbHB0cjsKKyAgICBpZiAoIXJlbmRlcmVyKSB7CisgICAgICAgIFNjcm9sbFZp
ZXc6OnVwZGF0ZVNjcm9sbGJhclN0ZXBzKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBMYXlvdXRSZWN0IHBhZGRlZFZpZXdSZWN0KExheW91dFBvaW50KCksIHZpc2libGVTaXplKCkp
OworICAgIHBhZGRlZFZpZXdSZWN0LmNvbnRyYWN0KHJlbmRlcmVyLT5zY3JvbGxQYWRkaW5nRm9y
Vmlld3BvcnRSZWN0KHBhZGRlZFZpZXdSZWN0KSk7CisKKyAgICBpZiAoaG9yaXpvbnRhbFNjcm9s
bGJhcigpKSB7CisgICAgICAgIGludCBwYWdlU3RlcCA9IFNjcm9sbGJhcjo6cGFnZVN0ZXAocGFk
ZGVkVmlld1JlY3Qud2lkdGgoKSk7CisgICAgICAgIGhvcml6b250YWxTY3JvbGxiYXIoKS0+c2V0
U3RlcHMoU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpLCBwYWdlU3RlcCk7CisKKyAgICB9
CisgICAgaWYgKHZlcnRpY2FsU2Nyb2xsYmFyKCkpIHsKKyAgICAgICAgaW50IHBhZ2VTdGVwID0g
U2Nyb2xsYmFyOjpwYWdlU3RlcChwYWRkZWRWaWV3UmVjdC5oZWlnaHQoKSk7CisgICAgICAgIHZl
cnRpY2FsU2Nyb2xsYmFyKCktPnNldFN0ZXBzKFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAo
KSwgcGFnZVN0ZXApOworICAgIH0KK30KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI3VuZGVm
IFBBR0VfSUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IGJlZWYyN2ZiNDAxNWVlNWFiMmY2
NGQ5MmFkY2YxMDViZjE0ZDIyNDguLjViMzJiNmZkOWRlZTk0YmMxNTQ2NzMzNWEwOWExMTM1NDM3
Njg5OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtNjgwLDYgKzY4MCw5IEBAIHB1Ymxp
YzoKIAogICAgIFN0cmluZyBkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QgZmluYWw7CiAKKyAgICAv
LyBTY3JvbGxWaWV3CisgICAgdm9pZCB1cGRhdGVTY3JvbGxiYXJTdGVwcygpIG92ZXJyaWRlOwor
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEZyYW1lVmlldyhGcmFtZSYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCmluZGV4IGZhMjdmNjkyY2U0MDY3YjkxNjQ4MzE2Mzcz
OTY5ZjFlODlhNDkxNGYuLjMzM2U5MWU1YWI4MmEzNzJiNWI3NjQyNzFlYjljNzU1ODg2OGViZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCkBAIC03MzEsNyArNzMxLDYg
QEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKGNvbnN0IFNjcm9sbFBvc2l0aW9u
JiBkZXNpcmVkUG9zaXRpb24pCiAKICAgICBpZiAobV9ob3Jpem9udGFsU2Nyb2xsYmFyKSB7CiAg
ICAgICAgIGludCBjbGllbnRXaWR0aCA9IHZpc2libGVXaWR0aCgpOwotICAgICAgICBpbnQgcGFn
ZVN0ZXAgPSBTY3JvbGxiYXI6OnBhZ2VTdGVwKGNsaWVudFdpZHRoKTsKICAgICAgICAgSW50UmVj
dCBvbGRSZWN0KG1faG9yaXpvbnRhbFNjcm9sbGJhci0+ZnJhbWVSZWN0KCkpOwogICAgICAgICBJ
bnRSZWN0IGhCYXJSZWN0KHNob3VsZFBsYWNlQmxvY2tEaXJlY3Rpb25TY3JvbGxiYXJPbkxlZnQo
KSAmJiBtX3ZlcnRpY2FsU2Nyb2xsYmFyID8gbV92ZXJ0aWNhbFNjcm9sbGJhci0+b2NjdXBpZWRX
aWR0aCgpIDogMCwKICAgICAgICAgICAgIGhlaWdodCgpIC0gbV9ob3Jpem9udGFsU2Nyb2xsYmFy
LT5oZWlnaHQoKSwKQEAgLTc0NCw3ICs3NDMsNiBAQCB2b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZVNj
cm9sbGJhcnMoY29uc3QgU2Nyb2xsUG9zaXRpb24mIGRlc2lyZWRQb3NpdGlvbikKICAgICAgICAg
aWYgKG1fc2Nyb2xsYmFyc1N1cHByZXNzZWQpCiAgICAgICAgICAgICBtX2hvcml6b250YWxTY3Jv
bGxiYXItPnNldFN1cHByZXNzSW52YWxpZGF0aW9uKHRydWUpOwogICAgICAgICBtX2hvcml6b250
YWxTY3JvbGxiYXItPnNldEVuYWJsZWQoY29udGVudHNXaWR0aCgpID4gY2xpZW50V2lkdGgpOwot
ICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldFN0ZXBzKFNjcm9sbGJhcjo6cGl4ZWxz
UGVyTGluZVN0ZXAoKSwgcGFnZVN0ZXApOwogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXIt
PnNldFByb3BvcnRpb24oY2xpZW50V2lkdGgsIGNvbnRlbnRzV2lkdGgoKSk7CiAgICAgICAgIGlm
IChtX3Njcm9sbGJhcnNTdXBwcmVzc2VkKQogICAgICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xs
YmFyLT5zZXRTdXBwcmVzc0ludmFsaWRhdGlvbihmYWxzZSk7IApAQCAtNzUyLDcgKzc1MCw2IEBA
IHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyhjb25zdCBTY3JvbGxQb3NpdGlvbiYg
ZGVzaXJlZFBvc2l0aW9uKQogCiAgICAgaWYgKG1fdmVydGljYWxTY3JvbGxiYXIpIHsKICAgICAg
ICAgaW50IGNsaWVudEhlaWdodCA9IHZpc2libGVIZWlnaHQoKTsKLSAgICAgICAgaW50IHBhZ2VT
dGVwID0gU2Nyb2xsYmFyOjpwYWdlU3RlcChjbGllbnRIZWlnaHQpOwogICAgICAgICBJbnRSZWN0
IG9sZFJlY3QobV92ZXJ0aWNhbFNjcm9sbGJhci0+ZnJhbWVSZWN0KCkpOwogICAgICAgICBJbnRS
ZWN0IHZCYXJSZWN0KHNob3VsZFBsYWNlQmxvY2tEaXJlY3Rpb25TY3JvbGxiYXJPbkxlZnQoKSA/
IDAgOiB3aWR0aCgpIC0gbV92ZXJ0aWNhbFNjcm9sbGJhci0+d2lkdGgoKSwKICAgICAgICAgICAg
IHRvcENvbnRlbnRJbnNldCgpLApAQCAtNzY1LDEyICs3NjIsMTMgQEAgdm9pZCBTY3JvbGxWaWV3
Ojp1cGRhdGVTY3JvbGxiYXJzKGNvbnN0IFNjcm9sbFBvc2l0aW9uJiBkZXNpcmVkUG9zaXRpb24p
CiAgICAgICAgIGlmIChtX3Njcm9sbGJhcnNTdXBwcmVzc2VkKQogICAgICAgICAgICAgbV92ZXJ0
aWNhbFNjcm9sbGJhci0+c2V0U3VwcHJlc3NJbnZhbGlkYXRpb24odHJ1ZSk7CiAgICAgICAgIG1f
dmVydGljYWxTY3JvbGxiYXItPnNldEVuYWJsZWQodG90YWxDb250ZW50c1NpemUoKS5oZWlnaHQo
KSA+IGNsaWVudEhlaWdodCk7Ci0gICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXItPnNldFN0ZXBz
KFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSwgcGFnZVN0ZXApOwogICAgICAgICBtX3Zl
cnRpY2FsU2Nyb2xsYmFyLT5zZXRQcm9wb3J0aW9uKGNsaWVudEhlaWdodCwgdG90YWxDb250ZW50
c1NpemUoKS5oZWlnaHQoKSk7CiAgICAgICAgIGlmIChtX3Njcm9sbGJhcnNTdXBwcmVzc2VkKQog
ICAgICAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhci0+c2V0U3VwcHJlc3NJbnZhbGlkYXRpb24o
ZmFsc2UpOwogICAgIH0KIAorICAgIHVwZGF0ZVNjcm9sbGJhclN0ZXBzKCk7CisKICAgICBpZiAo
aGFzSG9yaXpvbnRhbFNjcm9sbGJhciAhPSBuZXdIYXNIb3Jpem9udGFsU2Nyb2xsYmFyIHx8IGhh
c1ZlcnRpY2FsU2Nyb2xsYmFyICE9IG5ld0hhc1ZlcnRpY2FsU2Nyb2xsYmFyKSB7CiAgICAgICAg
IC8vIEZJWE1FOiBJcyBmcmFtZVJlY3RzQ2hhbmdlZCByZWFsbHkgbmVjZXNzYXJ5IGhlcmU/IEhh
dmUgYW55IGZyYW1lIHJlY3RzIGNoYW5nZWQ/CiAgICAgICAgIGZyYW1lUmVjdHNDaGFuZ2VkKCk7
CkBAIC03OTEsNiArNzg5LDE0IEBAIHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyhj
b25zdCBTY3JvbGxQb3NpdGlvbiYgZGVzaXJlZFBvc2l0aW9uKQogICAgIG1faW5VcGRhdGVTY3Jv
bGxiYXJzID0gZmFsc2U7CiB9CiAKK3ZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFyU3Rl
cHMoKQoreworICAgIGlmIChtX2hvcml6b250YWxTY3JvbGxiYXIpCisgICAgICAgIG1faG9yaXpv
bnRhbFNjcm9sbGJhci0+c2V0U3RlcHMoU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpLCBT
Y3JvbGxiYXI6OnBhZ2VTdGVwKHZpc2libGVXaWR0aCgpKSk7CisgICAgaWYgKG1fdmVydGljYWxT
Y3JvbGxiYXIpCisgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXItPnNldFN0ZXBzKFNjcm9sbGJh
cjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSwgU2Nyb2xsYmFyOjpwYWdlU3RlcCh2aXNpYmxlSGVpZ2h0
KCkpKTsKK30KKwogY29uc3QgaW50IHBhbkljb25TaXplTGVuZ3RoID0gMTY7CiAKIEludFJlY3Qg
U2Nyb2xsVmlldzo6cmVjdFRvQ29weU9uU2Nyb2xsKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbFZpZXcuaAppbmRleCBkNjk3NGU4NWVjN2E4OTM5NDE4MjEwOWY4ZWUyNjFmNjk4M2Zh
NjRhLi42YzI4MDBkZmMzMGNlOThkYjcyZmRlMTYxYmYzMWNhYjAwNDU0NzcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCkBAIC0zOTcsNiArMzk3LDcgQEAgcHVibGljOgogICAg
IGJvb2wgYWxsb3dzVW5jbGFtcGVkU2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Fs
bG93c1VuY2xhbXBlZFNjcm9sbFBvc2l0aW9uOyB9CiAKICAgICBib29sIG1hbmFnZXNTY3JvbGxi
YXJzKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNjcm9sbGJhclN0ZXBzKCk7CiAK
IHByb3RlY3RlZDoKICAgICBTY3JvbGxWaWV3KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCmluZGV4IDA3NWUyN2FlOGJiNTMwMmNhZWYyYzhlMzNmMWE0Y2E3MjViNWIxNTAu
LmVjYjA5N2IzMDFlODllNDI1ODhhYmI4ZjQ0NTE4Y2I1YjMwNWRjMGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC01MTYyLDQgKzUxNjIsMTIgQEAgTGF5b3V0UmVj
dCBSZW5kZXJCb3g6OmFic29sdXRlQW5jaG9yUmVjdFdpdGhTY3JvbGxNYXJnaW4oYm9vbCogaW5z
aWRlRml4ZWQpIGNvbnMKICAgICByZXR1cm4gYW5jaG9yUmVjdDsKIH0KIAorTGF5b3V0Qm94RXh0
ZW50IFJlbmRlckJveDo6c2Nyb2xsUGFkZGluZ0ZvclZpZXdwb3J0UmVjdChjb25zdCBMYXlvdXRS
ZWN0JiB2aWV3cG9ydFJlY3QpCit7CisgICAgY29uc3QgYXV0byYgcGFkZGluZyA9IHN0eWxlKCku
c2Nyb2xsUGFkZGluZygpOworICAgIHJldHVybiBMYXlvdXRCb3hFeHRlbnQoCisgICAgICAgIHZh
bHVlRm9yTGVuZ3RoKHBhZGRpbmcudG9wKCksIHZpZXdwb3J0UmVjdC5oZWlnaHQoKSksIHZhbHVl
Rm9yTGVuZ3RoKHBhZGRpbmcucmlnaHQoKSwgdmlld3BvcnRSZWN0LndpZHRoKCkpLAorICAgICAg
ICB2YWx1ZUZvckxlbmd0aChwYWRkaW5nLmJvdHRvbSgpLCB2aWV3cG9ydFJlY3QuaGVpZ2h0KCkp
LCB2YWx1ZUZvckxlbmd0aChwYWRkaW5nLmxlZnQoKSwgdmlld3BvcnRSZWN0LndpZHRoKCkpKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5oCmluZGV4IGFmOThiNDkyY2U5N2NiYTg5MWNiYzI1OGY2MGQ0OGU5ZmNjNGM1ZDMuLjc2NGMx
ZmI1NWJhZGQ4ZGI2ZTIzMTBhMzY5YmExZDFmM2U2MjVmZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmgKQEAgLTQ5NSw2ICs0OTUsOCBAQCBvdmVycmlkZTsKICAgICBib29sIGhh
c1Njcm9sbGFibGVPdmVyZmxvd1goKSBjb25zdCB7IHJldHVybiBzY3JvbGxzT3ZlcmZsb3dYKCkg
JiYgaGFzSG9yaXpvbnRhbE92ZXJmbG93KCk7IH0KICAgICBib29sIGhhc1Njcm9sbGFibGVPdmVy
Zmxvd1koKSBjb25zdCB7IHJldHVybiBzY3JvbGxzT3ZlcmZsb3dZKCkgJiYgaGFzVmVydGljYWxP
dmVyZmxvdygpOyB9CiAKKyAgICBMYXlvdXRCb3hFeHRlbnQgc2Nyb2xsUGFkZGluZ0ZvclZpZXdw
b3J0UmVjdChjb25zdCBMYXlvdXRSZWN0JiB2aWV3cG9ydFJlY3QpOworCiAgICAgYm9vbCB1c2Vz
Q29tcG9zaXRlZFNjcm9sbGluZygpIGNvbnN0OwogICAgIAogICAgIGJvb2wgcGVyY2VudGFnZUxv
Z2ljYWxIZWlnaHRJc1Jlc29sdmFibGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCmluZGV4IGMzMjRiMTY3M2UxNDU2NGI5YTRkYmQ2MWUzZGZmMTAxZjVl
YTE4OWEuLjY4ZjMwNzFiZGQ5MDgwZWY0OGExZTZhOWRkYjk0Y2Y1MzgxZWNhNzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtNjUwLDExICs2NTAsNyBAQCBz
dGF0aWMgdm9pZCBleHBhbmRTY3JvbGxSZWN0VG9WaXNpYmxlVGFyZ2V0UmVjdFRvSW5jbHVkZVNj
cm9sbFBhZGRpbmcoUmVuZGVyQm94KgogICAgIC8vIHNjcm9sbC1wYWRkaW5nIGFwcGxpZXMgdG8g
dGhlIHNjcm9sbCBjb250YWluZXIsIGJ1dCBleHBhbmQgdGhlIHJlY3RhbmdsZSB0aGF0IHdlIHdh
bnQgdG8gZXhwb3NlIGluIG9yZGVyCiAgICAgLy8gc2ltdWxhdGUgcGFkZGluZyB0aGUgc2Nyb2xs
IGNvbnRhaW5lci4gVGhpcyByZWN0YW5nbGUgaXMgcGFzc2VkIHVwIHRoZSB0cmVlIG9mIHNjcm9s
bGluZyBlbGVtZW50cyB0bwogICAgIC8vIGVuc3VyZSB0aGF0IHRoZSBwYWRkaW5nIG9uIHRoaXMg
c2Nyb2xsIGNvbnRhaW5lciBpcyBtYWludGFpbmVkLgotICAgIGNvbnN0IGF1dG8mIHNjcm9sbFBh
ZGRpbmcgPSByZW5kZXJCb3gtPnN0eWxlKCkuc2Nyb2xsUGFkZGluZygpOwotICAgIExheW91dEJv
eEV4dGVudCBzY3JvbGxQYWRkaW5nRXh0ZW50cygKLSAgICAgICAgdmFsdWVGb3JMZW5ndGgoc2Ny
b2xsUGFkZGluZy50b3AoKSwgdmlld1JlY3QuaGVpZ2h0KCkpLCB2YWx1ZUZvckxlbmd0aChzY3Jv
bGxQYWRkaW5nLnJpZ2h0KCksIHZpZXdSZWN0LndpZHRoKCkpLAotICAgICAgICB2YWx1ZUZvckxl
bmd0aChzY3JvbGxQYWRkaW5nLmJvdHRvbSgpLCB2aWV3UmVjdC5oZWlnaHQoKSksIHZhbHVlRm9y
TGVuZ3RoKHNjcm9sbFBhZGRpbmcubGVmdCgpLCB2aWV3UmVjdC53aWR0aCgpKSk7Ci0gICAgdGFy
Z2V0UmVjdC5leHBhbmQoc2Nyb2xsUGFkZGluZ0V4dGVudHMpOworICAgIHRhcmdldFJlY3QuZXhw
YW5kKHJlbmRlckJveC0+c2Nyb2xsUGFkZGluZ0ZvclZpZXdwb3J0UmVjdCh2aWV3UmVjdCkpOwog
fQogCiBib29sIFJlbmRlckxheWVyOjpzaG91bGRCZU5vcm1hbEZsb3dPbmx5KCkgY29uc3QKQEAg
LTI4ODcsNiArMjg4MywxMiBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVTY3JvbGxJbmZvQWZ0
ZXJMYXlvdXQoKQogICAgICAgICBtX3Njcm9sbGFibGVBcmVhLT51cGRhdGVTY3JvbGxJbmZvQWZ0
ZXJMYXlvdXQoKTsKIH0KIAordm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlU2Nyb2xsYmFyU3RlcHMo
KQoreworICAgIGlmIChtX3Njcm9sbGFibGVBcmVhKQorICAgICAgICBtX3Njcm9sbGFibGVBcmVh
LT51cGRhdGVTY3JvbGxiYXJTdGVwcygpOworfQorCiBib29sIFJlbmRlckxheWVyOjpjYW5Vc2VD
b21wb3NpdGVkU2Nyb2xsaW5nKCkgY29uc3QKIHsKICAgICBpZiAobV9zY3JvbGxhYmxlQXJlYSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggNzVmYWE4NWJhNThhNTk3
MmYxYTU1Njc5ZGJhYWQ1ZWE5YWQ1MDU1Yi4uZDUyZTgwYjYxMWUyY2Q5ZWMwYjFmYzE4YjBlYjg3
ZThiN2JmMzQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTQ3
Nyw2ICs0NzcsNyBAQCBwdWJsaWM6CiAgICAgSW50U2l6ZSBvZmZzZXRGcm9tUmVzaXplQ29ybmVy
KGNvbnN0IEludFBvaW50JiBsb2NhbFBvaW50KSBjb25zdDsKIAogICAgIHZvaWQgdXBkYXRlU2Ny
b2xsSW5mb0FmdGVyTGF5b3V0KCk7CisgICAgdm9pZCB1cGRhdGVTY3JvbGxiYXJTdGVwcygpOwog
CiAgICAgdm9pZCBhdXRvc2Nyb2xsKGNvbnN0IEludFBvaW50Jik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcAppbmRleCBjN2Zj
NjZjNzAxM2I3ZThkZTZhYTA2YzQzMTNiZDI5YTgxODUxYWUzLi4zZDY1NDg0NDE4ZWYyOTAzZGYx
ZmY2MjNlMzZiZDViZTAwZTI2ZDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCkBAIC0xNzIsOCArMTcyLDE2IEBAIHZvaWQg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRp
ZmYsIGNvbnN0IFJlbmRlclN0CiAgICAgICAgICAgICB2aWV3KCkuZnJhbWVWaWV3KCkucmVtb3Zl
Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdCgqdGhpcyk7CiAgICAgfQogCi0jaWYgRU5BQkxFKENT
U19TQ1JPTExfU05BUCkKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUgPSBzdHlsZSgp
OworICAgIGlmIChvbGRTdHlsZSAmJiBvbGRTdHlsZS0+c2Nyb2xsUGFkZGluZygpICE9IG5ld1N0
eWxlLnNjcm9sbFBhZGRpbmcoKSkgeworICAgICAgICBpZiAoaXNEb2N1bWVudEVsZW1lbnRSZW5k
ZXJlcigpKSB7CisgICAgICAgICAgICBGcmFtZVZpZXcmIGZyYW1lVmlldyA9IHZpZXcoKS5mcmFt
ZVZpZXcoKTsKKyAgICAgICAgICAgIGZyYW1lVmlldy51cGRhdGVTY3JvbGxiYXJTdGVwcygpOwor
ICAgICAgICB9IGVsc2UgaWYgKFJlbmRlckxheWVyKiByZW5kZXJMYXllciA9IGxheWVyKCkpCisg
ICAgICAgICAgICByZW5kZXJMYXllci0+dXBkYXRlU2Nyb2xsYmFyU3RlcHMoKTsKKyAgICB9CisK
KyNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIGlmIChvbGRTdHlsZSAmJiBzY3JvbGxT
bmFwQ29udGFpbmVyUmVxdWlyZXNVcGRhdGVGb3JTdHlsZVVwZGF0ZSgqb2xkU3R5bGUsIG5ld1N0
eWxlKSkgewogICAgICAgICBpZiAoUmVuZGVyTGF5ZXIqIHJlbmRlckxheWVyID0gbGF5ZXIoKSkg
ewogICAgICAgICAgICAgYXV0byogc2Nyb2xsYWJsZUxheWVyID0gcmVuZGVyTGF5ZXItPmVuc3Vy
ZUxheWVyU2Nyb2xsYWJsZUFyZWEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcAppbmRleCAyMDhkZjFiODI4YjM3Y2Nl
MDEzMWQ3MWEwMmU0ZmZhOWQ0MWM1YjkwLi45MTQ4MTFiMjk2YzJkMGI2MTE3MjNlMTI4MGVjY2Zl
MmQ5YTg3ODU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJTY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwCkBAIC0xMTE4LDIzICsxMTE4LDM3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6dXBkYXRlU2Nyb2xsYmFyc0FmdGVyTGF5b3V0KCkKICAg
ICAgICAgICAgIGRvd25jYXN0PFJlbmRlckZsZXhpYmxlQm94PihwYXJlbnQpLT5jbGVhckNhY2hl
ZE1haW5TaXplRm9yQ2hpbGQoKm1fbGF5ZXIucmVuZGVyQm94KCkpOwogICAgIH0KIAotICAgIC8v
IFNldCB1cCB0aGUgcmFuZ2UgKGFuZCBwYWdlIHN0ZXAvbGluZSBzdGVwKS4KKyAgICAvLyBTZXQg
dXAgdGhlIHJhbmdlLgorICAgIGlmIChtX2hCYXIpCisgICAgICAgIG1faEJhci0+c2V0UHJvcG9y
dGlvbihyb3VuZFRvSW50KGJveC0+Y2xpZW50V2lkdGgoKSksIG1fc2Nyb2xsV2lkdGgpOworICAg
IGlmIChtX3ZCYXIpCisgICAgICAgIG1fdkJhci0+c2V0UHJvcG9ydGlvbihyb3VuZFRvSW50KGJv
eC0+Y2xpZW50SGVpZ2h0KCkpLCBtX3Njcm9sbEhlaWdodCk7CisKKyAgICB1cGRhdGVTY3JvbGxi
YXJTdGVwcygpOworCisgICAgdXBkYXRlU2Nyb2xsYWJsZUFyZWFTZXQoaGFzU2Nyb2xsYWJsZUhv
cml6b250YWxPdmVyZmxvdygpIHx8IGhhc1Njcm9sbGFibGVWZXJ0aWNhbE92ZXJmbG93KCkpOwor
fQorCit2b2lkIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OnVwZGF0ZVNjcm9sbGJhclN0ZXBz
KCkKK3sKKyAgICBSZW5kZXJCb3gqIGJveCA9IG1fbGF5ZXIucmVuZGVyQm94KCk7CisgICAgQVNT
RVJUKGJveCk7CisKKyAgICBMYXlvdXRSZWN0IHBhZGRlZExheWVyQm91bmRzKDBfbHUsIDBfbHUs
IGJveC0+Y2xpZW50V2lkdGgoKSwgYm94LT5jbGllbnRIZWlnaHQoKSk7CisgICAgcGFkZGVkTGF5
ZXJCb3VuZHMuY29udHJhY3QoYm94LT5zY3JvbGxQYWRkaW5nRm9yVmlld3BvcnRSZWN0KHBhZGRl
ZExheWVyQm91bmRzKSk7CisKKyAgICAvLyBTZXQgdXAgdGhlICBwYWdlIHN0ZXAvbGluZSBzdGVw
LgogICAgIGlmIChtX2hCYXIpIHsKLSAgICAgICAgaW50IGNsaWVudFdpZHRoID0gcm91bmRUb0lu
dChib3gtPmNsaWVudFdpZHRoKCkpOwotICAgICAgICBpbnQgcGFnZVN0ZXAgPSBTY3JvbGxiYXI6
OnBhZ2VTdGVwKGNsaWVudFdpZHRoKTsKKyAgICAgICAgaW50IHBhZ2VTdGVwID0gU2Nyb2xsYmFy
OjpwYWdlU3RlcChyb3VuZFRvSW50KHBhZGRlZExheWVyQm91bmRzLndpZHRoKCkpKTsKICAgICAg
ICAgbV9oQmFyLT5zZXRTdGVwcyhTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCksIHBhZ2VT
dGVwKTsKLSAgICAgICAgbV9oQmFyLT5zZXRQcm9wb3J0aW9uKGNsaWVudFdpZHRoLCBtX3Njcm9s
bFdpZHRoKTsKICAgICB9CiAgICAgaWYgKG1fdkJhcikgewotICAgICAgICBpbnQgY2xpZW50SGVp
Z2h0ID0gcm91bmRUb0ludChib3gtPmNsaWVudEhlaWdodCgpKTsKLSAgICAgICAgaW50IHBhZ2VT
dGVwID0gU2Nyb2xsYmFyOjpwYWdlU3RlcChjbGllbnRIZWlnaHQpOworICAgICAgICBpbnQgcGFn
ZVN0ZXAgPSBTY3JvbGxiYXI6OnBhZ2VTdGVwKHJvdW5kVG9JbnQocGFkZGVkTGF5ZXJCb3VuZHMu
aGVpZ2h0KCkpKTsKICAgICAgICAgbV92QmFyLT5zZXRTdGVwcyhTY3JvbGxiYXI6OnBpeGVsc1Bl
ckxpbmVTdGVwKCksIHBhZ2VTdGVwKTsKLSAgICAgICAgbV92QmFyLT5zZXRQcm9wb3J0aW9uKGNs
aWVudEhlaWdodCwgbV9zY3JvbGxIZWlnaHQpOwogICAgIH0KLQotICAgIHVwZGF0ZVNjcm9sbGFi
bGVBcmVhU2V0KGhhc1Njcm9sbGFibGVIb3Jpem9udGFsT3ZlcmZsb3coKSB8fCBoYXNTY3JvbGxh
YmxlVmVydGljYWxPdmVyZmxvdygpKTsKIH0KIAorCiAvLyBUaGlzIGlzIGNhbGxlZCBmcm9tIGxh
eW91dCBjb2RlIChiZWZvcmUgdXBkYXRlTGF5ZXJQb3NpdGlvbnMpLgogdm9pZCBSZW5kZXJMYXll
clNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQoKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmgK
aW5kZXggNDczMmIyNjRjNGI5NTQ4NTFhM2Q3ZjViNjhmMDlmMjE2OGYzN2JlZC4uZGUyNmIzMDQ4
OTY2NjZhNWNkZDY0YjUwZjc2ZDZkNTFlZDYzZWFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oCkBAIC0xMjUsNiArMTI1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgcGFpbnRPdmVybGF5U2Nyb2xsYmFycyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBPcHRpb25TZXQ8UGFpbnRCZWhh
dmlvcj4sIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdCA9IG51bGxwdHIpOwogCiAgICAg
dm9pZCB1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQoKTsKKyAgICB2b2lkIHVwZGF0ZVNjcm9s
bGJhclN0ZXBzKCk7CiAKICAgICBib29sIHNjcm9sbChTY3JvbGxEaXJlY3Rpb24sIFNjcm9sbEdy
YW51bGFyaXR5LCBmbG9hdCBtdWx0aXBsaWVyID0gMSk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwMTgzYzkyZWI1NWEy
MjgwM2U3ZWUwZjQ4MTU1Y2U0OWM0MDlmY2U1Li5mYjg4MmU5MDdjZTM5YWM0YmIzZGVjYTkwOWE1
MzNkMGJkOGQ4YThmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDEtMTggIE1hcnRpbiBS
b2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIHNjcm9sbC1wYWRkaW5n
IHNob3VsZCBhZmZlY3QgcGFnaW5nIG9wZXJhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTA3NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NzE3NDc3ODY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAg
ICogY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtcGFkZGluZy1tYWluZnJhbWUtcGFnaW5nLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtcGFkZGlu
Zy1tYWluZnJhbWUtcGFnaW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNzczMvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXBhZGRpbmctb3ZlcmZsb3ctcGFnaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtcGFkZGluZy1vdmVyZmxvdy1wYWdpbmcu
aHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25z
OiBTa2lwIGZhaWxpbmcgdGVzdHMuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhw
ZWN0YXRpb25zOiBTa2lwIGZhaWxpbmcgdGVzdHMuCisKIDIwMjEtMDEtMjUgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIE51bGwgUHRyIERlcmVm
IEAgV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXBhZGRpbmctbWFpbmZyYW1lLXBh
Z2luZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1w
YWRkaW5nLW1haW5mcmFtZS1wYWdpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3NThhYjk3
ZDVkZDM3Mjk0MGQzMDA3MTdlZjI1NDQ3N2RmMzUxNmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW1haW5mcmFtZS1wYWdpbmct
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1BBU1MgcGFnaW5nIG1vdmVkIGJvZHkKK1BB
U1MgcGFnaW5nIG1vdmVkIHBhZGRlZCBib2R5CitQQVNTIGRvY3VtZW50LnNjcm9sbGluZ0VsZW1l
bnQuc2Nyb2xsVG9wIGlzIHdpdGhpbiAxIG9mIDUzNS42ODM3NjA2ODM3NjA3CitQQVNTIHBhZ2lu
ZyBtb3ZlZCBwYWRkZWQgYm9keQorUEFTUyBkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNjcm9s
bFRvcCBpcyB3aXRoaW4gMSBvZiA1MzUuNjgzNzYwNjgzNzYwNworUEFTUyBwYWdpbmcgbW92ZWQg
cGFkZGVkIGJvZHkKK1BBU1MgZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudC5zY3JvbGxUb3AgaXMg
d2l0aGluIDIgb2YgNTI2LjM2NzUyMTM2NzUyMTQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL3Nj
cm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW1haW5mcmFtZS1wYWdpbmcuaHRtbCBiL0xheW91dFRl
c3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXBhZGRpbmctbWFpbmZyYW1lLXBhZ2luZy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmU4MjNjZjkwYjJhNzZiMDljN2JjMzA2ZTFkYTZjMmRhMDcyMDMxMmQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1wYWRk
aW5nLW1haW5mcmFtZS1wYWdpbmcuaHRtbApAQCAtMCwwICsxLDc4IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgIGJvZHkgewor
ICAgICAgICAgICAgbWFyZ2luOiAwOworICAgICAgICB9CisKKyAgICAgICAgLmJveCB7CisgICAg
ICAgICAgICB3aWR0aDogMTAwdnc7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMHZoOworICAgICAg
ICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIGFzeW5jIGZ1bmN0aW9uIHJ1
blRlc3RzKCkKKyAgICAgICAgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBh
d2FpdCBVSUhlbHBlci5rZXlEb3duKCJwYWdlRG93biIpOworCisgICAgICAgICAgICAgICAgZXhw
ZWN0VHJ1ZShkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNjcm9sbFRvcCAhPSAwLCAicGFnaW5n
IG1vdmVkIGJvZHkiKTsKKyAgICAgICAgICAgICAgICBsZXQgZGVmYXVsdFBhZ2VQb3NpdGlvbiA9
IGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGxl
dCB2aWV3cG9ydEhlaWdodCA9IGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgICAgIGxldCBwYWdlUHJvcG9ydGlvbiA9IGRvY3VtZW50LnNjcm9sbGlu
Z0VsZW1lbnQuc2Nyb2xsVG9wIC8gdmlld3BvcnRIZWlnaHQ7CisKKyAgICAgICAgICAgICAgICBk
b2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNjcm9sbFRvcCA9IDA7CisgICAgICAgICAgICAgICAg
ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNjcm9sbFBhZGRpbmdUb3AgPSAiMTBweCI7
CisgICAgICAgICAgICAgICAgYXdhaXQgVUlIZWxwZXIua2V5RG93bigicGFnZURvd24iKTsKKwor
ICAgICAgICAgICAgICAgIGxldCBleHBlY3RlZCA9ICh2aWV3cG9ydEhlaWdodCAtIDEwKSAqIHBh
Z2VQcm9wb3J0aW9uOworICAgICAgICAgICAgICAgIGV4cGVjdFRydWUoZG9jdW1lbnQuc2Nyb2xs
aW5nRWxlbWVudC5zY3JvbGxUb3AgIT0gMCwgInBhZ2luZyBtb3ZlZCBwYWRkZWQgYm9keSIpOwor
ICAgICAgICAgICAgICAgIHNob3VsZEJlQ2xvc2VUbygiZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVu
dC5zY3JvbGxUb3AiLCBleHBlY3RlZCwgMSk7CisKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5z
Y3JvbGxpbmdFbGVtZW50LnNjcm9sbFRvcCA9IDA7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNjcm9sbFBhZGRpbmdUb3AgPSAiMHB4IjsKKyAgICAgICAg
ICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2Nyb2xsUGFkZGluZ0JvdHRv
bSA9ICIxMHB4IjsKKyAgICAgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5rZXlEb3duKCJwYWdl
RG93biIpOworCisgICAgICAgICAgICAgICAgZXhwZWN0VHJ1ZShkb2N1bWVudC5zY3JvbGxpbmdF
bGVtZW50LnNjcm9sbFRvcCAhPSAwLCAicGFnaW5nIG1vdmVkIHBhZGRlZCBib2R5Iik7CisgICAg
ICAgICAgICAgICAgc2hvdWxkQmVDbG9zZVRvKCJkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNj
cm9sbFRvcCIsIGV4cGVjdGVkLCAxKTsKKworICAgICAgICAgICAgICAgIGRvY3VtZW50LnNjcm9s
bGluZ0VsZW1lbnQuc2Nyb2xsVG9wID0gMDsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1
bWVudEVsZW1lbnQuc3R5bGUuc2Nyb2xsUGFkZGluZ1RvcCA9ICIxMHB4IjsKKyAgICAgICAgICAg
ICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2Nyb2xsUGFkZGluZ0JvdHRvbSA9
ICIxMHB4IjsKKyAgICAgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5rZXlEb3duKCJwYWdlRG93
biIpOworCisgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSAodmlld3BvcnRIZWlnaHQgLSAyMCkg
KiBwYWdlUHJvcG9ydGlvbjsKKyAgICAgICAgICAgICAgICBleHBlY3RUcnVlKGRvY3VtZW50LnNj
cm9sbGluZ0VsZW1lbnQuc2Nyb2xsVG9wICE9IDAsICJwYWdpbmcgbW92ZWQgcGFkZGVkIGJvZHki
KTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZUNsb3NlVG8oImRvY3VtZW50LnNjcm9sbGluZ0Vs
ZW1lbnQuc2Nyb2xsVG9wIiwgZXhwZWN0ZWQsIDIpOworICAgICAgICAgICAgfSBjYXRjaCAoZSkg
eworICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpOworICAgICAgICAgICAgfSBmaW5hbGx5
IHsKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBydW5UZXN0cygpOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YXIgY29uc29sZSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJyk7CisgICAgICAgICAgICAgICAgY29uc29sZS5p
bm5lclRleHQgPSAiVGhpcyB0ZXN0IGNhbm5vdCBiZSBydW4gbWFudWFsbHkuIgorICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJh
Y2tncm91bmQ6IGdyZWVuOyI+PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+PC9kaXY+CisgICAgICAg
IDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQ6IHJlZDsiPjwvZGl2PgorICAgICAg
ICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJiYWNrZ3JvdW5kOiBwaW5rOyI+PC9kaXY+CisgICAg
ICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQ6IHllbGxvdzsiPjwvZGl2Pgor
ICAgICAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJiYWNrZ3JvdW5kOiBvcmFuZ2U7Ij48L2Rp
dj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL3Nj
cm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW92ZXJmbG93LXBhZ2luZy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW92ZXJmbG93LXBhZ2lu
Zy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTRjZGQ0ZGIyNmUxMDg2ZTUzNDQyOWNjZGU2NTJl
ZWFjZjE3ZjJhYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXBhZGRpbmctb3ZlcmZsb3ctcGFnaW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDExIEBACitQQVNTIHBhZ2luZyBtb3ZlZCBjb250YWluZXIKK1BBU1MgcGFnaW5nIG1vdmVkIHBh
ZGRlZCBjb250YWluZXIKK1BBU1MgY29udGFpbmVyLnNjcm9sbFRvcCBpcyB3aXRoaW4gMSBvZiAx
NDAKK1BBU1MgcGFnaW5nIG1vdmVkIHBhZGRlZCBjb250YWluZXIKK1BBU1MgY29udGFpbmVyLnNj
cm9sbFRvcCBpcyB3aXRoaW4gMSBvZiAxNDAKK1BBU1MgcGFnaW5nIG1vdmVkIHBhZGRlZCBjb250
YWluZXIKK1BBU1MgY29udGFpbmVyLnNjcm9sbFRvcCBpcyB3aXRoaW4gMSBvZiAxMzIKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW92ZXJmbG93LXBh
Z2luZy5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtcGFkZGluZy1v
dmVyZmxvdy1wYWdpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YzkxNTIxMTVhZjQwZDllNDJmMWZkZWFi
ZTVkMGM1MzA4OWQ1M2Y3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9zY3Jv
bGwtc25hcC9zY3JvbGwtcGFkZGluZy1vdmVyZmxvdy1wYWdpbmcuaHRtbApAQCAtMCwwICsxLDg5
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+
CisgICAgICAgIC5ib3ggeworICAgICAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICAgICAg
aGVpZ2h0OiAyMDBweDsKKyAgICAgICAgfQorCisgICAgICAgIC5nYWxsZXJ5IHsKKyAgICAgICAg
ICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAg
ICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0
PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
CisKKyAgICAgICAgZnVuY3Rpb24gY2xpY2tPbkVsZW1lbnQodGFyZ2V0RWxlbWVudCkgeworICAg
ICAgICAgICAgdmFyIGNsaWVudFJlY3QgPSB0YXJnZXRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50
UmVjdCgpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oY2xpZW50UmVjdC54
ICsgNSwgY2xpZW50UmVjdC55ICsgNSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZURv
d24oKTsKKyAgICAgICAgfQorCisgICAgICAgIGFzeW5jIGZ1bmN0aW9uIHJ1blRlc3RzKCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICB2YXIgY29udGFpbmVy
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRhaW5lciIpOworCisgICAgICAgICAgICAg
ICAgY2xpY2tPbkVsZW1lbnQoY29udGFpbmVyKTsKKyAgICAgICAgICAgICAgICBhd2FpdCBVSUhl
bHBlci5rZXlEb3duKCJwYWdlRG93biIpOworCisgICAgICAgICAgICAgICAgZXhwZWN0VHJ1ZShj
b250YWluZXIuc2Nyb2xsVG9wICE9IDAsICJwYWdpbmcgbW92ZWQgY29udGFpbmVyIik7CisgICAg
ICAgICAgICAgICAgbGV0IGRlZmF1bHRQYWdlUG9zaXRpb24gPSBjb250YWluZXIuc2Nyb2xsVG9w
OworICAgICAgICAgICAgICAgIGxldCBwYWdlUHJvcG9ydGlvbiA9IGNvbnRhaW5lci5zY3JvbGxU
b3AgLyBjb250YWluZXIuY2xpZW50SGVpZ2h0OworCisgICAgICAgICAgICAgICAgY29udGFpbmVy
LnNjcm9sbFRvcCA9IDA7CisgICAgICAgICAgICAgICAgY29udGFpbmVyLnN0eWxlLnNjcm9sbFBh
ZGRpbmdUb3AgPSAiMTBweCI7CisgICAgICAgICAgICAgICAgYXdhaXQgVUlIZWxwZXIua2V5RG93
bigicGFnZURvd24iKTsKKworICAgICAgICAgICAgICAgIGxldCBleHBlY3RlZCA9IChjb250YWlu
ZXIuY2xpZW50SGVpZ2h0IC0gMTApICogcGFnZVByb3BvcnRpb247CisgICAgICAgICAgICAgICAg
ZXhwZWN0VHJ1ZShjb250YWluZXIuc2Nyb2xsVG9wICE9IDAsICJwYWdpbmcgbW92ZWQgcGFkZGVk
IGNvbnRhaW5lciIpOworICAgICAgICAgICAgICAgIHNob3VsZEJlQ2xvc2VUbygiY29udGFpbmVy
LnNjcm9sbFRvcCIsIGV4cGVjdGVkLCAxKTsKKworICAgICAgICAgICAgICAgIGNvbnRhaW5lci5z
Y3JvbGxUb3AgPSAwOworICAgICAgICAgICAgICAgIGNvbnRhaW5lci5zdHlsZS5zY3JvbGxQYWRk
aW5nVG9wID0gIjBweCI7CisgICAgICAgICAgICAgICAgY29udGFpbmVyLnN0eWxlLnNjcm9sbFBh
ZGRpbmdCb3R0b20gPSAiMTBweCI7CisgICAgICAgICAgICAgICAgYXdhaXQgVUlIZWxwZXIua2V5
RG93bigicGFnZURvd24iKTsKKworICAgICAgICAgICAgICAgIGV4cGVjdFRydWUoY29udGFpbmVy
LnNjcm9sbFRvcCAhPSAwLCAicGFnaW5nIG1vdmVkIHBhZGRlZCBjb250YWluZXIiKTsKKyAgICAg
ICAgICAgICAgICBzaG91bGRCZUNsb3NlVG8oImNvbnRhaW5lci5zY3JvbGxUb3AiLCBleHBlY3Rl
ZCwgMSk7CisKKyAgICAgICAgICAgICAgICBjb250YWluZXIuc2Nyb2xsVG9wID0gMDsKKyAgICAg
ICAgICAgICAgICBjb250YWluZXIuc3R5bGUuc2Nyb2xsUGFkZGluZ1RvcCA9ICIxMHB4IjsKKyAg
ICAgICAgICAgICAgICBjb250YWluZXIuc3R5bGUuc2Nyb2xsUGFkZGluZ0JvdHRvbSA9ICIxMHB4
IjsKKyAgICAgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5rZXlEb3duKCJwYWdlRG93biIpOwor
CisgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSAoY29udGFpbmVyLmNsaWVudEhlaWdodCAtIDIw
KSAqIHBhZ2VQcm9wb3J0aW9uOworICAgICAgICAgICAgICAgIGV4cGVjdFRydWUoY29udGFpbmVy
LnNjcm9sbFRvcCAhPSAwLCAicGFnaW5nIG1vdmVkIHBhZGRlZCBjb250YWluZXIiKTsKKyAgICAg
ICAgICAgICAgICBzaG91bGRCZUNsb3NlVG8oImNvbnRhaW5lci5zY3JvbGxUb3AiLCBleHBlY3Rl
ZCwgMSk7CisgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICAgY29uc29s
ZS5sb2coZSk7CisgICAgICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
b25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikg
eworICAgICAgICAgICAgICAgIHJ1blRlc3RzKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNv
bGUnKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmlubmVyVGV4dCA9ICJUaGlzIHRlc3QgY2Fu
bm90IGJlIHJ1biBtYW51YWxseS4iCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAg
ICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDxkaXYgaWQ9ImNvbnRhaW5l
ciIgY2xhc3M9ImJveCIgc3R5bGU9Im92ZXJmbG93OiBzY3JvbGw7Ij4KKyAgICAgICAgICAgIDxk
aXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQ6IGdyZWVuOyI+PC9kaXY+CisgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJiYWNrZ3JvdW5kOiByZWQ7Ij48L2Rpdj4KKyAg
ICAgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQ6IHBpbms7Ij48L2Rp
dj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQ6IHllbGxv
dzsiPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm94IiBzdHlsZT0iYmFja2dyb3Vu
ZDogb3JhbmdlOyI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAw
ZTAyZDIxYzY2NTk1NzUxMmQ4MmM2NWQzNGE3ZTIxNTk5NzllY2JhLi5jZWIxZjc0Zjg0YzliOTYx
MDU2OGNmYmQ2ZDYzMWY2NzdjYjUzZWIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9z
LXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMzQsNiArMTM0LDggQEAganMvZG9tL2RmZy1pbmxp
bmUtcmVzb2x2ZS5odG1sCiBzY3JvbGxiYXJzL2Nvcm5lci1yZXNpemVyLXdpbmRvdy1pbmFjdGl2
ZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBzY3JvbGxiYXJzL3Njcm9sbGluZy1ieS1wYWdl
LW9uLWtleWJvYXJkLXNwYWNlYmFyLmh0bWwgWyBGYWlsdXJlIF0KIHNjcm9sbGJhcnMvc2Nyb2xs
YmFycy1vbi1wb3NpdGlvbmVkLWNvbnRlbnQuaHRtbCBbIEZhaWx1cmUgXQorY3NzMy9zY3JvbGwt
c25hcC9zY3JvbGwtcGFkZGluZy1tYWluZnJhbWUtcGFnaW5nLmh0bWwgWyBGYWlsdXJlIF0KK2Nz
czMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXBhZGRpbmctb3ZlcmZsb3ctcGFnaW5nLmh0bWwgWyBGYWls
dXJlIF0KIAogIyBTVkcgdGVzdHMgdGhhdCB0aW1lIG91dCAodGhlc2UgcmVxdWlyZSBFdmVudFNl
bmRlcikKIHN2Zy9hbmltYXRpb25zL2FuaW1WYWwtYmFzaWNzLmh0bWwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBiMjUyNGRkNzQ0ZGE1NTk0
OTQ0YTQ2Y2QxMjNjZWRjYjQzMTRhMTE3Li45NzdlNGI4MmZiMzQxZjgwYzJiNzRkMTg5NWYxNDIy
M2IwYmZiODA0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RF
eHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0
YXRpb25zCkBAIC00NDgsOCArNDQ4LDkgQEAgc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2V4Y2Vl
ZC1vcGVuLWZpbGUtbGltaXQuaHRtbAogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
b29raWVzL3NlY3VyZS9zZXQtZnJvbS13c3MuaHR0cHMuc3ViLmh0bWwgWyBGYWlsdXJlIF0KIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29va2llcy9zZWN1cmUvc2V0LWZyb20td3Mu
c3ViLmh0bWwgWyBGYWlsdXJlIF0KIAotIyBXZWJLaXQxIGZyYW1lcyB1c2UgbmF0aXZlIHNjcm9s
bGJhcnMgY2F1c2luZyB0aGlzIHJlZmVyZW5jZSB0ZXN0IHRvIGZhaWwuCisjIFdlYktpdDEgZnJh
bWVzIHVzZSBuYXRpdmUgc2Nyb2xsYmFycyBjYXVzaW5nIHRoZXNlIHRlc3RzIHRvIGZhaWwuCiBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2Nyb2xsLXNuYXAvc2Nyb2xs
LXRhcmdldC1wYWRkaW5nLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCitjc3MzL3Njcm9s
bC1zbmFwL3Njcm9sbC1wYWRkaW5nLW1haW5mcmFtZS1wYWdpbmcuaHRtbCBbIEZhaWx1cmUgXQog
CiAjIyMgRU5EIE9GICgyKSBGYWlsdXJlcyB3aXRob3V0IGJ1ZyByZXBvcnRzCiAjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>