<?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>201768</bug_id>
          
          <creation_ts>2019-09-13 12:15:55 -0700</creation_ts>
          <short_desc>Datalist option&apos;s label not used</short_desc>
          <delta_ts>2020-03-31 18:23:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</component>
          <version>Safari Technology Preview</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="shrpne">corsar89</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>aestes</cc>
    
    <cc>bdakin</cc>
    
    <cc>cdumez</cc>
    
    <cc>corsar89</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>javan</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>mifenton</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1570669</commentid>
    <comment_count>0</comment_count>
    <who name="shrpne">corsar89</who>
    <bug_when>2019-09-13 12:15:55 -0700</bug_when>
    <thetext>Option&apos;s `label` is not shown in datalist suggestions, only `value` is shown.

However, spec suggests using both `value` and `label`
https://html.spec.whatwg.org/multipage/input.html#attr-input-list

Chrome follows the spec and shows both.

Here you can find example datalist, where label &quot;The color of the sky&quot; is not used for value &quot;blue&quot;.
https://css-tricks.com/datalist-is-for-suggesting-values-without-enforcing-values/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570815</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-13 20:22:11 -0700</bug_when>
    <thetext>&lt;rdar://problem/55361186&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581096</commentid>
    <comment_count>2</comment_count>
      <attachid>381214</attachid>
    <who name="Javan Makhmali">javan</who>
    <bug_when>2019-10-17 12:29:13 -0700</bug_when>
    <thetext>Created attachment 381214
Datalist option labels (Left: Chrome, Right: Safari)

Labels can provide useful context to datalist options along with additional data to search and match against. Consider the following:

&lt;input type=&quot;email&quot; list=&quot;people&quot;&gt;

&lt;datalist id=&quot;people&quot;&gt;
  &lt;option value=&quot;tim@apple.com&quot;&gt;
    Tim Cook (CEO)
  &lt;/option&gt;
  &lt;option value=&quot;katherine@apple.com&quot;&gt;
    Katherine Adams (Senior Vice President and General Counsel)
  &lt;/option&gt;
  &lt;option value=&quot;eddy@apple.com&quot;&gt;
    Eddy Cue (Senior Vice President, Internet Software and Services)
  &lt;/option&gt;
&lt;/datalist&gt;

Chrome displays option values *and* labels, and matches against both when typing in the text field. For example, typing &quot;president&quot; matches the second and third options.

Safari only displays option values currently. Typing &quot;president&quot; yields no matching options.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636241</commentid>
    <comment_count>3</comment_count>
      <attachid>395090</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-03-31 14:29:23 -0700</bug_when>
    <thetext>Created attachment 395090
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636249</commentid>
    <comment_count>4</comment_count>
      <attachid>395090</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-31 14:39:19 -0700</bug_when>
    <thetext>Comment on attachment 395090
Patch

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

&gt; Source/WebKit/UIProcess/mac/WebDataListSuggestionsDropdownMac.mm:41
&gt; +static const CGFloat dropdownRowHeightWithoutLabel = 20;
&gt; +static const CGFloat dropdownRowHeightWithLabel = 40;
&gt; +static const size_t maximumTotalHeightForDropdownCells = 120;

As we update code to be more modern, we could use &quot;constexpr&quot; instead of &quot;static const&quot;.

&gt; Source/WebKit/UIProcess/mac/WebDataListSuggestionsDropdownMac.mm:189
&gt; +    [_bottomDivider setWantsLayer:YES];
&gt; +    [_bottomDivider setHidden:YES];
&gt; +    [_bottomDivider layer].backgroundColor = NSColor.separatorColor.CGColor;

If we are going to use some &quot;.&quot; syntax then I suggest using it even more:

    _bottomDivider.wantsLayer = YES;
    _bottomDivider.hidden = YES;
    _bottomDivider.layer.backgroundColor = NSColor.separatorColor.CGColor;

&gt; Source/WebKit/UIProcess/mac/WebDataListSuggestionsDropdownMac.mm:231
&gt; +    [_valueField setStringValue:value];
&gt; +    [_labelField setStringValue:label];
&gt; +    [_labelField setHidden:!label.length];

Same thought here. If we start using &quot;.&quot; syntax in some code it would be good to go all in:

    _valueField.stringValue = value;
    _labelField.stringValue = label;
    _labelField.hidden = !label.length;

&gt; Source/WebKit/UIProcess/mac/WebDataListSuggestionsDropdownMac.mm:254
&gt; +    [_valueField setTextColor:backgroundStyle == NSBackgroundStyleLight ? NSColor.textColor : NSColor.alternateSelectedControlTextColor];
&gt; +    [_labelField setTextColor:NSColor.secondaryLabelColor];

And here we are actively switching some things *away* from &quot;.&quot; syntax, but other things *to* &quot;.&quot; syntax in the same line of code. Seems peculiar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636252</commentid>
    <comment_count>5</comment_count>
      <attachid>395090</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-03-31 14:42:16 -0700</bug_when>
    <thetext>Comment on attachment 395090
Patch

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

&gt;&gt; Source/WebKit/UIProcess/mac/WebDataListSuggestionsDropdownMac.mm:189
&gt;&gt; +    [_bottomDivider layer].backgroundColor = NSColor.separatorColor.CGColor;
&gt; 
&gt; If we are going to use some &quot;.&quot; syntax then I suggest using it even more:
&gt; 
&gt;     _bottomDivider.wantsLayer = YES;
&gt;     _bottomDivider.hidden = YES;
&gt;     _bottomDivider.layer.backgroundColor = NSColor.separatorColor.CGColor;

These are RetainPtrs, so no dot notation. (and AFAIK we prefer square brackets to extraneous .get()s)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636253</commentid>
    <comment_count>6</comment_count>
      <attachid>395090</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-31 14:42:50 -0700</bug_when>
    <thetext>Comment on attachment 395090
Patch

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

&gt;&gt;&gt; Source/WebKit/UIProcess/mac/WebDataListSuggestionsDropdownMac.mm:189
&gt;&gt;&gt; +    [_bottomDivider layer].backgroundColor = NSColor.separatorColor.CGColor;
&gt;&gt; 
&gt;&gt; If we are going to use some &quot;.&quot; syntax then I suggest using it even more:
&gt;&gt; 
&gt;&gt;     _bottomDivider.wantsLayer = YES;
&gt;&gt;     _bottomDivider.hidden = YES;
&gt;&gt;     _bottomDivider.layer.backgroundColor = NSColor.separatorColor.CGColor;
&gt; 
&gt; These are RetainPtrs, so no dot notation. (and AFAIK we prefer square brackets to extraneous .get()s)

Aha! Subtle! I endorse this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636256</commentid>
    <comment_count>7</comment_count>
      <attachid>395090</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-03-31 14:50:40 -0700</bug_when>
    <thetext>Comment on attachment 395090
Patch

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

Thanks for the review!

&gt;&gt; Source/WebKit/UIProcess/mac/WebDataListSuggestionsDropdownMac.mm:41
&gt;&gt; +static const size_t maximumTotalHeightForDropdownCells = 120;
&gt; 
&gt; As we update code to be more modern, we could use &quot;constexpr&quot; instead of &quot;static const&quot;.

Fixed!

&gt;&gt;&gt;&gt; Source/WebKit/UIProcess/mac/WebDataListSuggestionsDropdownMac.mm:189
&gt;&gt;&gt;&gt; +    [_bottomDivider layer].backgroundColor = NSColor.separatorColor.CGColor;
&gt;&gt;&gt; 
&gt;&gt;&gt; If we are going to use some &quot;.&quot; syntax then I suggest using it even more:
&gt;&gt;&gt; 
&gt;&gt;&gt;     _bottomDivider.wantsLayer = YES;
&gt;&gt;&gt;     _bottomDivider.hidden = YES;
&gt;&gt;&gt;     _bottomDivider.layer.backgroundColor = NSColor.separatorColor.CGColor;
&gt;&gt; 
&gt;&gt; These are RetainPtrs, so no dot notation. (and AFAIK we prefer square brackets to extraneous .get()s)
&gt; 
&gt; Aha! Subtle! I endorse this.

👍🏻</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636260</commentid>
    <comment_count>8</comment_count>
      <attachid>395096</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-03-31 14:57:31 -0700</bug_when>
    <thetext>Created attachment 395096
Fix GTK build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636291</commentid>
    <comment_count>9</comment_count>
      <attachid>395106</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-03-31 16:11:29 -0700</bug_when>
    <thetext>Created attachment 395106
Fix flakiness on iOS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636300</commentid>
    <comment_count>10</comment_count>
      <attachid>395108</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-03-31 16:45:15 -0700</bug_when>
    <thetext>Created attachment 395108
Also fix a typo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636346</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-03-31 18:23:05 -0700</bug_when>
    <thetext>Committed r259330: &lt;https://trac.webkit.org/changeset/259330&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 395108.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>381214</attachid>
            <date>2019-10-17 12:29:13 -0700</date>
            <delta_ts>2019-10-17 12:29:13 -0700</delta_ts>
            <desc>Datalist option labels (Left: Chrome, Right: Safari)</desc>
            <filename>datalist-option-labels.png</filename>
            <type>image/png</type>
            <size>19710</size>
            <attacher name="Javan Makhmali">javan</attacher>
            
              <data encoding="base64">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
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395090</attachid>
            <date>2020-03-31 14:29:23 -0700</date>
            <delta_ts>2020-03-31 16:11:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201768-20200331142922.patch</filename>
            <type>text/plain</type>
            <size>39564</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MjQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDhmZjAxMmZmYjJjZjA4
ZmRmODk0YzRmNGQ4ZmZkN2YyN2I2NWZhNi4uM2VkYjQ3NjE2NDliZjUyZjcwNzUyYWYzOTVlZDhl
YWY4ZTE3NTM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTAzLTMxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIERhdGFsaXN0IG9w
dGlvbidzIGxhYmVsIG5vdCB1c2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDE3NjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1MzYxMTg2Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9y
IERhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uJ3Mgc3VnZ2VzdGlvbnMgdG8gaW5jbHVkZSBs
YWJlbCB0ZXh0IGFzIHdlbGwgYXMgdmFsdWVzLCBhbmQgdGhlbiBhZGp1c3QKKyAgICAgICAgVGV4
dEZpZWxkSW5wdXRUeXBlOjpzdWdnZXN0aW9ucygpIHRvIG1hdGNoIGxhYmVsIHRleHQgYXMgd2Vs
bCBhcyB2YWx1ZXMgZm9yIHBvcnRzIHRoYXQgYXJlIGNhcGFibGUgb2Ygc2hvd2luZworICAgICAg
ICBsYWJlbCB0ZXh0IGluIGRhdGFsaXN0IHN1Z2dlc3Rpb24gVUkuCisKKyAgICAgICAgVGVzdDog
ZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC1vcHRpb24tbGFiZWxzLmh0bWwKKworICAgICAg
ICAqIGh0bWwvRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24uaDoKKworICAgICAgICBJbnRy
b2R1Y2UgRGF0YUxpc3RTdWdnZXN0aW9uLCBhIHdyYXBwZXIgYXJvdW5kIGEgdmFsdWUgYW5kIGxh
YmVsLiBDdXJyZW50bHksIHRoZSBsaXN0IG9mIGRhdGFsaXN0IHN1Z2dlc3Rpb25zCisgICAgICAg
IGlzIG9ubHkgYSBgVmVjdG9yPFN0cmluZz5gOyBjaGFuZ2UgaXQgdG8gYmUgYSBgVmVjdG9yPERh
dGFMaXN0U3VnZ2VzdGlvbj5gIGluc3RlYWQuCisKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFMaXN0
U3VnZ2VzdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFMaXN0U3Vn
Z2VzdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbklu
Zm9ybWF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YUxpc3RTdWdn
ZXN0aW9uSW5mb3JtYXRpb246OmRlY29kZSk6CisKKyAgICAgICAgTW92ZSBlbmNvZGluZyBhbmQg
ZGVjb2RpbmcgZm9yIERhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uIG91dCBvZiBXZWJDb3Jl
QXJndW1lbnRDb2RlcnMgYW5kIGludG8gV2ViQ29yZS4KKworICAgICAgICAqIGh0bWwvVGV4dEZp
ZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6
bGlzdEF0dHJpYnV0ZVRhcmdldENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxk
SW5wdXRUeXBlOjpzdWdnZXN0aW9ucyk6CisKKyAgICAgICAgV2hlbiBjb21wdXRpbmcgc3VnZ2Vz
dGlvbnMsIG1hdGNoIGxhYmVsIHRleHQgaW4gYWRkaXRpb24gdG8gdmFsdWVzIG9uIHBvcnRzIHRo
YXQgZGlzcGxheSBsYWJlbCB0ZXh0IGluIHRoZQorICAgICAgICBjaHJvbWU7IGZvciB0aGUgdGlt
ZSBiZWluZywgdGhpcyBpcyBvbmx5IHRoZSBjYXNlIGZvciBtYWNPUywgYnV0IHdpbGwgYmUgZXh0
ZW5kZWQgdG8gaU9TIGFzIHdlbGwgaW4gYSBmdXR1cmUKKyAgICAgICAgcGF0Y2guIE5vdGUgdGhh
dCB3ZSBkb24ndCBwbHVtYiBsYWJlbCB0ZXh0IGlmIGl0IGlzIGFscmVhZHkgdGhlIHNhbWUgYXMg
dGhlIHZhbHVlLCB0byBhdm9pZCBkdXBsaWNhdGUgc3RyaW5ncworICAgICAgICBmcm9tIHNob3dp
bmcgdXAuCisKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6ZGlkQ2xvc2VT
dWdnZXN0aW9ucyk6CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaDoKKyAgICAg
ICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQu
aDoKKworICAgICAgICBBZGQgYSBjaHJvbWUgY2xpZW50IGhvb2sgdG8gcmV0dXJuIHdoZXRoZXIg
b3Igbm90IHRoZSBjbGllbnQgc2hvd3MgbGFiZWwgdGV4dCBpbiBpdHMgZGF0YWxpc3QgVUkuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9EYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50Lmg6CisKIDIwMjAt
MDMtMzAgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAg
c2Nyb2xsSW50b1ZpZXcoKSBlcnJvbmVvdXNseSBzY3JvbGxzIG5vbi1jb250YWluaW5nIGJsb2Nr
IHNjcm9sbGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCA0ZmRhMjZiMTc2Njk5Y2IyMDk4MTc4NTgyYzZmMzljZTlj
N2E5MTFhLi5hNDA2Zjc3MzE2YTM3OTE0ZmQ0OWFjMTE3NDI5MDlmNjI3ZWYxMmMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDg2IEBACisyMDIwLTAzLTMxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNp
ZWhAYXBwbGUuY29tPgorCisgICAgICAgIERhdGFsaXN0IG9wdGlvbidzIGxhYmVsIG5vdCB1c2Vk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE3NjgK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1MzYxMTg2PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IG9uIG1hY09TIGZvciBzaG93
aW5nIG9wdGlvbiBsYWJlbHMgaW4gZGF0YWxpc3Qgc3VnZ2VzdGlvbnMuCisKKyAgICAgICAgKiBT
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbj46OmVuY29kZSk6IERlbGV0ZWQuCisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24+
OjpkZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaDoKKworICAgICAgICBSZW1vdmUgV2ViQ29yZUFyZ3VtZW50Q29kZXJzIGxvZ2ljIGZvciBl
bmNvZGluZyBhbmQgZGVjb2RpbmcgRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24uIFNlZQor
ICAgICAgICBEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbi5oIGluIFdlYkNvcmUgZm9yIG1v
cmUgZGV0YWlsLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJEYXRhTGlzdFN1Z2dlc3Rp
b25zRHJvcGRvd25JT1MubW06CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRy
b2wgZGlkU2VsZWN0T3B0aW9uQXRJbmRleDpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dl
c3Rpb25zQ29udHJvbCB0ZXh0U3VnZ2VzdGlvbnNdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1
Z2dlc3Rpb25zQ29udHJvbCBzdWdnZXN0aW9uQXRJbmRleDpdKToKKworICAgICAgICBBZGp1c3Qg
c29tZSBpT1MgY29kZXBhdGhzIHRvIHVzZSBEYXRhTGlzdFN1Z2dlc3Rpb246OnZhbHVlIGFzIHRo
ZSB2YWx1ZSBzdHJpbmcgdG8gZGlzcGxheS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2Vi
RGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1tOgorCisgICAgICAgIFR3ZWFrIHNldmVy
YWwgVUkgY29uc3RhbnRzLiBBIHN1Z2dlc3Rpb24gY2VsbCBtYXkgbm93IGJlIGVpdGhlciAyMCBv
ciA0MHB0IHRhbGwsIGRlcGVuZGluZyBvbiB3aGV0aGVyIGl0IGhhcworICAgICAgICBsYWJlbCB0
ZXh0IHRvIHNob3cuCisKKyAgICAgICAgQ3VycmVudGx5LCB0aGUgbWF4aW11bSBjb21iaW5lZCBo
ZWlnaHQgb2YgdGhlIHRhYmxlIHZpZXcgY2VsbHMgaXMgMTIwIChub3QgaW5jbHVkaW5nIHNwYWNp
bmcgYmV0d2VlbiBjZWxscyBhbmQKKyAgICAgICAgdmVydGljYWwgcGFkZGluZyBhcm91bmQgdGhl
IHRvcCBhbmQgYm90dG9tIG9mIHRoZSB0YWJsZSB2aWV3KSwgc2luY2UgdGhlIG1heGltdW0gbnVt
YmVyIG9mIGNlbGxzIHRvIHNob3cgaXMgNgorICAgICAgICBhbmQgZWFjaCBjZWxsIGlzIDIwcHQg
dGFsbC4gTWFpbnRhaW4gdGhpcyBjb25zdGFudCBieSBtYWtpbmcgdGhlIG1heGltdW0gY2VsbCBo
ZWlnaHQgMTIwLCB3aGljaCBhY2NvbW9kYXRlcworICAgICAgICBlaXRoZXIgdGhyZWUgbGFiZWxl
ZCBjZWxscywgb3IgNiB1bmxhYmVsZWQgY2VsbHMgKGkuZS4gdG8gbWF0Y2ggc2hpcHBpbmcgYmVo
YXZpb3IpLgorCisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uVmlldyBpbml0V2l0aEZy
YW1lOl0pOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvblZpZXcgbGF5b3V0XSk6CisK
KyAgICAgICAgTWFpbnRhaW4gdHdvIHRleHQgZmllbGRzIG9yIHZhbHVlIGFuZCAob3B0aW9uYWxs
eSkgbGFiZWwgdGV4dDogYF92YWx1ZUZpZWxkYCBhbmQgYF9sYWJlbEZpZWxkYC4gVGhlIHZhbHVl
IGZpZWxkCisgICAgICAgIGZpbGxzIHRoZSBib3VuZHMgb2YgdGhlIGNlbGwgaW4gdGhlIGNhc2Ug
d2hlcmUgdGhlcmUgaXMgbm8gbGFiZWwgdGV4dCwgYnV0IGZpbGxzIG9ubHkgdGhlIHRvcCBoYWxm
IG9mIHRoZSBjZWxsCisgICAgICAgIGluIHRoZSBjYXNlIHdoZXJlIHRoZXJlIGlzIGxhYmVsIHRl
eHQuIFRoZSBsYWJlbCBmaWVsZCB0YWtlcyB0aGUgYm90dG9tIGhhbGYgb2YgdGhlIGNlbGwgaW4g
dGhpcyBjYXNlLgorCisgICAgICAgIEFkZGl0aW9uYWxseSwgYWRkIGEgZGl2aWRlciB2aWV3IHRo
YXQgbWF5IGFwcGVhciBhdCB0aGUgdmVyeSBib3R0b20gb2YgZWFjaCBjZWxsLiBUaGlzIGRpdmlk
ZXIgdmlldyBpcyBwcmVzZW50CisgICAgICAgIHdoZW4gb25lIG9yIG1vcmUgc3VnZ2VzdGlvbnMg
aW4gdGhlIGRhdGFsaXN0IGFyZSBsYWJlbGVkLgorCisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdn
ZXN0aW9uVmlldyBzZXRWYWx1ZTpsYWJlbDpdKToKKworICAgICAgICBSZW5hbWVkIGZyb20gLXNl
dFRleHQ6LiBBZGQgYSBsYWJlbCBzdHJpbmcgYXJndW1lbnQgYXMgd2VsbC4KKworICAgICAgICAo
LVtXS0RhdGFMaXN0U3VnZ2VzdGlvblZpZXcgc2V0U2hvdWxkU2hvd0JvdHRvbURpdmlkZXI6XSk6
CisKKyAgICAgICAgQWRkIGdldHRlcnMgYW5kIHNldHRlcnMgZm9yIHRoZSAtc2hvdWxkU2hvd0Jv
dHRvbURpdmlkZXIgcHJvcGVydHksIHdoaWNoIGNhbiBiZSB1c2VkIHRvIG1ha2UgdGhlIGRpdmlk
ZXIgdmlldworICAgICAgICB2aXNpYmxlIG9yIGhpZGRlbi4KKworICAgICAgICAoLVtXS0RhdGFM
aXN0U3VnZ2VzdGlvblZpZXcgc2hvdWxkU2hvd0JvdHRvbURpdmlkZXJdKToKKyAgICAgICAgKC1b
V0tEYXRhTGlzdFN1Z2dlc3Rpb25WaWV3IHNldEJhY2tncm91bmRTdHlsZTpdKToKKworICAgICAg
ICBVc2UgLVtOU0NvbG9yIHNlY29uZGFyeUxhYmVsQ29sb3JdIGZvciB0aGUgbGFiZWwgdGV4dCBm
aWVsZC4KKworICAgICAgICAoc2hvdWxkU2hvd0RpdmlkZXJzQmV0d2VlbkNlbGxzKToKKworICAg
ICAgICBBZGQgYSBoZWxwZXIgbWV0aG9kIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSB0YWJsZSB2
aWV3IHNob3VsZCBiZSBzaG93aW5nIGNsZWFyIGRpdmlkZXJzIGJldHdlZW4gZWFjaCBpdGVtLgor
ICAgICAgICBXZSBvbmx5IGRvIHNvIGlmIHRoZXJlIGFyZSBvbmUgb3IgbW9yZSBsYWJlbHMgdG8g
YmUgc2hvd24uCisKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbGxlciBp
bml0V2l0aEluZm9ybWF0aW9uOmluVmlldzpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dl
c3Rpb25zQ29udHJvbGxlciBjdXJyZW50U2VsZWN0ZWRTdHJpbmddKToKKyAgICAgICAgKC1bV0tE
YXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbGxlciB1cGRhdGVXaXRoSW5mb3JtYXRpb246XSk6Cisg
ICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2xsZXIgbW92ZVNlbGVjdGlvbkJ5
RGlyZWN0aW9uOl0pOgorCisgICAgICAgIERyaXZlLWJ5IGZpeDogc2Nyb2xsIHRvIHJldmVhbCBl
YWNoIHNlbGVjdGVkIHJvdyB3aGVuIHVzaW5nIHRoZSBhcnJvdyBrZXlzIHRvIG5hdmlnYXRlIGJl
dHdlZW4gaXRlbXMuCisKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbGxl
ciBkcm9wZG93blJlY3RGb3JFbGVtZW50UmVjdDpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1
Z2dlc3Rpb25zQ29udHJvbGxlciB0YWJsZVZpZXc6aGVpZ2h0T2ZSb3c6XSk6CisKKyAgICAgICAg
UmV0dXJuIGVpdGhlciBgZHJvcGRvd25Sb3dIZWlnaHRXaXRob3V0TGFiZWxgIG9yIGBkcm9wZG93
blJvd0hlaWdodFdpdGhMYWJlbGAsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZXJlIGlzCisgICAg
ICAgIGxhYmVsIHRleHQgdG8gYmUgc2hvd24gaW4gdGhhdCBzdWdnZXN0aW9uIGNlbGwuCisKKyAg
ICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbGxlciB0YWJsZVZpZXc6dmlld0Zv
clRhYmxlQ29sdW1uOnJvdzpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25WaWV3
IHNldFRleHQ6XSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6
OmNhblNob3dEYXRhTGlzdFN1Z2dlc3Rpb25MYWJlbHMgY29uc3QpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisKIDIwMjAtMDMtMzAgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQgc2hvdWxkIHRh
a2UgYSBmb3JlZ3JvdW5kIGFzc2VydGlvbiBmb3Igb2Zmc2NyZWVuIGxvYWRzIHdoZW4gdGhlIGFw
cCBpcyBmb3JlZ3JvdW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggY2UwYWQ0Y2M5
ODFjNDc3M2E2ODQ4NmJlMGNhMDFiZWYzYWM0NWI2Ni4uNGRkMGY4MWFmMGE5MmIxNWM1Yzg4YmJk
ODk0NjI3YTljYjc1ZTZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDIwLTAzLTMxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgorCisgICAgICAgIERhdGFsaXN0IG9wdGlvbidzIGxhYmVsIG5vdCB1c2VkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE3NjgKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzU1MzYxMTg2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFNlZSBXZWJDb3JlL0NoYW5nZUxvZyBhbmQgV2ViS2l0L0NoYW5nZUxv
ZyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lmg6CisKIDIwMjAtMDMtMzAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHByb3ZpZGUgYSB3YXkgdG8gbG9nIG1lc3NhZ2Vz
IGZyb20gdGhlIG5ldHdvcmsgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9EYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9E
YXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbi5oCmluZGV4IDU3OTQ1MWE1OTgzMmZkZGZmYzli
OThmNDBjZDk1OTU1NjhjZWZjNmQuLmMyMzNjY2JjZWYwMDM1MDczNjdlYWI3NzhhNTE2OTQzNWQ1
NzQxOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0YUxpc3RTdWdnZXN0aW9u
SW5mb3JtYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGFMaXN0U3VnZ2VzdGlv
bkluZm9ybWF0aW9uLmgKQEAgLTI5LDE5ICsyOSw4MyBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWVudW0gY2xhc3MgRGF0YUxpc3RTdWdnZXN0aW9uQWN0aXZhdGlvblR5cGUgeworZW51bSBj
bGFzcyBEYXRhTGlzdFN1Z2dlc3Rpb25BY3RpdmF0aW9uVHlwZSA6IHVpbnQ4X3QgewogICAgIENv
bnRyb2xDbGlja2VkLAogICAgIEluZGljYXRvckNsaWNrZWQsCiAgICAgVGV4dENoYW5nZWQsCiB9
OwogCitzdHJ1Y3QgRGF0YUxpc3RTdWdnZXN0aW9uIHsKKyAgICBTdHJpbmcgdmFsdWU7CisgICAg
U3RyaW5nIGxhYmVsOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRp
b25hbDxEYXRhTGlzdFN1Z2dlc3Rpb24+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBEYXRhTGlzdFN1Z2dlc3Rpb246OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgdmFsdWU7CisgICAgZW5jb2RlciA8
PCBsYWJlbDsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPERhdGFMaXN0
U3VnZ2VzdGlvbj4gRGF0YUxpc3RTdWdnZXN0aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
K3sKKyAgICBPcHRpb25hbDxTdHJpbmc+IHZhbHVlOworICAgIGRlY29kZXIgPj4gdmFsdWU7Cisg
ICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlv
bmFsPFN0cmluZz4gbGFiZWw7CisgICAgZGVjb2RlciA+PiBsYWJlbDsKKyAgICBpZiAoIWxhYmVs
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIHt7ICp2YWx1ZSwg
KmxhYmVsIH19OworfQorCiBzdHJ1Y3QgRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24gewog
ICAgIERhdGFMaXN0U3VnZ2VzdGlvbkFjdGl2YXRpb25UeXBlIGFjdGl2YXRpb25UeXBlOwotICAg
IFZlY3RvcjxTdHJpbmc+IHN1Z2dlc3Rpb25zOworICAgIFZlY3RvcjxEYXRhTGlzdFN1Z2dlc3Rp
b24+IHN1Z2dlc3Rpb25zOwogICAgIEludFJlY3QgZWxlbWVudFJlY3Q7CisKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPERhdGFMaXN0U3VnZ2VzdGlvbkluZm9y
bWF0aW9uPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4K
K3ZvaWQgRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb246OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAoreworICAgIGVuY29kZXIuZW5jb2RlRW51bShhY3RpdmF0aW9uVHlwZSk7Cisg
ICAgZW5jb2RlciA8PCBzdWdnZXN0aW9uczsKKyAgICBlbmNvZGVyIDw8IGVsZW1lbnRSZWN0Owog
fQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8RGF0YUxpc3RTdWdnZXN0aW9u
SW5mb3JtYXRpb24+IERhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3sKKyAgICBEYXRhTGlzdFN1Z2dlc3Rpb25BY3RpdmF0aW9uVHlwZSBhY3Rp
dmF0aW9uVHlwZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShhY3RpdmF0aW9uVHlwZSkp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxWZWN0b3I8RGF0
YUxpc3RTdWdnZXN0aW9uPj4gc3VnZ2VzdGlvbnM7CisgICAgZGVjb2RlciA+PiBzdWdnZXN0aW9u
czsKKyAgICBpZiAoIXN1Z2dlc3Rpb25zKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgT3B0aW9uYWw8SW50UmVjdD4gZWxlbWVudFJlY3Q7CisgICAgZGVjb2RlciA+PiBlbGVt
ZW50UmVjdDsKKyAgICBpZiAoIWVsZW1lbnRSZWN0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgcmV0dXJuIHt7IGFjdGl2YXRpb25UeXBlLCAqc3VnZ2VzdGlvbnMsICplbGVt
ZW50UmVjdCB9fTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAppbmRleCA1ZWM1YzM0NWIwNjBj
ZmEwODdlODBiNTMwYWI2ZTllYTRmZGRiYmMzLi4zY2FlMzhkNWYwNjYwMDA1MTI5ZTBhMTZlZDIw
Y2NkODYxYjg3OGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElu
cHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUu
Y3BwCkBAIC04MjgsNyArODI4LDcgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OnVwZGF0ZUF1
dG9GaWxsQnV0dG9uKCkKIAogdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6Omxpc3RBdHRyaWJ1dGVU
YXJnZXRDaGFuZ2VkKCkKIHsKLSAgICBtX2NhY2hlZFN1Z2dlc3Rpb25zID0gc3RkOjptYWtlX3Bh
aXIoU3RyaW5nKCksIFZlY3RvcjxTdHJpbmc+KCkpOworICAgIG1fY2FjaGVkU3VnZ2VzdGlvbnMg
PSB7IH07CiAKICAgICBpZiAoIW1fZGF0YUxpc3REcm9wZG93bkluZGljYXRvcikKICAgICAgICAg
Y3JlYXRlRGF0YUxpc3REcm9wZG93bkluZGljYXRvcigpOwpAQCAtODU2LDM0ICs4NTYsMzkgQEAg
SW50UmVjdCBUZXh0RmllbGRJbnB1dFR5cGU6OmVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5h
dGVzKCkgY29uc3QKICAgICByZXR1cm4gZWxlbWVudCgpLT5kb2N1bWVudCgpLnZpZXcoKS0+Y29u
dGVudHNUb1Jvb3RWaWV3KGVsZW1lbnQoKS0+cmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3QoKSk7CiB9CiAKLVZlY3RvcjxTdHJpbmc+IFRleHRGaWVsZElucHV0VHlwZTo6c3VnZ2Vz
dGlvbnMoKQorVmVjdG9yPERhdGFMaXN0U3VnZ2VzdGlvbj4gVGV4dEZpZWxkSW5wdXRUeXBlOjpz
dWdnZXN0aW9ucygpCiB7CiAgICAgLy8gRklYTUU6IFN1Z2dlc3Rpb25zIGFyZSAidHlwaW5nIGNv
bXBsZXRpb25zIiBhbmQgc28gc2hvdWxkIHByb2JhYmx5IHVzZSB0aGUgZmluZFBsYWluVGV4dCBh
bGdvcml0aG0gcmF0aGVyIHRoYW4gdGhlIHNpbXBsaXN0aWMgImlnbm9yaW5nIEFTQ0lJIGNhc2Ui
IHJ1bGVzLgogCi0gICAgVmVjdG9yPFN0cmluZz4gc3VnZ2VzdGlvbnM7Ci0gICAgVmVjdG9yPFN0
cmluZz4gbWF0Y2hlc0NvbnRhaW5pbmdWYWx1ZTsKKyAgICBWZWN0b3I8RGF0YUxpc3RTdWdnZXN0
aW9uPiBzdWdnZXN0aW9uczsKKyAgICBWZWN0b3I8RGF0YUxpc3RTdWdnZXN0aW9uPiBtYXRjaGVz
Q29udGFpbmluZ1ZhbHVlOwogCiAgICAgU3RyaW5nIGVsZW1lbnRWYWx1ZSA9IGVsZW1lbnQoKS0+
dmFsdWUoKTsKIAogICAgIGlmICghbV9jYWNoZWRTdWdnZXN0aW9ucy5maXJzdC5pc051bGwoKSAm
JiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG1fY2FjaGVkU3VnZ2VzdGlvbnMuZmlyc3QsIGVsZW1l
bnRWYWx1ZSkpCiAgICAgICAgIHJldHVybiBtX2NhY2hlZFN1Z2dlc3Rpb25zLnNlY29uZDsKIAor
ICAgIGF1dG8qIHBhZ2UgPSBlbGVtZW50KCktPmRvY3VtZW50KCkucGFnZSgpOworICAgIGJvb2wg
Y2FuU2hvd0xhYmVscyA9IHBhZ2UgJiYgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuY2FuU2hvd0Rh
dGFMaXN0U3VnZ2VzdGlvbkxhYmVscygpOwogICAgIGlmIChhdXRvIGRhdGFMaXN0ID0gZWxlbWVu
dCgpLT5kYXRhTGlzdCgpKSB7CiAgICAgICAgIGZvciAoYXV0byYgb3B0aW9uIDogZGF0YUxpc3Qt
PnN1Z2dlc3Rpb25zKCkpIHsKLSAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IG9wdGlvbi52YWx1
ZSgpOwotICAgICAgICAgICAgaWYgKCFlbGVtZW50KCktPmlzVmFsaWRWYWx1ZSh2YWx1ZSkpCisg
ICAgICAgICAgICBEYXRhTGlzdFN1Z2dlc3Rpb24gc3VnZ2VzdGlvbjsKKyAgICAgICAgICAgIHN1
Z2dlc3Rpb24udmFsdWUgPSBvcHRpb24udmFsdWUoKTsKKyAgICAgICAgICAgIGlmICghZWxlbWVu
dCgpLT5pc1ZhbGlkVmFsdWUoc3VnZ2VzdGlvbi52YWx1ZSkpCiAgICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICB2YWx1ZSA9IHNhbml0aXplVmFsdWUodmFsdWUpOwotICAgICAg
ICAgICAgaWYgKGVsZW1lbnRWYWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgc3VnZ2Vz
dGlvbnMuYXBwZW5kKHZhbHVlKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlLnN0YXJ0c1dp
dGhJZ25vcmluZ0FTQ0lJQ2FzZShlbGVtZW50VmFsdWUpKQotICAgICAgICAgICAgICAgIHN1Z2dl
c3Rpb25zLmFwcGVuZCh2YWx1ZSk7Ci0gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZS5jb250YWlu
c0lnbm9yaW5nQVNDSUlDYXNlKGVsZW1lbnRWYWx1ZSkpCi0gICAgICAgICAgICAgICAgbWF0Y2hl
c0NvbnRhaW5pbmdWYWx1ZS5hcHBlbmQodmFsdWUpOworICAgICAgICAgICAgc3VnZ2VzdGlvbi52
YWx1ZSA9IHNhbml0aXplVmFsdWUoc3VnZ2VzdGlvbi52YWx1ZSk7CisgICAgICAgICAgICBzdWdn
ZXN0aW9uLmxhYmVsID0gb3B0aW9uLmxhYmVsKCk7CisgICAgICAgICAgICBpZiAoc3VnZ2VzdGlv
bi52YWx1ZSA9PSBzdWdnZXN0aW9uLmxhYmVsKQorICAgICAgICAgICAgICAgIHN1Z2dlc3Rpb24u
bGFiZWwgPSB7IH07CisKKyAgICAgICAgICAgIGlmIChlbGVtZW50VmFsdWUuaXNFbXB0eSgpIHx8
IHN1Z2dlc3Rpb24udmFsdWUuc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGVsZW1lbnRWYWx1
ZSkpCisgICAgICAgICAgICAgICAgc3VnZ2VzdGlvbnMuYXBwZW5kKFdURk1vdmUoc3VnZ2VzdGlv
bikpOworICAgICAgICAgICAgZWxzZSBpZiAoc3VnZ2VzdGlvbi52YWx1ZS5jb250YWluc0lnbm9y
aW5nQVNDSUlDYXNlKGVsZW1lbnRWYWx1ZSkgfHwgKGNhblNob3dMYWJlbHMgJiYgc3VnZ2VzdGlv
bi5sYWJlbC5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKGVsZW1lbnRWYWx1ZSkpKQorICAgICAg
ICAgICAgICAgIG1hdGNoZXNDb250YWluaW5nVmFsdWUuYXBwZW5kKFdURk1vdmUoc3VnZ2VzdGlv
bikpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgc3VnZ2VzdGlvbnMuYXBwZW5kVmVjdG9yKG1h
dGNoZXNDb250YWluaW5nVmFsdWUpOworICAgIHN1Z2dlc3Rpb25zLmFwcGVuZFZlY3RvcihXVEZN
b3ZlKG1hdGNoZXNDb250YWluaW5nVmFsdWUpKTsKICAgICBtX2NhY2hlZFN1Z2dlc3Rpb25zID0g
c3RkOjptYWtlX3BhaXIoZWxlbWVudFZhbHVlLCBzdWdnZXN0aW9ucyk7CiAKICAgICByZXR1cm4g
c3VnZ2VzdGlvbnM7CkBAIC04OTYsNyArOTAxLDcgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6
OmRpZFNlbGVjdERhdGFMaXN0T3B0aW9uKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRPcHRpb24pCiAK
IHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpkaWRDbG9zZVN1Z2dlc3Rpb25zKCkKIHsKLSAgICBt
X2NhY2hlZFN1Z2dlc3Rpb25zID0gc3RkOjptYWtlX3BhaXIoU3RyaW5nKCksIFZlY3RvcjxTdHJp
bmc+KCkpOworICAgIG1fY2FjaGVkU3VnZ2VzdGlvbnMgPSB7IH07CiAgICAgbV9zdWdnZXN0aW9u
UGlja2VyID0gbnVsbHB0cjsKICAgICBpZiAoZWxlbWVudCgpLT5yZW5kZXJlcigpKQogICAgICAg
ICBlbGVtZW50KCktPnJlbmRlcmVyKCktPnJlcGFpbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Rl
eHRGaWVsZElucHV0VHlwZS5oCmluZGV4IDRlMzNmMDU3YzJjODVjOWVjYzY2YTRjMGJiZmNlY2Ix
OTRmYmRlMzkuLjVhMTdmMTU4MjFhMGRkMDYwNzI3YWE5ZWEwZTljNDQxOGEwYTc3NDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaApAQCAtMTMyLDE0ICsxMzIsMTQg
QEAgcHJpdmF0ZToKIAogICAgIC8vIERhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQKICAgICBJbnRS
ZWN0IGVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkgY29uc3QgZmluYWw7Ci0gICAg
VmVjdG9yPFN0cmluZz4gc3VnZ2VzdGlvbnMoKSBmaW5hbDsKKyAgICBWZWN0b3I8RGF0YUxpc3RT
dWdnZXN0aW9uPiBzdWdnZXN0aW9ucygpIGZpbmFsOwogICAgIHZvaWQgZGlkU2VsZWN0RGF0YUxp
c3RPcHRpb24oY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBkaWRDbG9zZVN1Z2dlc3Rp
b25zKCkgZmluYWw7CiAKICAgICB2b2lkIGRhdGFMaXN0QnV0dG9uRWxlbWVudFdhc0NsaWNrZWQo
KSBmaW5hbDsKICAgICBSZWZQdHI8RGF0YUxpc3RCdXR0b25FbGVtZW50PiBtX2RhdGFMaXN0RHJv
cGRvd25JbmRpY2F0b3I7CiAKLSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBWZWN0b3I8U3RyaW5nPj4g
bV9jYWNoZWRTdWdnZXN0aW9uczsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBWZWN0b3I8RGF0YUxp
c3RTdWdnZXN0aW9uPj4gbV9jYWNoZWRTdWdnZXN0aW9uczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
RGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyPiBtX3N1Z2dlc3Rpb25QaWNrZXI7CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IDE3MWFkNmFjMDFmNjQ4NDIwMzQ4
ZTcwODk1MmU2NjYxOGIxOTk5MTEuLmI4ZDExMTY4YzY5MzhlOGIzN2ZlNjQ0ZjlkNDFkNmFkNDJm
NTM4YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTEzMyw2ICsxMzMs
NyBAQCBjbGFzcyBFbXB0eUNocm9tZUNsaWVudCA6IHB1YmxpYyBDaHJvbWVDbGllbnQgewogCiAj
aWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAgICAgc3RkOjp1bmlxdWVfcHRyPERhdGFMaXN0
U3VnZ2VzdGlvblBpY2tlcj4gY3JlYXRlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKERhdGFMaXN0
U3VnZ2VzdGlvbnNDbGllbnQmKSBmaW5hbDsKKyAgICBib29sIGNhblNob3dEYXRhTGlzdFN1Z2dl
c3Rpb25MYWJlbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKICAg
ICB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSYsIEZpbGVDaG9vc2VyJikgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCA2YTQxM2E3MjM1Mjk3YjNjNDA5MTU3ODEyOGIxYzdm
ZjY3NzY5MTU5Li40OTQ5ZmVhODVkYzAxNzhlYzE4OTg0MzQ4YzllNDFjZGUzYTk0OGM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTI3OSw2ICsyNzksNyBAQCBwdWJsaWM6CiAK
ICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKICAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0
cjxEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI+IGNyZWF0ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tl
cihEYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50JikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjYW5T
aG93RGF0YUxpc3RTdWdnZXN0aW9uTGFiZWxzKCkgY29uc3QgPSAwOwogI2VuZGlmCiAKICAgICB2
aXJ0dWFsIHZvaWQgcnVuT3BlblBhbmVsKEZyYW1lJiwgRmlsZUNob29zZXImKSA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50LmgK
aW5kZXggNWVkODAyNWJlNzkwMjkyN2Y1ZDY1M2I5NzY5ZTExM2YyY2FlYzhjYi4uNTZkOTVjNjMz
NGVmYTVkNGM5Mjk0OTA3MzJmNTE4NzA2MjYwYTI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0RhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQuaApAQCAtMzIsMTMgKzMyLDE0
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEludFJlY3Q7CitzdHJ1Y3QgRGF0YUxp
c3RTdWdnZXN0aW9uOwogCiBjbGFzcyBEYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50IHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5EYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50KCkgPSBkZWZhdWx0Owog
CiAgICAgdmlydHVhbCBJbnRSZWN0IGVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkg
Y29uc3QgPSAwOwotICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gc3VnZ2VzdGlvbnMoKSA9IDA7
CisgICAgdmlydHVhbCBWZWN0b3I8RGF0YUxpc3RTdWdnZXN0aW9uPiBzdWdnZXN0aW9ucygpID0g
MDsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRTZWxlY3REYXRhTGlzdE9wdGlvbihjb25zdCBTdHJp
bmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENsb3NlU3VnZ2VzdGlvbnMoKSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA0
MjU3NzU3OWZkN2U1YjE0OGRmMGQyMmJjY2RkMTUxZmU4ZWQ0ODI5Li5mZDMyMGVjOTRlNDgwMmE0
Yzk1NGE3YWUwZDZjNjUwMTkyZmJjYzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL0NvbXBvc2l0aW9uVW5kZXJsaW5lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DcmVkZW50aWFs
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DdXJzb3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0RhdGFM
aXN0U3VnZ2VzdGlvblBpY2tlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VEZXRhaWxz
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaWN0YXRpb25BbHRlcm5hdGl2ZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRGljdGlvbmFyeVBvcHVwSW5mby5oPgpAQCAtMTcyMSwyOSArMTcyMCw2IEBAIGJv
b2wgQXJndW1lbnRDb2RlcjxEYXRhYmFzZURldGFpbHM+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
ciwgRGF0YWJhc2VEZXRhaWxzJiBkCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLSNpZiBFTkFCTEUo
REFUQUxJU1RfRUxFTUVOVCkKLXZvaWQgQXJndW1lbnRDb2RlcjxEYXRhTGlzdFN1Z2dlc3Rpb25J
bmZvcm1hdGlvbj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpEYXRh
TGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbiYgaW5mbykKLXsKLSAgICBlbmNvZGVyLmVuY29kZUVu
dW0oaW5mby5hY3RpdmF0aW9uVHlwZSk7Ci0gICAgZW5jb2RlciA8PCBpbmZvLnN1Z2dlc3Rpb25z
OwotICAgIGVuY29kZXIgPDwgaW5mby5lbGVtZW50UmVjdDsKLX0KLQotYm9vbCBBcmd1bWVudENv
ZGVyPERhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uPjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIsIFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uJiBpbmZvKQotewotICAg
IGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKGluZm8uYWN0aXZhdGlvblR5cGUpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8uc3VnZ2VzdGlvbnMp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8u
ZWxlbWVudFJlY3QpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLSNlbmRpZgotCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRD
dXN0b21EYXRhOjpFbnRyeT4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29u
c3QgUGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Jik7CiAgICAgc3RhdGljIGJvb2wgZGVjb2Rl
KERlY29kZXImLCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnkmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggMWFiYjQxNmMxNGJiZDRhZTVi
OWM5Nzg4YjdjMDFhMGI1YjYyN2QwMy4uY2E1N2MzMWVhOTU0NTk3NWY3YmIxYWQ4NDFkZGRiOGYx
M2RmZmNkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgKQEAgLTE2MywxMCArMTYzLDYgQEAgc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50Owogc3Ry
dWN0IFZpZXdwb3J0QXJndW1lbnRzOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoREFUQUxJU1RfRUxF
TUVOVCkKLXN0cnVjdCBEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbjsKLSNlbmRpZgotCiAj
aWYgVVNFKFNPVVApCiBzdHJ1Y3QgU291cE5ldHdvcmtQcm94eVNldHRpbmdzOwogI2VuZGlmCkBA
IC01NDMsMTMgKzUzOSw2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6RGF0YWJhc2VEZXRhaWxzPiB7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBX
ZWJDb3JlOjpEYXRhYmFzZURldGFpbHMmKTsKIH07CiAKLSNpZiBFTkFCTEUoREFUQUxJU1RfRUxF
TUVOVCkKLXRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RGF0YUxpc3RT
dWdnZXN0aW9uSW5mb3JtYXRpb24+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYs
IGNvbnN0IFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uJik7Ci0gICAgc3Rh
dGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25JbmZv
cm1hdGlvbiYpOwotfTsKLSNlbmRpZgotCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZSYpOwogICAgIHN0
YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZT4gZGVjb2RlKERlY29k
ZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJEYXRhTGlz
dFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tCmluZGV4IGExOTdjNTMxYjMwOWEy
OTBjZjA4OWRjYjU4YTNkZmQyNDAxMWZkN2QuLjgzZDUyZDcyNDBkMmY5ZmYyYTM4ZmU4ZDY0NDUw
MGY4ZGM0ZWMxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJE
YXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5tbQpAQCAtNDIsNyAr
NDIsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBzdWdnZXN0aW9uQ2VsbFJldXNlSWRlbnRp
ZmllciA9IEAiV0tEYXRhTGlzdFN1Z2dlc3Rpb25DZQogCiBAaW50ZXJmYWNlIFdLRGF0YUxpc3RT
dWdnZXN0aW9uc0NvbnRyb2wgOiBOU09iamVjdCB7CiAgICAgV2Vha1B0cjxXZWJLaXQ6OldlYkRh
dGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUz4gX2Ryb3Bkb3duOwotICAgIFZlY3RvcjxTdHJp
bmc+IF9zdWdnZXN0aW9uczsKKyAgICBWZWN0b3I8V2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9u
PiBfc3VnZ2VzdGlvbnM7CiB9CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrKSBXS0NvbnRl
bnRWaWV3ICp2aWV3OwpAQCAtMTU5LDcgKzE1OSw3IEBAIC0gKHZvaWQpc2hvd1N1Z2dlc3Rpb25z
RHJvcGRvd246KFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TJilkcm9w
CiAKIC0gKHZvaWQpZGlkU2VsZWN0T3B0aW9uQXRJbmRleDooTlNJbnRlZ2VyKWluZGV4CiB7Ci0g
ICAgX2Ryb3Bkb3duLT5kaWRTZWxlY3RPcHRpb24oX3N1Z2dlc3Rpb25zW2luZGV4XSk7CisgICAg
X2Ryb3Bkb3duLT5kaWRTZWxlY3RPcHRpb24oX3N1Z2dlc3Rpb25zW2luZGV4XS52YWx1ZSk7CiB9
CiAKIC0gKHZvaWQpaW52YWxpZGF0ZQpAQCAtMTcxLDcgKzE3MSw3IEBAIC0gKE5TQXJyYXk8V0tE
YXRhTGlzdFRleHRTdWdnZXN0aW9uICo+ICopdGV4dFN1Z2dlc3Rpb25zCiAgICAgTlNNdXRhYmxl
QXJyYXkgKnN1Z2dlc3Rpb25zID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKIAogICAgIGZvciAo
Y29uc3QgYXV0byYgc3VnZ2VzdGlvbiA6IF9zdWdnZXN0aW9ucykgewotICAgICAgICBbc3VnZ2Vz
dGlvbnMgYWRkT2JqZWN0OltXS0RhdGFMaXN0VGV4dFN1Z2dlc3Rpb24gdGV4dFN1Z2dlc3Rpb25X
aXRoSW5wdXRUZXh0OnN1Z2dlc3Rpb25dXTsKKyAgICAgICAgW3N1Z2dlc3Rpb25zIGFkZE9iamVj
dDpbV0tEYXRhTGlzdFRleHRTdWdnZXN0aW9uIHRleHRTdWdnZXN0aW9uV2l0aElucHV0VGV4dDpz
dWdnZXN0aW9uLnZhbHVlXV07CiAgICAgICAgIGlmIChzdWdnZXN0aW9ucy5jb3VudCA9PSAzKQog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTg2LDcgKzE4Niw3IEBAIC0gKE5TSW50ZWdl
cilzdWdnZXN0aW9uc0NvdW50CiAKIC0gKFN0cmluZylzdWdnZXN0aW9uQXRJbmRleDooTlNJbnRl
Z2VyKWluZGV4CiB7Ci0gICAgcmV0dXJuIF9zdWdnZXN0aW9uc1tpbmRleF07CisgICAgcmV0dXJu
IF9zdWdnZXN0aW9uc1tpbmRleF0udmFsdWU7CiB9CiAKIC0gKE5TVGV4dEFsaWdubWVudCl0ZXh0
QWxpZ25tZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViRGF0
YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bk1hYy5tbQppbmRleCA4MDYwYzhhYmQz
M2U1NWUwMmM3MTI0ZjRhNDQyOTE1MWE5MzkwYjE5Li43ODFmYTZkMTVhYjY4OTczYTU5OWVjYzQy
ZGRjODE0NzVkOTMyZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25NYWMubW0KQEAgLTM2
LDE0ICszNiwxNiBAQAogCiBzdGF0aWMgY29uc3QgQ0dGbG9hdCBkcm9wZG93blRvcE1hcmdpbiA9
IDM7CiBzdGF0aWMgY29uc3QgQ0dGbG9hdCBkcm9wZG93blZlcnRpY2FsUGFkZGluZyA9IDQ7Ci1z
dGF0aWMgY29uc3QgQ0dGbG9hdCBkcm9wZG93blJvd0hlaWdodCA9IDIwOwotc3RhdGljIGNvbnN0
IHNpemVfdCBkcm9wZG93bk1heFN1Z2dlc3Rpb25zID0gNjsKK3N0YXRpYyBjb25zdCBDR0Zsb2F0
IGRyb3Bkb3duUm93SGVpZ2h0V2l0aG91dExhYmVsID0gMjA7CitzdGF0aWMgY29uc3QgQ0dGbG9h
dCBkcm9wZG93blJvd0hlaWdodFdpdGhMYWJlbCA9IDQwOworc3RhdGljIGNvbnN0IHNpemVfdCBt
YXhpbXVtVG90YWxIZWlnaHRGb3JEcm9wZG93bkNlbGxzID0gMTIwOwogc3RhdGljIE5TU3RyaW5n
ICogY29uc3Qgc3VnZ2VzdGlvbkNlbGxSZXVzZUlkZW50aWZpZXIgPSBAIldLRGF0YUxpc3RTdWdn
ZXN0aW9uVmlldyI7CiAKIEBpbnRlcmZhY2UgV0tEYXRhTGlzdFN1Z2dlc3Rpb25XaW5kb3cgOiBO
U1dpbmRvdwogQGVuZAogCiBAaW50ZXJmYWNlIFdLRGF0YUxpc3RTdWdnZXN0aW9uVmlldyA6IE5T
VGFibGVDZWxsVmlldworQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgc2hvdWxkU2hvd0JvdHRv
bURpdmlkZXI7CiBAZW5kCiAKIEBpbnRlcmZhY2UgV0tEYXRhTGlzdFN1Z2dlc3Rpb25UYWJsZVJv
d1ZpZXcgOiBOU1RhYmxlUm93VmlldwpAQCAtMTY5LDcgKzE3MSw5IEBAIC0gKE5TV2luZG93U2hh
ZG93T3B0aW9ucylzaGFkb3dPcHRpb25zCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXS0RhdGFM
aXN0U3VnZ2VzdGlvblZpZXcgewotICAgIFJldGFpblB0cjxOU1RleHRGaWVsZD4gX3RleHRGaWVs
ZDsKKyAgICBSZXRhaW5QdHI8TlNUZXh0RmllbGQ+IF92YWx1ZUZpZWxkOworICAgIFJldGFpblB0
cjxOU1RleHRGaWVsZD4gX2xhYmVsRmllbGQ7CisgICAgUmV0YWluUHRyPE5TVmlldz4gX2JvdHRv
bURpdmlkZXI7CiB9CiAKIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZVJlY3QKQEAg
LTE3NywzMSArMTgxLDc4IEBAIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZVJlY3QK
ICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoRnJhbWU6ZnJhbWVSZWN0XSkpCiAgICAg
ICAgIHJldHVybiBzZWxmOwogCi0gICAgX3RleHRGaWVsZCA9IGFkb3B0TlMoW1tOU1RleHRGaWVs
ZCBhbGxvY10gaW5pdFdpdGhGcmFtZTpmcmFtZVJlY3RdKTsKLSAgICBzZWxmLnRleHRGaWVsZCA9
IF90ZXh0RmllbGQuZ2V0KCk7Ci0KLSAgICBbc2VsZiBhZGRTdWJ2aWV3OnNlbGYudGV4dEZpZWxk
XTsKLQorICAgIF92YWx1ZUZpZWxkID0gYWRvcHROUyhbW05TVGV4dEZpZWxkIGFsbG9jXSBpbml0
XSk7CisgICAgX2xhYmVsRmllbGQgPSBhZG9wdE5TKFtbTlNUZXh0RmllbGQgYWxsb2NdIGluaXRd
KTsKKyAgICBfYm90dG9tRGl2aWRlciA9IGFkb3B0TlMoW1tOU1ZpZXcgYWxsb2NdIGluaXRdKTsK
KyAgICBbX2JvdHRvbURpdmlkZXIgc2V0V2FudHNMYXllcjpZRVNdOworICAgIFtfYm90dG9tRGl2
aWRlciBzZXRIaWRkZW46WUVTXTsKKyAgICBbX2JvdHRvbURpdmlkZXIgbGF5ZXJdLmJhY2tncm91
bmRDb2xvciA9IE5TQ29sb3Iuc2VwYXJhdG9yQ29sb3IuQ0dDb2xvcjsKKyAgICBbc2VsZiBhZGRT
dWJ2aWV3Ol9ib3R0b21EaXZpZGVyLmdldCgpXTsKKworICAgIGF1dG8gc2V0VXBUZXh0RmllbGQg
PSBbJl0oTlNUZXh0RmllbGQgKnRleHRGaWVsZCkgeworICAgICAgICB0ZXh0RmllbGQuZWRpdGFi
bGUgPSBOTzsKKyAgICAgICAgdGV4dEZpZWxkLmJlemVsZWQgPSBOTzsKKyAgICAgICAgdGV4dEZp
ZWxkLmZvbnQgPSBbTlNGb250IG1lbnVGb250T2ZTaXplOjBdOworICAgICAgICB0ZXh0RmllbGQu
ZHJhd3NCYWNrZ3JvdW5kID0gTk87CisgICAgICAgIFtzZWxmIGFkZFN1YnZpZXc6dGV4dEZpZWxk
XTsKKyAgICB9OworCisgICAgc2V0VXBUZXh0RmllbGQoX3ZhbHVlRmllbGQuZ2V0KCkpOworICAg
IHNldFVwVGV4dEZpZWxkKF9sYWJlbEZpZWxkLmdldCgpKTsKICAgICBzZWxmLmlkZW50aWZpZXIg
PSBzdWdnZXN0aW9uQ2VsbFJldXNlSWRlbnRpZmllcjsKLSAgICBzZWxmLnRleHRGaWVsZC5lZGl0
YWJsZSA9IE5POwotICAgIHNlbGYudGV4dEZpZWxkLmJlemVsZWQgPSBOTzsKLSAgICBzZWxmLnRl
eHRGaWVsZC5mb250ID0gW05TRm9udCBtZW51Rm9udE9mU2l6ZTowXTsKLSAgICBzZWxmLnRleHRG
aWVsZC5kcmF3c0JhY2tncm91bmQgPSBOTzsKIAogICAgIHJldHVybiBzZWxmOwogfQogCi0tICh2
b2lkKXNldFRleHQ6KE5TU3RyaW5nICopdGV4dAorLSAodm9pZClsYXlvdXQKK3sKKyAgICBbc3Vw
ZXIgbGF5b3V0XTsKKworICAgIGF1dG8gYm91bmRzID0gc2VsZi5ib3VuZHM7CisgICAgYXV0byB3
aWR0aCA9IGJvdW5kcy5zaXplLndpZHRoOworICAgIGlmICghW19sYWJlbEZpZWxkIGlzSGlkZGVu
XSkgeworICAgICAgICBhdXRvIGhhbGZPZkhlaWdodCA9IGJvdW5kcy5zaXplLmhlaWdodCAvIDI7
CisgICAgICAgIFtfdmFsdWVGaWVsZCBzZXRGcmFtZTpOU01ha2VSZWN0KDAsIGhhbGZPZkhlaWdo
dCwgd2lkdGgsIGhhbGZPZkhlaWdodCldOworICAgICAgICBbX2xhYmVsRmllbGQgc2V0RnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCB3aWR0aCwgaGFsZk9mSGVpZ2h0KV07CisgICAgfSBlbHNlCisgICAg
ICAgIFtfdmFsdWVGaWVsZCBzZXRGcmFtZTpib3VuZHNdOworCisgICAgaWYgKCFbX2JvdHRvbURp
dmlkZXIgaXNIaWRkZW5dKQorICAgICAgICBbX2JvdHRvbURpdmlkZXIgc2V0RnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCB3aWR0aCwgMC41KV07Cit9CisKKy0gKHZvaWQpc2V0VmFsdWU6KE5TU3RyaW5n
ICopdmFsdWUgbGFiZWw6KE5TU3RyaW5nICopbGFiZWwKK3sKKyAgICBpZiAoW1tfdmFsdWVGaWVs
ZCBzdHJpbmdWYWx1ZV0gaXNFcXVhbFRvU3RyaW5nOnZhbHVlXSAmJiBbW19sYWJlbEZpZWxkIHN0
cmluZ1ZhbHVlXSBpc0VxdWFsVG9TdHJpbmc6bGFiZWxdKQorICAgICAgICByZXR1cm47CisKKyAg
ICBbX3ZhbHVlRmllbGQgc2V0U3RyaW5nVmFsdWU6dmFsdWVdOworICAgIFtfbGFiZWxGaWVsZCBz
ZXRTdHJpbmdWYWx1ZTpsYWJlbF07CisgICAgW19sYWJlbEZpZWxkIHNldEhpZGRlbjohbGFiZWwu
bGVuZ3RoXTsKKyAgICBzZWxmLm5lZWRzTGF5b3V0ID0gWUVTOworfQorCistICh2b2lkKXNldFNo
b3VsZFNob3dCb3R0b21EaXZpZGVyOihCT09MKXNob3dCb3R0b21EaXZpZGVyCiB7Ci0gICAgc2Vs
Zi50ZXh0RmllbGQuc3RyaW5nVmFsdWUgPSB0ZXh0OworICAgIGlmIChbX2JvdHRvbURpdmlkZXIg
aXNIaWRkZW5dID09ICFzaG93Qm90dG9tRGl2aWRlcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
W19ib3R0b21EaXZpZGVyIHNldEhpZGRlbjohc2hvd0JvdHRvbURpdmlkZXJdOworICAgIHNlbGYu
bmVlZHNMYXlvdXQgPSBZRVM7Cit9CisKKy0gKEJPT0wpc2hvdWxkU2hvd0JvdHRvbURpdmlkZXIK
K3sKKyAgICByZXR1cm4gW19ib3R0b21EaXZpZGVyIGlzSGlkZGVuXTsKIH0KIAogLSAodm9pZClz
ZXRCYWNrZ3JvdW5kU3R5bGU6KE5TQmFja2dyb3VuZFN0eWxlKWJhY2tncm91bmRTdHlsZQogewog
ICAgIFtzdXBlciBzZXRCYWNrZ3JvdW5kU3R5bGU6YmFja2dyb3VuZFN0eWxlXTsKLSAgICBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIHNlbGYudGV4dEZpZWxkLnRleHRD
b2xvciA9IGJhY2tncm91bmRTdHlsZSA9PSBOU0JhY2tncm91bmRTdHlsZUxpZ2h0ID8gW05TQ29s
b3IgdGV4dENvbG9yXSA6IFtOU0NvbG9yIGFsdGVybmF0ZVNlbGVjdGVkQ29udHJvbFRleHRDb2xv
cl07Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECitBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAgIFtfdmFsdWVGaWVsZCBzZXRUZXh0Q29sb3I6YmFj
a2dyb3VuZFN0eWxlID09IE5TQmFja2dyb3VuZFN0eWxlTGlnaHQgPyBOU0NvbG9yLnRleHRDb2xv
ciA6IE5TQ29sb3IuYWx0ZXJuYXRlU2VsZWN0ZWRDb250cm9sVGV4dENvbG9yXTsKKyAgICBbX2xh
YmVsRmllbGQgc2V0VGV4dENvbG9yOk5TQ29sb3Iuc2Vjb25kYXJ5TGFiZWxDb2xvcl07CitBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIH0KIAogLSAoQk9PTClhY2NlcHRzRmlyc3RS
ZXNwb25kZXIKQEAgLTI1MSwxNCArMzAyLDIyIEBAIC0gKEJPT0wpYWNjZXB0c0ZpcnN0UmVzcG9u
ZGVyCiAKIEBlbmQKIAorc3RhdGljIEJPT0wgc2hvdWxkU2hvd0RpdmlkZXJzQmV0d2VlbkNlbGxz
KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb24+JiBzdWdnZXN0aW9ucykK
K3sKKyAgICByZXR1cm4gbm90Rm91bmQgIT0gc3VnZ2VzdGlvbnMuZmluZE1hdGNoaW5nKFtdKGF1
dG8mIHN1Z2dlc3Rpb24pIHsKKyAgICAgICAgcmV0dXJuICFzdWdnZXN0aW9uLmxhYmVsLmlzRW1w
dHkoKTsKKyAgICB9KTsKK30KKwogQGltcGxlbWVudGF0aW9uIFdLRGF0YUxpc3RTdWdnZXN0aW9u
c0NvbnRyb2xsZXIgewogICAgIFdlYWtQdHI8V2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25z
RHJvcGRvd25NYWM+IF9kcm9wZG93bjsKLSAgICBWZWN0b3I8U3RyaW5nPiBfc3VnZ2VzdGlvbnM7
CisgICAgVmVjdG9yPFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbj4gX3N1Z2dlc3Rpb25zOwog
ICAgIE5TVmlldyAqX3ByZXNlbnRpbmdWaWV3OwogCiAgICAgUmV0YWluUHRyPE5TU2Nyb2xsVmll
dz4gX3Njcm9sbFZpZXc7CiAgICAgUmV0YWluUHRyPFdLRGF0YUxpc3RTdWdnZXN0aW9uV2luZG93
PiBfZW5jbG9zaW5nV2luZG93OwogICAgIFJldGFpblB0cjxXS0RhdGFMaXN0U3VnZ2VzdGlvblRh
YmxlVmlldz4gX3RhYmxlOworICAgIEJPT0wgX3Nob3dEaXZpZGVyc0JldHdlZW5DZWxsczsKIH0K
IAogLSAoaWQpaW5pdFdpdGhJbmZvcm1hdGlvbjooV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9u
SW5mb3JtYXRpb24mJilpbmZvcm1hdGlvbiBpblZpZXc6KE5TVmlldyAqKXByZXNlbnRpbmdWaWV3
CkBAIC0yNjgsNiArMzI3LDcgQEAgLSAoaWQpaW5pdFdpdGhJbmZvcm1hdGlvbjooV2ViQ29yZTo6
RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24mJilpbmZvcm1hdGlvbgogCiAgICAgX3ByZXNl
bnRpbmdWaWV3ID0gcHJlc2VudGluZ1ZpZXc7CiAgICAgX3N1Z2dlc3Rpb25zID0gV1RGTW92ZShp
bmZvcm1hdGlvbi5zdWdnZXN0aW9ucyk7CisgICAgX3Nob3dEaXZpZGVyc0JldHdlZW5DZWxscyA9
IHNob3VsZFNob3dEaXZpZGVyc0JldHdlZW5DZWxscyhfc3VnZ2VzdGlvbnMpOwogICAgIF90YWJs
ZSA9IGFkb3B0TlMoW1tXS0RhdGFMaXN0U3VnZ2VzdGlvblRhYmxlVmlldyBhbGxvY10gaW5pdFdp
dGhFbGVtZW50UmVjdDppbmZvcm1hdGlvbi5lbGVtZW50UmVjdF0pOwogCiAgICAgX2VuY2xvc2lu
Z1dpbmRvdyA9IGFkb3B0TlMoW1tXS0RhdGFMaXN0U3VnZ2VzdGlvbldpbmRvdyBhbGxvY10gaW5p
dFdpdGhDb250ZW50UmVjdDpOU1plcm9SZWN0IHN0eWxlTWFzazooTlNXaW5kb3dTdHlsZU1hc2tU
aXRsZWQgfCBOU1dpbmRvd1N0eWxlTWFza0Z1bGxTaXplQ29udGVudFZpZXcpIGJhY2tpbmc6TlNC
YWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOwpAQCAtMzAyLDcgKzM2Miw3IEBAIC0gKFN0
cmluZyljdXJyZW50U2VsZWN0ZWRTdHJpbmcKICAgICBOU0ludGVnZXIgc2VsZWN0ZWRSb3cgPSBb
X3RhYmxlIHNlbGVjdGVkUm93XTsKIAogICAgIGlmIChzZWxlY3RlZFJvdyA+PSAwICYmIHN0YXRp
Y19jYXN0PHNpemVfdD4oc2VsZWN0ZWRSb3cpIDwgX3N1Z2dlc3Rpb25zLnNpemUoKSkKLSAgICAg
ICAgcmV0dXJuIF9zdWdnZXN0aW9ucy5hdChzZWxlY3RlZFJvdyk7CisgICAgICAgIHJldHVybiBf
c3VnZ2VzdGlvbnMuYXQoc2VsZWN0ZWRSb3cpLnZhbHVlOwogCiAgICAgcmV0dXJuIFN0cmluZygp
OwogfQpAQCAtMzEwLDYgKzM3MCw3IEBAIC0gKFN0cmluZyljdXJyZW50U2VsZWN0ZWRTdHJpbmcK
IC0gKHZvaWQpdXBkYXRlV2l0aEluZm9ybWF0aW9uOihXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rp
b25JbmZvcm1hdGlvbiYmKWluZm9ybWF0aW9uCiB7CiAgICAgX3N1Z2dlc3Rpb25zID0gV1RGTW92
ZShpbmZvcm1hdGlvbi5zdWdnZXN0aW9ucyk7CisgICAgX3Nob3dEaXZpZGVyc0JldHdlZW5DZWxs
cyA9IHNob3VsZFNob3dEaXZpZGVyc0JldHdlZW5DZWxscyhfc3VnZ2VzdGlvbnMpOwogICAgIFtf
dGFibGUgcmVsb2FkXTsKIAogICAgIFtfZW5jbG9zaW5nV2luZG93IHNldEZyYW1lOltzZWxmIGRy
b3Bkb3duUmVjdEZvckVsZW1lbnRSZWN0OmluZm9ybWF0aW9uLmVsZW1lbnRSZWN0XSBkaXNwbGF5
OllFU107CkBAIC0zMzksNiArNDAwLDcgQEAgLSAodm9pZCltb3ZlU2VsZWN0aW9uQnlEaXJlY3Rp
b246KGNvbnN0IFN0cmluZyYpZGlyZWN0aW9uCiAgICAgICAgIG5ld1NlbGVjdGlvbiA9IChkaXJl
Y3Rpb24gPT0gIlVwIikgPyAoc2l6ZSAtIDEpIDogMDsKIAogICAgIFtfdGFibGUgc2VsZWN0Um93
SW5kZXhlczpbTlNJbmRleFNldCBpbmRleFNldFdpdGhJbmRleDpuZXdTZWxlY3Rpb25dIGJ5RXh0
ZW5kaW5nU2VsZWN0aW9uOk5PXTsKKyAgICBbX3RhYmxlIHNjcm9sbFJvd1RvVmlzaWJsZTpuZXdT
ZWxlY3Rpb25dOwogCiAgICAgLy8gTm90aWZ5IGFjY2Vzc2liaWxpdHkgY2xpZW50cyBvZiBuZXcg
c2VsZWN0aW9uLgogICAgIE5TU3RyaW5nICpjdXJyZW50U2VsZWN0ZWRTdHJpbmcgPSBbc2VsZiBj
dXJyZW50U2VsZWN0ZWRTdHJpbmddOwpAQCAtMzY5LDggKzQzMSwxNiBAQCAtICh2b2lkKWludmFs
aWRhdGUKIC0gKE5TUmVjdClkcm9wZG93blJlY3RGb3JFbGVtZW50UmVjdDooY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYpcmVjdAogewogICAgIE5TUmVjdCB3aW5kb3dSZWN0ID0gW1tfcHJlc2VudGlu
Z1ZpZXcgd2luZG93XSBjb252ZXJ0UmVjdFRvU2NyZWVuOltfcHJlc2VudGluZ1ZpZXcgY29udmVy
dFJlY3Q6cmVjdCB0b1ZpZXc6bmlsXV07Ci0gICAgYXV0byB2aXNpYmxlU3VnZ2VzdGlvbkNvdW50
ID0gc3RkOjptaW4oX3N1Z2dlc3Rpb25zLnNpemUoKSwgZHJvcGRvd25NYXhTdWdnZXN0aW9ucyk7
Ci0gICAgQ0dGbG9hdCBoZWlnaHQgPSB2aXNpYmxlU3VnZ2VzdGlvbkNvdW50ICogKGRyb3Bkb3du
Um93SGVpZ2h0ICsgW190YWJsZSBpbnRlcmNlbGxTcGFjaW5nXS5oZWlnaHQpICsgKGRyb3Bkb3du
VmVydGljYWxQYWRkaW5nICogMik7CisKKyAgICBDR0Zsb2F0IHRvdGFsQ2VsbEhlaWdodCA9IDA7
CisgICAgZm9yIChhdXRvJiBzdWdnZXN0aW9uIDogX3N1Z2dlc3Rpb25zKQorICAgICAgICB0b3Rh
bENlbGxIZWlnaHQgKz0gc3VnZ2VzdGlvbi5sYWJlbC5pc0VtcHR5KCkgPyBkcm9wZG93blJvd0hl
aWdodFdpdGhvdXRMYWJlbCA6IGRyb3Bkb3duUm93SGVpZ2h0V2l0aExhYmVsOworCisgICAgQ0dG
bG9hdCB0b3RhbEludGVyY2VsbFNwYWNpbmdBbmRQYWRkaW5nID0gZHJvcGRvd25WZXJ0aWNhbFBh
ZGRpbmcgKiAyOworICAgIGlmIChfc3VnZ2VzdGlvbnMuc2l6ZSgpID4gMSkKKyAgICAgICAgdG90
YWxJbnRlcmNlbGxTcGFjaW5nQW5kUGFkZGluZyArPSAoX3N1Z2dlc3Rpb25zLnNpemUoKSAtIDEp
ICogW190YWJsZSBpbnRlcmNlbGxTcGFjaW5nXS5oZWlnaHQ7CisKKyAgICBDR0Zsb2F0IGhlaWdo
dCA9IHRvdGFsSW50ZXJjZWxsU3BhY2luZ0FuZFBhZGRpbmcgKyBzdGQ6Om1pbjxDR0Zsb2F0Pih0
b3RhbENlbGxIZWlnaHQsIG1heGltdW1Ub3RhbEhlaWdodEZvckRyb3Bkb3duQ2VsbHMpOwogICAg
IHJldHVybiBOU01ha2VSZWN0KE5TTWluWCh3aW5kb3dSZWN0KSwgTlNNaW5ZKHdpbmRvd1JlY3Qp
IC0gaGVpZ2h0IC0gZHJvcGRvd25Ub3BNYXJnaW4sIHJlY3Qud2lkdGgoKSwgaGVpZ2h0KTsKIH0K
IApAQCAtNDA0LDcgKzQ3NCwxMyBAQCAtIChOU0ludGVnZXIpbnVtYmVyT2ZSb3dzSW5UYWJsZVZp
ZXc6KE5TVGFibGVWaWV3ICopdGFibGVWaWV3CiAKIC0gKENHRmxvYXQpdGFibGVWaWV3OihOU1Rh
YmxlVmlldyAqKXRhYmxlVmlldyBoZWlnaHRPZlJvdzooTlNJbnRlZ2VyKXJvdwogewotICAgIHJl
dHVybiBkcm9wZG93blJvd0hlaWdodDsKKyAgICBhdXRvIHN1Z2dlc3Rpb25JbmRleCA9IHN0YXRp
Y19jYXN0PHNpemVfdD4ocm93KTsKKyAgICBpZiAoc3VnZ2VzdGlvbkluZGV4ID49IF9zdWdnZXN0
aW9ucy5zaXplKCkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybiAwOworICAgIH0KKworICAgIHJldHVybiBfc3VnZ2VzdGlvbnMuYXQoc3VnZ2VzdGlvbklu
ZGV4KS5sYWJlbC5pc0VtcHR5KCkgPyBkcm9wZG93blJvd0hlaWdodFdpdGhvdXRMYWJlbCA6IGRy
b3Bkb3duUm93SGVpZ2h0V2l0aExhYmVsOwogfQogCiAtIChOU1RhYmxlUm93VmlldyAqKXRhYmxl
VmlldzooTlNUYWJsZVZpZXcgKil0YWJsZVZpZXcgcm93Vmlld0ZvclJvdzooTlNJbnRlZ2VyKXJv
dwpAQCAtNDE3LDExICs0OTMsMTMgQEAgLSAoTlNWaWV3ICopdGFibGVWaWV3OihOU1RhYmxlVmll
dyAqKXRhYmxlVmlldyB2aWV3Rm9yVGFibGVDb2x1bW46KE5TVGFibGVDb2x1bW4KICAgICBXS0Rh
dGFMaXN0U3VnZ2VzdGlvblZpZXcgKnJlc3VsdCA9IFt0YWJsZVZpZXcgbWFrZVZpZXdXaXRoSWRl
bnRpZmllcjpzdWdnZXN0aW9uQ2VsbFJldXNlSWRlbnRpZmllciBvd25lcjpzZWxmXTsKIAogICAg
IGlmICghcmVzdWx0KSB7Ci0gICAgICAgIHJlc3VsdCA9IFtbW1dLRGF0YUxpc3RTdWdnZXN0aW9u
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIHRhYmxlVmlldy5mcmFt
ZS5zaXplLndpZHRoLCBkcm9wZG93blJvd0hlaWdodCldIGF1dG9yZWxlYXNlXTsKKyAgICAgICAg
cmVzdWx0ID0gW1tbV0tEYXRhTGlzdFN1Z2dlc3Rpb25WaWV3IGFsbG9jXSBpbml0XSBhdXRvcmVs
ZWFzZV07CiAgICAgICAgIFtyZXN1bHQgc2V0SWRlbnRpZmllcjpzdWdnZXN0aW9uQ2VsbFJldXNl
SWRlbnRpZmllcl07CiAgICAgfQogCi0gICAgcmVzdWx0LnRleHQgPSBfc3VnZ2VzdGlvbnMuYXQo
cm93KTsKKyAgICBhdXRvJiBzdWdnZXN0aW9uID0gX3N1Z2dlc3Rpb25zLmF0KHJvdyk7CisgICAg
cmVzdWx0LnNob3VsZFNob3dCb3R0b21EaXZpZGVyID0gX3Nob3dEaXZpZGVyc0JldHdlZW5DZWxs
cyAmJiByb3cgPCBzdGF0aWNfY2FzdDxOU0ludGVnZXI+KF9zdWdnZXN0aW9ucy5zaXplKCkgLSAx
KTsKKyAgICBbcmVzdWx0IHNldFZhbHVlOnN1Z2dlc3Rpb24udmFsdWUgbGFiZWw6c3VnZ2VzdGlv
bi5sYWJlbF07CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApp
bmRleCBhNjdmYjAzNDlmZWJlYjQ4ZmUzNTJlNTE0MzM5NDY1YmRlNGU2ZDBlLi41NDNkZTIzZGE4
OWUxYjc0ZGJhOTdhYTFhMzk1M2YyY2Y2OWE0ZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApA
QCAtNzk2LDYgKzc5NiwxNSBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGF0YUxpc3RTdWdnZXN0aW9uUGlj
a2VyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZURhdGFMaXN0U3VnZ2VzdAogICAgIHJldHVybiBt
YWtlVW5pcXVlPFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcj4obV9wYWdlLCBjbGllbnQpOwog
fQogCitib29sIFdlYkNocm9tZUNsaWVudDo6Y2FuU2hvd0RhdGFMaXN0U3VnZ2VzdGlvbkxhYmVs
cygpIGNvbnN0Cit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHJldHVybiB0cnVlOworI2Vsc2UK
KyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwogI2VuZGlmCiAKIHZvaWQgV2ViQ2hyb21l
Q2xpZW50OjpydW5PcGVuUGFuZWwoRnJhbWUmIGZyYW1lLCBGaWxlQ2hvb3NlciYgZmlsZUNob29z
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggOTIwZGU5M2M5ZjJmMDM3YjYxNGNiYTg4MmExMmYw
MDMyNDc4YjIyYS4uYTg1OTMxYzcxMDZmY2I0NjAxY2NjZGM5ZDUyMzY1NDYwOGM4NjY4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaApAQCAtMTQ5LDYgKzE0OSw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFC
TEUoREFUQUxJU1RfRUxFTUVOVCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6RGF0YUxp
c3RTdWdnZXN0aW9uUGlja2VyPiBjcmVhdGVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoV2ViQ29y
ZTo6RGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudCYpIGZpbmFsOworICAgIGJvb2wgY2FuU2hvd0Rh
dGFMaXN0U3VnZ2VzdGlvbkxhYmVscygpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKICNpZiBFTkFC
TEUoSU9TX1RPVUNIX0VWRU5UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggOWYyMzMxN2I4ZjkzYmI0
NzIzMmM2NWNlNjM5MzE3NjIzYTk4Yzc4OS4uYTdkMDY5MGJmYWRiMzdiNWViODI1OGVkMTk2NGQz
YTBjNjM4N2QyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTE0NCw2ICsxNDQsNyBAQCBwcml2YXRl
OgogCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcj4gY3JlYXRlRGF0YUxpc3RTdWdnZXN0aW9u
UGlja2VyKFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQmKSBmaW5hbDsKKyAgICBi
b29sIGNhblNob3dEYXRhTGlzdFN1Z2dlc3Rpb25MYWJlbHMoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBmYWxzZTsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDNh
ZmMwOWIwYThlYjhlZWVhN2E0MzczNTIzYzMzMTE4MWIwY2VlOWMuLmMzMjUxNjIzNWY0MzFmMGNk
MTk3MDAwMDA0ZjMxYTdmMTczY2ZjYzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMC0wMy0z
MSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBEYXRh
bGlzdCBvcHRpb24ncyBsYWJlbCBub3QgdXNlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNzY4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTM2
MTE4Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgYSB0ZXN0IHRvIHZlcmlmeSB0aGF0IHdoZW4gZGF0YWxpc3Qgc3VnZ2VzdGlvbnMgaW5jb3Jw
b3JhdGUgb3B0aW9uIGxhYmVscyBpbnRvIHRoZSBkaXNwbGF5ZWQgdGV4dAorICAgICAgICBzdWdn
ZXN0aW9ucywgdGhleSBhcmUgbWF0Y2hlZCBhZ2FpbnN0IHdoZW4gY2hhbmdpbmcgdGhlIHZhbHVl
IG9mIHRoZSBpbnB1dCBmaWVsZCwgYW5kIGNhbiBiZSBzZWxlY3RlZC4gVGhpcyBpcworICAgICAg
ICBleHBlY3RlZCB0byBiZSB0aGUgY2FzZSBvbiBtYWNPUywgYnV0IG5vdCBvbiBvdGhlciBwbGF0
Zm9ybXMgKGZvciB0aGUgdGltZSBiZWluZykuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2RhdGFs
aXN0L2RhdGFsaXN0LW9wdGlvbi1sYWJlbHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0LW9wdGlvbi1sYWJlbHMuaHRtbDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL2Zhc3QvZm9ybXMvZGF0YWxpc3QvZGF0YWxpc3Qtb3B0
aW9uLWxhYmVscy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9m
YXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0LW9wdGlvbi1sYWJlbHMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKwogMjAyMC0wMy0zMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBzY3JvbGxJbnRvVmlldygpIGVycm9uZW91c2x5IHNjcm9sbHMgbm9uLWNv
bnRhaW5pbmcgYmxvY2sgc2Nyb2xsZXJzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2RhdGFsaXN0L2RhdGFsaXN0LW9wdGlvbi1sYWJlbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC1vcHRpb24tbGFiZWxzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44Nzk2MTljMjgzMjBmZmJmYTkzZTdkODkyMGViYjM2YjA0NThmZDFi
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRh
bGlzdC1vcHRpb24tbGFiZWxzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUaGlzIHRl
c3QgdmVyaWZpZXMgdGhhdCB3aGVuIG9wdGlvbiBlbGVtZW50IGxhYmVscyBhcmUgaW5jbHVkZWQg
aW4gZGF0YWxpc3Qgc3VnZ2VzdGlvbnMsIHRoZSB0ZXh0IG9mIHRoZSBsYWJlbCBpcyBjb25zaWRl
cmVkIHdoZW4gY29tcHV0aW5nIG1hdGNoaW5nIGRhdGFsaXN0IHN1Z2dlc3Rpb25zLiBPdGhlcndp
c2UsIGlmIGxhYmVscyBhcmUgbm90IGluY2x1ZGVkIGluIHN1Z2dlc3Rpb25zLCB0aGVyZSBzaG91
bGQgYmUgbm8gZGF0YWxpc3Qgc3VnZ2VzdGlvbnMgc2hvd24uIFRvIG1hbnVhbGx5IHJ1biB0aGUg
dGVzdCwgZm9jdXMgdGhlIGlucHV0IGVsZW1lbnQgYW5kIHR5cGUgJ2UnLiBUaGVyZSBzaG91bGQg
ZWl0aGVyIGJlIG5vIG1hdGNoZXMgb3IgdHdvIG1hdGNoZXMgKGFuZCBzZWxlY3RpbmcgdGhlIHNl
Y29uZCBtYXRjaCBzaG91bGQgc2V0IHRoZSB2YWx1ZSB0byAnYmF6JykuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIGlucHV0LnZhbHVlIGlzICJiYXoiCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC1vcHRpb24tbGFiZWxzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0LW9wdGlvbi1sYWJlbHMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45OTE4YTg3NDc5OTVmNDdlMDYwMDgyNDI5N2UyZWNjNWNkZWE1YzFl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRh
bGlzdC1vcHRpb24tbGFiZWxzLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAg
ICAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgICAgIGFkZEV2ZW50TGlz
dGVuZXIoImxvYWQiLCBhc3luYyAoKSA9PiB7CisgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24o
IlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdoZW4gb3B0aW9uIGVsZW1lbnQgbGFiZWxzIGFyZSBp
bmNsdWRlZCBpbiBkYXRhbGlzdCBzdWdnZXN0aW9ucywgdGhlIHRleHQgb2YgdGhlIGxhYmVsIGlz
IGNvbnNpZGVyZWQgd2hlbiBjb21wdXRpbmcgbWF0Y2hpbmcgZGF0YWxpc3Qgc3VnZ2VzdGlvbnMu
IE90aGVyd2lzZSwgaWYgbGFiZWxzIGFyZSBub3QgaW5jbHVkZWQgaW4gc3VnZ2VzdGlvbnMsIHRo
ZXJlIHNob3VsZCBiZSBubyBkYXRhbGlzdCBzdWdnZXN0aW9ucyBzaG93bi4gVG8gbWFudWFsbHkg
cnVuIHRoZSB0ZXN0LCBmb2N1cyB0aGUgaW5wdXQgZWxlbWVudCBhbmQgdHlwZSAnZScuIFRoZXJl
IHNob3VsZCBlaXRoZXIgYmUgbm8gbWF0Y2hlcyBvciB0d28gbWF0Y2hlcyAoYW5kIHNlbGVjdGlu
ZyB0aGUgc2Vjb25kIG1hdGNoIHNob3VsZCBzZXQgdGhlIHZhbHVlIHRvICdiYXonKS4iKTsKKyAg
ICAgICAgICAgICAgICBpbnB1dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImlucHV0Iik7CisK
KyAgICAgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0ZUVsZW1lbnRBbmRXYWl0Rm9y
SW5wdXRTZXNzaW9uKGlucHV0KTsKKyAgICAgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci50eXBl
Q2hhcmFjdGVyKCJlIik7CisgICAgICAgICAgICAgICAgaWYgKGF3YWl0IFVJSGVscGVyLmlzU2hv
d2luZ0RhdGFMaXN0U3VnZ2VzdGlvbnMoKSkgeworICAgICAgICAgICAgICAgICAgICBhd2FpdCBV
SUhlbHBlci5hY3RpdmF0ZURhdGFMaXN0U3VnZ2VzdGlvbigxKTsKKyAgICAgICAgICAgICAgICAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJpbnB1dC52YWx1ZSIsICJiYXoiKTsKKyAgICAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJOb3Qgc2hv
d2luZyBzdWdnZXN0aW9ucy4iKTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJpbnB1dC52YWx1ZSIsICJlIik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgaW5wdXQuYmx1cigpOworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eT4KKyAgICAgICAgPGlucHV0IGxpc3Q9Imxpc3QiIGF1dG9jYXBpdGFsaXplPSJub25lIj4KKyAg
ICAgICAgPGRhdGFsaXN0IGlkPSJsaXN0Ij4KKyAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImZv
byIgbGFiZWw9Im9uZSI+PC9vcHRpb24+CisgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJiYXIi
PnR3bzwvb3B0aW9uPgorICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iYmF6IiBsYWJlbD0idGhy
ZWUiPmZvdXI8L29wdGlvbj4KKyAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImdhcnBseSI+PC9v
cHRpb24+CisgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJxdXgiIGxhYmVsPSJxdXgiPnF1eDwv
b3B0aW9uPgorICAgICAgICAgICAgPG9wdGlvbiBsYWJlbD0iZml2ZSI+PC9vcHRpb24+CisgICAg
ICAgIDwvZGF0YWxpc3Q+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2Zvcm1z
L2RhdGFsaXN0L2RhdGFsaXN0LW9wdGlvbi1sYWJlbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZm9ybXMvZGF0YWxpc3QvZGF0YWxpc3Qtb3B0aW9uLWxhYmVs
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDcwMTlkYzRhZTU0Njk2YWM1MGU4ZWE3MTBjMTI5
OTZjMDlmNTZmNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9m
YXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0LW9wdGlvbi1sYWJlbHMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTEgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdoZW4gb3B0aW9uIGVsZW1l
bnQgbGFiZWxzIGFyZSBpbmNsdWRlZCBpbiBkYXRhbGlzdCBzdWdnZXN0aW9ucywgdGhlIHRleHQg
b2YgdGhlIGxhYmVsIGlzIGNvbnNpZGVyZWQgd2hlbiBjb21wdXRpbmcgbWF0Y2hpbmcgZGF0YWxp
c3Qgc3VnZ2VzdGlvbnMuIE90aGVyd2lzZSwgaWYgbGFiZWxzIGFyZSBub3QgaW5jbHVkZWQgaW4g
c3VnZ2VzdGlvbnMsIHRoZXJlIHNob3VsZCBiZSBubyBkYXRhbGlzdCBzdWdnZXN0aW9ucyBzaG93
bi4gVG8gbWFudWFsbHkgcnVuIHRoZSB0ZXN0LCBmb2N1cyB0aGUgaW5wdXQgZWxlbWVudCBhbmQg
dHlwZSAnZScuIFRoZXJlIHNob3VsZCBlaXRoZXIgYmUgbm8gbWF0Y2hlcyBvciB0d28gbWF0Y2hl
cyAoYW5kIHNlbGVjdGluZyB0aGUgc2Vjb25kIG1hdGNoIHNob3VsZCBzZXQgdGhlIHZhbHVlIHRv
ICdiYXonKS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgTm90IHNob3dp
bmcgc3VnZ2VzdGlvbnMuCitQQVNTIGlucHV0LnZhbHVlIGlzICJlIgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2lvcy9mYXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0LW9wdGlvbi1sYWJl
bHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL2Zhc3QvZm9ybXMvZGF0
YWxpc3QvZGF0YWxpc3Qtb3B0aW9uLWxhYmVscy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDcw
MTlkYzRhZTU0Njk2YWM1MGU4ZWE3MTBjMTI5OTZjMDlmNTZmNgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9mYXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0LW9w
dGlvbi1sYWJlbHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1RoaXMgdGVzdCB2ZXJp
ZmllcyB0aGF0IHdoZW4gb3B0aW9uIGVsZW1lbnQgbGFiZWxzIGFyZSBpbmNsdWRlZCBpbiBkYXRh
bGlzdCBzdWdnZXN0aW9ucywgdGhlIHRleHQgb2YgdGhlIGxhYmVsIGlzIGNvbnNpZGVyZWQgd2hl
biBjb21wdXRpbmcgbWF0Y2hpbmcgZGF0YWxpc3Qgc3VnZ2VzdGlvbnMuIE90aGVyd2lzZSwgaWYg
bGFiZWxzIGFyZSBub3QgaW5jbHVkZWQgaW4gc3VnZ2VzdGlvbnMsIHRoZXJlIHNob3VsZCBiZSBu
byBkYXRhbGlzdCBzdWdnZXN0aW9ucyBzaG93bi4gVG8gbWFudWFsbHkgcnVuIHRoZSB0ZXN0LCBm
b2N1cyB0aGUgaW5wdXQgZWxlbWVudCBhbmQgdHlwZSAnZScuIFRoZXJlIHNob3VsZCBlaXRoZXIg
YmUgbm8gbWF0Y2hlcyBvciB0d28gbWF0Y2hlcyAoYW5kIHNlbGVjdGluZyB0aGUgc2Vjb25kIG1h
dGNoIHNob3VsZCBzZXQgdGhlIHZhbHVlIHRvICdiYXonKS4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1MgTm90IHNob3dpbmcgc3VnZ2VzdGlvbnMuCitQQVNTIGlucHV0LnZh
bHVlIGlzICJlIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395096</attachid>
            <date>2020-03-31 14:57:31 -0700</date>
            <delta_ts>2020-03-31 16:11:27 -0700</delta_ts>
            <desc>Fix GTK build</desc>
            <filename>bug-201768-20200331145730.patch</filename>
            <type>text/plain</type>
            <size>40756</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MjQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDhmZjAxMmZmYjJjZjA4
ZmRmODk0YzRmNGQ4ZmZkN2YyN2I2NWZhNi4uODU3MTNmNmE1MWFkYWQxYmE2NTE1ZTNmNDQ3N2Vm
NjI2NmVhNzZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTAzLTMxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIERhdGFsaXN0IG9w
dGlvbidzIGxhYmVsIG5vdCB1c2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDE3NjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1MzYxMTg2Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFJlZmFjdG9yIERh
dGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uJ3Mgc3VnZ2VzdGlvbnMgdG8gaW5jbHVkZSBsYWJl
bCB0ZXh0IGFzIHdlbGwgYXMgdmFsdWVzLCBhbmQgdGhlbiBhZGp1c3QKKyAgICAgICAgVGV4dEZp
ZWxkSW5wdXRUeXBlOjpzdWdnZXN0aW9ucygpIHRvIG1hdGNoIGxhYmVsIHRleHQgYXMgd2VsbCBh
cyB2YWx1ZXMgZm9yIHBvcnRzIHRoYXQgYXJlIGNhcGFibGUgb2Ygc2hvd2luZworICAgICAgICBs
YWJlbCB0ZXh0IGluIGRhdGFsaXN0IHN1Z2dlc3Rpb24gVUkuCisKKyAgICAgICAgVGVzdDogZmFz
dC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC1vcHRpb24tbGFiZWxzLmh0bWwKKworICAgICAgICAq
IGh0bWwvRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24uaDoKKworICAgICAgICBJbnRyb2R1
Y2UgRGF0YUxpc3RTdWdnZXN0aW9uLCBhIHdyYXBwZXIgYXJvdW5kIGEgdmFsdWUgYW5kIGxhYmVs
LiBDdXJyZW50bHksIHRoZSBsaXN0IG9mIGRhdGFsaXN0IHN1Z2dlc3Rpb25zCisgICAgICAgIGlz
IG9ubHkgYSBgVmVjdG9yPFN0cmluZz5gOyBjaGFuZ2UgaXQgdG8gYmUgYSBgVmVjdG9yPERhdGFM
aXN0U3VnZ2VzdGlvbj5gIGluc3RlYWQuCisKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFMaXN0U3Vn
Z2VzdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2Vz
dGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkluZm9y
bWF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0
aW9uSW5mb3JtYXRpb246OmRlY29kZSk6CisKKyAgICAgICAgTW92ZSBlbmNvZGluZyBhbmQgZGVj
b2RpbmcgZm9yIERhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uIG91dCBvZiBXZWJDb3JlQXJn
dW1lbnRDb2RlcnMgYW5kIGludG8gV2ViQ29yZS4KKworICAgICAgICAqIGh0bWwvVGV4dEZpZWxk
SW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6bGlz
dEF0dHJpYnV0ZVRhcmdldENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5w
dXRUeXBlOjpzdWdnZXN0aW9ucyk6CisKKyAgICAgICAgV2hlbiBjb21wdXRpbmcgc3VnZ2VzdGlv
bnMsIG1hdGNoIGxhYmVsIHRleHQgaW4gYWRkaXRpb24gdG8gdmFsdWVzIG9uIHBvcnRzIHRoYXQg
ZGlzcGxheSBsYWJlbCB0ZXh0IGluIHRoZQorICAgICAgICBjaHJvbWU7IGZvciB0aGUgdGltZSBi
ZWluZywgdGhpcyBpcyBvbmx5IHRoZSBjYXNlIGZvciBtYWNPUywgYnV0IHdpbGwgYmUgZXh0ZW5k
ZWQgdG8gaU9TIGFzIHdlbGwgaW4gYSBmdXR1cmUKKyAgICAgICAgcGF0Y2guIE5vdGUgdGhhdCB3
ZSBkb24ndCBwbHVtYiBsYWJlbCB0ZXh0IGlmIGl0IGlzIGFscmVhZHkgdGhlIHNhbWUgYXMgdGhl
IHZhbHVlLCB0byBhdm9pZCBkdXBsaWNhdGUgc3RyaW5ncworICAgICAgICBmcm9tIHNob3dpbmcg
dXAuCisKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6ZGlkQ2xvc2VTdWdn
ZXN0aW9ucyk6CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaDoKKyAgICAgICAg
KiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoK
KworICAgICAgICBBZGQgYSBjaHJvbWUgY2xpZW50IGhvb2sgdG8gcmV0dXJuIHdoZXRoZXIgb3Ig
bm90IHRoZSBjbGllbnQgc2hvd3MgbGFiZWwgdGV4dCBpbiBpdHMgZGF0YWxpc3QgVUkuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9EYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50Lmg6CisKIDIwMjAtMDMt
MzAgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgc2Ny
b2xsSW50b1ZpZXcoKSBlcnJvbmVvdXNseSBzY3JvbGxzIG5vbi1jb250YWluaW5nIGJsb2NrIHNj
cm9sbGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCA0ZmRhMjZiMTc2Njk5Y2IyMDk4MTc4NTgyYzZmMzljZTljN2E5
MTFhLi5kYTEwYmNkOTkwZmM4ODA5ODg4ZWYwNzdkOGRiMDg4NWEyYWVkNWYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDkxIEBACisyMDIwLTAzLTMxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgorCisgICAgICAgIERhdGFsaXN0IG9wdGlvbidzIGxhYmVsIG5vdCB1c2VkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE3NjgKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1MzYxMTg2PgorCisgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgorCisgICAgICAgIEFkZCBzdXBwb3J0IG9uIG1hY09TIGZvciBzaG93aW5nIG9w
dGlvbiBsYWJlbHMgaW4gZGF0YWxpc3Qgc3VnZ2VzdGlvbnMuCisKKyAgICAgICAgKiBTaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxE
YXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbj46OmVuY29kZSk6IERlbGV0ZWQuCisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24+OjpkZWNv
ZGUpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoK
KworICAgICAgICBSZW1vdmUgV2ViQ29yZUFyZ3VtZW50Q29kZXJzIGxvZ2ljIGZvciBlbmNvZGlu
ZyBhbmQgZGVjb2RpbmcgRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24uIFNlZQorICAgICAg
ICBEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbi5oIGluIFdlYkNvcmUgZm9yIG1vcmUgZGV0
YWlsLgorCisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJv
cGRvd25HdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJv
cGRvd25HdGs6OnNob3cpOgorCisgICAgICAgIFR3ZWFrIEdUSyBjb2RlIHRvIGFkanVzdCBmb3Ig
dGhlIGNoYW5nZSBmcm9tIGBTdHJpbmdgIHRvIGBEYXRhTGlzdFN1Z2dlc3Rpb25gLgorCisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MubW06
CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2wgZGlkU2VsZWN0T3B0aW9u
QXRJbmRleDpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbCB0ZXh0
U3VnZ2VzdGlvbnNdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbCBz
dWdnZXN0aW9uQXRJbmRleDpdKToKKworICAgICAgICBBZGp1c3Qgc29tZSBpT1MgY29kZXBhdGhz
IHRvIHVzZSBEYXRhTGlzdFN1Z2dlc3Rpb246OnZhbHVlIGFzIHRoZSB2YWx1ZSBzdHJpbmcgdG8g
ZGlzcGxheS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViRGF0YUxpc3RTdWdnZXN0aW9u
c0Ryb3Bkb3duTWFjLm1tOgorCisgICAgICAgIFR3ZWFrIHNldmVyYWwgVUkgY29uc3RhbnRzLiBB
IHN1Z2dlc3Rpb24gY2VsbCBtYXkgbm93IGJlIGVpdGhlciAyMCBvciA0MHB0IHRhbGwsIGRlcGVu
ZGluZyBvbiB3aGV0aGVyIGl0IGhhcworICAgICAgICBsYWJlbCB0ZXh0IHRvIHNob3cuCisKKyAg
ICAgICAgQ3VycmVudGx5LCB0aGUgbWF4aW11bSBjb21iaW5lZCBoZWlnaHQgb2YgdGhlIHRhYmxl
IHZpZXcgY2VsbHMgaXMgMTIwIChub3QgaW5jbHVkaW5nIHNwYWNpbmcgYmV0d2VlbiBjZWxscyBh
bmQKKyAgICAgICAgdmVydGljYWwgcGFkZGluZyBhcm91bmQgdGhlIHRvcCBhbmQgYm90dG9tIG9m
IHRoZSB0YWJsZSB2aWV3KSwgc2luY2UgdGhlIG1heGltdW0gbnVtYmVyIG9mIGNlbGxzIHRvIHNo
b3cgaXMgNgorICAgICAgICBhbmQgZWFjaCBjZWxsIGlzIDIwcHQgdGFsbC4gTWFpbnRhaW4gdGhp
cyBjb25zdGFudCBieSBtYWtpbmcgdGhlIG1heGltdW0gY2VsbCBoZWlnaHQgMTIwLCB3aGljaCBh
Y2NvbW9kYXRlcworICAgICAgICBlaXRoZXIgdGhyZWUgbGFiZWxlZCBjZWxscywgb3IgNiB1bmxh
YmVsZWQgY2VsbHMgKGkuZS4gdG8gbWF0Y2ggc2hpcHBpbmcgYmVoYXZpb3IpLgorCisgICAgICAg
ICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uVmlldyBpbml0V2l0aEZyYW1lOl0pOgorICAgICAgICAo
LVtXS0RhdGFMaXN0U3VnZ2VzdGlvblZpZXcgbGF5b3V0XSk6CisKKyAgICAgICAgTWFpbnRhaW4g
dHdvIHRleHQgZmllbGRzIG9yIHZhbHVlIGFuZCAob3B0aW9uYWxseSkgbGFiZWwgdGV4dDogYF92
YWx1ZUZpZWxkYCBhbmQgYF9sYWJlbEZpZWxkYC4gVGhlIHZhbHVlIGZpZWxkCisgICAgICAgIGZp
bGxzIHRoZSBib3VuZHMgb2YgdGhlIGNlbGwgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlcmUgaXMgbm8g
bGFiZWwgdGV4dCwgYnV0IGZpbGxzIG9ubHkgdGhlIHRvcCBoYWxmIG9mIHRoZSBjZWxsCisgICAg
ICAgIGluIHRoZSBjYXNlIHdoZXJlIHRoZXJlIGlzIGxhYmVsIHRleHQuIFRoZSBsYWJlbCBmaWVs
ZCB0YWtlcyB0aGUgYm90dG9tIGhhbGYgb2YgdGhlIGNlbGwgaW4gdGhpcyBjYXNlLgorCisgICAg
ICAgIEFkZGl0aW9uYWxseSwgYWRkIGEgZGl2aWRlciB2aWV3IHRoYXQgbWF5IGFwcGVhciBhdCB0
aGUgdmVyeSBib3R0b20gb2YgZWFjaCBjZWxsLiBUaGlzIGRpdmlkZXIgdmlldyBpcyBwcmVzZW50
CisgICAgICAgIHdoZW4gb25lIG9yIG1vcmUgc3VnZ2VzdGlvbnMgaW4gdGhlIGRhdGFsaXN0IGFy
ZSBsYWJlbGVkLgorCisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uVmlldyBzZXRWYWx1
ZTpsYWJlbDpdKToKKworICAgICAgICBSZW5hbWVkIGZyb20gLXNldFRleHQ6LiBBZGQgYSBsYWJl
bCBzdHJpbmcgYXJndW1lbnQgYXMgd2VsbC4KKworICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2Vz
dGlvblZpZXcgc2V0U2hvdWxkU2hvd0JvdHRvbURpdmlkZXI6XSk6CisKKyAgICAgICAgQWRkIGdl
dHRlcnMgYW5kIHNldHRlcnMgZm9yIHRoZSAtc2hvdWxkU2hvd0JvdHRvbURpdmlkZXIgcHJvcGVy
dHksIHdoaWNoIGNhbiBiZSB1c2VkIHRvIG1ha2UgdGhlIGRpdmlkZXIgdmlldworICAgICAgICB2
aXNpYmxlIG9yIGhpZGRlbi4KKworICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvblZpZXcg
c2hvdWxkU2hvd0JvdHRvbURpdmlkZXJdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rp
b25WaWV3IHNldEJhY2tncm91bmRTdHlsZTpdKToKKworICAgICAgICBVc2UgLVtOU0NvbG9yIHNl
Y29uZGFyeUxhYmVsQ29sb3JdIGZvciB0aGUgbGFiZWwgdGV4dCBmaWVsZC4KKworICAgICAgICAo
c2hvdWxkU2hvd0RpdmlkZXJzQmV0d2VlbkNlbGxzKToKKworICAgICAgICBBZGQgYSBoZWxwZXIg
bWV0aG9kIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSB0YWJsZSB2aWV3IHNob3VsZCBiZSBzaG93
aW5nIGNsZWFyIGRpdmlkZXJzIGJldHdlZW4gZWFjaCBpdGVtLgorICAgICAgICBXZSBvbmx5IGRv
IHNvIGlmIHRoZXJlIGFyZSBvbmUgb3IgbW9yZSBsYWJlbHMgdG8gYmUgc2hvd24uCisKKyAgICAg
ICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbGxlciBpbml0V2l0aEluZm9ybWF0aW9u
OmluVmlldzpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbGxlciBj
dXJyZW50U2VsZWN0ZWRTdHJpbmddKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25z
Q29udHJvbGxlciB1cGRhdGVXaXRoSW5mb3JtYXRpb246XSk6CisgICAgICAgICgtW1dLRGF0YUxp
c3RTdWdnZXN0aW9uc0NvbnRyb2xsZXIgbW92ZVNlbGVjdGlvbkJ5RGlyZWN0aW9uOl0pOgorCisg
ICAgICAgIERyaXZlLWJ5IGZpeDogc2Nyb2xsIHRvIHJldmVhbCBlYWNoIHNlbGVjdGVkIHJvdyB3
aGVuIHVzaW5nIHRoZSBhcnJvdyBrZXlzIHRvIG5hdmlnYXRlIGJldHdlZW4gaXRlbXMuCisKKyAg
ICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbGxlciBkcm9wZG93blJlY3RGb3JF
bGVtZW50UmVjdDpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbGxl
ciB0YWJsZVZpZXc6aGVpZ2h0T2ZSb3c6XSk6CisKKyAgICAgICAgUmV0dXJuIGVpdGhlciBgZHJv
cGRvd25Sb3dIZWlnaHRXaXRob3V0TGFiZWxgIG9yIGBkcm9wZG93blJvd0hlaWdodFdpdGhMYWJl
bGAsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZXJlIGlzCisgICAgICAgIGxhYmVsIHRleHQgdG8g
YmUgc2hvd24gaW4gdGhhdCBzdWdnZXN0aW9uIGNlbGwuCisKKyAgICAgICAgKC1bV0tEYXRhTGlz
dFN1Z2dlc3Rpb25zQ29udHJvbGxlciB0YWJsZVZpZXc6dmlld0ZvclRhYmxlQ29sdW1uOnJvdzpd
KToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25WaWV3IHNldFRleHQ6XSk6IERlbGV0
ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNhblNob3dEYXRhTGlzdFN1
Z2dlc3Rpb25MYWJlbHMgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisKIDIwMjAtMDMtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQgc2hvdWxkIHRha2UgYSBmb3JlZ3JvdW5kIGFz
c2VydGlvbiBmb3Igb2Zmc2NyZWVuIGxvYWRzIHdoZW4gdGhlIGFwcCBpcyBmb3JlZ3JvdW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggY2UwYWQ0Y2M5ODFjNDc3M2E2ODQ4NmJlMGNh
MDFiZWYzYWM0NWI2Ni4uYjk3YjU1NGE4MDQ2NTg0NWNjZmNjYmY1YmE2ODIyMDRjMTIzNTJiNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTAzLTMx
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIERhdGFs
aXN0IG9wdGlvbidzIGxhYmVsIG5vdCB1c2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE3NjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1MzYx
MTg2PgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFNlZSBX
ZWJDb3JlL0NoYW5nZUxvZyBhbmQgV2ViS2l0L0NoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWxzLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisKIDIwMjAtMDMt
MzAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IHByb3ZpZGUgYSB3YXkgdG8gbG9nIG1lc3NhZ2VzIGZyb20gdGhlIG5ldHdvcmsgcHJv
Y2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRhTGlzdFN1Z2dlc3Rpb25J
bmZvcm1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRhTGlzdFN1Z2dlc3Rpb25JbmZv
cm1hdGlvbi5oCmluZGV4IDU3OTQ1MWE1OTgzMmZkZGZmYzliOThmNDBjZDk1OTU1NjhjZWZjNmQu
LmMyMzNjY2JjZWYwMDM1MDczNjdlYWI3NzhhNTE2OTQzNWQ1NzQxOGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0RhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uLmgKQEAgLTI5
LDE5ICsyOSw4MyBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogI2lmIEVOQUJMRShEQVRB
TElTVF9FTEVNRU5UKQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gY2xhc3MgRGF0YUxp
c3RTdWdnZXN0aW9uQWN0aXZhdGlvblR5cGUgeworZW51bSBjbGFzcyBEYXRhTGlzdFN1Z2dlc3Rp
b25BY3RpdmF0aW9uVHlwZSA6IHVpbnQ4X3QgewogICAgIENvbnRyb2xDbGlja2VkLAogICAgIElu
ZGljYXRvckNsaWNrZWQsCiAgICAgVGV4dENoYW5nZWQsCiB9OwogCitzdHJ1Y3QgRGF0YUxpc3RT
dWdnZXN0aW9uIHsKKyAgICBTdHJpbmcgdmFsdWU7CisgICAgU3RyaW5nIGxhYmVsOworCisgICAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxEYXRhTGlzdFN1Z2dlc3Rp
b24+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9p
ZCBEYXRhTGlzdFN1Z2dlc3Rpb246OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorewor
ICAgIGVuY29kZXIgPDwgdmFsdWU7CisgICAgZW5jb2RlciA8PCBsYWJlbDsKK30KKwordGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPERhdGFMaXN0U3VnZ2VzdGlvbj4gRGF0YUxpc3RT
dWdnZXN0aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxTdHJp
bmc+IHZhbHVlOworICAgIGRlY29kZXIgPj4gdmFsdWU7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPFN0cmluZz4gbGFiZWw7Cisg
ICAgZGVjb2RlciA+PiBsYWJlbDsKKyAgICBpZiAoIWxhYmVsKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgcmV0dXJuIHt7ICp2YWx1ZSwgKmxhYmVsIH19OworfQorCiBzdHJ1
Y3QgRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24gewogICAgIERhdGFMaXN0U3VnZ2VzdGlv
bkFjdGl2YXRpb25UeXBlIGFjdGl2YXRpb25UeXBlOwotICAgIFZlY3RvcjxTdHJpbmc+IHN1Z2dl
c3Rpb25zOworICAgIFZlY3RvcjxEYXRhTGlzdFN1Z2dlc3Rpb24+IHN1Z2dlc3Rpb25zOwogICAg
IEludFJlY3QgZWxlbWVudFJlY3Q7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIE9wdGlvbmFsPERhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uPiBkZWNvZGUoRGVjb2Rl
ciYpOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgRGF0YUxpc3RTdWdnZXN0
aW9uSW5mb3JtYXRpb246OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVu
Y29kZXIuZW5jb2RlRW51bShhY3RpdmF0aW9uVHlwZSk7CisgICAgZW5jb2RlciA8PCBzdWdnZXN0
aW9uczsKKyAgICBlbmNvZGVyIDw8IGVsZW1lbnRSZWN0OwogfQorCit0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPgorT3B0aW9uYWw8RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24+IERhdGFMaXN0
U3VnZ2VzdGlvbkluZm9ybWF0aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBE
YXRhTGlzdFN1Z2dlc3Rpb25BY3RpdmF0aW9uVHlwZSBhY3RpdmF0aW9uVHlwZTsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlRW51bShhY3RpdmF0aW9uVHlwZSkpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxWZWN0b3I8RGF0YUxpc3RTdWdnZXN0aW9uPj4gc3Vn
Z2VzdGlvbnM7CisgICAgZGVjb2RlciA+PiBzdWdnZXN0aW9uczsKKyAgICBpZiAoIXN1Z2dlc3Rp
b25zKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8SW50UmVj
dD4gZWxlbWVudFJlY3Q7CisgICAgZGVjb2RlciA+PiBlbGVtZW50UmVjdDsKKyAgICBpZiAoIWVs
ZW1lbnRSZWN0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIHt7
IGFjdGl2YXRpb25UeXBlLCAqc3VnZ2VzdGlvbnMsICplbGVtZW50UmVjdCB9fTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZp
ZWxkSW5wdXRUeXBlLmNwcAppbmRleCA1ZWM1YzM0NWIwNjBjZmEwODdlODBiNTMwYWI2ZTllYTRm
ZGRiYmMzLi4zY2FlMzhkNWYwNjYwMDA1MTI5ZTBhMTZlZDIwY2NkODYxYjg3OGJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCkBAIC04MjgsNyArODI4LDcg
QEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OnVwZGF0ZUF1dG9GaWxsQnV0dG9uKCkKIAogdm9p
ZCBUZXh0RmllbGRJbnB1dFR5cGU6Omxpc3RBdHRyaWJ1dGVUYXJnZXRDaGFuZ2VkKCkKIHsKLSAg
ICBtX2NhY2hlZFN1Z2dlc3Rpb25zID0gc3RkOjptYWtlX3BhaXIoU3RyaW5nKCksIFZlY3RvcjxT
dHJpbmc+KCkpOworICAgIG1fY2FjaGVkU3VnZ2VzdGlvbnMgPSB7IH07CiAKICAgICBpZiAoIW1f
ZGF0YUxpc3REcm9wZG93bkluZGljYXRvcikKICAgICAgICAgY3JlYXRlRGF0YUxpc3REcm9wZG93
bkluZGljYXRvcigpOwpAQCAtODU2LDM0ICs4NTYsMzkgQEAgSW50UmVjdCBUZXh0RmllbGRJbnB1
dFR5cGU6OmVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkgY29uc3QKICAgICByZXR1
cm4gZWxlbWVudCgpLT5kb2N1bWVudCgpLnZpZXcoKS0+Y29udGVudHNUb1Jvb3RWaWV3KGVsZW1l
bnQoKS0+cmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSk7CiB9CiAKLVZlY3Rv
cjxTdHJpbmc+IFRleHRGaWVsZElucHV0VHlwZTo6c3VnZ2VzdGlvbnMoKQorVmVjdG9yPERhdGFM
aXN0U3VnZ2VzdGlvbj4gVGV4dEZpZWxkSW5wdXRUeXBlOjpzdWdnZXN0aW9ucygpCiB7CiAgICAg
Ly8gRklYTUU6IFN1Z2dlc3Rpb25zIGFyZSAidHlwaW5nIGNvbXBsZXRpb25zIiBhbmQgc28gc2hv
dWxkIHByb2JhYmx5IHVzZSB0aGUgZmluZFBsYWluVGV4dCBhbGdvcml0aG0gcmF0aGVyIHRoYW4g
dGhlIHNpbXBsaXN0aWMgImlnbm9yaW5nIEFTQ0lJIGNhc2UiIHJ1bGVzLgogCi0gICAgVmVjdG9y
PFN0cmluZz4gc3VnZ2VzdGlvbnM7Ci0gICAgVmVjdG9yPFN0cmluZz4gbWF0Y2hlc0NvbnRhaW5p
bmdWYWx1ZTsKKyAgICBWZWN0b3I8RGF0YUxpc3RTdWdnZXN0aW9uPiBzdWdnZXN0aW9uczsKKyAg
ICBWZWN0b3I8RGF0YUxpc3RTdWdnZXN0aW9uPiBtYXRjaGVzQ29udGFpbmluZ1ZhbHVlOwogCiAg
ICAgU3RyaW5nIGVsZW1lbnRWYWx1ZSA9IGVsZW1lbnQoKS0+dmFsdWUoKTsKIAogICAgIGlmICgh
bV9jYWNoZWRTdWdnZXN0aW9ucy5maXJzdC5pc051bGwoKSAmJiBlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKG1fY2FjaGVkU3VnZ2VzdGlvbnMuZmlyc3QsIGVsZW1lbnRWYWx1ZSkpCiAgICAgICAgIHJl
dHVybiBtX2NhY2hlZFN1Z2dlc3Rpb25zLnNlY29uZDsKIAorICAgIGF1dG8qIHBhZ2UgPSBlbGVt
ZW50KCktPmRvY3VtZW50KCkucGFnZSgpOworICAgIGJvb2wgY2FuU2hvd0xhYmVscyA9IHBhZ2Ug
JiYgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuY2FuU2hvd0RhdGFMaXN0U3VnZ2VzdGlvbkxhYmVs
cygpOwogICAgIGlmIChhdXRvIGRhdGFMaXN0ID0gZWxlbWVudCgpLT5kYXRhTGlzdCgpKSB7CiAg
ICAgICAgIGZvciAoYXV0byYgb3B0aW9uIDogZGF0YUxpc3QtPnN1Z2dlc3Rpb25zKCkpIHsKLSAg
ICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IG9wdGlvbi52YWx1ZSgpOwotICAgICAgICAgICAgaWYg
KCFlbGVtZW50KCktPmlzVmFsaWRWYWx1ZSh2YWx1ZSkpCisgICAgICAgICAgICBEYXRhTGlzdFN1
Z2dlc3Rpb24gc3VnZ2VzdGlvbjsKKyAgICAgICAgICAgIHN1Z2dlc3Rpb24udmFsdWUgPSBvcHRp
b24udmFsdWUoKTsKKyAgICAgICAgICAgIGlmICghZWxlbWVudCgpLT5pc1ZhbGlkVmFsdWUoc3Vn
Z2VzdGlvbi52YWx1ZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB2
YWx1ZSA9IHNhbml0aXplVmFsdWUodmFsdWUpOwotICAgICAgICAgICAgaWYgKGVsZW1lbnRWYWx1
ZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgc3VnZ2VzdGlvbnMuYXBwZW5kKHZhbHVlKTsK
LSAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlLnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShl
bGVtZW50VmFsdWUpKQotICAgICAgICAgICAgICAgIHN1Z2dlc3Rpb25zLmFwcGVuZCh2YWx1ZSk7
Ci0gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZS5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKGVs
ZW1lbnRWYWx1ZSkpCi0gICAgICAgICAgICAgICAgbWF0Y2hlc0NvbnRhaW5pbmdWYWx1ZS5hcHBl
bmQodmFsdWUpOworICAgICAgICAgICAgc3VnZ2VzdGlvbi52YWx1ZSA9IHNhbml0aXplVmFsdWUo
c3VnZ2VzdGlvbi52YWx1ZSk7CisgICAgICAgICAgICBzdWdnZXN0aW9uLmxhYmVsID0gb3B0aW9u
LmxhYmVsKCk7CisgICAgICAgICAgICBpZiAoc3VnZ2VzdGlvbi52YWx1ZSA9PSBzdWdnZXN0aW9u
LmxhYmVsKQorICAgICAgICAgICAgICAgIHN1Z2dlc3Rpb24ubGFiZWwgPSB7IH07CisKKyAgICAg
ICAgICAgIGlmIChlbGVtZW50VmFsdWUuaXNFbXB0eSgpIHx8IHN1Z2dlc3Rpb24udmFsdWUuc3Rh
cnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGVsZW1lbnRWYWx1ZSkpCisgICAgICAgICAgICAgICAg
c3VnZ2VzdGlvbnMuYXBwZW5kKFdURk1vdmUoc3VnZ2VzdGlvbikpOworICAgICAgICAgICAgZWxz
ZSBpZiAoc3VnZ2VzdGlvbi52YWx1ZS5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKGVsZW1lbnRW
YWx1ZSkgfHwgKGNhblNob3dMYWJlbHMgJiYgc3VnZ2VzdGlvbi5sYWJlbC5jb250YWluc0lnbm9y
aW5nQVNDSUlDYXNlKGVsZW1lbnRWYWx1ZSkpKQorICAgICAgICAgICAgICAgIG1hdGNoZXNDb250
YWluaW5nVmFsdWUuYXBwZW5kKFdURk1vdmUoc3VnZ2VzdGlvbikpOwogICAgICAgICB9CiAgICAg
fQogCi0gICAgc3VnZ2VzdGlvbnMuYXBwZW5kVmVjdG9yKG1hdGNoZXNDb250YWluaW5nVmFsdWUp
OworICAgIHN1Z2dlc3Rpb25zLmFwcGVuZFZlY3RvcihXVEZNb3ZlKG1hdGNoZXNDb250YWluaW5n
VmFsdWUpKTsKICAgICBtX2NhY2hlZFN1Z2dlc3Rpb25zID0gc3RkOjptYWtlX3BhaXIoZWxlbWVu
dFZhbHVlLCBzdWdnZXN0aW9ucyk7CiAKICAgICByZXR1cm4gc3VnZ2VzdGlvbnM7CkBAIC04OTYs
NyArOTAxLDcgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmRpZFNlbGVjdERhdGFMaXN0T3B0
aW9uKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRPcHRpb24pCiAKIHZvaWQgVGV4dEZpZWxkSW5wdXRU
eXBlOjpkaWRDbG9zZVN1Z2dlc3Rpb25zKCkKIHsKLSAgICBtX2NhY2hlZFN1Z2dlc3Rpb25zID0g
c3RkOjptYWtlX3BhaXIoU3RyaW5nKCksIFZlY3RvcjxTdHJpbmc+KCkpOworICAgIG1fY2FjaGVk
U3VnZ2VzdGlvbnMgPSB7IH07CiAgICAgbV9zdWdnZXN0aW9uUGlja2VyID0gbnVsbHB0cjsKICAg
ICBpZiAoZWxlbWVudCgpLT5yZW5kZXJlcigpKQogICAgICAgICBlbGVtZW50KCktPnJlbmRlcmVy
KCktPnJlcGFpbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxk
SW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5oCmlu
ZGV4IDRlMzNmMDU3YzJjODVjOWVjYzY2YTRjMGJiZmNlY2IxOTRmYmRlMzkuLjVhMTdmMTU4MjFh
MGRkMDYwNzI3YWE5ZWEwZTljNDQxOGEwYTc3NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0
RmllbGRJbnB1dFR5cGUuaApAQCAtMTMyLDE0ICsxMzIsMTQgQEAgcHJpdmF0ZToKIAogICAgIC8v
IERhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQKICAgICBJbnRSZWN0IGVsZW1lbnRSZWN0SW5Sb290
Vmlld0Nvb3JkaW5hdGVzKCkgY29uc3QgZmluYWw7Ci0gICAgVmVjdG9yPFN0cmluZz4gc3VnZ2Vz
dGlvbnMoKSBmaW5hbDsKKyAgICBWZWN0b3I8RGF0YUxpc3RTdWdnZXN0aW9uPiBzdWdnZXN0aW9u
cygpIGZpbmFsOwogICAgIHZvaWQgZGlkU2VsZWN0RGF0YUxpc3RPcHRpb24oY29uc3QgU3RyaW5n
JikgZmluYWw7CiAgICAgdm9pZCBkaWRDbG9zZVN1Z2dlc3Rpb25zKCkgZmluYWw7CiAKICAgICB2
b2lkIGRhdGFMaXN0QnV0dG9uRWxlbWVudFdhc0NsaWNrZWQoKSBmaW5hbDsKICAgICBSZWZQdHI8
RGF0YUxpc3RCdXR0b25FbGVtZW50PiBtX2RhdGFMaXN0RHJvcGRvd25JbmRpY2F0b3I7CiAKLSAg
ICBzdGQ6OnBhaXI8U3RyaW5nLCBWZWN0b3I8U3RyaW5nPj4gbV9jYWNoZWRTdWdnZXN0aW9uczsK
KyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBWZWN0b3I8RGF0YUxpc3RTdWdnZXN0aW9uPj4gbV9jYWNo
ZWRTdWdnZXN0aW9uczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YUxpc3RTdWdnZXN0aW9uUGlj
a2VyPiBtX3N1Z2dlc3Rpb25QaWNrZXI7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5oCmluZGV4IDE3MWFkNmFjMDFmNjQ4NDIwMzQ4ZTcwODk1MmU2NjYxOGIxOTk5MTEu
LmI4ZDExMTY4YzY5MzhlOGIzN2ZlNjQ0ZjlkNDFkNmFkNDJmNTM4YzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTEzMyw2ICsxMzMsNyBAQCBjbGFzcyBFbXB0eUNocm9t
ZUNsaWVudCA6IHB1YmxpYyBDaHJvbWVDbGllbnQgewogCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VM
RU1FTlQpCiAgICAgc3RkOjp1bmlxdWVfcHRyPERhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcj4gY3Jl
YXRlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKERhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQmKSBm
aW5hbDsKKyAgICBib29sIGNhblNob3dEYXRhTGlzdFN1Z2dlc3Rpb25MYWJlbHMoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKICAgICB2b2lkIHJ1bk9wZW5QYW5lbChG
cmFtZSYsIEZpbGVDaG9vc2VyJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApp
bmRleCA2YTQxM2E3MjM1Mjk3YjNjNDA5MTU3ODEyOGIxYzdmZjY3NzY5MTU5Li40OTQ5ZmVhODVk
YzAxNzhlYzE4OTg0MzQ4YzllNDFjZGUzYTk0OGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xp
ZW50LmgKQEAgLTI3OSw2ICsyNzksNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoREFUQUxJU1Rf
RUxFTUVOVCkKICAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxEYXRhTGlzdFN1Z2dlc3Rpb25Q
aWNrZXI+IGNyZWF0ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcihEYXRhTGlzdFN1Z2dlc3Rpb25z
Q2xpZW50JikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjYW5TaG93RGF0YUxpc3RTdWdnZXN0aW9u
TGFiZWxzKCkgY29uc3QgPSAwOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBh
bmVsKEZyYW1lJiwgRmlsZUNob29zZXImKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9EYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50LmgKaW5kZXggNWVkODAyNWJlNzkwMjky
N2Y1ZDY1M2I5NzY5ZTExM2YyY2FlYzhjYi4uNTZkOTVjNjMzNGVmYTVkNGM5Mjk0OTA3MzJmNTE4
NzA2MjYwYTI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0YUxpc3RT
dWdnZXN0aW9uc0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGFMaXN0
U3VnZ2VzdGlvbnNDbGllbnQuaApAQCAtMzIsMTMgKzMyLDE0IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEludFJlY3Q7CitzdHJ1Y3QgRGF0YUxpc3RTdWdnZXN0aW9uOwogCiBjbGFz
cyBEYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5EYXRh
TGlzdFN1Z2dlc3Rpb25zQ2xpZW50KCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCBJbnRSZWN0
IGVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkgY29uc3QgPSAwOwotICAgIHZpcnR1
YWwgVmVjdG9yPFN0cmluZz4gc3VnZ2VzdGlvbnMoKSA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8
RGF0YUxpc3RTdWdnZXN0aW9uPiBzdWdnZXN0aW9ucygpID0gMDsKIAogICAgIHZpcnR1YWwgdm9p
ZCBkaWRTZWxlY3REYXRhTGlzdE9wdGlvbihjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRpZENsb3NlU3VnZ2VzdGlvbnMoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA0MjU3NzU3OWZkN2U1YjE0OGRmMGQy
MmJjY2RkMTUxZmU4ZWQ0ODI5Li5mZDMyMGVjOTRlNDgwMmE0Yzk1NGE3YWUwZDZjNjUwMTkyZmJj
YzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NvbXBvc2l0aW9uVW5kZXJs
aW5lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DcmVkZW50aWFsLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9DdXJzb3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0RhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VEZXRhaWxzLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9EaWN0YXRpb25BbHRlcm5hdGl2ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGljdGlvbmFyeVBv
cHVwSW5mby5oPgpAQCAtMTcyMSwyOSArMTcyMCw2IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxEYXRh
YmFzZURldGFpbHM+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRGF0YWJhc2VEZXRhaWxzJiBk
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLSNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLXZv
aWQgQXJndW1lbnRDb2RlcjxEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbj46OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1h
dGlvbiYgaW5mbykKLXsKLSAgICBlbmNvZGVyLmVuY29kZUVudW0oaW5mby5hY3RpdmF0aW9uVHlw
ZSk7Ci0gICAgZW5jb2RlciA8PCBpbmZvLnN1Z2dlc3Rpb25zOwotICAgIGVuY29kZXIgPDwgaW5m
by5lbGVtZW50UmVjdDsKLX0KLQotYm9vbCBBcmd1bWVudENvZGVyPERhdGFMaXN0U3VnZ2VzdGlv
bkluZm9ybWF0aW9uPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFdlYkNvcmU6OkRhdGFMaXN0
U3VnZ2VzdGlvbkluZm9ybWF0aW9uJiBpbmZvKQotewotICAgIGlmICghZGVjb2Rlci5kZWNvZGVF
bnVtKGluZm8uYWN0aXZhdGlvblR5cGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGluZm8uc3VnZ2VzdGlvbnMpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8uZWxlbWVudFJlY3QpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLSNlbmRpZgotCiB0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT4gewog
ICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUGFzdGVib2FyZEN1c3RvbURh
dGE6OkVudHJ5Jik7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6RW50cnkmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgKaW5kZXggMWFiYjQxNmMxNGJiZDRhZTViOWM5Nzg4YjdjMDFhMGI1YjYyN2Qw
My4uY2E1N2MzMWVhOTU0NTk3NWY3YmIxYWQ4NDFkZGRiOGYxM2RmZmNkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTE2MywxMCArMTYzLDYg
QEAgc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50Owogc3RydWN0IFZpZXdwb3J0QXJndW1lbnRz
OwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLXN0cnVjdCBEYXRhTGlz
dFN1Z2dlc3Rpb25JbmZvcm1hdGlvbjsKLSNlbmRpZgotCiAjaWYgVVNFKFNPVVApCiBzdHJ1Y3Qg
U291cE5ldHdvcmtQcm94eVNldHRpbmdzOwogI2VuZGlmCkBAIC01NDMsMTMgKzUzOSw2IEBAIHRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RGF0YWJhc2VEZXRhaWxzPiB7
CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpEYXRhYmFzZURldGFp
bHMmKTsKIH07CiAKLSNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLXRlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24+
IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkRhdGFM
aXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uJik7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29k
ZXImLCBXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbiYpOwotfTsKLSNlbmRp
ZgotCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkRpY3RhdGlvbkFs
dGVybmF0aXZlPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJD
b3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZSYpOwogICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3Jl
OjpEaWN0YXRpb25BbHRlcm5hdGl2ZT4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25H
dGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkRhdGFMaXN0U3VnZ2VzdGlv
bnNEcm9wZG93bkd0ay5jcHAKaW5kZXggNDQ4ZmNmYzQxOGQ3ZTJjNTQ2OWVhNGVlZWYzNTViZDgy
YWUyZjBmYy4uNmEzNjc4OTA0MDJiOTA2YzUxNzEwNGY4ZTBjYTJkNTExZjE5MGFiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNE
cm9wZG93bkd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkRhdGFM
aXN0U3VnZ2VzdGlvbnNEcm9wZG93bkd0ay5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIFdl
YkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bkd0azo6c2hvdyhXZWJDb3JlOjpEYXRhTGlzdFN1
Z2dlc3Rpb25JbmZvcm1hdAogICAgIGZvciAoY29uc3QgYXV0byYgc3VnZ2VzdGlvbiA6IGluZm9y
bWF0aW9uLnN1Z2dlc3Rpb25zKSB7CiAgICAgICAgIEd0a1RyZWVJdGVyIGl0ZXI7CiAgICAgICAg
IGd0a19saXN0X3N0b3JlX2FwcGVuZChtb2RlbCwgJml0ZXIpOwotICAgICAgICBndGtfbGlzdF9z
dG9yZV9zZXQobW9kZWwsICZpdGVyLCAwLCBzdWdnZXN0aW9uLnV0ZjgoKS5kYXRhKCksIC0xKTsK
KyAgICAgICAgZ3RrX2xpc3Rfc3RvcmVfc2V0KG1vZGVsLCAmaXRlciwgMCwgc3VnZ2VzdGlvbi52
YWx1ZS51dGY4KCkuZGF0YSgpLCAtMSk7CiAgICAgfQogCiAgICAgR3RrUmVxdWlzaXRpb24gdHJl
ZVZpZXdSZXF1aXNpdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tCmluZGV4IGEx
OTdjNTMxYjMwOWEyOTBjZjA4OWRjYjU4YTNkZmQyNDAxMWZkN2QuLjgzZDUyZDcyNDBkMmY5ZmYy
YTM4ZmU4ZDY0NDUwMGY4ZGM0ZWMxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5t
bQpAQCAtNDIsNyArNDIsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBzdWdnZXN0aW9uQ2Vs
bFJldXNlSWRlbnRpZmllciA9IEAiV0tEYXRhTGlzdFN1Z2dlc3Rpb25DZQogCiBAaW50ZXJmYWNl
IFdLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2wgOiBOU09iamVjdCB7CiAgICAgV2Vha1B0cjxX
ZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUz4gX2Ryb3Bkb3duOwotICAg
IFZlY3RvcjxTdHJpbmc+IF9zdWdnZXN0aW9uczsKKyAgICBWZWN0b3I8V2ViQ29yZTo6RGF0YUxp
c3RTdWdnZXN0aW9uPiBfc3VnZ2VzdGlvbnM7CiB9CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCB3
ZWFrKSBXS0NvbnRlbnRWaWV3ICp2aWV3OwpAQCAtMTU5LDcgKzE1OSw3IEBAIC0gKHZvaWQpc2hv
d1N1Z2dlc3Rpb25zRHJvcGRvd246KFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bk
b3duSU9TJilkcm9wCiAKIC0gKHZvaWQpZGlkU2VsZWN0T3B0aW9uQXRJbmRleDooTlNJbnRlZ2Vy
KWluZGV4CiB7Ci0gICAgX2Ryb3Bkb3duLT5kaWRTZWxlY3RPcHRpb24oX3N1Z2dlc3Rpb25zW2lu
ZGV4XSk7CisgICAgX2Ryb3Bkb3duLT5kaWRTZWxlY3RPcHRpb24oX3N1Z2dlc3Rpb25zW2luZGV4
XS52YWx1ZSk7CiB9CiAKIC0gKHZvaWQpaW52YWxpZGF0ZQpAQCAtMTcxLDcgKzE3MSw3IEBAIC0g
KE5TQXJyYXk8V0tEYXRhTGlzdFRleHRTdWdnZXN0aW9uICo+ICopdGV4dFN1Z2dlc3Rpb25zCiAg
ICAgTlNNdXRhYmxlQXJyYXkgKnN1Z2dlc3Rpb25zID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsK
IAogICAgIGZvciAoY29uc3QgYXV0byYgc3VnZ2VzdGlvbiA6IF9zdWdnZXN0aW9ucykgewotICAg
ICAgICBbc3VnZ2VzdGlvbnMgYWRkT2JqZWN0OltXS0RhdGFMaXN0VGV4dFN1Z2dlc3Rpb24gdGV4
dFN1Z2dlc3Rpb25XaXRoSW5wdXRUZXh0OnN1Z2dlc3Rpb25dXTsKKyAgICAgICAgW3N1Z2dlc3Rp
b25zIGFkZE9iamVjdDpbV0tEYXRhTGlzdFRleHRTdWdnZXN0aW9uIHRleHRTdWdnZXN0aW9uV2l0
aElucHV0VGV4dDpzdWdnZXN0aW9uLnZhbHVlXV07CiAgICAgICAgIGlmIChzdWdnZXN0aW9ucy5j
b3VudCA9PSAzKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTg2LDcgKzE4Niw3IEBA
IC0gKE5TSW50ZWdlcilzdWdnZXN0aW9uc0NvdW50CiAKIC0gKFN0cmluZylzdWdnZXN0aW9uQXRJ
bmRleDooTlNJbnRlZ2VyKWluZGV4CiB7Ci0gICAgcmV0dXJuIF9zdWdnZXN0aW9uc1tpbmRleF07
CisgICAgcmV0dXJuIF9zdWdnZXN0aW9uc1tpbmRleF0udmFsdWU7CiB9CiAKIC0gKE5TVGV4dEFs
aWdubWVudCl0ZXh0QWxpZ25tZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bk1hYy5tbQppbmRl
eCA4MDYwYzhhYmQzM2U1NWUwMmM3MTI0ZjRhNDQyOTE1MWE5MzkwYjE5Li4wOGU1NjU5YmQ1NjFh
ZDE2ODYwYTQ3MGYxOTAwM2E2ODE4YTUwOWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25N
YWMubW0KQEAgLTM0LDE2ICszNCwxOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJp
bmdzLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TQ29sb3JTUEkuaD4KIAotc3RhdGljIGNv
bnN0IENHRmxvYXQgZHJvcGRvd25Ub3BNYXJnaW4gPSAzOwotc3RhdGljIGNvbnN0IENHRmxvYXQg
ZHJvcGRvd25WZXJ0aWNhbFBhZGRpbmcgPSA0Owotc3RhdGljIGNvbnN0IENHRmxvYXQgZHJvcGRv
d25Sb3dIZWlnaHQgPSAyMDsKLXN0YXRpYyBjb25zdCBzaXplX3QgZHJvcGRvd25NYXhTdWdnZXN0
aW9ucyA9IDY7Citjb25zdGV4cHIgQ0dGbG9hdCBkcm9wZG93blRvcE1hcmdpbiA9IDM7Citjb25z
dGV4cHIgQ0dGbG9hdCBkcm9wZG93blZlcnRpY2FsUGFkZGluZyA9IDQ7Citjb25zdGV4cHIgQ0dG
bG9hdCBkcm9wZG93blJvd0hlaWdodFdpdGhvdXRMYWJlbCA9IDIwOworY29uc3RleHByIENHRmxv
YXQgZHJvcGRvd25Sb3dIZWlnaHRXaXRoTGFiZWwgPSA0MDsKK2NvbnN0ZXhwciBzaXplX3QgbWF4
aW11bVRvdGFsSGVpZ2h0Rm9yRHJvcGRvd25DZWxscyA9IDEyMDsKIHN0YXRpYyBOU1N0cmluZyAq
IGNvbnN0IHN1Z2dlc3Rpb25DZWxsUmV1c2VJZGVudGlmaWVyID0gQCJXS0RhdGFMaXN0U3VnZ2Vz
dGlvblZpZXciOwogCiBAaW50ZXJmYWNlIFdLRGF0YUxpc3RTdWdnZXN0aW9uV2luZG93IDogTlNX
aW5kb3cKIEBlbmQKIAogQGludGVyZmFjZSBXS0RhdGFMaXN0U3VnZ2VzdGlvblZpZXcgOiBOU1Rh
YmxlQ2VsbFZpZXcKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHNob3VsZFNob3dCb3R0b21E
aXZpZGVyOwogQGVuZAogCiBAaW50ZXJmYWNlIFdLRGF0YUxpc3RTdWdnZXN0aW9uVGFibGVSb3dW
aWV3IDogTlNUYWJsZVJvd1ZpZXcKQEAgLTE2OSw3ICsxNzEsOSBAQCAtIChOU1dpbmRvd1NoYWRv
d09wdGlvbnMpc2hhZG93T3B0aW9ucwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV0tEYXRhTGlz
dFN1Z2dlc3Rpb25WaWV3IHsKLSAgICBSZXRhaW5QdHI8TlNUZXh0RmllbGQ+IF90ZXh0RmllbGQ7
CisgICAgUmV0YWluUHRyPE5TVGV4dEZpZWxkPiBfdmFsdWVGaWVsZDsKKyAgICBSZXRhaW5QdHI8
TlNUZXh0RmllbGQ+IF9sYWJlbEZpZWxkOworICAgIFJldGFpblB0cjxOU1ZpZXc+IF9ib3R0b21E
aXZpZGVyOwogfQogCiAtIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWVSZWN0CkBAIC0x
NzcsMzEgKzE4MSw3OCBAQCAtIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWVSZWN0CiAg
ICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aEZyYW1lOmZyYW1lUmVjdF0pKQogICAgICAg
ICByZXR1cm4gc2VsZjsKIAotICAgIF90ZXh0RmllbGQgPSBhZG9wdE5TKFtbTlNUZXh0RmllbGQg
YWxsb2NdIGluaXRXaXRoRnJhbWU6ZnJhbWVSZWN0XSk7Ci0gICAgc2VsZi50ZXh0RmllbGQgPSBf
dGV4dEZpZWxkLmdldCgpOwotCi0gICAgW3NlbGYgYWRkU3VidmlldzpzZWxmLnRleHRGaWVsZF07
Ci0KKyAgICBfdmFsdWVGaWVsZCA9IGFkb3B0TlMoW1tOU1RleHRGaWVsZCBhbGxvY10gaW5pdF0p
OworICAgIF9sYWJlbEZpZWxkID0gYWRvcHROUyhbW05TVGV4dEZpZWxkIGFsbG9jXSBpbml0XSk7
CisgICAgX2JvdHRvbURpdmlkZXIgPSBhZG9wdE5TKFtbTlNWaWV3IGFsbG9jXSBpbml0XSk7Cisg
ICAgW19ib3R0b21EaXZpZGVyIHNldFdhbnRzTGF5ZXI6WUVTXTsKKyAgICBbX2JvdHRvbURpdmlk
ZXIgc2V0SGlkZGVuOllFU107CisgICAgW19ib3R0b21EaXZpZGVyIGxheWVyXS5iYWNrZ3JvdW5k
Q29sb3IgPSBOU0NvbG9yLnNlcGFyYXRvckNvbG9yLkNHQ29sb3I7CisgICAgW3NlbGYgYWRkU3Vi
dmlldzpfYm90dG9tRGl2aWRlci5nZXQoKV07CisKKyAgICBhdXRvIHNldFVwVGV4dEZpZWxkID0g
WyZdKE5TVGV4dEZpZWxkICp0ZXh0RmllbGQpIHsKKyAgICAgICAgdGV4dEZpZWxkLmVkaXRhYmxl
ID0gTk87CisgICAgICAgIHRleHRGaWVsZC5iZXplbGVkID0gTk87CisgICAgICAgIHRleHRGaWVs
ZC5mb250ID0gW05TRm9udCBtZW51Rm9udE9mU2l6ZTowXTsKKyAgICAgICAgdGV4dEZpZWxkLmRy
YXdzQmFja2dyb3VuZCA9IE5POworICAgICAgICBbc2VsZiBhZGRTdWJ2aWV3OnRleHRGaWVsZF07
CisgICAgfTsKKworICAgIHNldFVwVGV4dEZpZWxkKF92YWx1ZUZpZWxkLmdldCgpKTsKKyAgICBz
ZXRVcFRleHRGaWVsZChfbGFiZWxGaWVsZC5nZXQoKSk7CiAgICAgc2VsZi5pZGVudGlmaWVyID0g
c3VnZ2VzdGlvbkNlbGxSZXVzZUlkZW50aWZpZXI7Ci0gICAgc2VsZi50ZXh0RmllbGQuZWRpdGFi
bGUgPSBOTzsKLSAgICBzZWxmLnRleHRGaWVsZC5iZXplbGVkID0gTk87Ci0gICAgc2VsZi50ZXh0
RmllbGQuZm9udCA9IFtOU0ZvbnQgbWVudUZvbnRPZlNpemU6MF07Ci0gICAgc2VsZi50ZXh0Rmll
bGQuZHJhd3NCYWNrZ3JvdW5kID0gTk87CiAKICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAodm9p
ZClzZXRUZXh0OihOU1N0cmluZyAqKXRleHQKKy0gKHZvaWQpbGF5b3V0Cit7CisgICAgW3N1cGVy
IGxheW91dF07CisKKyAgICBhdXRvIGJvdW5kcyA9IHNlbGYuYm91bmRzOworICAgIGF1dG8gd2lk
dGggPSBib3VuZHMuc2l6ZS53aWR0aDsKKyAgICBpZiAoIVtfbGFiZWxGaWVsZCBpc0hpZGRlbl0p
IHsKKyAgICAgICAgYXV0byBoYWxmT2ZIZWlnaHQgPSBib3VuZHMuc2l6ZS5oZWlnaHQgLyAyOwor
ICAgICAgICBbX3ZhbHVlRmllbGQgc2V0RnJhbWU6TlNNYWtlUmVjdCgwLCBoYWxmT2ZIZWlnaHQs
IHdpZHRoLCBoYWxmT2ZIZWlnaHQpXTsKKyAgICAgICAgW19sYWJlbEZpZWxkIHNldEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgd2lkdGgsIGhhbGZPZkhlaWdodCldOworICAgIH0gZWxzZQorICAgICAg
ICBbX3ZhbHVlRmllbGQgc2V0RnJhbWU6Ym91bmRzXTsKKworICAgIGlmICghW19ib3R0b21EaXZp
ZGVyIGlzSGlkZGVuXSkKKyAgICAgICAgW19ib3R0b21EaXZpZGVyIHNldEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgd2lkdGgsIDAuNSldOworfQorCistICh2b2lkKXNldFZhbHVlOihOU1N0cmluZyAq
KXZhbHVlIGxhYmVsOihOU1N0cmluZyAqKWxhYmVsCit7CisgICAgaWYgKFtbX3ZhbHVlRmllbGQg
c3RyaW5nVmFsdWVdIGlzRXF1YWxUb1N0cmluZzp2YWx1ZV0gJiYgW1tfbGFiZWxGaWVsZCBzdHJp
bmdWYWx1ZV0gaXNFcXVhbFRvU3RyaW5nOmxhYmVsXSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
W192YWx1ZUZpZWxkIHNldFN0cmluZ1ZhbHVlOnZhbHVlXTsKKyAgICBbX2xhYmVsRmllbGQgc2V0
U3RyaW5nVmFsdWU6bGFiZWxdOworICAgIFtfbGFiZWxGaWVsZCBzZXRIaWRkZW46IWxhYmVsLmxl
bmd0aF07CisgICAgc2VsZi5uZWVkc0xheW91dCA9IFlFUzsKK30KKworLSAodm9pZClzZXRTaG91
bGRTaG93Qm90dG9tRGl2aWRlcjooQk9PTClzaG93Qm90dG9tRGl2aWRlcgogewotICAgIHNlbGYu
dGV4dEZpZWxkLnN0cmluZ1ZhbHVlID0gdGV4dDsKKyAgICBpZiAoW19ib3R0b21EaXZpZGVyIGlz
SGlkZGVuXSA9PSAhc2hvd0JvdHRvbURpdmlkZXIpCisgICAgICAgIHJldHVybjsKKworICAgIFtf
Ym90dG9tRGl2aWRlciBzZXRIaWRkZW46IXNob3dCb3R0b21EaXZpZGVyXTsKKyAgICBzZWxmLm5l
ZWRzTGF5b3V0ID0gWUVTOworfQorCistIChCT09MKXNob3VsZFNob3dCb3R0b21EaXZpZGVyCit7
CisgICAgcmV0dXJuIFtfYm90dG9tRGl2aWRlciBpc0hpZGRlbl07CiB9CiAKIC0gKHZvaWQpc2V0
QmFja2dyb3VuZFN0eWxlOihOU0JhY2tncm91bmRTdHlsZSliYWNrZ3JvdW5kU3R5bGUKIHsKICAg
ICBbc3VwZXIgc2V0QmFja2dyb3VuZFN0eWxlOmJhY2tncm91bmRTdHlsZV07Ci0gICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICBzZWxmLnRleHRGaWVsZC50ZXh0Q29s
b3IgPSBiYWNrZ3JvdW5kU3R5bGUgPT0gTlNCYWNrZ3JvdW5kU3R5bGVMaWdodCA/IFtOU0NvbG9y
IHRleHRDb2xvcl0gOiBbTlNDb2xvciBhbHRlcm5hdGVTZWxlY3RlZENvbnRyb2xUZXh0Q29sb3Jd
OwotICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAorQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfQkVHSU4KKyAgICBbX3ZhbHVlRmllbGQgc2V0VGV4dENvbG9yOmJhY2tn
cm91bmRTdHlsZSA9PSBOU0JhY2tncm91bmRTdHlsZUxpZ2h0ID8gTlNDb2xvci50ZXh0Q29sb3Ig
OiBOU0NvbG9yLmFsdGVybmF0ZVNlbGVjdGVkQ29udHJvbFRleHRDb2xvcl07CisgICAgW19sYWJl
bEZpZWxkIHNldFRleHRDb2xvcjpOU0NvbG9yLnNlY29uZGFyeUxhYmVsQ29sb3JdOworQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiB9CiAKIC0gKEJPT0wpYWNjZXB0c0ZpcnN0UmVz
cG9uZGVyCkBAIC0yNTEsMTQgKzMwMiwyMiBAQCAtIChCT09MKWFjY2VwdHNGaXJzdFJlc3BvbmRl
cgogCiBAZW5kCiAKK3N0YXRpYyBCT09MIHNob3VsZFNob3dEaXZpZGVyc0JldHdlZW5DZWxscyhj
b25zdCBWZWN0b3I8V2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uPiYgc3VnZ2VzdGlvbnMpCit7
CisgICAgcmV0dXJuIG5vdEZvdW5kICE9IHN1Z2dlc3Rpb25zLmZpbmRNYXRjaGluZyhbXShhdXRv
JiBzdWdnZXN0aW9uKSB7CisgICAgICAgIHJldHVybiAhc3VnZ2VzdGlvbi5sYWJlbC5pc0VtcHR5
KCk7CisgICAgfSk7Cit9CisKIEBpbXBsZW1lbnRhdGlvbiBXS0RhdGFMaXN0U3VnZ2VzdGlvbnND
b250cm9sbGVyIHsKICAgICBXZWFrUHRyPFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ry
b3Bkb3duTWFjPiBfZHJvcGRvd247Ci0gICAgVmVjdG9yPFN0cmluZz4gX3N1Z2dlc3Rpb25zOwor
ICAgIFZlY3RvcjxXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb24+IF9zdWdnZXN0aW9uczsKICAg
ICBOU1ZpZXcgKl9wcmVzZW50aW5nVmlldzsKIAogICAgIFJldGFpblB0cjxOU1Njcm9sbFZpZXc+
IF9zY3JvbGxWaWV3OwogICAgIFJldGFpblB0cjxXS0RhdGFMaXN0U3VnZ2VzdGlvbldpbmRvdz4g
X2VuY2xvc2luZ1dpbmRvdzsKICAgICBSZXRhaW5QdHI8V0tEYXRhTGlzdFN1Z2dlc3Rpb25UYWJs
ZVZpZXc+IF90YWJsZTsKKyAgICBCT09MIF9zaG93RGl2aWRlcnNCZXR3ZWVuQ2VsbHM7CiB9CiAK
IC0gKGlkKWluaXRXaXRoSW5mb3JtYXRpb246KFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbklu
Zm9ybWF0aW9uJiYpaW5mb3JtYXRpb24gaW5WaWV3OihOU1ZpZXcgKilwcmVzZW50aW5nVmlldwpA
QCAtMjY4LDYgKzMyNyw3IEBAIC0gKGlkKWluaXRXaXRoSW5mb3JtYXRpb246KFdlYkNvcmU6OkRh
dGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uJiYpaW5mb3JtYXRpb24KIAogICAgIF9wcmVzZW50
aW5nVmlldyA9IHByZXNlbnRpbmdWaWV3OwogICAgIF9zdWdnZXN0aW9ucyA9IFdURk1vdmUoaW5m
b3JtYXRpb24uc3VnZ2VzdGlvbnMpOworICAgIF9zaG93RGl2aWRlcnNCZXR3ZWVuQ2VsbHMgPSBz
aG91bGRTaG93RGl2aWRlcnNCZXR3ZWVuQ2VsbHMoX3N1Z2dlc3Rpb25zKTsKICAgICBfdGFibGUg
PSBhZG9wdE5TKFtbV0tEYXRhTGlzdFN1Z2dlc3Rpb25UYWJsZVZpZXcgYWxsb2NdIGluaXRXaXRo
RWxlbWVudFJlY3Q6aW5mb3JtYXRpb24uZWxlbWVudFJlY3RdKTsKIAogICAgIF9lbmNsb3NpbmdX
aW5kb3cgPSBhZG9wdE5TKFtbV0tEYXRhTGlzdFN1Z2dlc3Rpb25XaW5kb3cgYWxsb2NdIGluaXRX
aXRoQ29udGVudFJlY3Q6TlNaZXJvUmVjdCBzdHlsZU1hc2s6KE5TV2luZG93U3R5bGVNYXNrVGl0
bGVkIHwgTlNXaW5kb3dTdHlsZU1hc2tGdWxsU2l6ZUNvbnRlbnRWaWV3KSBiYWNraW5nOk5TQmFj
a2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKQEAgLTMwMiw3ICszNjIsNyBAQCAtIChTdHJp
bmcpY3VycmVudFNlbGVjdGVkU3RyaW5nCiAgICAgTlNJbnRlZ2VyIHNlbGVjdGVkUm93ID0gW190
YWJsZSBzZWxlY3RlZFJvd107CiAKICAgICBpZiAoc2VsZWN0ZWRSb3cgPj0gMCAmJiBzdGF0aWNf
Y2FzdDxzaXplX3Q+KHNlbGVjdGVkUm93KSA8IF9zdWdnZXN0aW9ucy5zaXplKCkpCi0gICAgICAg
IHJldHVybiBfc3VnZ2VzdGlvbnMuYXQoc2VsZWN0ZWRSb3cpOworICAgICAgICByZXR1cm4gX3N1
Z2dlc3Rpb25zLmF0KHNlbGVjdGVkUm93KS52YWx1ZTsKIAogICAgIHJldHVybiBTdHJpbmcoKTsK
IH0KQEAgLTMxMCw2ICszNzAsNyBAQCAtIChTdHJpbmcpY3VycmVudFNlbGVjdGVkU3RyaW5nCiAt
ICh2b2lkKXVwZGF0ZVdpdGhJbmZvcm1hdGlvbjooV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9u
SW5mb3JtYXRpb24mJilpbmZvcm1hdGlvbgogewogICAgIF9zdWdnZXN0aW9ucyA9IFdURk1vdmUo
aW5mb3JtYXRpb24uc3VnZ2VzdGlvbnMpOworICAgIF9zaG93RGl2aWRlcnNCZXR3ZWVuQ2VsbHMg
PSBzaG91bGRTaG93RGl2aWRlcnNCZXR3ZWVuQ2VsbHMoX3N1Z2dlc3Rpb25zKTsKICAgICBbX3Rh
YmxlIHJlbG9hZF07CiAKICAgICBbX2VuY2xvc2luZ1dpbmRvdyBzZXRGcmFtZTpbc2VsZiBkcm9w
ZG93blJlY3RGb3JFbGVtZW50UmVjdDppbmZvcm1hdGlvbi5lbGVtZW50UmVjdF0gZGlzcGxheTpZ
RVNdOwpAQCAtMzM5LDYgKzQwMCw3IEBAIC0gKHZvaWQpbW92ZVNlbGVjdGlvbkJ5RGlyZWN0aW9u
Oihjb25zdCBTdHJpbmcmKWRpcmVjdGlvbgogICAgICAgICBuZXdTZWxlY3Rpb24gPSAoZGlyZWN0
aW9uID09ICJVcCIpID8gKHNpemUgLSAxKSA6IDA7CiAKICAgICBbX3RhYmxlIHNlbGVjdFJvd0lu
ZGV4ZXM6W05TSW5kZXhTZXQgaW5kZXhTZXRXaXRoSW5kZXg6bmV3U2VsZWN0aW9uXSBieUV4dGVu
ZGluZ1NlbGVjdGlvbjpOT107CisgICAgW190YWJsZSBzY3JvbGxSb3dUb1Zpc2libGU6bmV3U2Vs
ZWN0aW9uXTsKIAogICAgIC8vIE5vdGlmeSBhY2Nlc3NpYmlsaXR5IGNsaWVudHMgb2YgbmV3IHNl
bGVjdGlvbi4KICAgICBOU1N0cmluZyAqY3VycmVudFNlbGVjdGVkU3RyaW5nID0gW3NlbGYgY3Vy
cmVudFNlbGVjdGVkU3RyaW5nXTsKQEAgLTM2OSw4ICs0MzEsMTYgQEAgLSAodm9pZClpbnZhbGlk
YXRlCiAtIChOU1JlY3QpZHJvcGRvd25SZWN0Rm9yRWxlbWVudFJlY3Q6KGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmKXJlY3QKIHsKICAgICBOU1JlY3Qgd2luZG93UmVjdCA9IFtbX3ByZXNlbnRpbmdW
aWV3IHdpbmRvd10gY29udmVydFJlY3RUb1NjcmVlbjpbX3ByZXNlbnRpbmdWaWV3IGNvbnZlcnRS
ZWN0OnJlY3QgdG9WaWV3Om5pbF1dOwotICAgIGF1dG8gdmlzaWJsZVN1Z2dlc3Rpb25Db3VudCA9
IHN0ZDo6bWluKF9zdWdnZXN0aW9ucy5zaXplKCksIGRyb3Bkb3duTWF4U3VnZ2VzdGlvbnMpOwot
ICAgIENHRmxvYXQgaGVpZ2h0ID0gdmlzaWJsZVN1Z2dlc3Rpb25Db3VudCAqIChkcm9wZG93blJv
d0hlaWdodCArIFtfdGFibGUgaW50ZXJjZWxsU3BhY2luZ10uaGVpZ2h0KSArIChkcm9wZG93blZl
cnRpY2FsUGFkZGluZyAqIDIpOworCisgICAgQ0dGbG9hdCB0b3RhbENlbGxIZWlnaHQgPSAwOwor
ICAgIGZvciAoYXV0byYgc3VnZ2VzdGlvbiA6IF9zdWdnZXN0aW9ucykKKyAgICAgICAgdG90YWxD
ZWxsSGVpZ2h0ICs9IHN1Z2dlc3Rpb24ubGFiZWwuaXNFbXB0eSgpID8gZHJvcGRvd25Sb3dIZWln
aHRXaXRob3V0TGFiZWwgOiBkcm9wZG93blJvd0hlaWdodFdpdGhMYWJlbDsKKworICAgIENHRmxv
YXQgdG90YWxJbnRlcmNlbGxTcGFjaW5nQW5kUGFkZGluZyA9IGRyb3Bkb3duVmVydGljYWxQYWRk
aW5nICogMjsKKyAgICBpZiAoX3N1Z2dlc3Rpb25zLnNpemUoKSA+IDEpCisgICAgICAgIHRvdGFs
SW50ZXJjZWxsU3BhY2luZ0FuZFBhZGRpbmcgKz0gKF9zdWdnZXN0aW9ucy5zaXplKCkgLSAxKSAq
IFtfdGFibGUgaW50ZXJjZWxsU3BhY2luZ10uaGVpZ2h0OworCisgICAgQ0dGbG9hdCBoZWlnaHQg
PSB0b3RhbEludGVyY2VsbFNwYWNpbmdBbmRQYWRkaW5nICsgc3RkOjptaW48Q0dGbG9hdD4odG90
YWxDZWxsSGVpZ2h0LCBtYXhpbXVtVG90YWxIZWlnaHRGb3JEcm9wZG93bkNlbGxzKTsKICAgICBy
ZXR1cm4gTlNNYWtlUmVjdChOU01pblgod2luZG93UmVjdCksIE5TTWluWSh3aW5kb3dSZWN0KSAt
IGhlaWdodCAtIGRyb3Bkb3duVG9wTWFyZ2luLCByZWN0LndpZHRoKCksIGhlaWdodCk7CiB9CiAK
QEAgLTQwNCw3ICs0NzQsMTMgQEAgLSAoTlNJbnRlZ2VyKW51bWJlck9mUm93c0luVGFibGVWaWV3
OihOU1RhYmxlVmlldyAqKXRhYmxlVmlldwogCiAtIChDR0Zsb2F0KXRhYmxlVmlldzooTlNUYWJs
ZVZpZXcgKil0YWJsZVZpZXcgaGVpZ2h0T2ZSb3c6KE5TSW50ZWdlcilyb3cKIHsKLSAgICByZXR1
cm4gZHJvcGRvd25Sb3dIZWlnaHQ7CisgICAgYXV0byBzdWdnZXN0aW9uSW5kZXggPSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KHJvdyk7CisgICAgaWYgKHN1Z2dlc3Rpb25JbmRleCA+PSBfc3VnZ2VzdGlv
bnMuc2l6ZSgpKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1
cm4gMDsKKyAgICB9CisKKyAgICByZXR1cm4gX3N1Z2dlc3Rpb25zLmF0KHN1Z2dlc3Rpb25JbmRl
eCkubGFiZWwuaXNFbXB0eSgpID8gZHJvcGRvd25Sb3dIZWlnaHRXaXRob3V0TGFiZWwgOiBkcm9w
ZG93blJvd0hlaWdodFdpdGhMYWJlbDsKIH0KIAogLSAoTlNUYWJsZVJvd1ZpZXcgKil0YWJsZVZp
ZXc6KE5TVGFibGVWaWV3ICopdGFibGVWaWV3IHJvd1ZpZXdGb3JSb3c6KE5TSW50ZWdlcilyb3cK
QEAgLTQxNywxMSArNDkzLDEzIEBAIC0gKE5TVmlldyAqKXRhYmxlVmlldzooTlNUYWJsZVZpZXcg
Kil0YWJsZVZpZXcgdmlld0ZvclRhYmxlQ29sdW1uOihOU1RhYmxlQ29sdW1uCiAgICAgV0tEYXRh
TGlzdFN1Z2dlc3Rpb25WaWV3ICpyZXN1bHQgPSBbdGFibGVWaWV3IG1ha2VWaWV3V2l0aElkZW50
aWZpZXI6c3VnZ2VzdGlvbkNlbGxSZXVzZUlkZW50aWZpZXIgb3duZXI6c2VsZl07CiAKICAgICBp
ZiAoIXJlc3VsdCkgewotICAgICAgICByZXN1bHQgPSBbW1tXS0RhdGFMaXN0U3VnZ2VzdGlvblZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCB0YWJsZVZpZXcuZnJhbWUu
c2l6ZS53aWR0aCwgZHJvcGRvd25Sb3dIZWlnaHQpXSBhdXRvcmVsZWFzZV07CisgICAgICAgIHJl
c3VsdCA9IFtbW1dLRGF0YUxpc3RTdWdnZXN0aW9uVmlldyBhbGxvY10gaW5pdF0gYXV0b3JlbGVh
c2VdOwogICAgICAgICBbcmVzdWx0IHNldElkZW50aWZpZXI6c3VnZ2VzdGlvbkNlbGxSZXVzZUlk
ZW50aWZpZXJdOwogICAgIH0KIAotICAgIHJlc3VsdC50ZXh0ID0gX3N1Z2dlc3Rpb25zLmF0KHJv
dyk7CisgICAgYXV0byYgc3VnZ2VzdGlvbiA9IF9zdWdnZXN0aW9ucy5hdChyb3cpOworICAgIHJl
c3VsdC5zaG91bGRTaG93Qm90dG9tRGl2aWRlciA9IF9zaG93RGl2aWRlcnNCZXR3ZWVuQ2VsbHMg
JiYgcm93IDwgc3RhdGljX2Nhc3Q8TlNJbnRlZ2VyPihfc3VnZ2VzdGlvbnMuc2l6ZSgpIC0gMSk7
CisgICAgW3Jlc3VsdCBzZXRWYWx1ZTpzdWdnZXN0aW9uLnZhbHVlIGxhYmVsOnN1Z2dlc3Rpb24u
bGFiZWxdOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5k
ZXggYTY3ZmIwMzQ5ZmViZWI0OGZlMzUyZTUxNDMzOTQ2NWJkZTRlNmQwZS4uNTQzZGUyM2RhODll
MWI3NGRiYTk3YWExYTM5NTNmMmNmNjlhNGQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAg
LTc5Niw2ICs3OTYsMTUgQEAgc3RkOjp1bmlxdWVfcHRyPERhdGFMaXN0U3VnZ2VzdGlvblBpY2tl
cj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVEYXRhTGlzdFN1Z2dlc3QKICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI+KG1fcGFnZSwgY2xpZW50KTsKIH0K
IAorYm9vbCBXZWJDaHJvbWVDbGllbnQ6OmNhblNob3dEYXRhTGlzdFN1Z2dlc3Rpb25MYWJlbHMo
KSBjb25zdAoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisg
ICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKICNlbmRpZgogCiB2b2lkIFdlYkNocm9tZUNs
aWVudDo6cnVuT3BlblBhbmVsKEZyYW1lJiBmcmFtZSwgRmlsZUNob29zZXImIGZpbGVDaG9vc2Vy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDkyMGRlOTNjOWYyZjAzN2I2MTRjYmE4ODJhMTJmMDAz
MjQ3OGIyMmEuLmE4NTkzMWM3MTA2ZmNiNDYwMWNjY2RjOWQ1MjM2NTQ2MDhjODY2ODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmgKQEAgLTE0OSw2ICsxNDksNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxF
KERBVEFMSVNUX0VMRU1FTlQpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkRhdGFMaXN0
U3VnZ2VzdGlvblBpY2tlcj4gY3JlYXRlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKFdlYkNvcmU6
OkRhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQmKSBmaW5hbDsKKyAgICBib29sIGNhblNob3dEYXRh
TGlzdFN1Z2dlc3Rpb25MYWJlbHMoKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KElPU19UT1VDSF9FVkVOVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDlmMjMzMTdiOGY5M2JiNDcy
MzJjNjVjZTYzOTMxNzYyM2E5OGM3ODkuLmE3ZDA2OTBiZmFkYjM3YjVlYjgyNThlZDE5NjRkM2Ew
YzYzODdkMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0xNDQsNiArMTQ0LDcgQEAgcHJpdmF0ZToK
IAogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI+IGNyZWF0ZURhdGFMaXN0U3VnZ2VzdGlvblBp
Y2tlcihXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50JikgZmluYWw7CisgICAgYm9v
bCBjYW5TaG93RGF0YUxpc3RTdWdnZXN0aW9uTGFiZWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
ZmFsc2U7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzYWZj
MDliMGE4ZWI4ZWVlYTdhNDM3MzUyM2MzMzExODFiMGNlZTljLi4wOWJlNWY0YThkMjEyMDMwNmY0
NTI3ZjA4M2RkZWQ3YWIzZTk1N2E4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMDMtMzEg
IFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgRGF0YWxp
c3Qgb3B0aW9uJ3MgbGFiZWwgbm90IHVzZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMTc2OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTUzNjEx
ODY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkIGEg
dGVzdCB0byB2ZXJpZnkgdGhhdCB3aGVuIGRhdGFsaXN0IHN1Z2dlc3Rpb25zIGluY29ycG9yYXRl
IG9wdGlvbiBsYWJlbHMgaW50byB0aGUgZGlzcGxheWVkIHRleHQKKyAgICAgICAgc3VnZ2VzdGlv
bnMsIHRoZXkgYXJlIG1hdGNoZWQgYWdhaW5zdCB3aGVuIGNoYW5naW5nIHRoZSB2YWx1ZSBvZiB0
aGUgaW5wdXQgZmllbGQsIGFuZCBjYW4gYmUgc2VsZWN0ZWQuIFRoaXMgaXMKKyAgICAgICAgZXhw
ZWN0ZWQgdG8gYmUgdGhlIGNhc2Ugb24gbWFjT1MsIGJ1dCBub3Qgb24gb3RoZXIgcGxhdGZvcm1z
IChmb3IgdGhlIHRpbWUgYmVpbmcpLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9kYXRhbGlzdC9k
YXRhbGlzdC1vcHRpb24tbGFiZWxzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC1vcHRpb24tbGFiZWxzLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2d0ay9mYXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0LW9wdGlvbi1s
YWJlbHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvZmFzdC9m
b3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC1vcHRpb24tbGFiZWxzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisKIDIwMjAtMDMtMzAgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgc2Nyb2xsSW50b1ZpZXcoKSBlcnJvbmVvdXNseSBzY3JvbGxzIG5vbi1jb250YWlu
aW5nIGJsb2NrIHNjcm9sbGVycwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9k
YXRhbGlzdC9kYXRhbGlzdC1vcHRpb24tbGFiZWxzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvZGF0YWxpc3QvZGF0YWxpc3Qtb3B0aW9uLWxhYmVscy1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODc5NjE5YzI4MzIwZmZiZmE5M2U3ZDg5MjBlYmIzNmIwNDU4ZmQxYgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0YWxpc3QvZGF0YWxpc3Qt
b3B0aW9uLWxhYmVscy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0IHZl
cmlmaWVzIHRoYXQgd2hlbiBvcHRpb24gZWxlbWVudCBsYWJlbHMgYXJlIGluY2x1ZGVkIGluIGRh
dGFsaXN0IHN1Z2dlc3Rpb25zLCB0aGUgdGV4dCBvZiB0aGUgbGFiZWwgaXMgY29uc2lkZXJlZCB3
aGVuIGNvbXB1dGluZyBtYXRjaGluZyBkYXRhbGlzdCBzdWdnZXN0aW9ucy4gT3RoZXJ3aXNlLCBp
ZiBsYWJlbHMgYXJlIG5vdCBpbmNsdWRlZCBpbiBzdWdnZXN0aW9ucywgdGhlcmUgc2hvdWxkIGJl
IG5vIGRhdGFsaXN0IHN1Z2dlc3Rpb25zIHNob3duLiBUbyBtYW51YWxseSBydW4gdGhlIHRlc3Qs
IGZvY3VzIHRoZSBpbnB1dCBlbGVtZW50IGFuZCB0eXBlICdlJy4gVGhlcmUgc2hvdWxkIGVpdGhl
ciBiZSBubyBtYXRjaGVzIG9yIHR3byBtYXRjaGVzIChhbmQgc2VsZWN0aW5nIHRoZSBzZWNvbmQg
bWF0Y2ggc2hvdWxkIHNldCB0aGUgdmFsdWUgdG8gJ2JheicpLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBpbnB1dC52YWx1ZSBpcyAiYmF6IgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvZGF0YWxpc3QvZGF0YWxpc3Qtb3B0aW9uLWxhYmVscy5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC1vcHRpb24tbGFiZWxzLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTkxOGE4NzQ3OTk1ZjQ3ZTA2MDA4MjQyOTdlMmVjYzVjZGVhNWMxZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0YWxpc3QvZGF0YWxpc3Qt
b3B0aW9uLWxhYmVscy5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMv
dWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
ICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgICAgICBhZGRFdmVudExpc3RlbmVy
KCJsb2FkIiwgYXN5bmMgKCkgPT4geworICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uKCJUaGlz
IHRlc3QgdmVyaWZpZXMgdGhhdCB3aGVuIG9wdGlvbiBlbGVtZW50IGxhYmVscyBhcmUgaW5jbHVk
ZWQgaW4gZGF0YWxpc3Qgc3VnZ2VzdGlvbnMsIHRoZSB0ZXh0IG9mIHRoZSBsYWJlbCBpcyBjb25z
aWRlcmVkIHdoZW4gY29tcHV0aW5nIG1hdGNoaW5nIGRhdGFsaXN0IHN1Z2dlc3Rpb25zLiBPdGhl
cndpc2UsIGlmIGxhYmVscyBhcmUgbm90IGluY2x1ZGVkIGluIHN1Z2dlc3Rpb25zLCB0aGVyZSBz
aG91bGQgYmUgbm8gZGF0YWxpc3Qgc3VnZ2VzdGlvbnMgc2hvd24uIFRvIG1hbnVhbGx5IHJ1biB0
aGUgdGVzdCwgZm9jdXMgdGhlIGlucHV0IGVsZW1lbnQgYW5kIHR5cGUgJ2UnLiBUaGVyZSBzaG91
bGQgZWl0aGVyIGJlIG5vIG1hdGNoZXMgb3IgdHdvIG1hdGNoZXMgKGFuZCBzZWxlY3RpbmcgdGhl
IHNlY29uZCBtYXRjaCBzaG91bGQgc2V0IHRoZSB2YWx1ZSB0byAnYmF6JykuIik7CisgICAgICAg
ICAgICAgICAgaW5wdXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJpbnB1dCIpOworCisgICAg
ICAgICAgICAgICAgYXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVFbGVtZW50QW5kV2FpdEZvcklucHV0
U2Vzc2lvbihpbnB1dCk7CisgICAgICAgICAgICAgICAgYXdhaXQgVUlIZWxwZXIudHlwZUNoYXJh
Y3RlcigiZSIpOworICAgICAgICAgICAgICAgIGlmIChhd2FpdCBVSUhlbHBlci5pc1Nob3dpbmdE
YXRhTGlzdFN1Z2dlc3Rpb25zKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXdhaXQgVUlIZWxw
ZXIuYWN0aXZhdGVEYXRhTGlzdFN1Z2dlc3Rpb24oMSk7CisgICAgICAgICAgICAgICAgICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiaW5wdXQudmFsdWUiLCAiYmF6Iik7CisgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiTm90IHNob3dpbmcg
c3VnZ2VzdGlvbnMuIik7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiaW5wdXQudmFsdWUiLCAiZSIpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgIGlucHV0LmJsdXIoKTsKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+Cisg
ICAgICAgIDxpbnB1dCBsaXN0PSJsaXN0IiBhdXRvY2FwaXRhbGl6ZT0ibm9uZSI+CisgICAgICAg
IDxkYXRhbGlzdCBpZD0ibGlzdCI+CisgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJmb28iIGxh
YmVsPSJvbmUiPjwvb3B0aW9uPgorICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iYmFyIj50d288
L29wdGlvbj4KKyAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImJheiIgbGFiZWw9InRocmVlIj5m
b3VyPC9vcHRpb24+CisgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJnYXJwbHkiPjwvb3B0aW9u
PgorICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0icXV4IiBsYWJlbD0icXV4Ij5xdXg8L29wdGlv
bj4KKyAgICAgICAgICAgIDxvcHRpb24gbGFiZWw9ImZpdmUiPjwvb3B0aW9uPgorICAgICAgICA8
L2RhdGFsaXN0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9mb3Jtcy9kYXRh
bGlzdC9kYXRhbGlzdC1vcHRpb24tbGFiZWxzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9mYXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0LW9wdGlvbi1sYWJlbHMtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3MDE5ZGM0YWU1NDY5NmFjNTBlOGVhNzEwYzEyOTk2YzA5
ZjU2ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9m
b3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC1vcHRpb24tbGFiZWxzLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDExIEBACitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3aGVuIG9wdGlvbiBlbGVtZW50IGxh
YmVscyBhcmUgaW5jbHVkZWQgaW4gZGF0YWxpc3Qgc3VnZ2VzdGlvbnMsIHRoZSB0ZXh0IG9mIHRo
ZSBsYWJlbCBpcyBjb25zaWRlcmVkIHdoZW4gY29tcHV0aW5nIG1hdGNoaW5nIGRhdGFsaXN0IHN1
Z2dlc3Rpb25zLiBPdGhlcndpc2UsIGlmIGxhYmVscyBhcmUgbm90IGluY2x1ZGVkIGluIHN1Z2dl
c3Rpb25zLCB0aGVyZSBzaG91bGQgYmUgbm8gZGF0YWxpc3Qgc3VnZ2VzdGlvbnMgc2hvd24uIFRv
IG1hbnVhbGx5IHJ1biB0aGUgdGVzdCwgZm9jdXMgdGhlIGlucHV0IGVsZW1lbnQgYW5kIHR5cGUg
J2UnLiBUaGVyZSBzaG91bGQgZWl0aGVyIGJlIG5vIG1hdGNoZXMgb3IgdHdvIG1hdGNoZXMgKGFu
ZCBzZWxlY3RpbmcgdGhlIHNlY29uZCBtYXRjaCBzaG91bGQgc2V0IHRoZSB2YWx1ZSB0byAnYmF6
JykuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIE5vdCBzaG93aW5nIHN1
Z2dlc3Rpb25zLgorUEFTUyBpbnB1dC52YWx1ZSBpcyAiZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9pb3MvZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC1vcHRpb24tbGFiZWxzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9mYXN0L2Zvcm1zL2RhdGFsaXN0
L2RhdGFsaXN0LW9wdGlvbi1sYWJlbHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3MDE5ZGM0
YWU1NDY5NmFjNTBlOGVhNzEwYzEyOTk2YzA5ZjU2ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9pb3MvZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC1vcHRpb24t
bGFiZWxzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitUaGlzIHRlc3QgdmVyaWZpZXMg
dGhhdCB3aGVuIG9wdGlvbiBlbGVtZW50IGxhYmVscyBhcmUgaW5jbHVkZWQgaW4gZGF0YWxpc3Qg
c3VnZ2VzdGlvbnMsIHRoZSB0ZXh0IG9mIHRoZSBsYWJlbCBpcyBjb25zaWRlcmVkIHdoZW4gY29t
cHV0aW5nIG1hdGNoaW5nIGRhdGFsaXN0IHN1Z2dlc3Rpb25zLiBPdGhlcndpc2UsIGlmIGxhYmVs
cyBhcmUgbm90IGluY2x1ZGVkIGluIHN1Z2dlc3Rpb25zLCB0aGVyZSBzaG91bGQgYmUgbm8gZGF0
YWxpc3Qgc3VnZ2VzdGlvbnMgc2hvd24uIFRvIG1hbnVhbGx5IHJ1biB0aGUgdGVzdCwgZm9jdXMg
dGhlIGlucHV0IGVsZW1lbnQgYW5kIHR5cGUgJ2UnLiBUaGVyZSBzaG91bGQgZWl0aGVyIGJlIG5v
IG1hdGNoZXMgb3IgdHdvIG1hdGNoZXMgKGFuZCBzZWxlY3RpbmcgdGhlIHNlY29uZCBtYXRjaCBz
aG91bGQgc2V0IHRoZSB2YWx1ZSB0byAnYmF6JykuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIE5vdCBzaG93aW5nIHN1Z2dlc3Rpb25zLgorUEFTUyBpbnB1dC52YWx1ZSBp
cyAiZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395106</attachid>
            <date>2020-03-31 16:11:29 -0700</date>
            <delta_ts>2020-03-31 16:45:13 -0700</delta_ts>
            <desc>Fix flakiness on iOS</desc>
            <filename>bug-201768-20200331161128.patch</filename>
            <type>text/plain</type>
            <size>40862</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MjQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDhmZjAxMmZmYjJjZjA4
ZmRmODk0YzRmNGQ4ZmZkN2YyN2I2NWZhNi4uODU3MTNmNmE1MWFkYWQxYmE2NTE1ZTNmNDQ3N2Vm
NjI2NmVhNzZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTAzLTMxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIERhdGFsaXN0IG9w
dGlvbidzIGxhYmVsIG5vdCB1c2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDE3NjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1MzYxMTg2Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFJlZmFjdG9yIERh
dGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uJ3Mgc3VnZ2VzdGlvbnMgdG8gaW5jbHVkZSBsYWJl
bCB0ZXh0IGFzIHdlbGwgYXMgdmFsdWVzLCBhbmQgdGhlbiBhZGp1c3QKKyAgICAgICAgVGV4dEZp
ZWxkSW5wdXRUeXBlOjpzdWdnZXN0aW9ucygpIHRvIG1hdGNoIGxhYmVsIHRleHQgYXMgd2VsbCBh
cyB2YWx1ZXMgZm9yIHBvcnRzIHRoYXQgYXJlIGNhcGFibGUgb2Ygc2hvd2luZworICAgICAgICBs
YWJlbCB0ZXh0IGluIGRhdGFsaXN0IHN1Z2dlc3Rpb24gVUkuCisKKyAgICAgICAgVGVzdDogZmFz
dC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC1vcHRpb24tbGFiZWxzLmh0bWwKKworICAgICAgICAq
IGh0bWwvRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24uaDoKKworICAgICAgICBJbnRyb2R1
Y2UgRGF0YUxpc3RTdWdnZXN0aW9uLCBhIHdyYXBwZXIgYXJvdW5kIGEgdmFsdWUgYW5kIGxhYmVs
LiBDdXJyZW50bHksIHRoZSBsaXN0IG9mIGRhdGFsaXN0IHN1Z2dlc3Rpb25zCisgICAgICAgIGlz
IG9ubHkgYSBgVmVjdG9yPFN0cmluZz5gOyBjaGFuZ2UgaXQgdG8gYmUgYSBgVmVjdG9yPERhdGFM
aXN0U3VnZ2VzdGlvbj5gIGluc3RlYWQuCisKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFMaXN0U3Vn
Z2VzdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2Vz
dGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkluZm9y
bWF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0
aW9uSW5mb3JtYXRpb246OmRlY29kZSk6CisKKyAgICAgICAgTW92ZSBlbmNvZGluZyBhbmQgZGVj
b2RpbmcgZm9yIERhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uIG91dCBvZiBXZWJDb3JlQXJn
dW1lbnRDb2RlcnMgYW5kIGludG8gV2ViQ29yZS4KKworICAgICAgICAqIGh0bWwvVGV4dEZpZWxk
SW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6bGlz
dEF0dHJpYnV0ZVRhcmdldENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5w
dXRUeXBlOjpzdWdnZXN0aW9ucyk6CisKKyAgICAgICAgV2hlbiBjb21wdXRpbmcgc3VnZ2VzdGlv
bnMsIG1hdGNoIGxhYmVsIHRleHQgaW4gYWRkaXRpb24gdG8gdmFsdWVzIG9uIHBvcnRzIHRoYXQg
ZGlzcGxheSBsYWJlbCB0ZXh0IGluIHRoZQorICAgICAgICBjaHJvbWU7IGZvciB0aGUgdGltZSBi
ZWluZywgdGhpcyBpcyBvbmx5IHRoZSBjYXNlIGZvciBtYWNPUywgYnV0IHdpbGwgYmUgZXh0ZW5k
ZWQgdG8gaU9TIGFzIHdlbGwgaW4gYSBmdXR1cmUKKyAgICAgICAgcGF0Y2guIE5vdGUgdGhhdCB3
ZSBkb24ndCBwbHVtYiBsYWJlbCB0ZXh0IGlmIGl0IGlzIGFscmVhZHkgdGhlIHNhbWUgYXMgdGhl
IHZhbHVlLCB0byBhdm9pZCBkdXBsaWNhdGUgc3RyaW5ncworICAgICAgICBmcm9tIHNob3dpbmcg
dXAuCisKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6ZGlkQ2xvc2VTdWdn
ZXN0aW9ucyk6CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaDoKKyAgICAgICAg
KiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoK
KworICAgICAgICBBZGQgYSBjaHJvbWUgY2xpZW50IGhvb2sgdG8gcmV0dXJuIHdoZXRoZXIgb3Ig
bm90IHRoZSBjbGllbnQgc2hvd3MgbGFiZWwgdGV4dCBpbiBpdHMgZGF0YWxpc3QgVUkuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9EYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50Lmg6CisKIDIwMjAtMDMt
MzAgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgc2Ny
b2xsSW50b1ZpZXcoKSBlcnJvbmVvdXNseSBzY3JvbGxzIG5vbi1jb250YWluaW5nIGJsb2NrIHNj
cm9sbGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCA0ZmRhMjZiMTc2Njk5Y2IyMDk4MTc4NTgyYzZmMzljZTljN2E5
MTFhLi5kYTEwYmNkOTkwZmM4ODA5ODg4ZWYwNzdkOGRiMDg4NWEyYWVkNWYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDkxIEBACisyMDIwLTAzLTMxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgorCisgICAgICAgIERhdGFsaXN0IG9wdGlvbidzIGxhYmVsIG5vdCB1c2VkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE3NjgKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1MzYxMTg2PgorCisgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgorCisgICAgICAgIEFkZCBzdXBwb3J0IG9uIG1hY09TIGZvciBzaG93aW5nIG9w
dGlvbiBsYWJlbHMgaW4gZGF0YWxpc3Qgc3VnZ2VzdGlvbnMuCisKKyAgICAgICAgKiBTaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxE
YXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbj46OmVuY29kZSk6IERlbGV0ZWQuCisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24+OjpkZWNv
ZGUpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoK
KworICAgICAgICBSZW1vdmUgV2ViQ29yZUFyZ3VtZW50Q29kZXJzIGxvZ2ljIGZvciBlbmNvZGlu
ZyBhbmQgZGVjb2RpbmcgRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24uIFNlZQorICAgICAg
ICBEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbi5oIGluIFdlYkNvcmUgZm9yIG1vcmUgZGV0
YWlsLgorCisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJv
cGRvd25HdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJv
cGRvd25HdGs6OnNob3cpOgorCisgICAgICAgIFR3ZWFrIEdUSyBjb2RlIHRvIGFkanVzdCBmb3Ig
dGhlIGNoYW5nZSBmcm9tIGBTdHJpbmdgIHRvIGBEYXRhTGlzdFN1Z2dlc3Rpb25gLgorCisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MubW06
CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2wgZGlkU2VsZWN0T3B0aW9u
QXRJbmRleDpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbCB0ZXh0
U3VnZ2VzdGlvbnNdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbCBz
dWdnZXN0aW9uQXRJbmRleDpdKToKKworICAgICAgICBBZGp1c3Qgc29tZSBpT1MgY29kZXBhdGhz
IHRvIHVzZSBEYXRhTGlzdFN1Z2dlc3Rpb246OnZhbHVlIGFzIHRoZSB2YWx1ZSBzdHJpbmcgdG8g
ZGlzcGxheS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViRGF0YUxpc3RTdWdnZXN0aW9u
c0Ryb3Bkb3duTWFjLm1tOgorCisgICAgICAgIFR3ZWFrIHNldmVyYWwgVUkgY29uc3RhbnRzLiBB
IHN1Z2dlc3Rpb24gY2VsbCBtYXkgbm93IGJlIGVpdGhlciAyMCBvciA0MHB0IHRhbGwsIGRlcGVu
ZGluZyBvbiB3aGV0aGVyIGl0IGhhcworICAgICAgICBsYWJlbCB0ZXh0IHRvIHNob3cuCisKKyAg
ICAgICAgQ3VycmVudGx5LCB0aGUgbWF4aW11bSBjb21iaW5lZCBoZWlnaHQgb2YgdGhlIHRhYmxl
IHZpZXcgY2VsbHMgaXMgMTIwIChub3QgaW5jbHVkaW5nIHNwYWNpbmcgYmV0d2VlbiBjZWxscyBh
bmQKKyAgICAgICAgdmVydGljYWwgcGFkZGluZyBhcm91bmQgdGhlIHRvcCBhbmQgYm90dG9tIG9m
IHRoZSB0YWJsZSB2aWV3KSwgc2luY2UgdGhlIG1heGltdW0gbnVtYmVyIG9mIGNlbGxzIHRvIHNo
b3cgaXMgNgorICAgICAgICBhbmQgZWFjaCBjZWxsIGlzIDIwcHQgdGFsbC4gTWFpbnRhaW4gdGhp
cyBjb25zdGFudCBieSBtYWtpbmcgdGhlIG1heGltdW0gY2VsbCBoZWlnaHQgMTIwLCB3aGljaCBh
Y2NvbW9kYXRlcworICAgICAgICBlaXRoZXIgdGhyZWUgbGFiZWxlZCBjZWxscywgb3IgNiB1bmxh
YmVsZWQgY2VsbHMgKGkuZS4gdG8gbWF0Y2ggc2hpcHBpbmcgYmVoYXZpb3IpLgorCisgICAgICAg
ICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uVmlldyBpbml0V2l0aEZyYW1lOl0pOgorICAgICAgICAo
LVtXS0RhdGFMaXN0U3VnZ2VzdGlvblZpZXcgbGF5b3V0XSk6CisKKyAgICAgICAgTWFpbnRhaW4g
dHdvIHRleHQgZmllbGRzIG9yIHZhbHVlIGFuZCAob3B0aW9uYWxseSkgbGFiZWwgdGV4dDogYF92
YWx1ZUZpZWxkYCBhbmQgYF9sYWJlbEZpZWxkYC4gVGhlIHZhbHVlIGZpZWxkCisgICAgICAgIGZp
bGxzIHRoZSBib3VuZHMgb2YgdGhlIGNlbGwgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlcmUgaXMgbm8g
bGFiZWwgdGV4dCwgYnV0IGZpbGxzIG9ubHkgdGhlIHRvcCBoYWxmIG9mIHRoZSBjZWxsCisgICAg
ICAgIGluIHRoZSBjYXNlIHdoZXJlIHRoZXJlIGlzIGxhYmVsIHRleHQuIFRoZSBsYWJlbCBmaWVs
ZCB0YWtlcyB0aGUgYm90dG9tIGhhbGYgb2YgdGhlIGNlbGwgaW4gdGhpcyBjYXNlLgorCisgICAg
ICAgIEFkZGl0aW9uYWxseSwgYWRkIGEgZGl2aWRlciB2aWV3IHRoYXQgbWF5IGFwcGVhciBhdCB0
aGUgdmVyeSBib3R0b20gb2YgZWFjaCBjZWxsLiBUaGlzIGRpdmlkZXIgdmlldyBpcyBwcmVzZW50
CisgICAgICAgIHdoZW4gb25lIG9yIG1vcmUgc3VnZ2VzdGlvbnMgaW4gdGhlIGRhdGFsaXN0IGFy
ZSBsYWJlbGVkLgorCisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uVmlldyBzZXRWYWx1
ZTpsYWJlbDpdKToKKworICAgICAgICBSZW5hbWVkIGZyb20gLXNldFRleHQ6LiBBZGQgYSBsYWJl
bCBzdHJpbmcgYXJndW1lbnQgYXMgd2VsbC4KKworICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2Vz
dGlvblZpZXcgc2V0U2hvdWxkU2hvd0JvdHRvbURpdmlkZXI6XSk6CisKKyAgICAgICAgQWRkIGdl
dHRlcnMgYW5kIHNldHRlcnMgZm9yIHRoZSAtc2hvdWxkU2hvd0JvdHRvbURpdmlkZXIgcHJvcGVy
dHksIHdoaWNoIGNhbiBiZSB1c2VkIHRvIG1ha2UgdGhlIGRpdmlkZXIgdmlldworICAgICAgICB2
aXNpYmxlIG9yIGhpZGRlbi4KKworICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvblZpZXcg
c2hvdWxkU2hvd0JvdHRvbURpdmlkZXJdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rp
b25WaWV3IHNldEJhY2tncm91bmRTdHlsZTpdKToKKworICAgICAgICBVc2UgLVtOU0NvbG9yIHNl
Y29uZGFyeUxhYmVsQ29sb3JdIGZvciB0aGUgbGFiZWwgdGV4dCBmaWVsZC4KKworICAgICAgICAo
c2hvdWxkU2hvd0RpdmlkZXJzQmV0d2VlbkNlbGxzKToKKworICAgICAgICBBZGQgYSBoZWxwZXIg
bWV0aG9kIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSB0YWJsZSB2aWV3IHNob3VsZCBiZSBzaG93
aW5nIGNsZWFyIGRpdmlkZXJzIGJldHdlZW4gZWFjaCBpdGVtLgorICAgICAgICBXZSBvbmx5IGRv
IHNvIGlmIHRoZXJlIGFyZSBvbmUgb3IgbW9yZSBsYWJlbHMgdG8gYmUgc2hvd24uCisKKyAgICAg
ICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbGxlciBpbml0V2l0aEluZm9ybWF0aW9u
OmluVmlldzpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbGxlciBj
dXJyZW50U2VsZWN0ZWRTdHJpbmddKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25z
Q29udHJvbGxlciB1cGRhdGVXaXRoSW5mb3JtYXRpb246XSk6CisgICAgICAgICgtW1dLRGF0YUxp
c3RTdWdnZXN0aW9uc0NvbnRyb2xsZXIgbW92ZVNlbGVjdGlvbkJ5RGlyZWN0aW9uOl0pOgorCisg
ICAgICAgIERyaXZlLWJ5IGZpeDogc2Nyb2xsIHRvIHJldmVhbCBlYWNoIHNlbGVjdGVkIHJvdyB3
aGVuIHVzaW5nIHRoZSBhcnJvdyBrZXlzIHRvIG5hdmlnYXRlIGJldHdlZW4gaXRlbXMuCisKKyAg
ICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbGxlciBkcm9wZG93blJlY3RGb3JF
bGVtZW50UmVjdDpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbGxl
ciB0YWJsZVZpZXc6aGVpZ2h0T2ZSb3c6XSk6CisKKyAgICAgICAgUmV0dXJuIGVpdGhlciBgZHJv
cGRvd25Sb3dIZWlnaHRXaXRob3V0TGFiZWxgIG9yIGBkcm9wZG93blJvd0hlaWdodFdpdGhMYWJl
bGAsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZXJlIGlzCisgICAgICAgIGxhYmVsIHRleHQgdG8g
YmUgc2hvd24gaW4gdGhhdCBzdWdnZXN0aW9uIGNlbGwuCisKKyAgICAgICAgKC1bV0tEYXRhTGlz
dFN1Z2dlc3Rpb25zQ29udHJvbGxlciB0YWJsZVZpZXc6dmlld0ZvclRhYmxlQ29sdW1uOnJvdzpd
KToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25WaWV3IHNldFRleHQ6XSk6IERlbGV0
ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNhblNob3dEYXRhTGlzdFN1
Z2dlc3Rpb25MYWJlbHMgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisKIDIwMjAtMDMtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQgc2hvdWxkIHRha2UgYSBmb3JlZ3JvdW5kIGFz
c2VydGlvbiBmb3Igb2Zmc2NyZWVuIGxvYWRzIHdoZW4gdGhlIGFwcCBpcyBmb3JlZ3JvdW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggY2UwYWQ0Y2M5ODFjNDc3M2E2ODQ4NmJlMGNh
MDFiZWYzYWM0NWI2Ni4uYjk3YjU1NGE4MDQ2NTg0NWNjZmNjYmY1YmE2ODIyMDRjMTIzNTJiNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTAzLTMx
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIERhdGFs
aXN0IG9wdGlvbidzIGxhYmVsIG5vdCB1c2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE3NjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1MzYx
MTg2PgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFNlZSBX
ZWJDb3JlL0NoYW5nZUxvZyBhbmQgV2ViS2l0L0NoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWxzLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisKIDIwMjAtMDMt
MzAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IHByb3ZpZGUgYSB3YXkgdG8gbG9nIG1lc3NhZ2VzIGZyb20gdGhlIG5ldHdvcmsgcHJv
Y2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRhTGlzdFN1Z2dlc3Rpb25J
bmZvcm1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRhTGlzdFN1Z2dlc3Rpb25JbmZv
cm1hdGlvbi5oCmluZGV4IDU3OTQ1MWE1OTgzMmZkZGZmYzliOThmNDBjZDk1OTU1NjhjZWZjNmQu
LmMyMzNjY2JjZWYwMDM1MDczNjdlYWI3NzhhNTE2OTQzNWQ1NzQxOGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0RhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uLmgKQEAgLTI5
LDE5ICsyOSw4MyBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogI2lmIEVOQUJMRShEQVRB
TElTVF9FTEVNRU5UKQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gY2xhc3MgRGF0YUxp
c3RTdWdnZXN0aW9uQWN0aXZhdGlvblR5cGUgeworZW51bSBjbGFzcyBEYXRhTGlzdFN1Z2dlc3Rp
b25BY3RpdmF0aW9uVHlwZSA6IHVpbnQ4X3QgewogICAgIENvbnRyb2xDbGlja2VkLAogICAgIElu
ZGljYXRvckNsaWNrZWQsCiAgICAgVGV4dENoYW5nZWQsCiB9OwogCitzdHJ1Y3QgRGF0YUxpc3RT
dWdnZXN0aW9uIHsKKyAgICBTdHJpbmcgdmFsdWU7CisgICAgU3RyaW5nIGxhYmVsOworCisgICAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxEYXRhTGlzdFN1Z2dlc3Rp
b24+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9p
ZCBEYXRhTGlzdFN1Z2dlc3Rpb246OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorewor
ICAgIGVuY29kZXIgPDwgdmFsdWU7CisgICAgZW5jb2RlciA8PCBsYWJlbDsKK30KKwordGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPERhdGFMaXN0U3VnZ2VzdGlvbj4gRGF0YUxpc3RT
dWdnZXN0aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxTdHJp
bmc+IHZhbHVlOworICAgIGRlY29kZXIgPj4gdmFsdWU7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPFN0cmluZz4gbGFiZWw7Cisg
ICAgZGVjb2RlciA+PiBsYWJlbDsKKyAgICBpZiAoIWxhYmVsKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgcmV0dXJuIHt7ICp2YWx1ZSwgKmxhYmVsIH19OworfQorCiBzdHJ1
Y3QgRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24gewogICAgIERhdGFMaXN0U3VnZ2VzdGlv
bkFjdGl2YXRpb25UeXBlIGFjdGl2YXRpb25UeXBlOwotICAgIFZlY3RvcjxTdHJpbmc+IHN1Z2dl
c3Rpb25zOworICAgIFZlY3RvcjxEYXRhTGlzdFN1Z2dlc3Rpb24+IHN1Z2dlc3Rpb25zOwogICAg
IEludFJlY3QgZWxlbWVudFJlY3Q7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIE9wdGlvbmFsPERhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uPiBkZWNvZGUoRGVjb2Rl
ciYpOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgRGF0YUxpc3RTdWdnZXN0
aW9uSW5mb3JtYXRpb246OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVu
Y29kZXIuZW5jb2RlRW51bShhY3RpdmF0aW9uVHlwZSk7CisgICAgZW5jb2RlciA8PCBzdWdnZXN0
aW9uczsKKyAgICBlbmNvZGVyIDw8IGVsZW1lbnRSZWN0OwogfQorCit0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPgorT3B0aW9uYWw8RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24+IERhdGFMaXN0
U3VnZ2VzdGlvbkluZm9ybWF0aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBE
YXRhTGlzdFN1Z2dlc3Rpb25BY3RpdmF0aW9uVHlwZSBhY3RpdmF0aW9uVHlwZTsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlRW51bShhY3RpdmF0aW9uVHlwZSkpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxWZWN0b3I8RGF0YUxpc3RTdWdnZXN0aW9uPj4gc3Vn
Z2VzdGlvbnM7CisgICAgZGVjb2RlciA+PiBzdWdnZXN0aW9uczsKKyAgICBpZiAoIXN1Z2dlc3Rp
b25zKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8SW50UmVj
dD4gZWxlbWVudFJlY3Q7CisgICAgZGVjb2RlciA+PiBlbGVtZW50UmVjdDsKKyAgICBpZiAoIWVs
ZW1lbnRSZWN0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIHt7
IGFjdGl2YXRpb25UeXBlLCAqc3VnZ2VzdGlvbnMsICplbGVtZW50UmVjdCB9fTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZp
ZWxkSW5wdXRUeXBlLmNwcAppbmRleCA1ZWM1YzM0NWIwNjBjZmEwODdlODBiNTMwYWI2ZTllYTRm
ZGRiYmMzLi4zY2FlMzhkNWYwNjYwMDA1MTI5ZTBhMTZlZDIwY2NkODYxYjg3OGJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCkBAIC04MjgsNyArODI4LDcg
QEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OnVwZGF0ZUF1dG9GaWxsQnV0dG9uKCkKIAogdm9p
ZCBUZXh0RmllbGRJbnB1dFR5cGU6Omxpc3RBdHRyaWJ1dGVUYXJnZXRDaGFuZ2VkKCkKIHsKLSAg
ICBtX2NhY2hlZFN1Z2dlc3Rpb25zID0gc3RkOjptYWtlX3BhaXIoU3RyaW5nKCksIFZlY3RvcjxT
dHJpbmc+KCkpOworICAgIG1fY2FjaGVkU3VnZ2VzdGlvbnMgPSB7IH07CiAKICAgICBpZiAoIW1f
ZGF0YUxpc3REcm9wZG93bkluZGljYXRvcikKICAgICAgICAgY3JlYXRlRGF0YUxpc3REcm9wZG93
bkluZGljYXRvcigpOwpAQCAtODU2LDM0ICs4NTYsMzkgQEAgSW50UmVjdCBUZXh0RmllbGRJbnB1
dFR5cGU6OmVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkgY29uc3QKICAgICByZXR1
cm4gZWxlbWVudCgpLT5kb2N1bWVudCgpLnZpZXcoKS0+Y29udGVudHNUb1Jvb3RWaWV3KGVsZW1l
bnQoKS0+cmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSk7CiB9CiAKLVZlY3Rv
cjxTdHJpbmc+IFRleHRGaWVsZElucHV0VHlwZTo6c3VnZ2VzdGlvbnMoKQorVmVjdG9yPERhdGFM
aXN0U3VnZ2VzdGlvbj4gVGV4dEZpZWxkSW5wdXRUeXBlOjpzdWdnZXN0aW9ucygpCiB7CiAgICAg
Ly8gRklYTUU6IFN1Z2dlc3Rpb25zIGFyZSAidHlwaW5nIGNvbXBsZXRpb25zIiBhbmQgc28gc2hv
dWxkIHByb2JhYmx5IHVzZSB0aGUgZmluZFBsYWluVGV4dCBhbGdvcml0aG0gcmF0aGVyIHRoYW4g
dGhlIHNpbXBsaXN0aWMgImlnbm9yaW5nIEFTQ0lJIGNhc2UiIHJ1bGVzLgogCi0gICAgVmVjdG9y
PFN0cmluZz4gc3VnZ2VzdGlvbnM7Ci0gICAgVmVjdG9yPFN0cmluZz4gbWF0Y2hlc0NvbnRhaW5p
bmdWYWx1ZTsKKyAgICBWZWN0b3I8RGF0YUxpc3RTdWdnZXN0aW9uPiBzdWdnZXN0aW9uczsKKyAg
ICBWZWN0b3I8RGF0YUxpc3RTdWdnZXN0aW9uPiBtYXRjaGVzQ29udGFpbmluZ1ZhbHVlOwogCiAg
ICAgU3RyaW5nIGVsZW1lbnRWYWx1ZSA9IGVsZW1lbnQoKS0+dmFsdWUoKTsKIAogICAgIGlmICgh
bV9jYWNoZWRTdWdnZXN0aW9ucy5maXJzdC5pc051bGwoKSAmJiBlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKG1fY2FjaGVkU3VnZ2VzdGlvbnMuZmlyc3QsIGVsZW1lbnRWYWx1ZSkpCiAgICAgICAgIHJl
dHVybiBtX2NhY2hlZFN1Z2dlc3Rpb25zLnNlY29uZDsKIAorICAgIGF1dG8qIHBhZ2UgPSBlbGVt
ZW50KCktPmRvY3VtZW50KCkucGFnZSgpOworICAgIGJvb2wgY2FuU2hvd0xhYmVscyA9IHBhZ2Ug
JiYgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuY2FuU2hvd0RhdGFMaXN0U3VnZ2VzdGlvbkxhYmVs
cygpOwogICAgIGlmIChhdXRvIGRhdGFMaXN0ID0gZWxlbWVudCgpLT5kYXRhTGlzdCgpKSB7CiAg
ICAgICAgIGZvciAoYXV0byYgb3B0aW9uIDogZGF0YUxpc3QtPnN1Z2dlc3Rpb25zKCkpIHsKLSAg
ICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IG9wdGlvbi52YWx1ZSgpOwotICAgICAgICAgICAgaWYg
KCFlbGVtZW50KCktPmlzVmFsaWRWYWx1ZSh2YWx1ZSkpCisgICAgICAgICAgICBEYXRhTGlzdFN1
Z2dlc3Rpb24gc3VnZ2VzdGlvbjsKKyAgICAgICAgICAgIHN1Z2dlc3Rpb24udmFsdWUgPSBvcHRp
b24udmFsdWUoKTsKKyAgICAgICAgICAgIGlmICghZWxlbWVudCgpLT5pc1ZhbGlkVmFsdWUoc3Vn
Z2VzdGlvbi52YWx1ZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB2
YWx1ZSA9IHNhbml0aXplVmFsdWUodmFsdWUpOwotICAgICAgICAgICAgaWYgKGVsZW1lbnRWYWx1
ZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgc3VnZ2VzdGlvbnMuYXBwZW5kKHZhbHVlKTsK
LSAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlLnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShl
bGVtZW50VmFsdWUpKQotICAgICAgICAgICAgICAgIHN1Z2dlc3Rpb25zLmFwcGVuZCh2YWx1ZSk7
Ci0gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZS5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKGVs
ZW1lbnRWYWx1ZSkpCi0gICAgICAgICAgICAgICAgbWF0Y2hlc0NvbnRhaW5pbmdWYWx1ZS5hcHBl
bmQodmFsdWUpOworICAgICAgICAgICAgc3VnZ2VzdGlvbi52YWx1ZSA9IHNhbml0aXplVmFsdWUo
c3VnZ2VzdGlvbi52YWx1ZSk7CisgICAgICAgICAgICBzdWdnZXN0aW9uLmxhYmVsID0gb3B0aW9u
LmxhYmVsKCk7CisgICAgICAgICAgICBpZiAoc3VnZ2VzdGlvbi52YWx1ZSA9PSBzdWdnZXN0aW9u
LmxhYmVsKQorICAgICAgICAgICAgICAgIHN1Z2dlc3Rpb24ubGFiZWwgPSB7IH07CisKKyAgICAg
ICAgICAgIGlmIChlbGVtZW50VmFsdWUuaXNFbXB0eSgpIHx8IHN1Z2dlc3Rpb24udmFsdWUuc3Rh
cnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGVsZW1lbnRWYWx1ZSkpCisgICAgICAgICAgICAgICAg
c3VnZ2VzdGlvbnMuYXBwZW5kKFdURk1vdmUoc3VnZ2VzdGlvbikpOworICAgICAgICAgICAgZWxz
ZSBpZiAoc3VnZ2VzdGlvbi52YWx1ZS5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKGVsZW1lbnRW
YWx1ZSkgfHwgKGNhblNob3dMYWJlbHMgJiYgc3VnZ2VzdGlvbi5sYWJlbC5jb250YWluc0lnbm9y
aW5nQVNDSUlDYXNlKGVsZW1lbnRWYWx1ZSkpKQorICAgICAgICAgICAgICAgIG1hdGNoZXNDb250
YWluaW5nVmFsdWUuYXBwZW5kKFdURk1vdmUoc3VnZ2VzdGlvbikpOwogICAgICAgICB9CiAgICAg
fQogCi0gICAgc3VnZ2VzdGlvbnMuYXBwZW5kVmVjdG9yKG1hdGNoZXNDb250YWluaW5nVmFsdWUp
OworICAgIHN1Z2dlc3Rpb25zLmFwcGVuZFZlY3RvcihXVEZNb3ZlKG1hdGNoZXNDb250YWluaW5n
VmFsdWUpKTsKICAgICBtX2NhY2hlZFN1Z2dlc3Rpb25zID0gc3RkOjptYWtlX3BhaXIoZWxlbWVu
dFZhbHVlLCBzdWdnZXN0aW9ucyk7CiAKICAgICByZXR1cm4gc3VnZ2VzdGlvbnM7CkBAIC04OTYs
NyArOTAxLDcgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmRpZFNlbGVjdERhdGFMaXN0T3B0
aW9uKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRPcHRpb24pCiAKIHZvaWQgVGV4dEZpZWxkSW5wdXRU
eXBlOjpkaWRDbG9zZVN1Z2dlc3Rpb25zKCkKIHsKLSAgICBtX2NhY2hlZFN1Z2dlc3Rpb25zID0g
c3RkOjptYWtlX3BhaXIoU3RyaW5nKCksIFZlY3RvcjxTdHJpbmc+KCkpOworICAgIG1fY2FjaGVk
U3VnZ2VzdGlvbnMgPSB7IH07CiAgICAgbV9zdWdnZXN0aW9uUGlja2VyID0gbnVsbHB0cjsKICAg
ICBpZiAoZWxlbWVudCgpLT5yZW5kZXJlcigpKQogICAgICAgICBlbGVtZW50KCktPnJlbmRlcmVy
KCktPnJlcGFpbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxk
SW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5oCmlu
ZGV4IDRlMzNmMDU3YzJjODVjOWVjYzY2YTRjMGJiZmNlY2IxOTRmYmRlMzkuLjVhMTdmMTU4MjFh
MGRkMDYwNzI3YWE5ZWEwZTljNDQxOGEwYTc3NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0
RmllbGRJbnB1dFR5cGUuaApAQCAtMTMyLDE0ICsxMzIsMTQgQEAgcHJpdmF0ZToKIAogICAgIC8v
IERhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQKICAgICBJbnRSZWN0IGVsZW1lbnRSZWN0SW5Sb290
Vmlld0Nvb3JkaW5hdGVzKCkgY29uc3QgZmluYWw7Ci0gICAgVmVjdG9yPFN0cmluZz4gc3VnZ2Vz
dGlvbnMoKSBmaW5hbDsKKyAgICBWZWN0b3I8RGF0YUxpc3RTdWdnZXN0aW9uPiBzdWdnZXN0aW9u
cygpIGZpbmFsOwogICAgIHZvaWQgZGlkU2VsZWN0RGF0YUxpc3RPcHRpb24oY29uc3QgU3RyaW5n
JikgZmluYWw7CiAgICAgdm9pZCBkaWRDbG9zZVN1Z2dlc3Rpb25zKCkgZmluYWw7CiAKICAgICB2
b2lkIGRhdGFMaXN0QnV0dG9uRWxlbWVudFdhc0NsaWNrZWQoKSBmaW5hbDsKICAgICBSZWZQdHI8
RGF0YUxpc3RCdXR0b25FbGVtZW50PiBtX2RhdGFMaXN0RHJvcGRvd25JbmRpY2F0b3I7CiAKLSAg
ICBzdGQ6OnBhaXI8U3RyaW5nLCBWZWN0b3I8U3RyaW5nPj4gbV9jYWNoZWRTdWdnZXN0aW9uczsK
KyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBWZWN0b3I8RGF0YUxpc3RTdWdnZXN0aW9uPj4gbV9jYWNo
ZWRTdWdnZXN0aW9uczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YUxpc3RTdWdnZXN0aW9uUGlj
a2VyPiBtX3N1Z2dlc3Rpb25QaWNrZXI7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5oCmluZGV4IDE3MWFkNmFjMDFmNjQ4NDIwMzQ4ZTcwODk1MmU2NjYxOGIxOTk5MTEu
LmI4ZDExMTY4YzY5MzhlOGIzN2ZlNjQ0ZjlkNDFkNmFkNDJmNTM4YzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTEzMyw2ICsxMzMsNyBAQCBjbGFzcyBFbXB0eUNocm9t
ZUNsaWVudCA6IHB1YmxpYyBDaHJvbWVDbGllbnQgewogCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VM
RU1FTlQpCiAgICAgc3RkOjp1bmlxdWVfcHRyPERhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcj4gY3Jl
YXRlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKERhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQmKSBm
aW5hbDsKKyAgICBib29sIGNhblNob3dEYXRhTGlzdFN1Z2dlc3Rpb25MYWJlbHMoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKICAgICB2b2lkIHJ1bk9wZW5QYW5lbChG
cmFtZSYsIEZpbGVDaG9vc2VyJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApp
bmRleCA2YTQxM2E3MjM1Mjk3YjNjNDA5MTU3ODEyOGIxYzdmZjY3NzY5MTU5Li40OTQ5ZmVhODVk
YzAxNzhlYzE4OTg0MzQ4YzllNDFjZGUzYTk0OGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xp
ZW50LmgKQEAgLTI3OSw2ICsyNzksNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoREFUQUxJU1Rf
RUxFTUVOVCkKICAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxEYXRhTGlzdFN1Z2dlc3Rpb25Q
aWNrZXI+IGNyZWF0ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcihEYXRhTGlzdFN1Z2dlc3Rpb25z
Q2xpZW50JikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjYW5TaG93RGF0YUxpc3RTdWdnZXN0aW9u
TGFiZWxzKCkgY29uc3QgPSAwOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBh
bmVsKEZyYW1lJiwgRmlsZUNob29zZXImKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9EYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50LmgKaW5kZXggNWVkODAyNWJlNzkwMjky
N2Y1ZDY1M2I5NzY5ZTExM2YyY2FlYzhjYi4uNTZkOTVjNjMzNGVmYTVkNGM5Mjk0OTA3MzJmNTE4
NzA2MjYwYTI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0YUxpc3RT
dWdnZXN0aW9uc0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGFMaXN0
U3VnZ2VzdGlvbnNDbGllbnQuaApAQCAtMzIsMTMgKzMyLDE0IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEludFJlY3Q7CitzdHJ1Y3QgRGF0YUxpc3RTdWdnZXN0aW9uOwogCiBjbGFz
cyBEYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5EYXRh
TGlzdFN1Z2dlc3Rpb25zQ2xpZW50KCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCBJbnRSZWN0
IGVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkgY29uc3QgPSAwOwotICAgIHZpcnR1
YWwgVmVjdG9yPFN0cmluZz4gc3VnZ2VzdGlvbnMoKSA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8
RGF0YUxpc3RTdWdnZXN0aW9uPiBzdWdnZXN0aW9ucygpID0gMDsKIAogICAgIHZpcnR1YWwgdm9p
ZCBkaWRTZWxlY3REYXRhTGlzdE9wdGlvbihjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRpZENsb3NlU3VnZ2VzdGlvbnMoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA0MjU3NzU3OWZkN2U1YjE0OGRmMGQy
MmJjY2RkMTUxZmU4ZWQ0ODI5Li5mZDMyMGVjOTRlNDgwMmE0Yzk1NGE3YWUwZDZjNjUwMTkyZmJj
YzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NvbXBvc2l0aW9uVW5kZXJs
aW5lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DcmVkZW50aWFsLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9DdXJzb3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0RhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VEZXRhaWxzLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9EaWN0YXRpb25BbHRlcm5hdGl2ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGljdGlvbmFyeVBv
cHVwSW5mby5oPgpAQCAtMTcyMSwyOSArMTcyMCw2IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxEYXRh
YmFzZURldGFpbHM+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRGF0YWJhc2VEZXRhaWxzJiBk
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLSNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLXZv
aWQgQXJndW1lbnRDb2RlcjxEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbj46OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1h
dGlvbiYgaW5mbykKLXsKLSAgICBlbmNvZGVyLmVuY29kZUVudW0oaW5mby5hY3RpdmF0aW9uVHlw
ZSk7Ci0gICAgZW5jb2RlciA8PCBpbmZvLnN1Z2dlc3Rpb25zOwotICAgIGVuY29kZXIgPDwgaW5m
by5lbGVtZW50UmVjdDsKLX0KLQotYm9vbCBBcmd1bWVudENvZGVyPERhdGFMaXN0U3VnZ2VzdGlv
bkluZm9ybWF0aW9uPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFdlYkNvcmU6OkRhdGFMaXN0
U3VnZ2VzdGlvbkluZm9ybWF0aW9uJiBpbmZvKQotewotICAgIGlmICghZGVjb2Rlci5kZWNvZGVF
bnVtKGluZm8uYWN0aXZhdGlvblR5cGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGluZm8uc3VnZ2VzdGlvbnMpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8uZWxlbWVudFJlY3QpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLSNlbmRpZgotCiB0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT4gewog
ICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUGFzdGVib2FyZEN1c3RvbURh
dGE6OkVudHJ5Jik7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6RW50cnkmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgKaW5kZXggMWFiYjQxNmMxNGJiZDRhZTViOWM5Nzg4YjdjMDFhMGI1YjYyN2Qw
My4uY2E1N2MzMWVhOTU0NTk3NWY3YmIxYWQ4NDFkZGRiOGYxM2RmZmNkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTE2MywxMCArMTYzLDYg
QEAgc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50Owogc3RydWN0IFZpZXdwb3J0QXJndW1lbnRz
OwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLXN0cnVjdCBEYXRhTGlz
dFN1Z2dlc3Rpb25JbmZvcm1hdGlvbjsKLSNlbmRpZgotCiAjaWYgVVNFKFNPVVApCiBzdHJ1Y3Qg
U291cE5ldHdvcmtQcm94eVNldHRpbmdzOwogI2VuZGlmCkBAIC01NDMsMTMgKzUzOSw2IEBAIHRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RGF0YWJhc2VEZXRhaWxzPiB7
CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpEYXRhYmFzZURldGFp
bHMmKTsKIH07CiAKLSNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLXRlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24+
IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkRhdGFM
aXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uJik7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29k
ZXImLCBXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbiYpOwotfTsKLSNlbmRp
ZgotCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkRpY3RhdGlvbkFs
dGVybmF0aXZlPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJD
b3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZSYpOwogICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3Jl
OjpEaWN0YXRpb25BbHRlcm5hdGl2ZT4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25H
dGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkRhdGFMaXN0U3VnZ2VzdGlv
bnNEcm9wZG93bkd0ay5jcHAKaW5kZXggNDQ4ZmNmYzQxOGQ3ZTJjNTQ2OWVhNGVlZWYzNTViZDgy
YWUyZjBmYy4uNmEzNjc4OTA0MDJiOTA2YzUxNzEwNGY4ZTBjYTJkNTExZjE5MGFiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNE
cm9wZG93bkd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkRhdGFM
aXN0U3VnZ2VzdGlvbnNEcm9wZG93bkd0ay5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIFdl
YkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bkd0azo6c2hvdyhXZWJDb3JlOjpEYXRhTGlzdFN1
Z2dlc3Rpb25JbmZvcm1hdAogICAgIGZvciAoY29uc3QgYXV0byYgc3VnZ2VzdGlvbiA6IGluZm9y
bWF0aW9uLnN1Z2dlc3Rpb25zKSB7CiAgICAgICAgIEd0a1RyZWVJdGVyIGl0ZXI7CiAgICAgICAg
IGd0a19saXN0X3N0b3JlX2FwcGVuZChtb2RlbCwgJml0ZXIpOwotICAgICAgICBndGtfbGlzdF9z
dG9yZV9zZXQobW9kZWwsICZpdGVyLCAwLCBzdWdnZXN0aW9uLnV0ZjgoKS5kYXRhKCksIC0xKTsK
KyAgICAgICAgZ3RrX2xpc3Rfc3RvcmVfc2V0KG1vZGVsLCAmaXRlciwgMCwgc3VnZ2VzdGlvbi52
YWx1ZS51dGY4KCkuZGF0YSgpLCAtMSk7CiAgICAgfQogCiAgICAgR3RrUmVxdWlzaXRpb24gdHJl
ZVZpZXdSZXF1aXNpdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tCmluZGV4IGEx
OTdjNTMxYjMwOWEyOTBjZjA4OWRjYjU4YTNkZmQyNDAxMWZkN2QuLjgzZDUyZDcyNDBkMmY5ZmYy
YTM4ZmU4ZDY0NDUwMGY4ZGM0ZWMxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5t
bQpAQCAtNDIsNyArNDIsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBzdWdnZXN0aW9uQ2Vs
bFJldXNlSWRlbnRpZmllciA9IEAiV0tEYXRhTGlzdFN1Z2dlc3Rpb25DZQogCiBAaW50ZXJmYWNl
IFdLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2wgOiBOU09iamVjdCB7CiAgICAgV2Vha1B0cjxX
ZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUz4gX2Ryb3Bkb3duOwotICAg
IFZlY3RvcjxTdHJpbmc+IF9zdWdnZXN0aW9uczsKKyAgICBWZWN0b3I8V2ViQ29yZTo6RGF0YUxp
c3RTdWdnZXN0aW9uPiBfc3VnZ2VzdGlvbnM7CiB9CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCB3
ZWFrKSBXS0NvbnRlbnRWaWV3ICp2aWV3OwpAQCAtMTU5LDcgKzE1OSw3IEBAIC0gKHZvaWQpc2hv
d1N1Z2dlc3Rpb25zRHJvcGRvd246KFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bk
b3duSU9TJilkcm9wCiAKIC0gKHZvaWQpZGlkU2VsZWN0T3B0aW9uQXRJbmRleDooTlNJbnRlZ2Vy
KWluZGV4CiB7Ci0gICAgX2Ryb3Bkb3duLT5kaWRTZWxlY3RPcHRpb24oX3N1Z2dlc3Rpb25zW2lu
ZGV4XSk7CisgICAgX2Ryb3Bkb3duLT5kaWRTZWxlY3RPcHRpb24oX3N1Z2dlc3Rpb25zW2luZGV4
XS52YWx1ZSk7CiB9CiAKIC0gKHZvaWQpaW52YWxpZGF0ZQpAQCAtMTcxLDcgKzE3MSw3IEBAIC0g
KE5TQXJyYXk8V0tEYXRhTGlzdFRleHRTdWdnZXN0aW9uICo+ICopdGV4dFN1Z2dlc3Rpb25zCiAg
ICAgTlNNdXRhYmxlQXJyYXkgKnN1Z2dlc3Rpb25zID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsK
IAogICAgIGZvciAoY29uc3QgYXV0byYgc3VnZ2VzdGlvbiA6IF9zdWdnZXN0aW9ucykgewotICAg
ICAgICBbc3VnZ2VzdGlvbnMgYWRkT2JqZWN0OltXS0RhdGFMaXN0VGV4dFN1Z2dlc3Rpb24gdGV4
dFN1Z2dlc3Rpb25XaXRoSW5wdXRUZXh0OnN1Z2dlc3Rpb25dXTsKKyAgICAgICAgW3N1Z2dlc3Rp
b25zIGFkZE9iamVjdDpbV0tEYXRhTGlzdFRleHRTdWdnZXN0aW9uIHRleHRTdWdnZXN0aW9uV2l0
aElucHV0VGV4dDpzdWdnZXN0aW9uLnZhbHVlXV07CiAgICAgICAgIGlmIChzdWdnZXN0aW9ucy5j
b3VudCA9PSAzKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTg2LDcgKzE4Niw3IEBA
IC0gKE5TSW50ZWdlcilzdWdnZXN0aW9uc0NvdW50CiAKIC0gKFN0cmluZylzdWdnZXN0aW9uQXRJ
bmRleDooTlNJbnRlZ2VyKWluZGV4CiB7Ci0gICAgcmV0dXJuIF9zdWdnZXN0aW9uc1tpbmRleF07
CisgICAgcmV0dXJuIF9zdWdnZXN0aW9uc1tpbmRleF0udmFsdWU7CiB9CiAKIC0gKE5TVGV4dEFs
aWdubWVudCl0ZXh0QWxpZ25tZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bk1hYy5tbQppbmRl
eCA4MDYwYzhhYmQzM2U1NWUwMmM3MTI0ZjRhNDQyOTE1MWE5MzkwYjE5Li4wOGU1NjU5YmQ1NjFh
ZDE2ODYwYTQ3MGYxOTAwM2E2ODE4YTUwOWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25N
YWMubW0KQEAgLTM0LDE2ICszNCwxOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJp
bmdzLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TQ29sb3JTUEkuaD4KIAotc3RhdGljIGNv
bnN0IENHRmxvYXQgZHJvcGRvd25Ub3BNYXJnaW4gPSAzOwotc3RhdGljIGNvbnN0IENHRmxvYXQg
ZHJvcGRvd25WZXJ0aWNhbFBhZGRpbmcgPSA0Owotc3RhdGljIGNvbnN0IENHRmxvYXQgZHJvcGRv
d25Sb3dIZWlnaHQgPSAyMDsKLXN0YXRpYyBjb25zdCBzaXplX3QgZHJvcGRvd25NYXhTdWdnZXN0
aW9ucyA9IDY7Citjb25zdGV4cHIgQ0dGbG9hdCBkcm9wZG93blRvcE1hcmdpbiA9IDM7Citjb25z
dGV4cHIgQ0dGbG9hdCBkcm9wZG93blZlcnRpY2FsUGFkZGluZyA9IDQ7Citjb25zdGV4cHIgQ0dG
bG9hdCBkcm9wZG93blJvd0hlaWdodFdpdGhvdXRMYWJlbCA9IDIwOworY29uc3RleHByIENHRmxv
YXQgZHJvcGRvd25Sb3dIZWlnaHRXaXRoTGFiZWwgPSA0MDsKK2NvbnN0ZXhwciBzaXplX3QgbWF4
aW11bVRvdGFsSGVpZ2h0Rm9yRHJvcGRvd25DZWxscyA9IDEyMDsKIHN0YXRpYyBOU1N0cmluZyAq
IGNvbnN0IHN1Z2dlc3Rpb25DZWxsUmV1c2VJZGVudGlmaWVyID0gQCJXS0RhdGFMaXN0U3VnZ2Vz
dGlvblZpZXciOwogCiBAaW50ZXJmYWNlIFdLRGF0YUxpc3RTdWdnZXN0aW9uV2luZG93IDogTlNX
aW5kb3cKIEBlbmQKIAogQGludGVyZmFjZSBXS0RhdGFMaXN0U3VnZ2VzdGlvblZpZXcgOiBOU1Rh
YmxlQ2VsbFZpZXcKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHNob3VsZFNob3dCb3R0b21E
aXZpZGVyOwogQGVuZAogCiBAaW50ZXJmYWNlIFdLRGF0YUxpc3RTdWdnZXN0aW9uVGFibGVSb3dW
aWV3IDogTlNUYWJsZVJvd1ZpZXcKQEAgLTE2OSw3ICsxNzEsOSBAQCAtIChOU1dpbmRvd1NoYWRv
d09wdGlvbnMpc2hhZG93T3B0aW9ucwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV0tEYXRhTGlz
dFN1Z2dlc3Rpb25WaWV3IHsKLSAgICBSZXRhaW5QdHI8TlNUZXh0RmllbGQ+IF90ZXh0RmllbGQ7
CisgICAgUmV0YWluUHRyPE5TVGV4dEZpZWxkPiBfdmFsdWVGaWVsZDsKKyAgICBSZXRhaW5QdHI8
TlNUZXh0RmllbGQ+IF9sYWJlbEZpZWxkOworICAgIFJldGFpblB0cjxOU1ZpZXc+IF9ib3R0b21E
aXZpZGVyOwogfQogCiAtIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWVSZWN0CkBAIC0x
NzcsMzEgKzE4MSw3OCBAQCAtIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWVSZWN0CiAg
ICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aEZyYW1lOmZyYW1lUmVjdF0pKQogICAgICAg
ICByZXR1cm4gc2VsZjsKIAotICAgIF90ZXh0RmllbGQgPSBhZG9wdE5TKFtbTlNUZXh0RmllbGQg
YWxsb2NdIGluaXRXaXRoRnJhbWU6ZnJhbWVSZWN0XSk7Ci0gICAgc2VsZi50ZXh0RmllbGQgPSBf
dGV4dEZpZWxkLmdldCgpOwotCi0gICAgW3NlbGYgYWRkU3VidmlldzpzZWxmLnRleHRGaWVsZF07
Ci0KKyAgICBfdmFsdWVGaWVsZCA9IGFkb3B0TlMoW1tOU1RleHRGaWVsZCBhbGxvY10gaW5pdF0p
OworICAgIF9sYWJlbEZpZWxkID0gYWRvcHROUyhbW05TVGV4dEZpZWxkIGFsbG9jXSBpbml0XSk7
CisgICAgX2JvdHRvbURpdmlkZXIgPSBhZG9wdE5TKFtbTlNWaWV3IGFsbG9jXSBpbml0XSk7Cisg
ICAgW19ib3R0b21EaXZpZGVyIHNldFdhbnRzTGF5ZXI6WUVTXTsKKyAgICBbX2JvdHRvbURpdmlk
ZXIgc2V0SGlkZGVuOllFU107CisgICAgW19ib3R0b21EaXZpZGVyIGxheWVyXS5iYWNrZ3JvdW5k
Q29sb3IgPSBOU0NvbG9yLnNlcGFyYXRvckNvbG9yLkNHQ29sb3I7CisgICAgW3NlbGYgYWRkU3Vi
dmlldzpfYm90dG9tRGl2aWRlci5nZXQoKV07CisKKyAgICBhdXRvIHNldFVwVGV4dEZpZWxkID0g
WyZdKE5TVGV4dEZpZWxkICp0ZXh0RmllbGQpIHsKKyAgICAgICAgdGV4dEZpZWxkLmVkaXRhYmxl
ID0gTk87CisgICAgICAgIHRleHRGaWVsZC5iZXplbGVkID0gTk87CisgICAgICAgIHRleHRGaWVs
ZC5mb250ID0gW05TRm9udCBtZW51Rm9udE9mU2l6ZTowXTsKKyAgICAgICAgdGV4dEZpZWxkLmRy
YXdzQmFja2dyb3VuZCA9IE5POworICAgICAgICBbc2VsZiBhZGRTdWJ2aWV3OnRleHRGaWVsZF07
CisgICAgfTsKKworICAgIHNldFVwVGV4dEZpZWxkKF92YWx1ZUZpZWxkLmdldCgpKTsKKyAgICBz
ZXRVcFRleHRGaWVsZChfbGFiZWxGaWVsZC5nZXQoKSk7CiAgICAgc2VsZi5pZGVudGlmaWVyID0g
c3VnZ2VzdGlvbkNlbGxSZXVzZUlkZW50aWZpZXI7Ci0gICAgc2VsZi50ZXh0RmllbGQuZWRpdGFi
bGUgPSBOTzsKLSAgICBzZWxmLnRleHRGaWVsZC5iZXplbGVkID0gTk87Ci0gICAgc2VsZi50ZXh0
RmllbGQuZm9udCA9IFtOU0ZvbnQgbWVudUZvbnRPZlNpemU6MF07Ci0gICAgc2VsZi50ZXh0Rmll
bGQuZHJhd3NCYWNrZ3JvdW5kID0gTk87CiAKICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAodm9p
ZClzZXRUZXh0OihOU1N0cmluZyAqKXRleHQKKy0gKHZvaWQpbGF5b3V0Cit7CisgICAgW3N1cGVy
IGxheW91dF07CisKKyAgICBhdXRvIGJvdW5kcyA9IHNlbGYuYm91bmRzOworICAgIGF1dG8gd2lk
dGggPSBib3VuZHMuc2l6ZS53aWR0aDsKKyAgICBpZiAoIVtfbGFiZWxGaWVsZCBpc0hpZGRlbl0p
IHsKKyAgICAgICAgYXV0byBoYWxmT2ZIZWlnaHQgPSBib3VuZHMuc2l6ZS5oZWlnaHQgLyAyOwor
ICAgICAgICBbX3ZhbHVlRmllbGQgc2V0RnJhbWU6TlNNYWtlUmVjdCgwLCBoYWxmT2ZIZWlnaHQs
IHdpZHRoLCBoYWxmT2ZIZWlnaHQpXTsKKyAgICAgICAgW19sYWJlbEZpZWxkIHNldEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgd2lkdGgsIGhhbGZPZkhlaWdodCldOworICAgIH0gZWxzZQorICAgICAg
ICBbX3ZhbHVlRmllbGQgc2V0RnJhbWU6Ym91bmRzXTsKKworICAgIGlmICghW19ib3R0b21EaXZp
ZGVyIGlzSGlkZGVuXSkKKyAgICAgICAgW19ib3R0b21EaXZpZGVyIHNldEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgd2lkdGgsIDAuNSldOworfQorCistICh2b2lkKXNldFZhbHVlOihOU1N0cmluZyAq
KXZhbHVlIGxhYmVsOihOU1N0cmluZyAqKWxhYmVsCit7CisgICAgaWYgKFtbX3ZhbHVlRmllbGQg
c3RyaW5nVmFsdWVdIGlzRXF1YWxUb1N0cmluZzp2YWx1ZV0gJiYgW1tfbGFiZWxGaWVsZCBzdHJp
bmdWYWx1ZV0gaXNFcXVhbFRvU3RyaW5nOmxhYmVsXSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
W192YWx1ZUZpZWxkIHNldFN0cmluZ1ZhbHVlOnZhbHVlXTsKKyAgICBbX2xhYmVsRmllbGQgc2V0
U3RyaW5nVmFsdWU6bGFiZWxdOworICAgIFtfbGFiZWxGaWVsZCBzZXRIaWRkZW46IWxhYmVsLmxl
bmd0aF07CisgICAgc2VsZi5uZWVkc0xheW91dCA9IFlFUzsKK30KKworLSAodm9pZClzZXRTaG91
bGRTaG93Qm90dG9tRGl2aWRlcjooQk9PTClzaG93Qm90dG9tRGl2aWRlcgogewotICAgIHNlbGYu
dGV4dEZpZWxkLnN0cmluZ1ZhbHVlID0gdGV4dDsKKyAgICBpZiAoW19ib3R0b21EaXZpZGVyIGlz
SGlkZGVuXSA9PSAhc2hvd0JvdHRvbURpdmlkZXIpCisgICAgICAgIHJldHVybjsKKworICAgIFtf
Ym90dG9tRGl2aWRlciBzZXRIaWRkZW46IXNob3dCb3R0b21EaXZpZGVyXTsKKyAgICBzZWxmLm5l
ZWRzTGF5b3V0ID0gWUVTOworfQorCistIChCT09MKXNob3VsZFNob3dCb3R0b21EaXZpZGVyCit7
CisgICAgcmV0dXJuIFtfYm90dG9tRGl2aWRlciBpc0hpZGRlbl07CiB9CiAKIC0gKHZvaWQpc2V0
QmFja2dyb3VuZFN0eWxlOihOU0JhY2tncm91bmRTdHlsZSliYWNrZ3JvdW5kU3R5bGUKIHsKICAg
ICBbc3VwZXIgc2V0QmFja2dyb3VuZFN0eWxlOmJhY2tncm91bmRTdHlsZV07Ci0gICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICBzZWxmLnRleHRGaWVsZC50ZXh0Q29s
b3IgPSBiYWNrZ3JvdW5kU3R5bGUgPT0gTlNCYWNrZ3JvdW5kU3R5bGVMaWdodCA/IFtOU0NvbG9y
IHRleHRDb2xvcl0gOiBbTlNDb2xvciBhbHRlcm5hdGVTZWxlY3RlZENvbnRyb2xUZXh0Q29sb3Jd
OwotICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAorQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfQkVHSU4KKyAgICBbX3ZhbHVlRmllbGQgc2V0VGV4dENvbG9yOmJhY2tn
cm91bmRTdHlsZSA9PSBOU0JhY2tncm91bmRTdHlsZUxpZ2h0ID8gTlNDb2xvci50ZXh0Q29sb3Ig
OiBOU0NvbG9yLmFsdGVybmF0ZVNlbGVjdGVkQ29udHJvbFRleHRDb2xvcl07CisgICAgW19sYWJl
bEZpZWxkIHNldFRleHRDb2xvcjpOU0NvbG9yLnNlY29uZGFyeUxhYmVsQ29sb3JdOworQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiB9CiAKIC0gKEJPT0wpYWNjZXB0c0ZpcnN0UmVz
cG9uZGVyCkBAIC0yNTEsMTQgKzMwMiwyMiBAQCAtIChCT09MKWFjY2VwdHNGaXJzdFJlc3BvbmRl
cgogCiBAZW5kCiAKK3N0YXRpYyBCT09MIHNob3VsZFNob3dEaXZpZGVyc0JldHdlZW5DZWxscyhj
b25zdCBWZWN0b3I8V2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uPiYgc3VnZ2VzdGlvbnMpCit7
CisgICAgcmV0dXJuIG5vdEZvdW5kICE9IHN1Z2dlc3Rpb25zLmZpbmRNYXRjaGluZyhbXShhdXRv
JiBzdWdnZXN0aW9uKSB7CisgICAgICAgIHJldHVybiAhc3VnZ2VzdGlvbi5sYWJlbC5pc0VtcHR5
KCk7CisgICAgfSk7Cit9CisKIEBpbXBsZW1lbnRhdGlvbiBXS0RhdGFMaXN0U3VnZ2VzdGlvbnND
b250cm9sbGVyIHsKICAgICBXZWFrUHRyPFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ry
b3Bkb3duTWFjPiBfZHJvcGRvd247Ci0gICAgVmVjdG9yPFN0cmluZz4gX3N1Z2dlc3Rpb25zOwor
ICAgIFZlY3RvcjxXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb24+IF9zdWdnZXN0aW9uczsKICAg
ICBOU1ZpZXcgKl9wcmVzZW50aW5nVmlldzsKIAogICAgIFJldGFpblB0cjxOU1Njcm9sbFZpZXc+
IF9zY3JvbGxWaWV3OwogICAgIFJldGFpblB0cjxXS0RhdGFMaXN0U3VnZ2VzdGlvbldpbmRvdz4g
X2VuY2xvc2luZ1dpbmRvdzsKICAgICBSZXRhaW5QdHI8V0tEYXRhTGlzdFN1Z2dlc3Rpb25UYWJs
ZVZpZXc+IF90YWJsZTsKKyAgICBCT09MIF9zaG93RGl2aWRlcnNCZXR3ZWVuQ2VsbHM7CiB9CiAK
IC0gKGlkKWluaXRXaXRoSW5mb3JtYXRpb246KFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbklu
Zm9ybWF0aW9uJiYpaW5mb3JtYXRpb24gaW5WaWV3OihOU1ZpZXcgKilwcmVzZW50aW5nVmlldwpA
QCAtMjY4LDYgKzMyNyw3IEBAIC0gKGlkKWluaXRXaXRoSW5mb3JtYXRpb246KFdlYkNvcmU6OkRh
dGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uJiYpaW5mb3JtYXRpb24KIAogICAgIF9wcmVzZW50
aW5nVmlldyA9IHByZXNlbnRpbmdWaWV3OwogICAgIF9zdWdnZXN0aW9ucyA9IFdURk1vdmUoaW5m
b3JtYXRpb24uc3VnZ2VzdGlvbnMpOworICAgIF9zaG93RGl2aWRlcnNCZXR3ZWVuQ2VsbHMgPSBz
aG91bGRTaG93RGl2aWRlcnNCZXR3ZWVuQ2VsbHMoX3N1Z2dlc3Rpb25zKTsKICAgICBfdGFibGUg
PSBhZG9wdE5TKFtbV0tEYXRhTGlzdFN1Z2dlc3Rpb25UYWJsZVZpZXcgYWxsb2NdIGluaXRXaXRo
RWxlbWVudFJlY3Q6aW5mb3JtYXRpb24uZWxlbWVudFJlY3RdKTsKIAogICAgIF9lbmNsb3NpbmdX
aW5kb3cgPSBhZG9wdE5TKFtbV0tEYXRhTGlzdFN1Z2dlc3Rpb25XaW5kb3cgYWxsb2NdIGluaXRX
aXRoQ29udGVudFJlY3Q6TlNaZXJvUmVjdCBzdHlsZU1hc2s6KE5TV2luZG93U3R5bGVNYXNrVGl0
bGVkIHwgTlNXaW5kb3dTdHlsZU1hc2tGdWxsU2l6ZUNvbnRlbnRWaWV3KSBiYWNraW5nOk5TQmFj
a2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKQEAgLTMwMiw3ICszNjIsNyBAQCAtIChTdHJp
bmcpY3VycmVudFNlbGVjdGVkU3RyaW5nCiAgICAgTlNJbnRlZ2VyIHNlbGVjdGVkUm93ID0gW190
YWJsZSBzZWxlY3RlZFJvd107CiAKICAgICBpZiAoc2VsZWN0ZWRSb3cgPj0gMCAmJiBzdGF0aWNf
Y2FzdDxzaXplX3Q+KHNlbGVjdGVkUm93KSA8IF9zdWdnZXN0aW9ucy5zaXplKCkpCi0gICAgICAg
IHJldHVybiBfc3VnZ2VzdGlvbnMuYXQoc2VsZWN0ZWRSb3cpOworICAgICAgICByZXR1cm4gX3N1
Z2dlc3Rpb25zLmF0KHNlbGVjdGVkUm93KS52YWx1ZTsKIAogICAgIHJldHVybiBTdHJpbmcoKTsK
IH0KQEAgLTMxMCw2ICszNzAsNyBAQCAtIChTdHJpbmcpY3VycmVudFNlbGVjdGVkU3RyaW5nCiAt
ICh2b2lkKXVwZGF0ZVdpdGhJbmZvcm1hdGlvbjooV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9u
SW5mb3JtYXRpb24mJilpbmZvcm1hdGlvbgogewogICAgIF9zdWdnZXN0aW9ucyA9IFdURk1vdmUo
aW5mb3JtYXRpb24uc3VnZ2VzdGlvbnMpOworICAgIF9zaG93RGl2aWRlcnNCZXR3ZWVuQ2VsbHMg
PSBzaG91bGRTaG93RGl2aWRlcnNCZXR3ZWVuQ2VsbHMoX3N1Z2dlc3Rpb25zKTsKICAgICBbX3Rh
YmxlIHJlbG9hZF07CiAKICAgICBbX2VuY2xvc2luZ1dpbmRvdyBzZXRGcmFtZTpbc2VsZiBkcm9w
ZG93blJlY3RGb3JFbGVtZW50UmVjdDppbmZvcm1hdGlvbi5lbGVtZW50UmVjdF0gZGlzcGxheTpZ
RVNdOwpAQCAtMzM5LDYgKzQwMCw3IEBAIC0gKHZvaWQpbW92ZVNlbGVjdGlvbkJ5RGlyZWN0aW9u
Oihjb25zdCBTdHJpbmcmKWRpcmVjdGlvbgogICAgICAgICBuZXdTZWxlY3Rpb24gPSAoZGlyZWN0
aW9uID09ICJVcCIpID8gKHNpemUgLSAxKSA6IDA7CiAKICAgICBbX3RhYmxlIHNlbGVjdFJvd0lu
ZGV4ZXM6W05TSW5kZXhTZXQgaW5kZXhTZXRXaXRoSW5kZXg6bmV3U2VsZWN0aW9uXSBieUV4dGVu
ZGluZ1NlbGVjdGlvbjpOT107CisgICAgW190YWJsZSBzY3JvbGxSb3dUb1Zpc2libGU6bmV3U2Vs
ZWN0aW9uXTsKIAogICAgIC8vIE5vdGlmeSBhY2Nlc3NpYmlsaXR5IGNsaWVudHMgb2YgbmV3IHNl
bGVjdGlvbi4KICAgICBOU1N0cmluZyAqY3VycmVudFNlbGVjdGVkU3RyaW5nID0gW3NlbGYgY3Vy
cmVudFNlbGVjdGVkU3RyaW5nXTsKQEAgLTM2OSw4ICs0MzEsMTYgQEAgLSAodm9pZClpbnZhbGlk
YXRlCiAtIChOU1JlY3QpZHJvcGRvd25SZWN0Rm9yRWxlbWVudFJlY3Q6KGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmKXJlY3QKIHsKICAgICBOU1JlY3Qgd2luZG93UmVjdCA9IFtbX3ByZXNlbnRpbmdW
aWV3IHdpbmRvd10gY29udmVydFJlY3RUb1NjcmVlbjpbX3ByZXNlbnRpbmdWaWV3IGNvbnZlcnRS
ZWN0OnJlY3QgdG9WaWV3Om5pbF1dOwotICAgIGF1dG8gdmlzaWJsZVN1Z2dlc3Rpb25Db3VudCA9
IHN0ZDo6bWluKF9zdWdnZXN0aW9ucy5zaXplKCksIGRyb3Bkb3duTWF4U3VnZ2VzdGlvbnMpOwot
ICAgIENHRmxvYXQgaGVpZ2h0ID0gdmlzaWJsZVN1Z2dlc3Rpb25Db3VudCAqIChkcm9wZG93blJv
d0hlaWdodCArIFtfdGFibGUgaW50ZXJjZWxsU3BhY2luZ10uaGVpZ2h0KSArIChkcm9wZG93blZl
cnRpY2FsUGFkZGluZyAqIDIpOworCisgICAgQ0dGbG9hdCB0b3RhbENlbGxIZWlnaHQgPSAwOwor
ICAgIGZvciAoYXV0byYgc3VnZ2VzdGlvbiA6IF9zdWdnZXN0aW9ucykKKyAgICAgICAgdG90YWxD
ZWxsSGVpZ2h0ICs9IHN1Z2dlc3Rpb24ubGFiZWwuaXNFbXB0eSgpID8gZHJvcGRvd25Sb3dIZWln
aHRXaXRob3V0TGFiZWwgOiBkcm9wZG93blJvd0hlaWdodFdpdGhMYWJlbDsKKworICAgIENHRmxv
YXQgdG90YWxJbnRlcmNlbGxTcGFjaW5nQW5kUGFkZGluZyA9IGRyb3Bkb3duVmVydGljYWxQYWRk
aW5nICogMjsKKyAgICBpZiAoX3N1Z2dlc3Rpb25zLnNpemUoKSA+IDEpCisgICAgICAgIHRvdGFs
SW50ZXJjZWxsU3BhY2luZ0FuZFBhZGRpbmcgKz0gKF9zdWdnZXN0aW9ucy5zaXplKCkgLSAxKSAq
IFtfdGFibGUgaW50ZXJjZWxsU3BhY2luZ10uaGVpZ2h0OworCisgICAgQ0dGbG9hdCBoZWlnaHQg
PSB0b3RhbEludGVyY2VsbFNwYWNpbmdBbmRQYWRkaW5nICsgc3RkOjptaW48Q0dGbG9hdD4odG90
YWxDZWxsSGVpZ2h0LCBtYXhpbXVtVG90YWxIZWlnaHRGb3JEcm9wZG93bkNlbGxzKTsKICAgICBy
ZXR1cm4gTlNNYWtlUmVjdChOU01pblgod2luZG93UmVjdCksIE5TTWluWSh3aW5kb3dSZWN0KSAt
IGhlaWdodCAtIGRyb3Bkb3duVG9wTWFyZ2luLCByZWN0LndpZHRoKCksIGhlaWdodCk7CiB9CiAK
QEAgLTQwNCw3ICs0NzQsMTMgQEAgLSAoTlNJbnRlZ2VyKW51bWJlck9mUm93c0luVGFibGVWaWV3
OihOU1RhYmxlVmlldyAqKXRhYmxlVmlldwogCiAtIChDR0Zsb2F0KXRhYmxlVmlldzooTlNUYWJs
ZVZpZXcgKil0YWJsZVZpZXcgaGVpZ2h0T2ZSb3c6KE5TSW50ZWdlcilyb3cKIHsKLSAgICByZXR1
cm4gZHJvcGRvd25Sb3dIZWlnaHQ7CisgICAgYXV0byBzdWdnZXN0aW9uSW5kZXggPSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KHJvdyk7CisgICAgaWYgKHN1Z2dlc3Rpb25JbmRleCA+PSBfc3VnZ2VzdGlv
bnMuc2l6ZSgpKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1
cm4gMDsKKyAgICB9CisKKyAgICByZXR1cm4gX3N1Z2dlc3Rpb25zLmF0KHN1Z2dlc3Rpb25JbmRl
eCkubGFiZWwuaXNFbXB0eSgpID8gZHJvcGRvd25Sb3dIZWlnaHRXaXRob3V0TGFiZWwgOiBkcm9w
ZG93blJvd0hlaWdodFdpdGhMYWJlbDsKIH0KIAogLSAoTlNUYWJsZVJvd1ZpZXcgKil0YWJsZVZp
ZXc6KE5TVGFibGVWaWV3ICopdGFibGVWaWV3IHJvd1ZpZXdGb3JSb3c6KE5TSW50ZWdlcilyb3cK
QEAgLTQxNywxMSArNDkzLDEzIEBAIC0gKE5TVmlldyAqKXRhYmxlVmlldzooTlNUYWJsZVZpZXcg
Kil0YWJsZVZpZXcgdmlld0ZvclRhYmxlQ29sdW1uOihOU1RhYmxlQ29sdW1uCiAgICAgV0tEYXRh
TGlzdFN1Z2dlc3Rpb25WaWV3ICpyZXN1bHQgPSBbdGFibGVWaWV3IG1ha2VWaWV3V2l0aElkZW50
aWZpZXI6c3VnZ2VzdGlvbkNlbGxSZXVzZUlkZW50aWZpZXIgb3duZXI6c2VsZl07CiAKICAgICBp
ZiAoIXJlc3VsdCkgewotICAgICAgICByZXN1bHQgPSBbW1tXS0RhdGFMaXN0U3VnZ2VzdGlvblZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCB0YWJsZVZpZXcuZnJhbWUu
c2l6ZS53aWR0aCwgZHJvcGRvd25Sb3dIZWlnaHQpXSBhdXRvcmVsZWFzZV07CisgICAgICAgIHJl
c3VsdCA9IFtbW1dLRGF0YUxpc3RTdWdnZXN0aW9uVmlldyBhbGxvY10gaW5pdF0gYXV0b3JlbGVh
c2VdOwogICAgICAgICBbcmVzdWx0IHNldElkZW50aWZpZXI6c3VnZ2VzdGlvbkNlbGxSZXVzZUlk
ZW50aWZpZXJdOwogICAgIH0KIAotICAgIHJlc3VsdC50ZXh0ID0gX3N1Z2dlc3Rpb25zLmF0KHJv
dyk7CisgICAgYXV0byYgc3VnZ2VzdGlvbiA9IF9zdWdnZXN0aW9ucy5hdChyb3cpOworICAgIHJl
c3VsdC5zaG91bGRTaG93Qm90dG9tRGl2aWRlciA9IF9zaG93RGl2aWRlcnNCZXR3ZWVuQ2VsbHMg
JiYgcm93IDwgc3RhdGljX2Nhc3Q8TlNJbnRlZ2VyPihfc3VnZ2VzdGlvbnMuc2l6ZSgpIC0gMSk7
CisgICAgW3Jlc3VsdCBzZXRWYWx1ZTpzdWdnZXN0aW9uLnZhbHVlIGxhYmVsOnN1Z2dlc3Rpb24u
bGFiZWxdOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5k
ZXggYTY3ZmIwMzQ5ZmViZWI0OGZlMzUyZTUxNDMzOTQ2NWJkZTRlNmQwZS4uNTQzZGUyM2RhODll
MWI3NGRiYTk3YWExYTM5NTNmMmNmNjlhNGQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAg
LTc5Niw2ICs3OTYsMTUgQEAgc3RkOjp1bmlxdWVfcHRyPERhdGFMaXN0U3VnZ2VzdGlvblBpY2tl
cj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVEYXRhTGlzdFN1Z2dlc3QKICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI+KG1fcGFnZSwgY2xpZW50KTsKIH0K
IAorYm9vbCBXZWJDaHJvbWVDbGllbnQ6OmNhblNob3dEYXRhTGlzdFN1Z2dlc3Rpb25MYWJlbHMo
KSBjb25zdAoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisg
ICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKICNlbmRpZgogCiB2b2lkIFdlYkNocm9tZUNs
aWVudDo6cnVuT3BlblBhbmVsKEZyYW1lJiBmcmFtZSwgRmlsZUNob29zZXImIGZpbGVDaG9vc2Vy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDkyMGRlOTNjOWYyZjAzN2I2MTRjYmE4ODJhMTJmMDAz
MjQ3OGIyMmEuLmE4NTkzMWM3MTA2ZmNiNDYwMWNjY2RjOWQ1MjM2NTQ2MDhjODY2ODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmgKQEAgLTE0OSw2ICsxNDksNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxF
KERBVEFMSVNUX0VMRU1FTlQpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkRhdGFMaXN0
U3VnZ2VzdGlvblBpY2tlcj4gY3JlYXRlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKFdlYkNvcmU6
OkRhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQmKSBmaW5hbDsKKyAgICBib29sIGNhblNob3dEYXRh
TGlzdFN1Z2dlc3Rpb25MYWJlbHMoKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KElPU19UT1VDSF9FVkVOVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDlmMjMzMTdiOGY5M2JiNDcy
MzJjNjVjZTYzOTMxNzYyM2E5OGM3ODkuLmE3ZDA2OTBiZmFkYjM3YjVlYjgyNThlZDE5NjRkM2Ew
YzYzODdkMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0xNDQsNiArMTQ0LDcgQEAgcHJpdmF0ZToK
IAogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI+IGNyZWF0ZURhdGFMaXN0U3VnZ2VzdGlvblBp
Y2tlcihXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50JikgZmluYWw7CisgICAgYm9v
bCBjYW5TaG93RGF0YUxpc3RTdWdnZXN0aW9uTGFiZWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
ZmFsc2U7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzYWZj
MDliMGE4ZWI4ZWVlYTdhNDM3MzUyM2MzMzExODFiMGNlZTljLi4wOWJlNWY0YThkMjEyMDMwNmY0
NTI3ZjA4M2RkZWQ3YWIzZTk1N2E4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMDMtMzEg
IFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgRGF0YWxp
c3Qgb3B0aW9uJ3MgbGFiZWwgbm90IHVzZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMTc2OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTUzNjEx
ODY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkIGEg
dGVzdCB0byB2ZXJpZnkgdGhhdCB3aGVuIGRhdGFsaXN0IHN1Z2dlc3Rpb25zIGluY29ycG9yYXRl
IG9wdGlvbiBsYWJlbHMgaW50byB0aGUgZGlzcGxheWVkIHRleHQKKyAgICAgICAgc3VnZ2VzdGlv
bnMsIHRoZXkgYXJlIG1hdGNoZWQgYWdhaW5zdCB3aGVuIGNoYW5naW5nIHRoZSB2YWx1ZSBvZiB0
aGUgaW5wdXQgZmllbGQsIGFuZCBjYW4gYmUgc2VsZWN0ZWQuIFRoaXMgaXMKKyAgICAgICAgZXhw
ZWN0ZWQgdG8gYmUgdGhlIGNhc2Ugb24gbWFjT1MsIGJ1dCBub3Qgb24gb3RoZXIgcGxhdGZvcm1z
IChmb3IgdGhlIHRpbWUgYmVpbmcpLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9kYXRhbGlzdC9k
YXRhbGlzdC1vcHRpb24tbGFiZWxzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC1vcHRpb24tbGFiZWxzLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2d0ay9mYXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0LW9wdGlvbi1s
YWJlbHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvZmFzdC9m
b3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC1vcHRpb24tbGFiZWxzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisKIDIwMjAtMDMtMzAgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgc2Nyb2xsSW50b1ZpZXcoKSBlcnJvbmVvdXNseSBzY3JvbGxzIG5vbi1jb250YWlu
aW5nIGJsb2NrIHNjcm9sbGVycwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9k
YXRhbGlzdC9kYXRhbGlzdC1vcHRpb24tbGFiZWxzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvZGF0YWxpc3QvZGF0YWxpc3Qtb3B0aW9uLWxhYmVscy1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmZjY2RhZWQ0Y2FlZDAxMTJmMzUwOTFmZTc1MGQ1NzFiNTQ5NjI1ZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0YWxpc3QvZGF0YWxpc3Qt
b3B0aW9uLWxhYmVscy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorVGhpcyB0ZXN0IHZl
cmlmaWVzIHRoYXQgd2hlbiBvcHRpb24gZWxlbWVudCBsYWJlbHMgYXJlIGluY2x1ZGVkIGluIGRh
dGFsaXN0IHN1Z2dlc3Rpb25zLCB0aGUgdGV4dCBvZiB0aGUgbGFiZWwgaXMgY29uc2lkZXJlZCB3
aGVuIGNvbXB1dGluZyBtYXRjaGluZyBkYXRhbGlzdCBzdWdnZXN0aW9ucy4gT3RoZXJ3aXNlLCBp
ZiBsYWJlbHMgYXJlIG5vdCBpbmNsdWRlZCBpbiBzdWdnZXN0aW9ucywgdGhlcmUgc2hvdWxkIGJl
IG5vIGRhdGFsaXN0IHN1Z2dlc3Rpb25zIHNob3duLiBUbyBtYW51YWxseSBydW4gdGhlIHRlc3Qs
IGZvY3VzIHRoZSBpbnB1dCBlbGVtZW50IGFuZCB0eXBlICdlJy4gVGhlcmUgc2hvdWxkIGVpdGhl
ciBiZSBubyBtYXRjaGVzIG9yIHR3byBtYXRjaGVzIChhbmQgc2VsZWN0aW5nIHRoZSBzZWNvbmQg
bWF0Y2ggc2hvdWxkIHNldCB0aGUgdmFsdWUgdG8gJ2JheicpLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBpbnB1dC52YWx1ZSBiZWNhbWUgJ2UnCitQQVNTIGlucHV0LnZh
bHVlIGlzICJiYXoiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRh
bGlzdC1vcHRpb24tbGFiZWxzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RhdGFsaXN0
L2RhdGFsaXN0LW9wdGlvbi1sYWJlbHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZmFlMTgzNjk4NmY3NGNi
NTA0ZWQ3NGMxMjE3NTFhZWU3NDg0ZDNkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC1vcHRpb24tbGFiZWxzLmh0bWwKQEAgLTAsMCAr
MSwzOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAg
ICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0
PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisK
KyAgICAgICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBhc3luYyAoKSA9PiB7CisgICAg
ICAgICAgICAgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdoZW4gb3B0
aW9uIGVsZW1lbnQgbGFiZWxzIGFyZSBpbmNsdWRlZCBpbiBkYXRhbGlzdCBzdWdnZXN0aW9ucywg
dGhlIHRleHQgb2YgdGhlIGxhYmVsIGlzIGNvbnNpZGVyZWQgd2hlbiBjb21wdXRpbmcgbWF0Y2hp
bmcgZGF0YWxpc3Qgc3VnZ2VzdGlvbnMuIE90aGVyd2lzZSwgaWYgbGFiZWxzIGFyZSBub3QgaW5j
bHVkZWQgaW4gc3VnZ2VzdGlvbnMsIHRoZXJlIHNob3VsZCBiZSBubyBkYXRhbGlzdCBzdWdnZXN0
aW9ucyBzaG93bi4gVG8gbWFudWFsbHkgcnVuIHRoZSB0ZXN0LCBmb2N1cyB0aGUgaW5wdXQgZWxl
bWVudCBhbmQgdHlwZSAnZScuIFRoZXJlIHNob3VsZCBlaXRoZXIgYmUgbm8gbWF0Y2hlcyBvciB0
d28gbWF0Y2hlcyAoYW5kIHNlbGVjdGluZyB0aGUgc2Vjb25kIG1hdGNoIHNob3VsZCBzZXQgdGhl
IHZhbHVlIHRvICdiYXonKS4iKTsKKyAgICAgICAgICAgICAgICBpbnB1dCA9IGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoImlucHV0Iik7CisKKyAgICAgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5h
Y3RpdmF0ZUVsZW1lbnRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uKGlucHV0KTsKKyAgICAgICAgICAg
ICAgICBhd2FpdCBVSUhlbHBlci50eXBlQ2hhcmFjdGVyKCJlIik7CisgICAgICAgICAgICAgICAg
YXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzaG91bGRCZWNvbWVFcXVhbCgiaW5wdXQudmFs
dWUiLCAiJ2UnIiwgcmVzb2x2ZSkpOworICAgICAgICAgICAgICAgIGlmIChhd2FpdCBVSUhlbHBl
ci5pc1Nob3dpbmdEYXRhTGlzdFN1Z2dlc3Rpb25zKCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
YXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVEYXRhTGlzdFN1Z2dlc3Rpb24oMSk7CisgICAgICAgICAg
ICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiaW5wdXQudmFsdWUiLCAiYmF6Iik7Cisg
ICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIk5v
dCBzaG93aW5nIHN1Z2dlc3Rpb25zLiIpOworCisgICAgICAgICAgICAgICAgaW5wdXQuYmx1cigp
OworICAgICAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLndhaXRGb3JLZXlib2FyZFRvSGlkZSgp
OworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPGlucHV0IGxp
c3Q9Imxpc3QiIGF1dG9jYXBpdGFsaXplPSJub25lIj4KKyAgICAgICAgPGRhdGFsaXN0IGlkPSJs
aXN0Ij4KKyAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImZvbyIgbGFiZWw9Im9uZSI+PC9vcHRp
b24+CisgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJiYXIiPnR3bzwvb3B0aW9uPgorICAgICAg
ICAgICAgPG9wdGlvbiB2YWx1ZT0iYmF6IiBsYWJlbD0idGhyZWUiPmZvdXI8L29wdGlvbj4KKyAg
ICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImdhcnBseSI+PC9vcHRpb24+CisgICAgICAgICAgICA8
b3B0aW9uIHZhbHVlPSJxdXgiIGxhYmVsPSJxdXgiPnF1eDwvb3B0aW9uPgorICAgICAgICAgICAg
PG9wdGlvbiBsYWJlbD0iZml2ZSI+PC9vcHRpb24+CisgICAgICAgIDwvZGF0YWxpc3Q+CisgICAg
PC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0LW9w
dGlvbi1sYWJlbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3Qv
Zm9ybXMvZGF0YWxpc3QvZGF0YWxpc3Qtb3B0aW9uLWxhYmVscy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmVhNTNlOTNkZjYyYzhhZmU0MzQ3NzVlM2ZjY2ZhNWZhOGI0ZmI4ZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2Zvcm1zL2RhdGFsaXN0L2Rh
dGFsaXN0LW9wdGlvbi1sYWJlbHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1RoaXMg
dGVzdCB2ZXJpZmllcyB0aGF0IHdoZW4gb3B0aW9uIGVsZW1lbnQgbGFiZWxzIGFyZSBpbmNsdWRl
ZCBpbiBkYXRhbGlzdCBzdWdnZXN0aW9ucywgdGhlIHRleHQgb2YgdGhlIGxhYmVsIGlzIGNvbnNp
ZGVyZWQgd2hlbiBjb21wdXRpbmcgbWF0Y2hpbmcgZGF0YWxpc3Qgc3VnZ2VzdGlvbnMuIE90aGVy
d2lzZSwgaWYgbGFiZWxzIGFyZSBub3QgaW5jbHVkZWQgaW4gc3VnZ2VzdGlvbnMsIHRoZXJlIHNo
b3VsZCBiZSBubyBkYXRhbGlzdCBzdWdnZXN0aW9ucyBzaG93bi4gVG8gbWFudWFsbHkgcnVuIHRo
ZSB0ZXN0LCBmb2N1cyB0aGUgaW5wdXQgZWxlbWVudCBhbmQgdHlwZSAnZScuIFRoZXJlIHNob3Vs
ZCBlaXRoZXIgYmUgbm8gbWF0Y2hlcyBvciB0d28gbWF0Y2hlcyAoYW5kIHNlbGVjdGluZyB0aGUg
c2Vjb25kIG1hdGNoIHNob3VsZCBzZXQgdGhlIHZhbHVlIHRvICdiYXonKS4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgaW5wdXQudmFsdWUgYmVjYW1lICdlJworUEFTUyBO
b3Qgc2hvd2luZyBzdWdnZXN0aW9ucy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mv
ZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC1vcHRpb24tbGFiZWxzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9mYXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0LW9w
dGlvbi1sYWJlbHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlYTUzZTkzZGY2MmM4YWZlNDM0
Nzc1ZTNmY2NmYTVmYThiNGZiOGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9pb3MvZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC1vcHRpb24tbGFiZWxzLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDExIEBACitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3aGVuIG9w
dGlvbiBlbGVtZW50IGxhYmVscyBhcmUgaW5jbHVkZWQgaW4gZGF0YWxpc3Qgc3VnZ2VzdGlvbnMs
IHRoZSB0ZXh0IG9mIHRoZSBsYWJlbCBpcyBjb25zaWRlcmVkIHdoZW4gY29tcHV0aW5nIG1hdGNo
aW5nIGRhdGFsaXN0IHN1Z2dlc3Rpb25zLiBPdGhlcndpc2UsIGlmIGxhYmVscyBhcmUgbm90IGlu
Y2x1ZGVkIGluIHN1Z2dlc3Rpb25zLCB0aGVyZSBzaG91bGQgYmUgbm8gZGF0YWxpc3Qgc3VnZ2Vz
dGlvbnMgc2hvd24uIFRvIG1hbnVhbGx5IHJ1biB0aGUgdGVzdCwgZm9jdXMgdGhlIGlucHV0IGVs
ZW1lbnQgYW5kIHR5cGUgJ2UnLiBUaGVyZSBzaG91bGQgZWl0aGVyIGJlIG5vIG1hdGNoZXMgb3Ig
dHdvIG1hdGNoZXMgKGFuZCBzZWxlY3RpbmcgdGhlIHNlY29uZCBtYXRjaCBzaG91bGQgc2V0IHRo
ZSB2YWx1ZSB0byAnYmF6JykuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IGlucHV0LnZhbHVlIGJlY2FtZSAnZScKK1BBU1MgTm90IHNob3dpbmcgc3VnZ2VzdGlvbnMuCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395108</attachid>
            <date>2020-03-31 16:45:15 -0700</date>
            <delta_ts>2020-03-31 18:23:05 -0700</delta_ts>
            <desc>Also fix a typo</desc>
            <filename>bug-201768-20200331164514.patch</filename>
            <type>text/plain</type>
            <size>40854</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MjQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDhmZjAxMmZmYjJjZjA4
ZmRmODk0YzRmNGQ4ZmZkN2YyN2I2NWZhNi4uODU3MTNmNmE1MWFkYWQxYmE2NTE1ZTNmNDQ3N2Vm
NjI2NmVhNzZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTAzLTMxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIERhdGFsaXN0IG9w
dGlvbidzIGxhYmVsIG5vdCB1c2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDE3NjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1MzYxMTg2Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFJlZmFjdG9yIERh
dGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uJ3Mgc3VnZ2VzdGlvbnMgdG8gaW5jbHVkZSBsYWJl
bCB0ZXh0IGFzIHdlbGwgYXMgdmFsdWVzLCBhbmQgdGhlbiBhZGp1c3QKKyAgICAgICAgVGV4dEZp
ZWxkSW5wdXRUeXBlOjpzdWdnZXN0aW9ucygpIHRvIG1hdGNoIGxhYmVsIHRleHQgYXMgd2VsbCBh
cyB2YWx1ZXMgZm9yIHBvcnRzIHRoYXQgYXJlIGNhcGFibGUgb2Ygc2hvd2luZworICAgICAgICBs
YWJlbCB0ZXh0IGluIGRhdGFsaXN0IHN1Z2dlc3Rpb24gVUkuCisKKyAgICAgICAgVGVzdDogZmFz
dC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC1vcHRpb24tbGFiZWxzLmh0bWwKKworICAgICAgICAq
IGh0bWwvRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24uaDoKKworICAgICAgICBJbnRyb2R1
Y2UgRGF0YUxpc3RTdWdnZXN0aW9uLCBhIHdyYXBwZXIgYXJvdW5kIGEgdmFsdWUgYW5kIGxhYmVs
LiBDdXJyZW50bHksIHRoZSBsaXN0IG9mIGRhdGFsaXN0IHN1Z2dlc3Rpb25zCisgICAgICAgIGlz
IG9ubHkgYSBgVmVjdG9yPFN0cmluZz5gOyBjaGFuZ2UgaXQgdG8gYmUgYSBgVmVjdG9yPERhdGFM
aXN0U3VnZ2VzdGlvbj5gIGluc3RlYWQuCisKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFMaXN0U3Vn
Z2VzdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2Vz
dGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkluZm9y
bWF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0
aW9uSW5mb3JtYXRpb246OmRlY29kZSk6CisKKyAgICAgICAgTW92ZSBlbmNvZGluZyBhbmQgZGVj
b2RpbmcgZm9yIERhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uIG91dCBvZiBXZWJDb3JlQXJn
dW1lbnRDb2RlcnMgYW5kIGludG8gV2ViQ29yZS4KKworICAgICAgICAqIGh0bWwvVGV4dEZpZWxk
SW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6bGlz
dEF0dHJpYnV0ZVRhcmdldENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5w
dXRUeXBlOjpzdWdnZXN0aW9ucyk6CisKKyAgICAgICAgV2hlbiBjb21wdXRpbmcgc3VnZ2VzdGlv
bnMsIG1hdGNoIGxhYmVsIHRleHQgaW4gYWRkaXRpb24gdG8gdmFsdWVzIG9uIHBvcnRzIHRoYXQg
ZGlzcGxheSBsYWJlbCB0ZXh0IGluIHRoZQorICAgICAgICBjaHJvbWU7IGZvciB0aGUgdGltZSBi
ZWluZywgdGhpcyBpcyBvbmx5IHRoZSBjYXNlIGZvciBtYWNPUywgYnV0IHdpbGwgYmUgZXh0ZW5k
ZWQgdG8gaU9TIGFzIHdlbGwgaW4gYSBmdXR1cmUKKyAgICAgICAgcGF0Y2guIE5vdGUgdGhhdCB3
ZSBkb24ndCBwbHVtYiBsYWJlbCB0ZXh0IGlmIGl0IGlzIGFscmVhZHkgdGhlIHNhbWUgYXMgdGhl
IHZhbHVlLCB0byBhdm9pZCBkdXBsaWNhdGUgc3RyaW5ncworICAgICAgICBmcm9tIHNob3dpbmcg
dXAuCisKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6ZGlkQ2xvc2VTdWdn
ZXN0aW9ucyk6CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaDoKKyAgICAgICAg
KiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoK
KworICAgICAgICBBZGQgYSBjaHJvbWUgY2xpZW50IGhvb2sgdG8gcmV0dXJuIHdoZXRoZXIgb3Ig
bm90IHRoZSBjbGllbnQgc2hvd3MgbGFiZWwgdGV4dCBpbiBpdHMgZGF0YWxpc3QgVUkuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9EYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50Lmg6CisKIDIwMjAtMDMt
MzAgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgc2Ny
b2xsSW50b1ZpZXcoKSBlcnJvbmVvdXNseSBzY3JvbGxzIG5vbi1jb250YWluaW5nIGJsb2NrIHNj
cm9sbGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCA0ZmRhMjZiMTc2Njk5Y2IyMDk4MTc4NTgyYzZmMzljZTljN2E5
MTFhLi5kYTEwYmNkOTkwZmM4ODA5ODg4ZWYwNzdkOGRiMDg4NWEyYWVkNWYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDkxIEBACisyMDIwLTAzLTMxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgorCisgICAgICAgIERhdGFsaXN0IG9wdGlvbidzIGxhYmVsIG5vdCB1c2VkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE3NjgKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1MzYxMTg2PgorCisgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgorCisgICAgICAgIEFkZCBzdXBwb3J0IG9uIG1hY09TIGZvciBzaG93aW5nIG9w
dGlvbiBsYWJlbHMgaW4gZGF0YWxpc3Qgc3VnZ2VzdGlvbnMuCisKKyAgICAgICAgKiBTaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxE
YXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbj46OmVuY29kZSk6IERlbGV0ZWQuCisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24+OjpkZWNv
ZGUpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoK
KworICAgICAgICBSZW1vdmUgV2ViQ29yZUFyZ3VtZW50Q29kZXJzIGxvZ2ljIGZvciBlbmNvZGlu
ZyBhbmQgZGVjb2RpbmcgRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24uIFNlZQorICAgICAg
ICBEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbi5oIGluIFdlYkNvcmUgZm9yIG1vcmUgZGV0
YWlsLgorCisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJv
cGRvd25HdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJv
cGRvd25HdGs6OnNob3cpOgorCisgICAgICAgIFR3ZWFrIEdUSyBjb2RlIHRvIGFkanVzdCBmb3Ig
dGhlIGNoYW5nZSBmcm9tIGBTdHJpbmdgIHRvIGBEYXRhTGlzdFN1Z2dlc3Rpb25gLgorCisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MubW06
CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2wgZGlkU2VsZWN0T3B0aW9u
QXRJbmRleDpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbCB0ZXh0
U3VnZ2VzdGlvbnNdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbCBz
dWdnZXN0aW9uQXRJbmRleDpdKToKKworICAgICAgICBBZGp1c3Qgc29tZSBpT1MgY29kZXBhdGhz
IHRvIHVzZSBEYXRhTGlzdFN1Z2dlc3Rpb246OnZhbHVlIGFzIHRoZSB2YWx1ZSBzdHJpbmcgdG8g
ZGlzcGxheS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViRGF0YUxpc3RTdWdnZXN0aW9u
c0Ryb3Bkb3duTWFjLm1tOgorCisgICAgICAgIFR3ZWFrIHNldmVyYWwgVUkgY29uc3RhbnRzLiBB
IHN1Z2dlc3Rpb24gY2VsbCBtYXkgbm93IGJlIGVpdGhlciAyMCBvciA0MHB0IHRhbGwsIGRlcGVu
ZGluZyBvbiB3aGV0aGVyIGl0IGhhcworICAgICAgICBsYWJlbCB0ZXh0IHRvIHNob3cuCisKKyAg
ICAgICAgQ3VycmVudGx5LCB0aGUgbWF4aW11bSBjb21iaW5lZCBoZWlnaHQgb2YgdGhlIHRhYmxl
IHZpZXcgY2VsbHMgaXMgMTIwIChub3QgaW5jbHVkaW5nIHNwYWNpbmcgYmV0d2VlbiBjZWxscyBh
bmQKKyAgICAgICAgdmVydGljYWwgcGFkZGluZyBhcm91bmQgdGhlIHRvcCBhbmQgYm90dG9tIG9m
IHRoZSB0YWJsZSB2aWV3KSwgc2luY2UgdGhlIG1heGltdW0gbnVtYmVyIG9mIGNlbGxzIHRvIHNo
b3cgaXMgNgorICAgICAgICBhbmQgZWFjaCBjZWxsIGlzIDIwcHQgdGFsbC4gTWFpbnRhaW4gdGhp
cyBjb25zdGFudCBieSBtYWtpbmcgdGhlIG1heGltdW0gY2VsbCBoZWlnaHQgMTIwLCB3aGljaCBh
Y2NvbW9kYXRlcworICAgICAgICBlaXRoZXIgdGhyZWUgbGFiZWxlZCBjZWxscywgb3IgNiB1bmxh
YmVsZWQgY2VsbHMgKGkuZS4gdG8gbWF0Y2ggc2hpcHBpbmcgYmVoYXZpb3IpLgorCisgICAgICAg
ICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uVmlldyBpbml0V2l0aEZyYW1lOl0pOgorICAgICAgICAo
LVtXS0RhdGFMaXN0U3VnZ2VzdGlvblZpZXcgbGF5b3V0XSk6CisKKyAgICAgICAgTWFpbnRhaW4g
dHdvIHRleHQgZmllbGRzIG9yIHZhbHVlIGFuZCAob3B0aW9uYWxseSkgbGFiZWwgdGV4dDogYF92
YWx1ZUZpZWxkYCBhbmQgYF9sYWJlbEZpZWxkYC4gVGhlIHZhbHVlIGZpZWxkCisgICAgICAgIGZp
bGxzIHRoZSBib3VuZHMgb2YgdGhlIGNlbGwgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlcmUgaXMgbm8g
bGFiZWwgdGV4dCwgYnV0IGZpbGxzIG9ubHkgdGhlIHRvcCBoYWxmIG9mIHRoZSBjZWxsCisgICAg
ICAgIGluIHRoZSBjYXNlIHdoZXJlIHRoZXJlIGlzIGxhYmVsIHRleHQuIFRoZSBsYWJlbCBmaWVs
ZCB0YWtlcyB0aGUgYm90dG9tIGhhbGYgb2YgdGhlIGNlbGwgaW4gdGhpcyBjYXNlLgorCisgICAg
ICAgIEFkZGl0aW9uYWxseSwgYWRkIGEgZGl2aWRlciB2aWV3IHRoYXQgbWF5IGFwcGVhciBhdCB0
aGUgdmVyeSBib3R0b20gb2YgZWFjaCBjZWxsLiBUaGlzIGRpdmlkZXIgdmlldyBpcyBwcmVzZW50
CisgICAgICAgIHdoZW4gb25lIG9yIG1vcmUgc3VnZ2VzdGlvbnMgaW4gdGhlIGRhdGFsaXN0IGFy
ZSBsYWJlbGVkLgorCisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uVmlldyBzZXRWYWx1
ZTpsYWJlbDpdKToKKworICAgICAgICBSZW5hbWVkIGZyb20gLXNldFRleHQ6LiBBZGQgYSBsYWJl
bCBzdHJpbmcgYXJndW1lbnQgYXMgd2VsbC4KKworICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2Vz
dGlvblZpZXcgc2V0U2hvdWxkU2hvd0JvdHRvbURpdmlkZXI6XSk6CisKKyAgICAgICAgQWRkIGdl
dHRlcnMgYW5kIHNldHRlcnMgZm9yIHRoZSAtc2hvdWxkU2hvd0JvdHRvbURpdmlkZXIgcHJvcGVy
dHksIHdoaWNoIGNhbiBiZSB1c2VkIHRvIG1ha2UgdGhlIGRpdmlkZXIgdmlldworICAgICAgICB2
aXNpYmxlIG9yIGhpZGRlbi4KKworICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvblZpZXcg
c2hvdWxkU2hvd0JvdHRvbURpdmlkZXJdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rp
b25WaWV3IHNldEJhY2tncm91bmRTdHlsZTpdKToKKworICAgICAgICBVc2UgLVtOU0NvbG9yIHNl
Y29uZGFyeUxhYmVsQ29sb3JdIGZvciB0aGUgbGFiZWwgdGV4dCBmaWVsZC4KKworICAgICAgICAo
c2hvdWxkU2hvd0RpdmlkZXJzQmV0d2VlbkNlbGxzKToKKworICAgICAgICBBZGQgYSBoZWxwZXIg
bWV0aG9kIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSB0YWJsZSB2aWV3IHNob3VsZCBiZSBzaG93
aW5nIGNsZWFyIGRpdmlkZXJzIGJldHdlZW4gZWFjaCBpdGVtLgorICAgICAgICBXZSBvbmx5IGRv
IHNvIGlmIHRoZXJlIGFyZSBvbmUgb3IgbW9yZSBsYWJlbHMgdG8gYmUgc2hvd24uCisKKyAgICAg
ICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbGxlciBpbml0V2l0aEluZm9ybWF0aW9u
OmluVmlldzpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbGxlciBj
dXJyZW50U2VsZWN0ZWRTdHJpbmddKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25z
Q29udHJvbGxlciB1cGRhdGVXaXRoSW5mb3JtYXRpb246XSk6CisgICAgICAgICgtW1dLRGF0YUxp
c3RTdWdnZXN0aW9uc0NvbnRyb2xsZXIgbW92ZVNlbGVjdGlvbkJ5RGlyZWN0aW9uOl0pOgorCisg
ICAgICAgIERyaXZlLWJ5IGZpeDogc2Nyb2xsIHRvIHJldmVhbCBlYWNoIHNlbGVjdGVkIHJvdyB3
aGVuIHVzaW5nIHRoZSBhcnJvdyBrZXlzIHRvIG5hdmlnYXRlIGJldHdlZW4gaXRlbXMuCisKKyAg
ICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbGxlciBkcm9wZG93blJlY3RGb3JF
bGVtZW50UmVjdDpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbGxl
ciB0YWJsZVZpZXc6aGVpZ2h0T2ZSb3c6XSk6CisKKyAgICAgICAgUmV0dXJuIGVpdGhlciBgZHJv
cGRvd25Sb3dIZWlnaHRXaXRob3V0TGFiZWxgIG9yIGBkcm9wZG93blJvd0hlaWdodFdpdGhMYWJl
bGAsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZXJlIGlzCisgICAgICAgIGxhYmVsIHRleHQgdG8g
YmUgc2hvd24gaW4gdGhhdCBzdWdnZXN0aW9uIGNlbGwuCisKKyAgICAgICAgKC1bV0tEYXRhTGlz
dFN1Z2dlc3Rpb25zQ29udHJvbGxlciB0YWJsZVZpZXc6dmlld0ZvclRhYmxlQ29sdW1uOnJvdzpd
KToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25WaWV3IHNldFRleHQ6XSk6IERlbGV0
ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNhblNob3dEYXRhTGlzdFN1
Z2dlc3Rpb25MYWJlbHMgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisKIDIwMjAtMDMtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQgc2hvdWxkIHRha2UgYSBmb3JlZ3JvdW5kIGFz
c2VydGlvbiBmb3Igb2Zmc2NyZWVuIGxvYWRzIHdoZW4gdGhlIGFwcCBpcyBmb3JlZ3JvdW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggY2UwYWQ0Y2M5ODFjNDc3M2E2ODQ4NmJlMGNh
MDFiZWYzYWM0NWI2Ni4uYjk3YjU1NGE4MDQ2NTg0NWNjZmNjYmY1YmE2ODIyMDRjMTIzNTJiNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTAzLTMx
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIERhdGFs
aXN0IG9wdGlvbidzIGxhYmVsIG5vdCB1c2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE3NjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1MzYx
MTg2PgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFNlZSBX
ZWJDb3JlL0NoYW5nZUxvZyBhbmQgV2ViS2l0L0NoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWxzLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisKIDIwMjAtMDMt
MzAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IHByb3ZpZGUgYSB3YXkgdG8gbG9nIG1lc3NhZ2VzIGZyb20gdGhlIG5ldHdvcmsgcHJv
Y2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRhTGlzdFN1Z2dlc3Rpb25J
bmZvcm1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRhTGlzdFN1Z2dlc3Rpb25JbmZv
cm1hdGlvbi5oCmluZGV4IDU3OTQ1MWE1OTgzMmZkZGZmYzliOThmNDBjZDk1OTU1NjhjZWZjNmQu
LmMyMzNjY2JjZWYwMDM1MDczNjdlYWI3NzhhNTE2OTQzNWQ1NzQxOGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0RhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uLmgKQEAgLTI5
LDE5ICsyOSw4MyBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogI2lmIEVOQUJMRShEQVRB
TElTVF9FTEVNRU5UKQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gY2xhc3MgRGF0YUxp
c3RTdWdnZXN0aW9uQWN0aXZhdGlvblR5cGUgeworZW51bSBjbGFzcyBEYXRhTGlzdFN1Z2dlc3Rp
b25BY3RpdmF0aW9uVHlwZSA6IHVpbnQ4X3QgewogICAgIENvbnRyb2xDbGlja2VkLAogICAgIElu
ZGljYXRvckNsaWNrZWQsCiAgICAgVGV4dENoYW5nZWQsCiB9OwogCitzdHJ1Y3QgRGF0YUxpc3RT
dWdnZXN0aW9uIHsKKyAgICBTdHJpbmcgdmFsdWU7CisgICAgU3RyaW5nIGxhYmVsOworCisgICAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxEYXRhTGlzdFN1Z2dlc3Rp
b24+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9p
ZCBEYXRhTGlzdFN1Z2dlc3Rpb246OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorewor
ICAgIGVuY29kZXIgPDwgdmFsdWU7CisgICAgZW5jb2RlciA8PCBsYWJlbDsKK30KKwordGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPERhdGFMaXN0U3VnZ2VzdGlvbj4gRGF0YUxpc3RT
dWdnZXN0aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxTdHJp
bmc+IHZhbHVlOworICAgIGRlY29kZXIgPj4gdmFsdWU7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPFN0cmluZz4gbGFiZWw7Cisg
ICAgZGVjb2RlciA+PiBsYWJlbDsKKyAgICBpZiAoIWxhYmVsKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgcmV0dXJuIHt7ICp2YWx1ZSwgKmxhYmVsIH19OworfQorCiBzdHJ1
Y3QgRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24gewogICAgIERhdGFMaXN0U3VnZ2VzdGlv
bkFjdGl2YXRpb25UeXBlIGFjdGl2YXRpb25UeXBlOwotICAgIFZlY3RvcjxTdHJpbmc+IHN1Z2dl
c3Rpb25zOworICAgIFZlY3RvcjxEYXRhTGlzdFN1Z2dlc3Rpb24+IHN1Z2dlc3Rpb25zOwogICAg
IEludFJlY3QgZWxlbWVudFJlY3Q7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIE9wdGlvbmFsPERhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uPiBkZWNvZGUoRGVjb2Rl
ciYpOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgRGF0YUxpc3RTdWdnZXN0
aW9uSW5mb3JtYXRpb246OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVu
Y29kZXIuZW5jb2RlRW51bShhY3RpdmF0aW9uVHlwZSk7CisgICAgZW5jb2RlciA8PCBzdWdnZXN0
aW9uczsKKyAgICBlbmNvZGVyIDw8IGVsZW1lbnRSZWN0OwogfQorCit0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPgorT3B0aW9uYWw8RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24+IERhdGFMaXN0
U3VnZ2VzdGlvbkluZm9ybWF0aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBE
YXRhTGlzdFN1Z2dlc3Rpb25BY3RpdmF0aW9uVHlwZSBhY3RpdmF0aW9uVHlwZTsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlRW51bShhY3RpdmF0aW9uVHlwZSkpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxWZWN0b3I8RGF0YUxpc3RTdWdnZXN0aW9uPj4gc3Vn
Z2VzdGlvbnM7CisgICAgZGVjb2RlciA+PiBzdWdnZXN0aW9uczsKKyAgICBpZiAoIXN1Z2dlc3Rp
b25zKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8SW50UmVj
dD4gZWxlbWVudFJlY3Q7CisgICAgZGVjb2RlciA+PiBlbGVtZW50UmVjdDsKKyAgICBpZiAoIWVs
ZW1lbnRSZWN0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIHt7
IGFjdGl2YXRpb25UeXBlLCAqc3VnZ2VzdGlvbnMsICplbGVtZW50UmVjdCB9fTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZp
ZWxkSW5wdXRUeXBlLmNwcAppbmRleCA1ZWM1YzM0NWIwNjBjZmEwODdlODBiNTMwYWI2ZTllYTRm
ZGRiYmMzLi4zY2FlMzhkNWYwNjYwMDA1MTI5ZTBhMTZlZDIwY2NkODYxYjg3OGJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCkBAIC04MjgsNyArODI4LDcg
QEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OnVwZGF0ZUF1dG9GaWxsQnV0dG9uKCkKIAogdm9p
ZCBUZXh0RmllbGRJbnB1dFR5cGU6Omxpc3RBdHRyaWJ1dGVUYXJnZXRDaGFuZ2VkKCkKIHsKLSAg
ICBtX2NhY2hlZFN1Z2dlc3Rpb25zID0gc3RkOjptYWtlX3BhaXIoU3RyaW5nKCksIFZlY3RvcjxT
dHJpbmc+KCkpOworICAgIG1fY2FjaGVkU3VnZ2VzdGlvbnMgPSB7IH07CiAKICAgICBpZiAoIW1f
ZGF0YUxpc3REcm9wZG93bkluZGljYXRvcikKICAgICAgICAgY3JlYXRlRGF0YUxpc3REcm9wZG93
bkluZGljYXRvcigpOwpAQCAtODU2LDM0ICs4NTYsMzkgQEAgSW50UmVjdCBUZXh0RmllbGRJbnB1
dFR5cGU6OmVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkgY29uc3QKICAgICByZXR1
cm4gZWxlbWVudCgpLT5kb2N1bWVudCgpLnZpZXcoKS0+Y29udGVudHNUb1Jvb3RWaWV3KGVsZW1l
bnQoKS0+cmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSk7CiB9CiAKLVZlY3Rv
cjxTdHJpbmc+IFRleHRGaWVsZElucHV0VHlwZTo6c3VnZ2VzdGlvbnMoKQorVmVjdG9yPERhdGFM
aXN0U3VnZ2VzdGlvbj4gVGV4dEZpZWxkSW5wdXRUeXBlOjpzdWdnZXN0aW9ucygpCiB7CiAgICAg
Ly8gRklYTUU6IFN1Z2dlc3Rpb25zIGFyZSAidHlwaW5nIGNvbXBsZXRpb25zIiBhbmQgc28gc2hv
dWxkIHByb2JhYmx5IHVzZSB0aGUgZmluZFBsYWluVGV4dCBhbGdvcml0aG0gcmF0aGVyIHRoYW4g
dGhlIHNpbXBsaXN0aWMgImlnbm9yaW5nIEFTQ0lJIGNhc2UiIHJ1bGVzLgogCi0gICAgVmVjdG9y
PFN0cmluZz4gc3VnZ2VzdGlvbnM7Ci0gICAgVmVjdG9yPFN0cmluZz4gbWF0Y2hlc0NvbnRhaW5p
bmdWYWx1ZTsKKyAgICBWZWN0b3I8RGF0YUxpc3RTdWdnZXN0aW9uPiBzdWdnZXN0aW9uczsKKyAg
ICBWZWN0b3I8RGF0YUxpc3RTdWdnZXN0aW9uPiBtYXRjaGVzQ29udGFpbmluZ1ZhbHVlOwogCiAg
ICAgU3RyaW5nIGVsZW1lbnRWYWx1ZSA9IGVsZW1lbnQoKS0+dmFsdWUoKTsKIAogICAgIGlmICgh
bV9jYWNoZWRTdWdnZXN0aW9ucy5maXJzdC5pc051bGwoKSAmJiBlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKG1fY2FjaGVkU3VnZ2VzdGlvbnMuZmlyc3QsIGVsZW1lbnRWYWx1ZSkpCiAgICAgICAgIHJl
dHVybiBtX2NhY2hlZFN1Z2dlc3Rpb25zLnNlY29uZDsKIAorICAgIGF1dG8qIHBhZ2UgPSBlbGVt
ZW50KCktPmRvY3VtZW50KCkucGFnZSgpOworICAgIGJvb2wgY2FuU2hvd0xhYmVscyA9IHBhZ2Ug
JiYgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuY2FuU2hvd0RhdGFMaXN0U3VnZ2VzdGlvbkxhYmVs
cygpOwogICAgIGlmIChhdXRvIGRhdGFMaXN0ID0gZWxlbWVudCgpLT5kYXRhTGlzdCgpKSB7CiAg
ICAgICAgIGZvciAoYXV0byYgb3B0aW9uIDogZGF0YUxpc3QtPnN1Z2dlc3Rpb25zKCkpIHsKLSAg
ICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IG9wdGlvbi52YWx1ZSgpOwotICAgICAgICAgICAgaWYg
KCFlbGVtZW50KCktPmlzVmFsaWRWYWx1ZSh2YWx1ZSkpCisgICAgICAgICAgICBEYXRhTGlzdFN1
Z2dlc3Rpb24gc3VnZ2VzdGlvbjsKKyAgICAgICAgICAgIHN1Z2dlc3Rpb24udmFsdWUgPSBvcHRp
b24udmFsdWUoKTsKKyAgICAgICAgICAgIGlmICghZWxlbWVudCgpLT5pc1ZhbGlkVmFsdWUoc3Vn
Z2VzdGlvbi52YWx1ZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB2
YWx1ZSA9IHNhbml0aXplVmFsdWUodmFsdWUpOwotICAgICAgICAgICAgaWYgKGVsZW1lbnRWYWx1
ZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgc3VnZ2VzdGlvbnMuYXBwZW5kKHZhbHVlKTsK
LSAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlLnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShl
bGVtZW50VmFsdWUpKQotICAgICAgICAgICAgICAgIHN1Z2dlc3Rpb25zLmFwcGVuZCh2YWx1ZSk7
Ci0gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZS5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKGVs
ZW1lbnRWYWx1ZSkpCi0gICAgICAgICAgICAgICAgbWF0Y2hlc0NvbnRhaW5pbmdWYWx1ZS5hcHBl
bmQodmFsdWUpOworICAgICAgICAgICAgc3VnZ2VzdGlvbi52YWx1ZSA9IHNhbml0aXplVmFsdWUo
c3VnZ2VzdGlvbi52YWx1ZSk7CisgICAgICAgICAgICBzdWdnZXN0aW9uLmxhYmVsID0gb3B0aW9u
LmxhYmVsKCk7CisgICAgICAgICAgICBpZiAoc3VnZ2VzdGlvbi52YWx1ZSA9PSBzdWdnZXN0aW9u
LmxhYmVsKQorICAgICAgICAgICAgICAgIHN1Z2dlc3Rpb24ubGFiZWwgPSB7IH07CisKKyAgICAg
ICAgICAgIGlmIChlbGVtZW50VmFsdWUuaXNFbXB0eSgpIHx8IHN1Z2dlc3Rpb24udmFsdWUuc3Rh
cnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGVsZW1lbnRWYWx1ZSkpCisgICAgICAgICAgICAgICAg
c3VnZ2VzdGlvbnMuYXBwZW5kKFdURk1vdmUoc3VnZ2VzdGlvbikpOworICAgICAgICAgICAgZWxz
ZSBpZiAoc3VnZ2VzdGlvbi52YWx1ZS5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKGVsZW1lbnRW
YWx1ZSkgfHwgKGNhblNob3dMYWJlbHMgJiYgc3VnZ2VzdGlvbi5sYWJlbC5jb250YWluc0lnbm9y
aW5nQVNDSUlDYXNlKGVsZW1lbnRWYWx1ZSkpKQorICAgICAgICAgICAgICAgIG1hdGNoZXNDb250
YWluaW5nVmFsdWUuYXBwZW5kKFdURk1vdmUoc3VnZ2VzdGlvbikpOwogICAgICAgICB9CiAgICAg
fQogCi0gICAgc3VnZ2VzdGlvbnMuYXBwZW5kVmVjdG9yKG1hdGNoZXNDb250YWluaW5nVmFsdWUp
OworICAgIHN1Z2dlc3Rpb25zLmFwcGVuZFZlY3RvcihXVEZNb3ZlKG1hdGNoZXNDb250YWluaW5n
VmFsdWUpKTsKICAgICBtX2NhY2hlZFN1Z2dlc3Rpb25zID0gc3RkOjptYWtlX3BhaXIoZWxlbWVu
dFZhbHVlLCBzdWdnZXN0aW9ucyk7CiAKICAgICByZXR1cm4gc3VnZ2VzdGlvbnM7CkBAIC04OTYs
NyArOTAxLDcgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmRpZFNlbGVjdERhdGFMaXN0T3B0
aW9uKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRPcHRpb24pCiAKIHZvaWQgVGV4dEZpZWxkSW5wdXRU
eXBlOjpkaWRDbG9zZVN1Z2dlc3Rpb25zKCkKIHsKLSAgICBtX2NhY2hlZFN1Z2dlc3Rpb25zID0g
c3RkOjptYWtlX3BhaXIoU3RyaW5nKCksIFZlY3RvcjxTdHJpbmc+KCkpOworICAgIG1fY2FjaGVk
U3VnZ2VzdGlvbnMgPSB7IH07CiAgICAgbV9zdWdnZXN0aW9uUGlja2VyID0gbnVsbHB0cjsKICAg
ICBpZiAoZWxlbWVudCgpLT5yZW5kZXJlcigpKQogICAgICAgICBlbGVtZW50KCktPnJlbmRlcmVy
KCktPnJlcGFpbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxk
SW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5oCmlu
ZGV4IDRlMzNmMDU3YzJjODVjOWVjYzY2YTRjMGJiZmNlY2IxOTRmYmRlMzkuLjVhMTdmMTU4MjFh
MGRkMDYwNzI3YWE5ZWEwZTljNDQxOGEwYTc3NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0
RmllbGRJbnB1dFR5cGUuaApAQCAtMTMyLDE0ICsxMzIsMTQgQEAgcHJpdmF0ZToKIAogICAgIC8v
IERhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQKICAgICBJbnRSZWN0IGVsZW1lbnRSZWN0SW5Sb290
Vmlld0Nvb3JkaW5hdGVzKCkgY29uc3QgZmluYWw7Ci0gICAgVmVjdG9yPFN0cmluZz4gc3VnZ2Vz
dGlvbnMoKSBmaW5hbDsKKyAgICBWZWN0b3I8RGF0YUxpc3RTdWdnZXN0aW9uPiBzdWdnZXN0aW9u
cygpIGZpbmFsOwogICAgIHZvaWQgZGlkU2VsZWN0RGF0YUxpc3RPcHRpb24oY29uc3QgU3RyaW5n
JikgZmluYWw7CiAgICAgdm9pZCBkaWRDbG9zZVN1Z2dlc3Rpb25zKCkgZmluYWw7CiAKICAgICB2
b2lkIGRhdGFMaXN0QnV0dG9uRWxlbWVudFdhc0NsaWNrZWQoKSBmaW5hbDsKICAgICBSZWZQdHI8
RGF0YUxpc3RCdXR0b25FbGVtZW50PiBtX2RhdGFMaXN0RHJvcGRvd25JbmRpY2F0b3I7CiAKLSAg
ICBzdGQ6OnBhaXI8U3RyaW5nLCBWZWN0b3I8U3RyaW5nPj4gbV9jYWNoZWRTdWdnZXN0aW9uczsK
KyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBWZWN0b3I8RGF0YUxpc3RTdWdnZXN0aW9uPj4gbV9jYWNo
ZWRTdWdnZXN0aW9uczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YUxpc3RTdWdnZXN0aW9uUGlj
a2VyPiBtX3N1Z2dlc3Rpb25QaWNrZXI7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5oCmluZGV4IDE3MWFkNmFjMDFmNjQ4NDIwMzQ4ZTcwODk1MmU2NjYxOGIxOTk5MTEu
LmI4ZDExMTY4YzY5MzhlOGIzN2ZlNjQ0ZjlkNDFkNmFkNDJmNTM4YzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTEzMyw2ICsxMzMsNyBAQCBjbGFzcyBFbXB0eUNocm9t
ZUNsaWVudCA6IHB1YmxpYyBDaHJvbWVDbGllbnQgewogCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VM
RU1FTlQpCiAgICAgc3RkOjp1bmlxdWVfcHRyPERhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcj4gY3Jl
YXRlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKERhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQmKSBm
aW5hbDsKKyAgICBib29sIGNhblNob3dEYXRhTGlzdFN1Z2dlc3Rpb25MYWJlbHMoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKICAgICB2b2lkIHJ1bk9wZW5QYW5lbChG
cmFtZSYsIEZpbGVDaG9vc2VyJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApp
bmRleCA2YTQxM2E3MjM1Mjk3YjNjNDA5MTU3ODEyOGIxYzdmZjY3NzY5MTU5Li40OTQ5ZmVhODVk
YzAxNzhlYzE4OTg0MzQ4YzllNDFjZGUzYTk0OGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xp
ZW50LmgKQEAgLTI3OSw2ICsyNzksNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoREFUQUxJU1Rf
RUxFTUVOVCkKICAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxEYXRhTGlzdFN1Z2dlc3Rpb25Q
aWNrZXI+IGNyZWF0ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcihEYXRhTGlzdFN1Z2dlc3Rpb25z
Q2xpZW50JikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjYW5TaG93RGF0YUxpc3RTdWdnZXN0aW9u
TGFiZWxzKCkgY29uc3QgPSAwOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBh
bmVsKEZyYW1lJiwgRmlsZUNob29zZXImKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9EYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50LmgKaW5kZXggNWVkODAyNWJlNzkwMjky
N2Y1ZDY1M2I5NzY5ZTExM2YyY2FlYzhjYi4uNTZkOTVjNjMzNGVmYTVkNGM5Mjk0OTA3MzJmNTE4
NzA2MjYwYTI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0YUxpc3RT
dWdnZXN0aW9uc0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGFMaXN0
U3VnZ2VzdGlvbnNDbGllbnQuaApAQCAtMzIsMTMgKzMyLDE0IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEludFJlY3Q7CitzdHJ1Y3QgRGF0YUxpc3RTdWdnZXN0aW9uOwogCiBjbGFz
cyBEYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5EYXRh
TGlzdFN1Z2dlc3Rpb25zQ2xpZW50KCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCBJbnRSZWN0
IGVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkgY29uc3QgPSAwOwotICAgIHZpcnR1
YWwgVmVjdG9yPFN0cmluZz4gc3VnZ2VzdGlvbnMoKSA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8
RGF0YUxpc3RTdWdnZXN0aW9uPiBzdWdnZXN0aW9ucygpID0gMDsKIAogICAgIHZpcnR1YWwgdm9p
ZCBkaWRTZWxlY3REYXRhTGlzdE9wdGlvbihjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRpZENsb3NlU3VnZ2VzdGlvbnMoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA0MjU3NzU3OWZkN2U1YjE0OGRmMGQy
MmJjY2RkMTUxZmU4ZWQ0ODI5Li5mZDMyMGVjOTRlNDgwMmE0Yzk1NGE3YWUwZDZjNjUwMTkyZmJj
YzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NvbXBvc2l0aW9uVW5kZXJs
aW5lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DcmVkZW50aWFsLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9DdXJzb3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0RhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VEZXRhaWxzLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9EaWN0YXRpb25BbHRlcm5hdGl2ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGljdGlvbmFyeVBv
cHVwSW5mby5oPgpAQCAtMTcyMSwyOSArMTcyMCw2IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxEYXRh
YmFzZURldGFpbHM+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRGF0YWJhc2VEZXRhaWxzJiBk
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLSNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLXZv
aWQgQXJndW1lbnRDb2RlcjxEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbj46OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1h
dGlvbiYgaW5mbykKLXsKLSAgICBlbmNvZGVyLmVuY29kZUVudW0oaW5mby5hY3RpdmF0aW9uVHlw
ZSk7Ci0gICAgZW5jb2RlciA8PCBpbmZvLnN1Z2dlc3Rpb25zOwotICAgIGVuY29kZXIgPDwgaW5m
by5lbGVtZW50UmVjdDsKLX0KLQotYm9vbCBBcmd1bWVudENvZGVyPERhdGFMaXN0U3VnZ2VzdGlv
bkluZm9ybWF0aW9uPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFdlYkNvcmU6OkRhdGFMaXN0
U3VnZ2VzdGlvbkluZm9ybWF0aW9uJiBpbmZvKQotewotICAgIGlmICghZGVjb2Rlci5kZWNvZGVF
bnVtKGluZm8uYWN0aXZhdGlvblR5cGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGluZm8uc3VnZ2VzdGlvbnMpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8uZWxlbWVudFJlY3QpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLSNlbmRpZgotCiB0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT4gewog
ICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUGFzdGVib2FyZEN1c3RvbURh
dGE6OkVudHJ5Jik7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6RW50cnkmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgKaW5kZXggMWFiYjQxNmMxNGJiZDRhZTViOWM5Nzg4YjdjMDFhMGI1YjYyN2Qw
My4uY2E1N2MzMWVhOTU0NTk3NWY3YmIxYWQ4NDFkZGRiOGYxM2RmZmNkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTE2MywxMCArMTYzLDYg
QEAgc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50Owogc3RydWN0IFZpZXdwb3J0QXJndW1lbnRz
OwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLXN0cnVjdCBEYXRhTGlz
dFN1Z2dlc3Rpb25JbmZvcm1hdGlvbjsKLSNlbmRpZgotCiAjaWYgVVNFKFNPVVApCiBzdHJ1Y3Qg
U291cE5ldHdvcmtQcm94eVNldHRpbmdzOwogI2VuZGlmCkBAIC01NDMsMTMgKzUzOSw2IEBAIHRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RGF0YWJhc2VEZXRhaWxzPiB7
CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpEYXRhYmFzZURldGFp
bHMmKTsKIH07CiAKLSNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLXRlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24+
IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkRhdGFM
aXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uJik7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29k
ZXImLCBXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbiYpOwotfTsKLSNlbmRp
ZgotCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkRpY3RhdGlvbkFs
dGVybmF0aXZlPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJD
b3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZSYpOwogICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3Jl
OjpEaWN0YXRpb25BbHRlcm5hdGl2ZT4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25H
dGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkRhdGFMaXN0U3VnZ2VzdGlv
bnNEcm9wZG93bkd0ay5jcHAKaW5kZXggNDQ4ZmNmYzQxOGQ3ZTJjNTQ2OWVhNGVlZWYzNTViZDgy
YWUyZjBmYy4uNmEzNjc4OTA0MDJiOTA2YzUxNzEwNGY4ZTBjYTJkNTExZjE5MGFiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNE
cm9wZG93bkd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkRhdGFM
aXN0U3VnZ2VzdGlvbnNEcm9wZG93bkd0ay5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIFdl
YkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bkd0azo6c2hvdyhXZWJDb3JlOjpEYXRhTGlzdFN1
Z2dlc3Rpb25JbmZvcm1hdAogICAgIGZvciAoY29uc3QgYXV0byYgc3VnZ2VzdGlvbiA6IGluZm9y
bWF0aW9uLnN1Z2dlc3Rpb25zKSB7CiAgICAgICAgIEd0a1RyZWVJdGVyIGl0ZXI7CiAgICAgICAg
IGd0a19saXN0X3N0b3JlX2FwcGVuZChtb2RlbCwgJml0ZXIpOwotICAgICAgICBndGtfbGlzdF9z
dG9yZV9zZXQobW9kZWwsICZpdGVyLCAwLCBzdWdnZXN0aW9uLnV0ZjgoKS5kYXRhKCksIC0xKTsK
KyAgICAgICAgZ3RrX2xpc3Rfc3RvcmVfc2V0KG1vZGVsLCAmaXRlciwgMCwgc3VnZ2VzdGlvbi52
YWx1ZS51dGY4KCkuZGF0YSgpLCAtMSk7CiAgICAgfQogCiAgICAgR3RrUmVxdWlzaXRpb24gdHJl
ZVZpZXdSZXF1aXNpdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tCmluZGV4IGEx
OTdjNTMxYjMwOWEyOTBjZjA4OWRjYjU4YTNkZmQyNDAxMWZkN2QuLjgzZDUyZDcyNDBkMmY5ZmYy
YTM4ZmU4ZDY0NDUwMGY4ZGM0ZWMxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5t
bQpAQCAtNDIsNyArNDIsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBzdWdnZXN0aW9uQ2Vs
bFJldXNlSWRlbnRpZmllciA9IEAiV0tEYXRhTGlzdFN1Z2dlc3Rpb25DZQogCiBAaW50ZXJmYWNl
IFdLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2wgOiBOU09iamVjdCB7CiAgICAgV2Vha1B0cjxX
ZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUz4gX2Ryb3Bkb3duOwotICAg
IFZlY3RvcjxTdHJpbmc+IF9zdWdnZXN0aW9uczsKKyAgICBWZWN0b3I8V2ViQ29yZTo6RGF0YUxp
c3RTdWdnZXN0aW9uPiBfc3VnZ2VzdGlvbnM7CiB9CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCB3
ZWFrKSBXS0NvbnRlbnRWaWV3ICp2aWV3OwpAQCAtMTU5LDcgKzE1OSw3IEBAIC0gKHZvaWQpc2hv
d1N1Z2dlc3Rpb25zRHJvcGRvd246KFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bk
b3duSU9TJilkcm9wCiAKIC0gKHZvaWQpZGlkU2VsZWN0T3B0aW9uQXRJbmRleDooTlNJbnRlZ2Vy
KWluZGV4CiB7Ci0gICAgX2Ryb3Bkb3duLT5kaWRTZWxlY3RPcHRpb24oX3N1Z2dlc3Rpb25zW2lu
ZGV4XSk7CisgICAgX2Ryb3Bkb3duLT5kaWRTZWxlY3RPcHRpb24oX3N1Z2dlc3Rpb25zW2luZGV4
XS52YWx1ZSk7CiB9CiAKIC0gKHZvaWQpaW52YWxpZGF0ZQpAQCAtMTcxLDcgKzE3MSw3IEBAIC0g
KE5TQXJyYXk8V0tEYXRhTGlzdFRleHRTdWdnZXN0aW9uICo+ICopdGV4dFN1Z2dlc3Rpb25zCiAg
ICAgTlNNdXRhYmxlQXJyYXkgKnN1Z2dlc3Rpb25zID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsK
IAogICAgIGZvciAoY29uc3QgYXV0byYgc3VnZ2VzdGlvbiA6IF9zdWdnZXN0aW9ucykgewotICAg
ICAgICBbc3VnZ2VzdGlvbnMgYWRkT2JqZWN0OltXS0RhdGFMaXN0VGV4dFN1Z2dlc3Rpb24gdGV4
dFN1Z2dlc3Rpb25XaXRoSW5wdXRUZXh0OnN1Z2dlc3Rpb25dXTsKKyAgICAgICAgW3N1Z2dlc3Rp
b25zIGFkZE9iamVjdDpbV0tEYXRhTGlzdFRleHRTdWdnZXN0aW9uIHRleHRTdWdnZXN0aW9uV2l0
aElucHV0VGV4dDpzdWdnZXN0aW9uLnZhbHVlXV07CiAgICAgICAgIGlmIChzdWdnZXN0aW9ucy5j
b3VudCA9PSAzKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTg2LDcgKzE4Niw3IEBA
IC0gKE5TSW50ZWdlcilzdWdnZXN0aW9uc0NvdW50CiAKIC0gKFN0cmluZylzdWdnZXN0aW9uQXRJ
bmRleDooTlNJbnRlZ2VyKWluZGV4CiB7Ci0gICAgcmV0dXJuIF9zdWdnZXN0aW9uc1tpbmRleF07
CisgICAgcmV0dXJuIF9zdWdnZXN0aW9uc1tpbmRleF0udmFsdWU7CiB9CiAKIC0gKE5TVGV4dEFs
aWdubWVudCl0ZXh0QWxpZ25tZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bk1hYy5tbQppbmRl
eCA4MDYwYzhhYmQzM2U1NWUwMmM3MTI0ZjRhNDQyOTE1MWE5MzkwYjE5Li4zYmQ5NDFjNzI4OTcx
NzBlY2MxNTdiOWZlYjU3ZGE1MzcyOGU4MTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25N
YWMubW0KQEAgLTM0LDE2ICszNCwxOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJp
bmdzLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TQ29sb3JTUEkuaD4KIAotc3RhdGljIGNv
bnN0IENHRmxvYXQgZHJvcGRvd25Ub3BNYXJnaW4gPSAzOwotc3RhdGljIGNvbnN0IENHRmxvYXQg
ZHJvcGRvd25WZXJ0aWNhbFBhZGRpbmcgPSA0Owotc3RhdGljIGNvbnN0IENHRmxvYXQgZHJvcGRv
d25Sb3dIZWlnaHQgPSAyMDsKLXN0YXRpYyBjb25zdCBzaXplX3QgZHJvcGRvd25NYXhTdWdnZXN0
aW9ucyA9IDY7Citjb25zdGV4cHIgQ0dGbG9hdCBkcm9wZG93blRvcE1hcmdpbiA9IDM7Citjb25z
dGV4cHIgQ0dGbG9hdCBkcm9wZG93blZlcnRpY2FsUGFkZGluZyA9IDQ7Citjb25zdGV4cHIgQ0dG
bG9hdCBkcm9wZG93blJvd0hlaWdodFdpdGhvdXRMYWJlbCA9IDIwOworY29uc3RleHByIENHRmxv
YXQgZHJvcGRvd25Sb3dIZWlnaHRXaXRoTGFiZWwgPSA0MDsKK2NvbnN0ZXhwciBDR0Zsb2F0IG1h
eGltdW1Ub3RhbEhlaWdodEZvckRyb3Bkb3duQ2VsbHMgPSAxMjA7CiBzdGF0aWMgTlNTdHJpbmcg
KiBjb25zdCBzdWdnZXN0aW9uQ2VsbFJldXNlSWRlbnRpZmllciA9IEAiV0tEYXRhTGlzdFN1Z2dl
c3Rpb25WaWV3IjsKIAogQGludGVyZmFjZSBXS0RhdGFMaXN0U3VnZ2VzdGlvbldpbmRvdyA6IE5T
V2luZG93CiBAZW5kCiAKIEBpbnRlcmZhY2UgV0tEYXRhTGlzdFN1Z2dlc3Rpb25WaWV3IDogTlNU
YWJsZUNlbGxWaWV3CitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBzaG91bGRTaG93Qm90dG9t
RGl2aWRlcjsKIEBlbmQKIAogQGludGVyZmFjZSBXS0RhdGFMaXN0U3VnZ2VzdGlvblRhYmxlUm93
VmlldyA6IE5TVGFibGVSb3dWaWV3CkBAIC0xNjksNyArMTcxLDkgQEAgLSAoTlNXaW5kb3dTaGFk
b3dPcHRpb25zKXNoYWRvd09wdGlvbnMKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdLRGF0YUxp
c3RTdWdnZXN0aW9uVmlldyB7Ci0gICAgUmV0YWluUHRyPE5TVGV4dEZpZWxkPiBfdGV4dEZpZWxk
OworICAgIFJldGFpblB0cjxOU1RleHRGaWVsZD4gX3ZhbHVlRmllbGQ7CisgICAgUmV0YWluUHRy
PE5TVGV4dEZpZWxkPiBfbGFiZWxGaWVsZDsKKyAgICBSZXRhaW5QdHI8TlNWaWV3PiBfYm90dG9t
RGl2aWRlcjsKIH0KIAogLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lUmVjdApAQCAt
MTc3LDMxICsxODEsNzggQEAgLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lUmVjdAog
ICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhGcmFtZTpmcmFtZVJlY3RdKSkKICAgICAg
ICAgcmV0dXJuIHNlbGY7CiAKLSAgICBfdGV4dEZpZWxkID0gYWRvcHROUyhbW05TVGV4dEZpZWxk
IGFsbG9jXSBpbml0V2l0aEZyYW1lOmZyYW1lUmVjdF0pOwotICAgIHNlbGYudGV4dEZpZWxkID0g
X3RleHRGaWVsZC5nZXQoKTsKLQotICAgIFtzZWxmIGFkZFN1YnZpZXc6c2VsZi50ZXh0RmllbGRd
OwotCisgICAgX3ZhbHVlRmllbGQgPSBhZG9wdE5TKFtbTlNUZXh0RmllbGQgYWxsb2NdIGluaXRd
KTsKKyAgICBfbGFiZWxGaWVsZCA9IGFkb3B0TlMoW1tOU1RleHRGaWVsZCBhbGxvY10gaW5pdF0p
OworICAgIF9ib3R0b21EaXZpZGVyID0gYWRvcHROUyhbW05TVmlldyBhbGxvY10gaW5pdF0pOwor
ICAgIFtfYm90dG9tRGl2aWRlciBzZXRXYW50c0xheWVyOllFU107CisgICAgW19ib3R0b21EaXZp
ZGVyIHNldEhpZGRlbjpZRVNdOworICAgIFtfYm90dG9tRGl2aWRlciBsYXllcl0uYmFja2dyb3Vu
ZENvbG9yID0gTlNDb2xvci5zZXBhcmF0b3JDb2xvci5DR0NvbG9yOworICAgIFtzZWxmIGFkZFN1
YnZpZXc6X2JvdHRvbURpdmlkZXIuZ2V0KCldOworCisgICAgYXV0byBzZXRVcFRleHRGaWVsZCA9
IFsmXShOU1RleHRGaWVsZCAqdGV4dEZpZWxkKSB7CisgICAgICAgIHRleHRGaWVsZC5lZGl0YWJs
ZSA9IE5POworICAgICAgICB0ZXh0RmllbGQuYmV6ZWxlZCA9IE5POworICAgICAgICB0ZXh0Rmll
bGQuZm9udCA9IFtOU0ZvbnQgbWVudUZvbnRPZlNpemU6MF07CisgICAgICAgIHRleHRGaWVsZC5k
cmF3c0JhY2tncm91bmQgPSBOTzsKKyAgICAgICAgW3NlbGYgYWRkU3Vidmlldzp0ZXh0RmllbGRd
OworICAgIH07CisKKyAgICBzZXRVcFRleHRGaWVsZChfdmFsdWVGaWVsZC5nZXQoKSk7CisgICAg
c2V0VXBUZXh0RmllbGQoX2xhYmVsRmllbGQuZ2V0KCkpOwogICAgIHNlbGYuaWRlbnRpZmllciA9
IHN1Z2dlc3Rpb25DZWxsUmV1c2VJZGVudGlmaWVyOwotICAgIHNlbGYudGV4dEZpZWxkLmVkaXRh
YmxlID0gTk87Ci0gICAgc2VsZi50ZXh0RmllbGQuYmV6ZWxlZCA9IE5POwotICAgIHNlbGYudGV4
dEZpZWxkLmZvbnQgPSBbTlNGb250IG1lbnVGb250T2ZTaXplOjBdOwotICAgIHNlbGYudGV4dEZp
ZWxkLmRyYXdzQmFja2dyb3VuZCA9IE5POwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0gKHZv
aWQpc2V0VGV4dDooTlNTdHJpbmcgKil0ZXh0CistICh2b2lkKWxheW91dAoreworICAgIFtzdXBl
ciBsYXlvdXRdOworCisgICAgYXV0byBib3VuZHMgPSBzZWxmLmJvdW5kczsKKyAgICBhdXRvIHdp
ZHRoID0gYm91bmRzLnNpemUud2lkdGg7CisgICAgaWYgKCFbX2xhYmVsRmllbGQgaXNIaWRkZW5d
KSB7CisgICAgICAgIGF1dG8gaGFsZk9mSGVpZ2h0ID0gYm91bmRzLnNpemUuaGVpZ2h0IC8gMjsK
KyAgICAgICAgW192YWx1ZUZpZWxkIHNldEZyYW1lOk5TTWFrZVJlY3QoMCwgaGFsZk9mSGVpZ2h0
LCB3aWR0aCwgaGFsZk9mSGVpZ2h0KV07CisgICAgICAgIFtfbGFiZWxGaWVsZCBzZXRGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIHdpZHRoLCBoYWxmT2ZIZWlnaHQpXTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgW192YWx1ZUZpZWxkIHNldEZyYW1lOmJvdW5kc107CisKKyAgICBpZiAoIVtfYm90dG9tRGl2
aWRlciBpc0hpZGRlbl0pCisgICAgICAgIFtfYm90dG9tRGl2aWRlciBzZXRGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIHdpZHRoLCAwLjUpXTsKK30KKworLSAodm9pZClzZXRWYWx1ZTooTlNTdHJpbmcg
Kil2YWx1ZSBsYWJlbDooTlNTdHJpbmcgKilsYWJlbAoreworICAgIGlmIChbW192YWx1ZUZpZWxk
IHN0cmluZ1ZhbHVlXSBpc0VxdWFsVG9TdHJpbmc6dmFsdWVdICYmIFtbX2xhYmVsRmllbGQgc3Ry
aW5nVmFsdWVdIGlzRXF1YWxUb1N0cmluZzpsYWJlbF0pCisgICAgICAgIHJldHVybjsKKworICAg
IFtfdmFsdWVGaWVsZCBzZXRTdHJpbmdWYWx1ZTp2YWx1ZV07CisgICAgW19sYWJlbEZpZWxkIHNl
dFN0cmluZ1ZhbHVlOmxhYmVsXTsKKyAgICBbX2xhYmVsRmllbGQgc2V0SGlkZGVuOiFsYWJlbC5s
ZW5ndGhdOworICAgIHNlbGYubmVlZHNMYXlvdXQgPSBZRVM7Cit9CisKKy0gKHZvaWQpc2V0U2hv
dWxkU2hvd0JvdHRvbURpdmlkZXI6KEJPT0wpc2hvd0JvdHRvbURpdmlkZXIKIHsKLSAgICBzZWxm
LnRleHRGaWVsZC5zdHJpbmdWYWx1ZSA9IHRleHQ7CisgICAgaWYgKFtfYm90dG9tRGl2aWRlciBp
c0hpZGRlbl0gPT0gIXNob3dCb3R0b21EaXZpZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBb
X2JvdHRvbURpdmlkZXIgc2V0SGlkZGVuOiFzaG93Qm90dG9tRGl2aWRlcl07CisgICAgc2VsZi5u
ZWVkc0xheW91dCA9IFlFUzsKK30KKworLSAoQk9PTClzaG91bGRTaG93Qm90dG9tRGl2aWRlcgor
eworICAgIHJldHVybiBbX2JvdHRvbURpdmlkZXIgaXNIaWRkZW5dOwogfQogCiAtICh2b2lkKXNl
dEJhY2tncm91bmRTdHlsZTooTlNCYWNrZ3JvdW5kU3R5bGUpYmFja2dyb3VuZFN0eWxlCiB7CiAg
ICAgW3N1cGVyIHNldEJhY2tncm91bmRTdHlsZTpiYWNrZ3JvdW5kU3R5bGVdOwotICAgIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgc2VsZi50ZXh0RmllbGQudGV4dENv
bG9yID0gYmFja2dyb3VuZFN0eWxlID09IE5TQmFja2dyb3VuZFN0eWxlTGlnaHQgPyBbTlNDb2xv
ciB0ZXh0Q29sb3JdIDogW05TQ29sb3IgYWx0ZXJuYXRlU2VsZWN0ZWRDb250cm9sVGV4dENvbG9y
XTsKLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKK0FMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgW192YWx1ZUZpZWxkIHNldFRleHRDb2xvcjpiYWNr
Z3JvdW5kU3R5bGUgPT0gTlNCYWNrZ3JvdW5kU3R5bGVMaWdodCA/IE5TQ29sb3IudGV4dENvbG9y
IDogTlNDb2xvci5hbHRlcm5hdGVTZWxlY3RlZENvbnRyb2xUZXh0Q29sb3JdOworICAgIFtfbGFi
ZWxGaWVsZCBzZXRUZXh0Q29sb3I6TlNDb2xvci5zZWNvbmRhcnlMYWJlbENvbG9yXTsKK0FMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogfQogCiAtIChCT09MKWFjY2VwdHNGaXJzdFJl
c3BvbmRlcgpAQCAtMjUxLDE0ICszMDIsMjIgQEAgLSAoQk9PTClhY2NlcHRzRmlyc3RSZXNwb25k
ZXIKIAogQGVuZAogCitzdGF0aWMgQk9PTCBzaG91bGRTaG93RGl2aWRlcnNCZXR3ZWVuQ2VsbHMo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbj4mIHN1Z2dlc3Rpb25zKQor
eworICAgIHJldHVybiBub3RGb3VuZCAhPSBzdWdnZXN0aW9ucy5maW5kTWF0Y2hpbmcoW10oYXV0
byYgc3VnZ2VzdGlvbikgeworICAgICAgICByZXR1cm4gIXN1Z2dlc3Rpb24ubGFiZWwuaXNFbXB0
eSgpOworICAgIH0pOworfQorCiBAaW1wbGVtZW50YXRpb24gV0tEYXRhTGlzdFN1Z2dlc3Rpb25z
Q29udHJvbGxlciB7CiAgICAgV2Vha1B0cjxXZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNE
cm9wZG93bk1hYz4gX2Ryb3Bkb3duOwotICAgIFZlY3RvcjxTdHJpbmc+IF9zdWdnZXN0aW9uczsK
KyAgICBWZWN0b3I8V2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uPiBfc3VnZ2VzdGlvbnM7CiAg
ICAgTlNWaWV3ICpfcHJlc2VudGluZ1ZpZXc7CiAKICAgICBSZXRhaW5QdHI8TlNTY3JvbGxWaWV3
PiBfc2Nyb2xsVmlldzsKICAgICBSZXRhaW5QdHI8V0tEYXRhTGlzdFN1Z2dlc3Rpb25XaW5kb3c+
IF9lbmNsb3NpbmdXaW5kb3c7CiAgICAgUmV0YWluUHRyPFdLRGF0YUxpc3RTdWdnZXN0aW9uVGFi
bGVWaWV3PiBfdGFibGU7CisgICAgQk9PTCBfc2hvd0RpdmlkZXJzQmV0d2VlbkNlbGxzOwogfQog
CiAtIChpZClpbml0V2l0aEluZm9ybWF0aW9uOihXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25J
bmZvcm1hdGlvbiYmKWluZm9ybWF0aW9uIGluVmlldzooTlNWaWV3ICopcHJlc2VudGluZ1ZpZXcK
QEAgLTI2OCw2ICszMjcsNyBAQCAtIChpZClpbml0V2l0aEluZm9ybWF0aW9uOihXZWJDb3JlOjpE
YXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbiYmKWluZm9ybWF0aW9uCiAKICAgICBfcHJlc2Vu
dGluZ1ZpZXcgPSBwcmVzZW50aW5nVmlldzsKICAgICBfc3VnZ2VzdGlvbnMgPSBXVEZNb3ZlKGlu
Zm9ybWF0aW9uLnN1Z2dlc3Rpb25zKTsKKyAgICBfc2hvd0RpdmlkZXJzQmV0d2VlbkNlbGxzID0g
c2hvdWxkU2hvd0RpdmlkZXJzQmV0d2VlbkNlbGxzKF9zdWdnZXN0aW9ucyk7CiAgICAgX3RhYmxl
ID0gYWRvcHROUyhbW1dLRGF0YUxpc3RTdWdnZXN0aW9uVGFibGVWaWV3IGFsbG9jXSBpbml0V2l0
aEVsZW1lbnRSZWN0OmluZm9ybWF0aW9uLmVsZW1lbnRSZWN0XSk7CiAKICAgICBfZW5jbG9zaW5n
V2luZG93ID0gYWRvcHROUyhbW1dLRGF0YUxpc3RTdWdnZXN0aW9uV2luZG93IGFsbG9jXSBpbml0
V2l0aENvbnRlbnRSZWN0Ok5TWmVyb1JlY3Qgc3R5bGVNYXNrOihOU1dpbmRvd1N0eWxlTWFza1Rp
dGxlZCB8IE5TV2luZG93U3R5bGVNYXNrRnVsbFNpemVDb250ZW50VmlldykgYmFja2luZzpOU0Jh
Y2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7CkBAIC0zMDIsNyArMzYyLDcgQEAgLSAoU3Ry
aW5nKWN1cnJlbnRTZWxlY3RlZFN0cmluZwogICAgIE5TSW50ZWdlciBzZWxlY3RlZFJvdyA9IFtf
dGFibGUgc2VsZWN0ZWRSb3ddOwogCiAgICAgaWYgKHNlbGVjdGVkUm93ID49IDAgJiYgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihzZWxlY3RlZFJvdykgPCBfc3VnZ2VzdGlvbnMuc2l6ZSgpKQotICAgICAg
ICByZXR1cm4gX3N1Z2dlc3Rpb25zLmF0KHNlbGVjdGVkUm93KTsKKyAgICAgICAgcmV0dXJuIF9z
dWdnZXN0aW9ucy5hdChzZWxlY3RlZFJvdykudmFsdWU7CiAKICAgICByZXR1cm4gU3RyaW5nKCk7
CiB9CkBAIC0zMTAsNiArMzcwLDcgQEAgLSAoU3RyaW5nKWN1cnJlbnRTZWxlY3RlZFN0cmluZwog
LSAodm9pZCl1cGRhdGVXaXRoSW5mb3JtYXRpb246KFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlv
bkluZm9ybWF0aW9uJiYpaW5mb3JtYXRpb24KIHsKICAgICBfc3VnZ2VzdGlvbnMgPSBXVEZNb3Zl
KGluZm9ybWF0aW9uLnN1Z2dlc3Rpb25zKTsKKyAgICBfc2hvd0RpdmlkZXJzQmV0d2VlbkNlbGxz
ID0gc2hvdWxkU2hvd0RpdmlkZXJzQmV0d2VlbkNlbGxzKF9zdWdnZXN0aW9ucyk7CiAgICAgW190
YWJsZSByZWxvYWRdOwogCiAgICAgW19lbmNsb3NpbmdXaW5kb3cgc2V0RnJhbWU6W3NlbGYgZHJv
cGRvd25SZWN0Rm9yRWxlbWVudFJlY3Q6aW5mb3JtYXRpb24uZWxlbWVudFJlY3RdIGRpc3BsYXk6
WUVTXTsKQEAgLTMzOSw2ICs0MDAsNyBAQCAtICh2b2lkKW1vdmVTZWxlY3Rpb25CeURpcmVjdGlv
bjooY29uc3QgU3RyaW5nJilkaXJlY3Rpb24KICAgICAgICAgbmV3U2VsZWN0aW9uID0gKGRpcmVj
dGlvbiA9PSAiVXAiKSA/IChzaXplIC0gMSkgOiAwOwogCiAgICAgW190YWJsZSBzZWxlY3RSb3dJ
bmRleGVzOltOU0luZGV4U2V0IGluZGV4U2V0V2l0aEluZGV4Om5ld1NlbGVjdGlvbl0gYnlFeHRl
bmRpbmdTZWxlY3Rpb246Tk9dOworICAgIFtfdGFibGUgc2Nyb2xsUm93VG9WaXNpYmxlOm5ld1Nl
bGVjdGlvbl07CiAKICAgICAvLyBOb3RpZnkgYWNjZXNzaWJpbGl0eSBjbGllbnRzIG9mIG5ldyBz
ZWxlY3Rpb24uCiAgICAgTlNTdHJpbmcgKmN1cnJlbnRTZWxlY3RlZFN0cmluZyA9IFtzZWxmIGN1
cnJlbnRTZWxlY3RlZFN0cmluZ107CkBAIC0zNjksOCArNDMxLDE2IEBAIC0gKHZvaWQpaW52YWxp
ZGF0ZQogLSAoTlNSZWN0KWRyb3Bkb3duUmVjdEZvckVsZW1lbnRSZWN0Oihjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JilyZWN0CiB7CiAgICAgTlNSZWN0IHdpbmRvd1JlY3QgPSBbW19wcmVzZW50aW5n
VmlldyB3aW5kb3ddIGNvbnZlcnRSZWN0VG9TY3JlZW46W19wcmVzZW50aW5nVmlldyBjb252ZXJ0
UmVjdDpyZWN0IHRvVmlldzpuaWxdXTsKLSAgICBhdXRvIHZpc2libGVTdWdnZXN0aW9uQ291bnQg
PSBzdGQ6Om1pbihfc3VnZ2VzdGlvbnMuc2l6ZSgpLCBkcm9wZG93bk1heFN1Z2dlc3Rpb25zKTsK
LSAgICBDR0Zsb2F0IGhlaWdodCA9IHZpc2libGVTdWdnZXN0aW9uQ291bnQgKiAoZHJvcGRvd25S
b3dIZWlnaHQgKyBbX3RhYmxlIGludGVyY2VsbFNwYWNpbmddLmhlaWdodCkgKyAoZHJvcGRvd25W
ZXJ0aWNhbFBhZGRpbmcgKiAyKTsKKworICAgIENHRmxvYXQgdG90YWxDZWxsSGVpZ2h0ID0gMDsK
KyAgICBmb3IgKGF1dG8mIHN1Z2dlc3Rpb24gOiBfc3VnZ2VzdGlvbnMpCisgICAgICAgIHRvdGFs
Q2VsbEhlaWdodCArPSBzdWdnZXN0aW9uLmxhYmVsLmlzRW1wdHkoKSA/IGRyb3Bkb3duUm93SGVp
Z2h0V2l0aG91dExhYmVsIDogZHJvcGRvd25Sb3dIZWlnaHRXaXRoTGFiZWw7CisKKyAgICBDR0Zs
b2F0IHRvdGFsSW50ZXJjZWxsU3BhY2luZ0FuZFBhZGRpbmcgPSBkcm9wZG93blZlcnRpY2FsUGFk
ZGluZyAqIDI7CisgICAgaWYgKF9zdWdnZXN0aW9ucy5zaXplKCkgPiAxKQorICAgICAgICB0b3Rh
bEludGVyY2VsbFNwYWNpbmdBbmRQYWRkaW5nICs9IChfc3VnZ2VzdGlvbnMuc2l6ZSgpIC0gMSkg
KiBbX3RhYmxlIGludGVyY2VsbFNwYWNpbmddLmhlaWdodDsKKworICAgIENHRmxvYXQgaGVpZ2h0
ID0gdG90YWxJbnRlcmNlbGxTcGFjaW5nQW5kUGFkZGluZyArIHN0ZDo6bWluKHRvdGFsQ2VsbEhl
aWdodCwgbWF4aW11bVRvdGFsSGVpZ2h0Rm9yRHJvcGRvd25DZWxscyk7CiAgICAgcmV0dXJuIE5T
TWFrZVJlY3QoTlNNaW5YKHdpbmRvd1JlY3QpLCBOU01pblkod2luZG93UmVjdCkgLSBoZWlnaHQg
LSBkcm9wZG93blRvcE1hcmdpbiwgcmVjdC53aWR0aCgpLCBoZWlnaHQpOwogfQogCkBAIC00MDQs
NyArNDc0LDEzIEBAIC0gKE5TSW50ZWdlciludW1iZXJPZlJvd3NJblRhYmxlVmlldzooTlNUYWJs
ZVZpZXcgKil0YWJsZVZpZXcKIAogLSAoQ0dGbG9hdCl0YWJsZVZpZXc6KE5TVGFibGVWaWV3ICop
dGFibGVWaWV3IGhlaWdodE9mUm93OihOU0ludGVnZXIpcm93CiB7Ci0gICAgcmV0dXJuIGRyb3Bk
b3duUm93SGVpZ2h0OworICAgIGF1dG8gc3VnZ2VzdGlvbkluZGV4ID0gc3RhdGljX2Nhc3Q8c2l6
ZV90Pihyb3cpOworICAgIGlmIChzdWdnZXN0aW9uSW5kZXggPj0gX3N1Z2dlc3Rpb25zLnNpemUo
KSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorCisgICAgcmV0dXJuIF9zdWdnZXN0aW9ucy5hdChzdWdnZXN0aW9uSW5kZXgpLmxhYmVs
LmlzRW1wdHkoKSA/IGRyb3Bkb3duUm93SGVpZ2h0V2l0aG91dExhYmVsIDogZHJvcGRvd25Sb3dI
ZWlnaHRXaXRoTGFiZWw7CiB9CiAKIC0gKE5TVGFibGVSb3dWaWV3ICopdGFibGVWaWV3OihOU1Rh
YmxlVmlldyAqKXRhYmxlVmlldyByb3dWaWV3Rm9yUm93OihOU0ludGVnZXIpcm93CkBAIC00MTcs
MTEgKzQ5MywxMyBAQCAtIChOU1ZpZXcgKil0YWJsZVZpZXc6KE5TVGFibGVWaWV3ICopdGFibGVW
aWV3IHZpZXdGb3JUYWJsZUNvbHVtbjooTlNUYWJsZUNvbHVtbgogICAgIFdLRGF0YUxpc3RTdWdn
ZXN0aW9uVmlldyAqcmVzdWx0ID0gW3RhYmxlVmlldyBtYWtlVmlld1dpdGhJZGVudGlmaWVyOnN1
Z2dlc3Rpb25DZWxsUmV1c2VJZGVudGlmaWVyIG93bmVyOnNlbGZdOwogCiAgICAgaWYgKCFyZXN1
bHQpIHsKLSAgICAgICAgcmVzdWx0ID0gW1tbV0tEYXRhTGlzdFN1Z2dlc3Rpb25WaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgdGFibGVWaWV3LmZyYW1lLnNpemUud2lk
dGgsIGRyb3Bkb3duUm93SGVpZ2h0KV0gYXV0b3JlbGVhc2VdOworICAgICAgICByZXN1bHQgPSBb
W1tXS0RhdGFMaXN0U3VnZ2VzdGlvblZpZXcgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKICAg
ICAgICAgW3Jlc3VsdCBzZXRJZGVudGlmaWVyOnN1Z2dlc3Rpb25DZWxsUmV1c2VJZGVudGlmaWVy
XTsKICAgICB9CiAKLSAgICByZXN1bHQudGV4dCA9IF9zdWdnZXN0aW9ucy5hdChyb3cpOworICAg
IGF1dG8mIHN1Z2dlc3Rpb24gPSBfc3VnZ2VzdGlvbnMuYXQocm93KTsKKyAgICByZXN1bHQuc2hv
dWxkU2hvd0JvdHRvbURpdmlkZXIgPSBfc2hvd0RpdmlkZXJzQmV0d2VlbkNlbGxzICYmIHJvdyA8
IHN0YXRpY19jYXN0PE5TSW50ZWdlcj4oX3N1Z2dlc3Rpb25zLnNpemUoKSAtIDEpOworICAgIFty
ZXN1bHQgc2V0VmFsdWU6c3VnZ2VzdGlvbi52YWx1ZSBsYWJlbDpzdWdnZXN0aW9uLmxhYmVsXTsK
IAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IGE2N2Zi
MDM0OWZlYmViNDhmZTM1MmU1MTQzMzk0NjViZGU0ZTZkMGUuLjU0M2RlMjNkYTg5ZTFiNzRkYmE5
N2FhMWEzOTUzZjJjZjY5YTRkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC03OTYsNiAr
Nzk2LDE1IEBAIHN0ZDo6dW5pcXVlX3B0cjxEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI+IFdlYkNo
cm9tZUNsaWVudDo6Y3JlYXRlRGF0YUxpc3RTdWdnZXN0CiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyPihtX3BhZ2UsIGNsaWVudCk7CiB9CiAKK2Jvb2wg
V2ViQ2hyb21lQ2xpZW50OjpjYW5TaG93RGF0YUxpc3RTdWdnZXN0aW9uTGFiZWxzKCkgY29uc3QK
K3sKKyNpZiBQTEFURk9STShNQUMpCisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVy
biBmYWxzZTsKKyNlbmRpZgorfQorCiAjZW5kaWYKIAogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJ1
bk9wZW5QYW5lbChGcmFtZSYgZnJhbWUsIEZpbGVDaG9vc2VyJiBmaWxlQ2hvb3NlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaAppbmRleCA5MjBkZTkzYzlmMmYwMzdiNjE0Y2JhODgyYTEyZjAwMzI0NzhiMjJh
Li5hODU5MzFjNzEwNmZjYjQ2MDFjY2NkYzlkNTIzNjU0NjA4Yzg2Njg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oCkBAIC0xNDksNiArMTQ5LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShEQVRBTElT
VF9FTEVNRU5UKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rp
b25QaWNrZXI+IGNyZWF0ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcihXZWJDb3JlOjpEYXRhTGlz
dFN1Z2dlc3Rpb25zQ2xpZW50JikgZmluYWw7CisgICAgYm9vbCBjYW5TaG93RGF0YUxpc3RTdWdn
ZXN0aW9uTGFiZWxzKCkgY29uc3QgZmluYWw7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJT1NfVE9V
Q0hfRVZFTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA5ZjIzMzE3YjhmOTNiYjQ3MjMyYzY1Y2U2
MzkzMTc2MjNhOThjNzg5Li5hN2QwNjkwYmZhZGIzN2I1ZWI4MjU4ZWQxOTY0ZDNhMGM2Mzg3ZDI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMTQ0LDYgKzE0NCw3IEBAIHByaXZhdGU6CiAKICNpZiBF
TkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6RGF0
YUxpc3RTdWdnZXN0aW9uUGlja2VyPiBjcmVhdGVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoV2Vi
Q29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudCYpIGZpbmFsOworICAgIGJvb2wgY2FuU2hv
d0RhdGFMaXN0U3VnZ2VzdGlvbkxhYmVscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggM2FmYzA5YjBhOGVi
OGVlZWE3YTQzNzM1MjNjMzMxMTgxYjBjZWU5Yy4uMDliZTVmNGE4ZDIxMjAzMDZmNDUyN2YwODNk
ZGVkN2FiM2U5NTdhOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTAzLTMxICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIERhdGFsaXN0IG9wdGlv
bidzIGxhYmVsIG5vdCB1c2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDE3NjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1MzYxMTg2PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEFkZCBhIHRlc3QgdG8g
dmVyaWZ5IHRoYXQgd2hlbiBkYXRhbGlzdCBzdWdnZXN0aW9ucyBpbmNvcnBvcmF0ZSBvcHRpb24g
bGFiZWxzIGludG8gdGhlIGRpc3BsYXllZCB0ZXh0CisgICAgICAgIHN1Z2dlc3Rpb25zLCB0aGV5
IGFyZSBtYXRjaGVkIGFnYWluc3Qgd2hlbiBjaGFuZ2luZyB0aGUgdmFsdWUgb2YgdGhlIGlucHV0
IGZpZWxkLCBhbmQgY2FuIGJlIHNlbGVjdGVkLiBUaGlzIGlzCisgICAgICAgIGV4cGVjdGVkIHRv
IGJlIHRoZSBjYXNlIG9uIG1hY09TLCBidXQgbm90IG9uIG90aGVyIHBsYXRmb3JtcyAoZm9yIHRo
ZSB0aW1lIGJlaW5nKS4KKworICAgICAgICAqIGZhc3QvZm9ybXMvZGF0YWxpc3QvZGF0YWxpc3Qt
b3B0aW9uLWxhYmVscy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMv
ZGF0YWxpc3QvZGF0YWxpc3Qtb3B0aW9uLWxhYmVscy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ndGsvZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC1vcHRpb24tbGFiZWxzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zL2Zhc3QvZm9ybXMvZGF0
YWxpc3QvZGF0YWxpc3Qtb3B0aW9uLWxhYmVscy1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDIw
LTAzLTMwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IHNjcm9sbEludG9WaWV3KCkgZXJyb25lb3VzbHkgc2Nyb2xscyBub24tY29udGFpbmluZyBibG9j
ayBzY3JvbGxlcnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0YWxpc3Qv
ZGF0YWxpc3Qtb3B0aW9uLWxhYmVscy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2RhdGFsaXN0L2RhdGFsaXN0LW9wdGlvbi1sYWJlbHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmZmY2NkYWVkNGNhZWQwMTEyZjM1MDkxZmU3NTBkNTcxYjU0OTYyNWUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0LW9wdGlvbi1s
YWJlbHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0
aGF0IHdoZW4gb3B0aW9uIGVsZW1lbnQgbGFiZWxzIGFyZSBpbmNsdWRlZCBpbiBkYXRhbGlzdCBz
dWdnZXN0aW9ucywgdGhlIHRleHQgb2YgdGhlIGxhYmVsIGlzIGNvbnNpZGVyZWQgd2hlbiBjb21w
dXRpbmcgbWF0Y2hpbmcgZGF0YWxpc3Qgc3VnZ2VzdGlvbnMuIE90aGVyd2lzZSwgaWYgbGFiZWxz
IGFyZSBub3QgaW5jbHVkZWQgaW4gc3VnZ2VzdGlvbnMsIHRoZXJlIHNob3VsZCBiZSBubyBkYXRh
bGlzdCBzdWdnZXN0aW9ucyBzaG93bi4gVG8gbWFudWFsbHkgcnVuIHRoZSB0ZXN0LCBmb2N1cyB0
aGUgaW5wdXQgZWxlbWVudCBhbmQgdHlwZSAnZScuIFRoZXJlIHNob3VsZCBlaXRoZXIgYmUgbm8g
bWF0Y2hlcyBvciB0d28gbWF0Y2hlcyAoYW5kIHNlbGVjdGluZyB0aGUgc2Vjb25kIG1hdGNoIHNo
b3VsZCBzZXQgdGhlIHZhbHVlIHRvICdiYXonKS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1MgaW5wdXQudmFsdWUgYmVjYW1lICdlJworUEFTUyBpbnB1dC52YWx1ZSBpcyAi
YmF6IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0YWxpc3QvZGF0YWxpc3Qtb3B0
aW9uLWxhYmVscy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlz
dC1vcHRpb24tbGFiZWxzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWZhZTE4MzY5ODZmNzRjYjUwNGVkNzRj
MTIxNzUxYWVlNzQ4NGQzZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvZGF0YWxpc3QvZGF0YWxpc3Qtb3B0aW9uLWxhYmVscy5odG1sCkBAIC0wLDAgKzEsMzkgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAg
ICAgPHNjcmlwdD4KKyAgICAgICAgICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAg
ICAgICBhZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgYXN5bmMgKCkgPT4geworICAgICAgICAgICAg
ICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3aGVuIG9wdGlvbiBlbGVt
ZW50IGxhYmVscyBhcmUgaW5jbHVkZWQgaW4gZGF0YWxpc3Qgc3VnZ2VzdGlvbnMsIHRoZSB0ZXh0
IG9mIHRoZSBsYWJlbCBpcyBjb25zaWRlcmVkIHdoZW4gY29tcHV0aW5nIG1hdGNoaW5nIGRhdGFs
aXN0IHN1Z2dlc3Rpb25zLiBPdGhlcndpc2UsIGlmIGxhYmVscyBhcmUgbm90IGluY2x1ZGVkIGlu
IHN1Z2dlc3Rpb25zLCB0aGVyZSBzaG91bGQgYmUgbm8gZGF0YWxpc3Qgc3VnZ2VzdGlvbnMgc2hv
d24uIFRvIG1hbnVhbGx5IHJ1biB0aGUgdGVzdCwgZm9jdXMgdGhlIGlucHV0IGVsZW1lbnQgYW5k
IHR5cGUgJ2UnLiBUaGVyZSBzaG91bGQgZWl0aGVyIGJlIG5vIG1hdGNoZXMgb3IgdHdvIG1hdGNo
ZXMgKGFuZCBzZWxlY3RpbmcgdGhlIHNlY29uZCBtYXRjaCBzaG91bGQgc2V0IHRoZSB2YWx1ZSB0
byAnYmF6JykuIik7CisgICAgICAgICAgICAgICAgaW5wdXQgPSBkb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCJpbnB1dCIpOworCisgICAgICAgICAgICAgICAgYXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVF
bGVtZW50QW5kV2FpdEZvcklucHV0U2Vzc2lvbihpbnB1dCk7CisgICAgICAgICAgICAgICAgYXdh
aXQgVUlIZWxwZXIudHlwZUNoYXJhY3RlcigiZSIpOworICAgICAgICAgICAgICAgIGF3YWl0IG5l
dyBQcm9taXNlKHJlc29sdmUgPT4gc2hvdWxkQmVjb21lRXF1YWwoImlucHV0LnZhbHVlIiwgIidl
JyIsIHJlc29sdmUpKTsKKyAgICAgICAgICAgICAgICBpZiAoYXdhaXQgVUlIZWxwZXIuaXNTaG93
aW5nRGF0YUxpc3RTdWdnZXN0aW9ucygpKSB7CisgICAgICAgICAgICAgICAgICAgIGF3YWl0IFVJ
SGVscGVyLmFjdGl2YXRlRGF0YUxpc3RTdWdnZXN0aW9uKDEpOworICAgICAgICAgICAgICAgICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImlucHV0LnZhbHVlIiwgImJheiIpOworICAgICAgICAg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJOb3Qgc2hvd2lu
ZyBzdWdnZXN0aW9ucy4iKTsKKworICAgICAgICAgICAgICAgIGlucHV0LmJsdXIoKTsKKyAgICAg
ICAgICAgICAgICBhd2FpdCBVSUhlbHBlci53YWl0Rm9yS2V5Ym9hcmRUb0hpZGUoKTsKKyAgICAg
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICA8L3Nj
cmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxpbnB1dCBsaXN0PSJsaXN0
IiBhdXRvY2FwaXRhbGl6ZT0ibm9uZSI+CisgICAgICAgIDxkYXRhbGlzdCBpZD0ibGlzdCI+Cisg
ICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJmb28iIGxhYmVsPSJvbmUiPjwvb3B0aW9uPgorICAg
ICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iYmFyIj50d288L29wdGlvbj4KKyAgICAgICAgICAgIDxv
cHRpb24gdmFsdWU9ImJheiIgbGFiZWw9InRocmVlIj5mb3VyPC9vcHRpb24+CisgICAgICAgICAg
ICA8b3B0aW9uIHZhbHVlPSJnYXJwbHkiPjwvb3B0aW9uPgorICAgICAgICAgICAgPG9wdGlvbiB2
YWx1ZT0icXV4IiBsYWJlbD0icXV4Ij5xdXg8L29wdGlvbj4KKyAgICAgICAgICAgIDxvcHRpb24g
bGFiZWw9ImZpdmUiPjwvb3B0aW9uPgorICAgICAgICA8L2RhdGFsaXN0PgorICAgIDwvYm9keT4K
KzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC1vcHRpb24tbGFi
ZWxzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2Zvcm1zL2Rh
dGFsaXN0L2RhdGFsaXN0LW9wdGlvbi1sYWJlbHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
YTUzZTkzZGY2MmM4YWZlNDM0Nzc1ZTNmY2NmYTVmYThiNGZiOGUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC1v
cHRpb24tbGFiZWxzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitUaGlzIHRlc3QgdmVy
aWZpZXMgdGhhdCB3aGVuIG9wdGlvbiBlbGVtZW50IGxhYmVscyBhcmUgaW5jbHVkZWQgaW4gZGF0
YWxpc3Qgc3VnZ2VzdGlvbnMsIHRoZSB0ZXh0IG9mIHRoZSBsYWJlbCBpcyBjb25zaWRlcmVkIHdo
ZW4gY29tcHV0aW5nIG1hdGNoaW5nIGRhdGFsaXN0IHN1Z2dlc3Rpb25zLiBPdGhlcndpc2UsIGlm
IGxhYmVscyBhcmUgbm90IGluY2x1ZGVkIGluIHN1Z2dlc3Rpb25zLCB0aGVyZSBzaG91bGQgYmUg
bm8gZGF0YWxpc3Qgc3VnZ2VzdGlvbnMgc2hvd24uIFRvIG1hbnVhbGx5IHJ1biB0aGUgdGVzdCwg
Zm9jdXMgdGhlIGlucHV0IGVsZW1lbnQgYW5kIHR5cGUgJ2UnLiBUaGVyZSBzaG91bGQgZWl0aGVy
IGJlIG5vIG1hdGNoZXMgb3IgdHdvIG1hdGNoZXMgKGFuZCBzZWxlY3RpbmcgdGhlIHNlY29uZCBt
YXRjaCBzaG91bGQgc2V0IHRoZSB2YWx1ZSB0byAnYmF6JykuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIGlucHV0LnZhbHVlIGJlY2FtZSAnZScKK1BBU1MgTm90IHNob3dp
bmcgc3VnZ2VzdGlvbnMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL2Zhc3QvZm9y
bXMvZGF0YWxpc3QvZGF0YWxpc3Qtb3B0aW9uLWxhYmVscy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9pb3MvZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC1vcHRpb24tbGFi
ZWxzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZWE1M2U5M2RmNjJjOGFmZTQzNDc3NWUzZmNj
ZmE1ZmE4YjRmYjhlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9z
L2Zhc3QvZm9ybXMvZGF0YWxpc3QvZGF0YWxpc3Qtb3B0aW9uLWxhYmVscy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxMSBAQAorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgd2hlbiBvcHRpb24gZWxl
bWVudCBsYWJlbHMgYXJlIGluY2x1ZGVkIGluIGRhdGFsaXN0IHN1Z2dlc3Rpb25zLCB0aGUgdGV4
dCBvZiB0aGUgbGFiZWwgaXMgY29uc2lkZXJlZCB3aGVuIGNvbXB1dGluZyBtYXRjaGluZyBkYXRh
bGlzdCBzdWdnZXN0aW9ucy4gT3RoZXJ3aXNlLCBpZiBsYWJlbHMgYXJlIG5vdCBpbmNsdWRlZCBp
biBzdWdnZXN0aW9ucywgdGhlcmUgc2hvdWxkIGJlIG5vIGRhdGFsaXN0IHN1Z2dlc3Rpb25zIHNo
b3duLiBUbyBtYW51YWxseSBydW4gdGhlIHRlc3QsIGZvY3VzIHRoZSBpbnB1dCBlbGVtZW50IGFu
ZCB0eXBlICdlJy4gVGhlcmUgc2hvdWxkIGVpdGhlciBiZSBubyBtYXRjaGVzIG9yIHR3byBtYXRj
aGVzIChhbmQgc2VsZWN0aW5nIHRoZSBzZWNvbmQgbWF0Y2ggc2hvdWxkIHNldCB0aGUgdmFsdWUg
dG8gJ2JheicpLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBpbnB1dC52
YWx1ZSBiZWNhbWUgJ2UnCitQQVNTIE5vdCBzaG93aW5nIHN1Z2dlc3Rpb25zLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
</data>

          </attachment>
      

    </bug>

</bugzilla>