<?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>214224</bug_id>
          
          <creation_ts>2020-07-11 12:13:13 -0700</creation_ts>
          <short_desc>Make hasher work with tuple-like classes</short_desc>
          <delta_ts>2020-07-12 15:09:31 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>214228</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1670767</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-11 12:13:13 -0700</bug_when>
    <thetext>Make hasher work with tuple-like classes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670770</commentid>
    <comment_count>1</comment_count>
      <attachid>404063</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-11 12:32:10 -0700</bug_when>
    <thetext>Created attachment 404063
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670772</commentid>
    <comment_count>2</comment_count>
      <attachid>404065</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-11 12:35:38 -0700</bug_when>
    <thetext>Created attachment 404065
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670778</commentid>
    <comment_count>3</comment_count>
      <attachid>404065</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-11 13:44:08 -0700</bug_when>
    <thetext>Comment on attachment 404065
Patch

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

Thanks for finishing the job. You can tell from all the FIXME that I tried this and couldn’t figure it out.

Where’s the part of this patch where you use this in Color?

&gt; Source/WTF/ChangeLog:25
&gt; +        adhear to WebKit style as IsTypeComplete&lt;&gt;.

adhere

&gt; Source/WTF/wtf/StdLibExtras.h:424
&gt; +// Based on &apos;Detecting in C++ whether a type is defined, part 3: SFINAE and incomplete types&apos;
&gt; +// &lt;https://devblogs.microsoft.com/oldnewthing/20190710-00/?p=102678&gt;
&gt; +template&lt;typename, typename = void&gt; constexpr bool IsTypeComplete = false;
&gt; +template&lt;typename T&gt; constexpr bool IsTypeComplete&lt;T, std::void_t&lt;decltype(sizeof(T))&gt;&gt; = true;

Why rename IsTypeComplete? If we’re just previewing C++20, could we use the real name and inject in the std namespace? Or maybe this is the way to go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670787</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-11 15:08:16 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; Comment on attachment 404065 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=404065&amp;action=review
&gt; 
&gt; Thanks for finishing the job. You can tell from all the FIXME that I tried
&gt; this and couldn’t figure it out.
&gt; 
&gt; Where’s the part of this patch where you use this in Color?

Since I have not landed that one yet (still needs a final r+), I figured I land this first, and land the fix for WTF first.

&gt; 
&gt; &gt; Source/WTF/ChangeLog:25
&gt; &gt; +        adhear to WebKit style as IsTypeComplete&lt;&gt;.
&gt; 
&gt; adhere
&gt; 
&gt; &gt; Source/WTF/wtf/StdLibExtras.h:424
&gt; &gt; +// Based on &apos;Detecting in C++ whether a type is defined, part 3: SFINAE and incomplete types&apos;
&gt; &gt; +// &lt;https://devblogs.microsoft.com/oldnewthing/20190710-00/?p=102678&gt;
&gt; &gt; +template&lt;typename, typename = void&gt; constexpr bool IsTypeComplete = false;
&gt; &gt; +template&lt;typename T&gt; constexpr bool IsTypeComplete&lt;T, std::void_t&lt;decltype(sizeof(T))&gt;&gt; = true;
&gt; 
&gt; Why rename IsTypeComplete? If we’re just previewing C++20, could we use the
&gt; real name and inject in the std namespace? Or maybe this is the way to go.

I don&apos;t think it&apos;s a c++20 thing, just a useful trait that Raymond Chen blogged about.

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670788</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-11 15:12:46 -0700</bug_when>
    <thetext>Committed r264270: &lt;https://trac.webkit.org/changeset/264270&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670789</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-11 15:13:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/65410178&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670825</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-11 21:37:51 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 214228</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670828</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-07-11 21:38:56 -0700</bug_when>
    <thetext>Reverting due to broken build, failure details in Slack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670839</commentid>
    <comment_count>9</comment_count>
      <attachid>404090</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-12 01:32:40 -0700</bug_when>
    <thetext>Created attachment 404090
Patch + `constexpr` =&gt; `inline constexpr` template variable fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670841</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-12 02:19:38 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #9)
&gt; Created attachment 404090 [details]
&gt; Patch + `constexpr` =&gt; `inline constexpr` template variable fix

Internal one is built with this fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670843</commentid>
    <comment_count>11</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-12 02:47:12 -0700</bug_when>
    <thetext>Committed r264277: &lt;https://trac.webkit.org/changeset/264277&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670847</commentid>
    <comment_count>12</comment_count>
      <attachid>404065</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-12 03:39:34 -0700</bug_when>
    <thetext>Comment on attachment 404065
Patch

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

I&apos;ve relanded the patch with `inline constexpr` fix, and note the rationale why this is necessary here :)

&gt; Source/WTF/wtf/Hasher.h:110
&gt; +template&lt;typename, typename = void&gt; constexpr bool HasBeginFunctionMember = false;
&gt; +template&lt;typename T&gt; constexpr bool HasBeginFunctionMember&lt;T, std::void_t&lt;decltype(std::declval&lt;T&gt;().begin())&gt;&gt; = true;

We need `inline constexpr` to make this template-variable inline-variable (C++ is super complicated!)
https://stackoverflow.com/questions/14391272/does-constexpr-imply-inline

&gt; Source/WTF/wtf/Hasher.h:129
&gt; +template&lt;typename T&gt; constexpr bool HasGetFunctionMember&lt;T, std::void_t&lt;decltype(std::declval&lt;T&gt;().template get&lt;0&gt;())&gt;&gt; = true;

Ditto. Work-around with `inline constexpr`.

&gt;&gt; Source/WTF/wtf/StdLibExtras.h:424
&gt;&gt; +template&lt;typename T&gt; constexpr bool IsTypeComplete&lt;T, std::void_t&lt;decltype(sizeof(T))&gt;&gt; = true;
&gt; 
&gt; Why rename IsTypeComplete? If we’re just previewing C++20, could we use the real name and inject in the std namespace? Or maybe this is the way to go.

Ditto :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670863</commentid>
    <comment_count>13</comment_count>
      <attachid>404065</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-12 08:32:06 -0700</bug_when>
    <thetext>Comment on attachment 404065
Patch

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

&gt;&gt; Source/WTF/wtf/Hasher.h:110
&gt;&gt; +template&lt;typename T&gt; constexpr bool HasBeginFunctionMember&lt;T, std::void_t&lt;decltype(std::declval&lt;T&gt;().begin())&gt;&gt; = true;
&gt; 
&gt; We need `inline constexpr` to make this template-variable inline-variable (C++ is super complicated!)
&gt; https://stackoverflow.com/questions/14391272/does-constexpr-imply-inline

This is the first time I have ever heard of an inline variable!

&gt;&gt;&gt; Source/WTF/wtf/StdLibExtras.h:424
&gt;&gt;&gt; +template&lt;typename T&gt; constexpr bool IsTypeComplete&lt;T, std::void_t&lt;decltype(sizeof(T))&gt;&gt; = true;
&gt;&gt; 
&gt;&gt; Why rename IsTypeComplete? If we’re just previewing C++20, could we use the real name and inject in the std namespace? Or maybe this is the way to go.
&gt; 
&gt; Ditto :)

Sam clarified that is_type_complete is not in C++20.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670928</commentid>
    <comment_count>14</comment_count>
      <attachid>404065</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-12 15:09:31 -0700</bug_when>
    <thetext>Comment on attachment 404065
Patch

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

&gt;&gt;&gt; Source/WTF/wtf/Hasher.h:110
&gt;&gt;&gt; +template&lt;typename T&gt; constexpr bool HasBeginFunctionMember&lt;T, std::void_t&lt;decltype(std::declval&lt;T&gt;().begin())&gt;&gt; = true;
&gt;&gt; 
&gt;&gt; We need `inline constexpr` to make this template-variable inline-variable (C++ is super complicated!)
&gt;&gt; https://stackoverflow.com/questions/14391272/does-constexpr-imply-inline
&gt; 
&gt; This is the first time I have ever heard of an inline variable!

inline variable is one of the best feature in C++17! Sometimes we, C++ developers, saw super weird linker errors about `static XXX::value` variables defined in the header because,

1. One translation unit is accessing it via reference.
2. One translation unit is building it as a constant value and do not generate a data for that.

Then linker causes link failures because (1) cannot find the referenced data. Inline variable solves this problem by ensuring that this variable is not referenced like (1).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404063</attachid>
            <date>2020-07-11 12:32:10 -0700</date>
            <delta_ts>2020-07-11 12:35:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214224-20200711123209.patch</filename>
            <type>text/plain</type>
            <size>11723</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjQyNjkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDIwLTA3LTExICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIGhhc2hlciB3b3JrIHdpdGggdHVwbGUtbGlrZSBj
bGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTQyMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHd0Zi9IYXNoZXIuaDoKKyAgICAgICAgKFdURjo6YWRkKToKKyAgICAgICAgKFdURjo6YWRkVHVw
bGVMaWtlSGVscGVyKToKKyAgICAgICAgKFdURjo6VHlwZUNoZWNrSGVscGVyPGRlY2x0eXBlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdURjo6YWRkVHVwbGVIZWxwZXIpOiBEZWxldGVkLgorICAgICAg
ICBBZGQgc3VwcG9ydCBmb3IgdHVwbGUtbGlrZSBjbGFzc2VzLiBUaGVzZSBhcmUgY2xhc3NlcyB0
aGF0OgorICAgICAgICAtIEhhdmUgZGVmaW5lZCBzcGVjaWFsaXphdGlvbnMgb2Ygc3RkOjp0dXBs
ZV9zaXplPD4gYW5kIHN0ZDo6dHVwbGVfZWxlbWVudDw+LgorICAgICAgICAtIEFuZCBoYXZlIGVp
dGhlciBhIG1lbWJlciBmdW5jdGlvbiBuYW1lZCBnZXQ8PiBvciB0aGVyZSBleGlzdHMgYSBmdW5j
dGlvbiBnZXQ8PigpCisgICAgICAgICAgdGhhdCB0YWtlcyB0aGUgY2xhc3MgYXMgYXJndW1lbnQg
dGhhdCBjYW4gYmUgbG9va2VkIHVwIHZpYSBBREwuCisKKyAgICAgICAgVG8gYXZvaWQgYWJpZ3Vp
dHkgd2hlbiBoYXNoaW5nIHN0ZDo6YXJyYXksIHRoZSBhZGQoKSBvdmVybG9hZCBlbmFibGVkIGZv
ciBjb250YWluZXJzCisgICAgICAgIHdpdGggYSBiZWdpbiBtZW1iZXIgZnVuY3Rpb25zIGFsc28g
bm93IGNoZWNrcyB0aGF0IHRoZSBjb250YWluZXIgaXMgbm90IHR1cGxlLWxpa2UuCisgICAgICAg
IFRoZSBzdGQ6OnBhaXIgb3ZlcmxvYWQgaXMgbm8gbG9uZ2VyIG5lZWRlZCBhcyBpdCB3aWxsIHVz
ZSB0aGUgdHVwbGUtbGlrZSBvbmUgbm93LgorCisgICAgICAgICogd3RmL09wdGlvblNldC5oOgor
ICAgICAgICAqIHd0Zi9TdGRMaWJFeHRyYXMuaDoKKyAgICAgICAgTW92ZSBpc190eXBlX2NvbXBs
ZXRlX3Y8PiBmcm9tIE9wdGlvblNldC5oIHRvIFN0ZExpYkV4dHJhcy5oIGFuZCByZW5hbWUgdG8K
KyAgICAgICAgYWRoZWFyIHRvIFdlYktpdCBzdHlsZSBhcyBJc1R5cGVDb21wbGV0ZTw+LgorCiAy
MDIwLTA3LTEwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBH
YW1lQ29udHJvbGxlci5mcmFtZXdvcmsgZ2FtZXBhZHMgc2hvdWxkIHN1cHBvcnQgSG9tZSBidXR0
b25zLgpJbmRleDogU291cmNlL1dURi93dGYvSGFzaGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvSGFzaGVyLmgJKHJldmlzaW9uIDI2NDIzMCkKKysrIFNvdXJjZS9XVEYvd3RmL0hh
c2hlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsMTEgKzEwNiwxMCBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBFbnVtZXJhdGlvbj4gc3RkOjplbmFiCiAgICAgYWRkKGhhc2hlciwgc3RhdGljX2Nhc3Q8
c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFbnVtZXJhdGlvbj4+KHZhbHVlKSk7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lPiBzdHJ1Y3QgVHlwZUNoZWNrSGVscGVyIHsgfTsKLXRlbXBsYXRlPHR5cGVu
YW1lLCB0eXBlbmFtZSA9IHZvaWQ+IHN0cnVjdCBIYXNCZWdpbkZ1bmN0aW9uTWVtYmVyIDogc3Rk
OjpmYWxzZV90eXBlIHsgfTsKLXRlbXBsYXRlPHR5cGVuYW1lIENvbnRhaW5lcj4gc3RydWN0IEhh
c0JlZ2luRnVuY3Rpb25NZW1iZXI8Q29udGFpbmVyLCBzdGQ6OmNvbmRpdGlvbmFsX3Q8ZmFsc2Us
IFR5cGVDaGVja0hlbHBlcjxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8Q29udGFpbmVyPigpLmJlZ2lu
KCkpPiwgdm9pZD4+IDogc3RkOjp0cnVlX3R5cGUgeyB9OwordGVtcGxhdGU8dHlwZW5hbWUsIHR5
cGVuYW1lID0gdm9pZD4gY29uc3RleHByIGJvb2wgSGFzQmVnaW5GdW5jdGlvbk1lbWJlciA9IGZh
bHNlOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGJvb2wgSGFzQmVnaW5GdW5jdGlv
bk1lbWJlcjxULCBzdGQ6OnZvaWRfdDxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VD4oKS5iZWdpbigp
KT4+ID0gdHJ1ZTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgQ29udGFpbmVyPiBzdGQ6OmVuYWJsZV9p
Zl90PEhhc0JlZ2luRnVuY3Rpb25NZW1iZXI8Q29udGFpbmVyPjo6dmFsdWUsIHZvaWQ+IGFkZChI
YXNoZXImIGhhc2hlciwgY29uc3QgQ29udGFpbmVyJiBjb250YWluZXIpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBDb250YWluZXI+IHN0ZDo6ZW5hYmxlX2lmX3Q8SGFzQmVnaW5GdW5jdGlvbk1lbWJlcjxD
b250YWluZXI+ICYmICFJc1R5cGVDb21wbGV0ZTxzdGQ6OnR1cGxlX3NpemU8Q29udGFpbmVyPj4s
IHZvaWQ+IGFkZChIYXNoZXImIGhhc2hlciwgY29uc3QgQ29udGFpbmVyJiBjb250YWluZXIpCiB7
CiAgICAgZm9yIChjb25zdCBhdXRvJiB2YWx1ZSA6IGNvbnRhaW5lcikKICAgICAgICAgYWRkKGhh
c2hlciwgdmFsdWUpOwpAQCAtMTI2LDIwICsxMjUsMjIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQXJn
LCB0eXBlbmFtZSAuLi5BcmdzPgogICAgIGFkZEFyZ3MoaGFzaGVyLCBhcmdzLi4uKTsKIH0KIAot
dGVtcGxhdGU8dHlwZW5hbWUgVHVwbGUsIHN0ZDo6c2l6ZV90IC4uLmk+IHZvaWQgYWRkVHVwbGVI
ZWxwZXIoSGFzaGVyJiBoYXNoZXIsIGNvbnN0IFR1cGxlJiB2YWx1ZXMsIHN0ZDo6aW5kZXhfc2Vx
dWVuY2U8aS4uLj4pCi17Ci0gICAgYWRkQXJncyhoYXNoZXIsIHN0ZDo6Z2V0PGk+KHZhbHVlcyku
Li4pOwotfQordGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lID0gdm9pZD4gY29uc3RleHByIGJv
b2wgSGFzR2V0RnVuY3Rpb25NZW1iZXIgPSBmYWxzZTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNv
bnN0ZXhwciBib29sIEhhc0dldEZ1bmN0aW9uTWVtYmVyPFQsIHN0ZDo6dm9pZF90PGRlY2x0eXBl
KHN0ZDo6ZGVjbHZhbDxUPigpLnRlbXBsYXRlIGdldDwwPigpKT4+ID0gdHJ1ZTsKIAotdGVtcGxh
dGU8dHlwZW5hbWUuLi4gVHlwZXM+IHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBzdGQ6
OnR1cGxlPFR5cGVzLi4uPiYgdHVwbGUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUdXBsZUxpa2UsIHN0
ZDo6c2l6ZV90IC4uLkk+IHZvaWQgYWRkVHVwbGVMaWtlSGVscGVyKEhhc2hlciYgaGFzaGVyLCBj
b25zdCBUdXBsZUxpa2UmIHR1cGxlTGlrZSwgc3RkOjppbmRleF9zZXF1ZW5jZTxJLi4uPikKIHsK
LSAgICBhZGRUdXBsZUhlbHBlcihoYXNoZXIsIHR1cGxlLCBzdGQ6Om1ha2VfaW5kZXhfc2VxdWVu
Y2U8c3RkOjp0dXBsZV9zaXplPHN0ZDo6dHVwbGU8VHlwZXMuLi4+Pjo6dmFsdWU+IHsgfSk7Cisg
ICAgaWYgY29uc3RleHByIChIYXNHZXRGdW5jdGlvbk1lbWJlcjxUdXBsZUxpa2U+KQorICAgICAg
ICBhZGRBcmdzKGhhc2hlciwgdHVwbGVMaWtlLnRlbXBsYXRlIGdldDxJPigpLi4uKTsKKyAgICBl
bHNlIHsKKyAgICAgICAgdXNpbmcgc3RkOjpnZXQ7CisgICAgICAgIGFkZEFyZ3MoaGFzaGVyLCBn
ZXQ8ST4odHVwbGVMaWtlKS4uLik7CisgICAgfQogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUMSwg
dHlwZW5hbWUgVDI+IHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBzdGQ6OnBhaXI8VDEs
IFQyPiYgcGFpcikKK3RlbXBsYXRlPHR5cGVuYW1lIFR1cGxlTGlrZT4gc3RkOjplbmFibGVfaWZf
dDxJc1R5cGVDb21wbGV0ZTxzdGQ6OnR1cGxlX3NpemU8VHVwbGVMaWtlPj4sIHZvaWQ+IGFkZChI
YXNoZXImIGhhc2hlciwgY29uc3QgVHVwbGVMaWtlJiB0dXBsZSkKIHsKLSAgICBhZGQoaGFzaGVy
LCBwYWlyLmZpcnN0KTsKLSAgICBhZGQoaGFzaGVyLCBwYWlyLnNlY29uZCk7CisgICAgYWRkVHVw
bGVMaWtlSGVscGVyKGhhc2hlciwgdHVwbGUsIHN0ZDo6bWFrZV9pbmRleF9zZXF1ZW5jZTxzdGQ6
OnR1cGxlX3NpemU8VHVwbGVMaWtlPjo6dmFsdWU+IHsgfSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBPcHRpb25hbDxUPiYgb3B0aW9u
YWwpCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9PcHRpb25TZXQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9PcHRpb25TZXQuaAkocmV2aXNpb24gMjY0MjMwKQorKysgU291cmNlL1dURi93
dGYvT3B0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDE4ICszMiwxMCBAQAogI2luY2x1
ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5h
bWVzcGFjZSBXVEYgewogCi0vLyBEZXRlY3RpbmcgaW4gQysrIHdoZXRoZXIgYSB0eXBlIGlzIGRl
ZmluZWQsIHBhcnQgMzogU0ZJTkFFIGFuZCBpbmNvbXBsZXRlIHR5cGVzCi0vLyA8aHR0cHM6Ly9k
ZXZibG9ncy5taWNyb3NvZnQuY29tL29sZG5ld3RoaW5nLzIwMTkwNzEwLTAwLz9wPTEwMjY3OD4K
LXRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZSA9IHZvaWQ+Ci1jb25zdGV4cHIgYm9vbCBpc190
eXBlX2NvbXBsZXRlX3YgPSBmYWxzZTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNvbnN0ZXhw
ciBib29sIGlzX3R5cGVfY29tcGxldGVfdjxULCBzdGQ6OnZvaWRfdDxkZWNsdHlwZShzaXplb2Yo
VCkpPj4gPSB0cnVlOwotCi0KIHRlbXBsYXRlPHR5cGVuYW1lIEU+IGNsYXNzIE9wdGlvblNldDsK
IAogCkBAIC03NiwxMyArNjgsMTMgQEAgc3RydWN0IE9wdGlvblNldFZhbHVlQ2hlY2tlcjxULCBF
bnVtVmFsdQogfTsKIAogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFLCBzdGQ6OmVuYWJsZV9pZl90PHN0
ZDo6aXNfZW51bTxFPjo6dmFsdWUgJiYgaXNfdHlwZV9jb21wbGV0ZV92PEVudW1UcmFpdHM8RT4+
PiogPSBudWxscHRyPgordGVtcGxhdGU8dHlwZW5hbWUgRSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6
OmlzX2VudW08RT46OnZhbHVlICYmIElzVHlwZUNvbXBsZXRlPEVudW1UcmFpdHM8RT4+PiogPSBu
dWxscHRyPgogY29uc3RleHByIGJvb2wgaXNWYWxpZE9wdGlvblNldEVudW0oRSBlKQogewogICAg
IHJldHVybiBPcHRpb25TZXRWYWx1ZUNoZWNrZXI8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPiwg
dHlwZW5hbWUgRW51bVRyYWl0czxFPjo6dmFsdWVzPjo6aXNWYWxpZE9wdGlvblNldEVudW0oc3Rh
dGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPj4oZSkpOwogfQogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBFLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bTxFPjo6dmFsdWUgJiYgIWlz
X3R5cGVfY29tcGxldGVfdjxFbnVtVHJhaXRzPEU+Pj4qID0gbnVsbHB0cj4KK3RlbXBsYXRlPHR5
cGVuYW1lIEUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZSAmJiAhSXNU
eXBlQ29tcGxldGU8RW51bVRyYWl0czxFPj4+KiA9IG51bGxwdHI+CiBjb25zdGV4cHIgYm9vbCBp
c1ZhbGlkT3B0aW9uU2V0RW51bShFIGUpCiB7CiAgICAgLy8gRklYTUU6IFJlbW92ZSBvbmNlIGFs
bCBPcHRpb25TZXQ8PiBlbnVtcyBoYXZlIEVudW1UcmFpdHM8PiBkZWZpbmVkLgpAQCAtOTAsMTQg
KzgyLDE0IEBAIGNvbnN0ZXhwciBib29sIGlzVmFsaWRPcHRpb25TZXRFbnVtKEUgZSkKIH0KIAog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBFLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bTxFPjo6
dmFsdWUgJiYgaXNfdHlwZV9jb21wbGV0ZV92PEVudW1UcmFpdHM8RT4+PiogPSBudWxscHRyPgor
dGVtcGxhdGU8dHlwZW5hbWUgRSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZh
bHVlICYmIElzVHlwZUNvbXBsZXRlPEVudW1UcmFpdHM8RT4+PiogPSBudWxscHRyPgogY29uc3Rl
eHByIHR5cGVuYW1lIE9wdGlvblNldDxFPjo6U3RvcmFnZVR5cGUgbWFza1Jhd1ZhbHVlKHR5cGVu
YW1lIE9wdGlvblNldDxFPjo6U3RvcmFnZVR5cGUgcmF3VmFsdWUpCiB7CiAgICAgYXV0byBhbGxW
YWxpZEJpdHNWYWx1ZSA9IE9wdGlvblNldFZhbHVlQ2hlY2tlcjxzdGQ6OnVuZGVybHlpbmdfdHlw
ZV90PEU+LCB0eXBlbmFtZSBFbnVtVHJhaXRzPEU+Ojp2YWx1ZXM+OjphbGxWYWxpZEJpdHMoKTsK
ICAgICByZXR1cm4gcmF3VmFsdWUgJiBhbGxWYWxpZEJpdHNWYWx1ZTsKIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgRSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVlICYmICFp
c190eXBlX2NvbXBsZXRlX3Y8RW51bVRyYWl0czxFPj4+KiA9IG51bGxwdHI+Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBFLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bTxFPjo6dmFsdWUgJiYgIUlz
VHlwZUNvbXBsZXRlPEVudW1UcmFpdHM8RT4+PiogPSBudWxscHRyPgogY29uc3RleHByIHR5cGVu
YW1lIE9wdGlvblNldDxFPjo6U3RvcmFnZVR5cGUgbWFza1Jhd1ZhbHVlKHR5cGVuYW1lIE9wdGlv
blNldDxFPjo6U3RvcmFnZVR5cGUgcmF3VmFsdWUpCiB7CiAgICAgLy8gRklYTUU6IFJlbW92ZSBv
bmNlIGFsbCBPcHRpb25TZXQ8PiBlbnVtcyBoYXZlIEVudW1UcmFpdHM8PiBkZWZpbmVkLgpJbmRl
eDogU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvU3RkTGliRXh0cmFzLmgJKHJldmlzaW9uIDI2NDIzMCkKKysrIFNvdXJjZS9XVEYvd3Rm
L1N0ZExpYkV4dHJhcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MTgsNiArNDE4LDExIEBAIG5hbWVz
cGFjZSBEZXRhaWwKIHRlbXBsYXRlIDx0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4+IGNsYXNzIEJhc2Us
IHR5cGVuYW1lIERlcml2ZWQ+CiBzdHJ1Y3QgSXNCYXNlT2ZUZW1wbGF0ZSA6IHB1YmxpYyBzdGQ6
OmludGVncmFsX2NvbnN0YW50PGJvb2wsIERldGFpbDo6SXNCYXNlT2ZUZW1wbGF0ZUltcGw8QmFz
ZSwgRGVyaXZlZD46OnZhbHVlPiB7fTsKIAorLy8gQmFzZWQgb24gJ0RldGVjdGluZyBpbiBDKysg
d2hldGhlciBhIHR5cGUgaXMgZGVmaW5lZCwgcGFydCAzOiBTRklOQUUgYW5kIGluY29tcGxldGUg
dHlwZXMnCisvLyA8aHR0cHM6Ly9kZXZibG9ncy5taWNyb3NvZnQuY29tL29sZG5ld3RoaW5nLzIw
MTkwNzEwLTAwLz9wPTEwMjY3OD4KK3RlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZSA9IHZvaWQ+
IGNvbnN0ZXhwciBib29sIElzVHlwZUNvbXBsZXRlID0gZmFsc2U7Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBjb25zdGV4cHIgYm9vbCBJc1R5cGVDb21wbGV0ZTxULCBzdGQ6OnZvaWRfdDxkZWNsdHlw
ZShzaXplb2YoVCkpPj4gPSB0cnVlOworCiB0ZW1wbGF0ZSA8Y2xhc3MgVD4KIHN0cnVjdCBSZW1v
dmVDVkFuZFJlZmVyZW5jZSAgewogICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY3Y8
dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlPjo6dHlwZSB0eXBlOwpJbmRl
eDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNp
b24gMjY0MjY5KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMjAtMDctMTEgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAg
ICAgIE1ha2UgaGFzaGVyIHdvcmsgd2l0aCB0dXBsZS1saWtlIGNsYXNzZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDIyNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvSGFzaGVyLmNwcDoKKyAgICAgICAgRW5hYmxlIGFuZCBleHRlbmQgdGVzdHMgZm9yIHVz
aW5nIGNvbXB1dGVIYXNoKCkgd2l0aCB1c2VyIGRlZmluZWQgdHVwbGUtbGlrZSBjbGFzc2VzLCBz
dXBwb3J0aW5nCisgICAgICAgIGJvdGggdGhlIGdldCBmdW5jdGlvbiBhcyBhIG1lbWJlciBhbmQg
YXMgYSBBREwtYWJsZSBmcmVlIGZ1bmN0aW9uLgorCiAyMDIwLTA3LTEwICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNjQy
NDIuCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hlci5jcHAJKHJldmlz
aW9uIDI2NDIzMCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIwOCw4ICsyMDgsNiBAQCBURVNUKFdURiwgSGFzaGVyX2N1c3Rv
bSkKICAgICBFWFBFQ1RfRVEoMTY1MjM1MjMyMVUsIGNvbXB1dGVIYXNoKEhhc2hlckFkZEN1c3Rv
bTIgeyB9KSk7CiB9CiAKLSNpZiAwIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgdHVwbGUtbGlr
ZSBjbGFzc2VzLgotCiBzdHJ1Y3QgSGFzaGVyQWRkVHVwbGVMaWtlQ2xhc3MxIHsKICAgICBzdGQ6
OmFycmF5PGludCwgND4gYXJyYXkgeyB7IDEsIDIsIDMsIDQgfSB9OwogICAgIHRlbXBsYXRlPHNp
emVfdCBpPiBpbnQgZ2V0KCkgY29uc3QgeyByZXR1cm4gc3RkOjpnZXQ8aT4oYXJyYXkpOyB9CkBA
IC0yMTksMzQgKzIxNyw0NiBAQCBzdHJ1Y3QgSGFzaGVyQWRkVHVwbGVMaWtlQ2xhc3MyIHsKICAg
ICBzdGQ6OmFycmF5PGludCwgND4gYXJyYXkgeyB7IDEsIDIsIDMsIDQgfSB9OwogfTsKIAordGVt
cGxhdGU8c2l6ZV90IGk+IGludCBnZXQoY29uc3QgSGFzaGVyQWRkVHVwbGVMaWtlQ2xhc3MyJiBv
YmplY3QpCit7CisgICAgcmV0dXJuIG9iamVjdC5hcnJheVtpXTsKK30KKworc3RydWN0IEhhc2hl
ckFkZFR1cGxlTGlrZUNsYXNzMyB7CisgICAgaW50IGEgPSAxOworICAgIGRvdWJsZSBiID0gMjsK
KyAgICAKKyAgICB0ZW1wbGF0ZTxzaXplX3QgaT4gZGVjbHR5cGUoYXV0bykgZ2V0KCkgY29uc3QK
KyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIWkpCisgICAgICAgICAgICByZXR1cm4gYTsK
KyAgICAgICAgaWYgY29uc3RleHByIChpID09IDEpCisgICAgICAgICAgICByZXR1cm4gYjsKKyAg
ICB9Cit9OworCiB9CiAKIG5hbWVzcGFjZSBzdGQgewogCi0vLyBGSVhNRTogRG9jdW1lbnRhdGlv
biBhdCBjcHByZWZlcmVuY2UuY3BwIHNheXMgc3RkOjp0dXBsZV9zaXplIGlzIGEgc3RydWN0LCBi
dXQgaXQncyBhIGNsYXNzIGluIGN1cnJlbnQgbWFjT1MgdG9vbHMuCi0vLyBGSVhNRTogSXQncyBp
bmVsZWdhbnQgdG8gaW5qZWN0IHRoaXMgaW50byB0aGUgc3RkIG5hbWVzcGFjZS4gSXMgdGhhdCBy
ZWFsbHkgaG93IGEgdHVwbGUtbGlrZSBjbGFzcyBuZWVkcyB0byBiZSBkZWZpbmVkPwotLy8gRklY
TUU6IFRoaXMgaXMgc28gaW5jb252ZW5pZW50IHRoYXQgSSBhbSBub3Qgc3VyZSBpdCdzIHNvbWV0
aGluZyB3ZSB3YW50IHRvIGRvIGZvciBsb3RzIG9mIGNsYXNzZXMgaW4gV2ViS2l0LgotdGVtcGxh
dGU8PiBjbGFzcyBzdGQ6OnR1cGxlX3NpemU8VGVzdFdlYktpdEFQSTo6SGFzaGVyQWRkVHVwbGVM
aWtlQ2xhc3MxPiA6IHB1YmxpYyBzdGQ6OmludGVncmFsX2NvbnN0YW50PHNpemVfdCwgc3RkOjp0
dXBsZV9zaXplPGRlY2x0eXBlKFRlc3RXZWJLaXRBUEk6Okhhc2hlckFkZFR1cGxlTGlrZUNsYXNz
MTo6YXJyYXkpPjo6dmFsdWU+IHsgfTsKK3RlbXBsYXRlPD4gY2xhc3Mgc3RkOjp0dXBsZV9zaXpl
PFRlc3RXZWJLaXRBUEk6Okhhc2hlckFkZFR1cGxlTGlrZUNsYXNzMT4gOiBwdWJsaWMgc3RkOjpp
bnRlZ3JhbF9jb25zdGFudDxzaXplX3QsIDQ+IHsgfTsKK3RlbXBsYXRlPHN0ZDo6c2l6ZV90IEk+
IGNsYXNzIHR1cGxlX2VsZW1lbnQ8SSwgVGVzdFdlYktpdEFQSTo6SGFzaGVyQWRkVHVwbGVMaWtl
Q2xhc3MxPiB7IHB1YmxpYzogdXNpbmcgdHlwZSA9IGludDsgfTsKIAotdGVtcGxhdGU8PiBjbGFz
cyBzdGQ6OnR1cGxlX3NpemU8VGVzdFdlYktpdEFQSTo6SGFzaGVyQWRkVHVwbGVMaWtlQ2xhc3My
PiA6IHB1YmxpYyBzdGQ6OmludGVncmFsX2NvbnN0YW50PHNpemVfdCwgc3RkOjp0dXBsZV9zaXpl
PGRlY2x0eXBlKFRlc3RXZWJLaXRBUEk6Okhhc2hlckFkZFR1cGxlTGlrZUNsYXNzMjo6YXJyYXkp
Pjo6dmFsdWU+IHsgfTsKK3RlbXBsYXRlPD4gY2xhc3Mgc3RkOjp0dXBsZV9zaXplPFRlc3RXZWJL
aXRBUEk6Okhhc2hlckFkZFR1cGxlTGlrZUNsYXNzMj4gOiBwdWJsaWMgc3RkOjppbnRlZ3JhbF9j
b25zdGFudDxzaXplX3QsIDQ+IHsgfTsKK3RlbXBsYXRlPHN0ZDo6c2l6ZV90IEk+IGNsYXNzIHR1
cGxlX2VsZW1lbnQ8SSwgVGVzdFdlYktpdEFQSTo6SGFzaGVyQWRkVHVwbGVMaWtlQ2xhc3MyPiB7
IHB1YmxpYzogdXNpbmcgdHlwZSA9IGludDsgfTsKKwordGVtcGxhdGU8PiBjbGFzcyBzdGQ6OnR1
cGxlX3NpemU8VGVzdFdlYktpdEFQSTo6SGFzaGVyQWRkVHVwbGVMaWtlQ2xhc3MzPiA6IHB1Ymxp
YyBzdGQ6OmludGVncmFsX2NvbnN0YW50PHNpemVfdCwgMj4geyB9OwordGVtcGxhdGU8c3RkOjpz
aXplX3QgST4gY2xhc3MgdHVwbGVfZWxlbWVudDxJLCBUZXN0V2ViS2l0QVBJOjpIYXNoZXJBZGRU
dXBsZUxpa2VDbGFzczM+IHsgcHVibGljOiB1c2luZyB0eXBlID0gZGVjbHR5cGUoc3RkOjpkZWNs
dmFsPFRlc3RXZWJLaXRBUEk6Okhhc2hlckFkZFR1cGxlTGlrZUNsYXNzMz4oKS50ZW1wbGF0ZSBn
ZXQ8ST4oKSk7IH07CiAKIH0KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi0vLyBGSVhN
RTogSXMgaXQgT0sgZm9yIHRoZSBnZXQgdG8gYmUgaW4gdGhlIGNsYXNzJ3MgbmFtZXNwYWNlIGFu
ZCByZWx5IG9uIGFyZ3VtZW50LWRlcGVuZGVudCBsb29rdXA/Ci0vLyBPciBkb2VzIHRoaXMgZnVu
Y3Rpb24gdGVtcGxhdGUgbmVlZCB0byBiZSBtb3ZlZCBpbnRvIHRoZSBzdGQgbmFtZXNwYWNlIGxp
a2UgdGhlIHR1cGxlX3NpemUgc3BlY2lhbGl6YXRpb24/Ci10ZW1wbGF0ZTxzaXplX3QgaT4gaW50
IGdldChjb25zdCBIYXNoZXJBZGRUdXBsZUxpa2VDbGFzczImIG9iamVjdCkKLXsKLSAgICByZXR1
cm4gZ2V0PGk+KG9iamVjdC5hcnJheSk7Ci19Ci0KIFRFU1QoV1RGLCBIYXNoZXJfdHVwbGVMaWtl
KQogewogICAgIEVYUEVDVF9FUSgxNjUyMzUyMzIxVSwgY29tcHV0ZUhhc2goSGFzaGVyQWRkVHVw
bGVMaWtlQ2xhc3MxIHsgfSkpOwogICAgIEVYUEVDVF9FUSgxNjUyMzUyMzIxVSwgY29tcHV0ZUhh
c2goSGFzaGVyQWRkVHVwbGVMaWtlQ2xhc3MyIHsgfSkpOworICAgIEVYUEVDVF9FUSgzNDg5NjAx
MjE2VSwgY29tcHV0ZUhhc2goSGFzaGVyQWRkVHVwbGVMaWtlQ2xhc3MzIHsgfSkpOwogfQogCi0j
ZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404065</attachid>
            <date>2020-07-11 12:35:38 -0700</date>
            <delta_ts>2020-07-11 13:44:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214224-20200711123537.patch</filename>
            <type>text/plain</type>
            <size>11673</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjQyNjkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDIwLTA3LTExICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIGhhc2hlciB3b3JrIHdpdGggdHVwbGUtbGlrZSBj
bGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTQyMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHd0Zi9IYXNoZXIuaDoKKyAgICAgICAgKFdURjo6YWRkKToKKyAgICAgICAgKFdURjo6YWRkVHVw
bGVMaWtlSGVscGVyKToKKyAgICAgICAgKFdURjo6VHlwZUNoZWNrSGVscGVyPGRlY2x0eXBlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdURjo6YWRkVHVwbGVIZWxwZXIpOiBEZWxldGVkLgorICAgICAg
ICBBZGQgc3VwcG9ydCBmb3IgdHVwbGUtbGlrZSBjbGFzc2VzLiBUaGVzZSBhcmUgY2xhc3NlcyB0
aGF0OgorICAgICAgICAtIEhhdmUgZGVmaW5lZCBzcGVjaWFsaXphdGlvbnMgb2Ygc3RkOjp0dXBs
ZV9zaXplPD4gYW5kIHN0ZDo6dHVwbGVfZWxlbWVudDw+LgorICAgICAgICAtIEFuZCBoYXZlIGVp
dGhlciBhIG1lbWJlciBmdW5jdGlvbiBuYW1lZCBnZXQ8PiBvciB0aGVyZSBleGlzdHMgYSBmdW5j
dGlvbiBnZXQ8PigpCisgICAgICAgICAgdGhhdCB0YWtlcyB0aGUgY2xhc3MgYXMgYXJndW1lbnQg
dGhhdCBjYW4gYmUgbG9va2VkIHVwIHZpYSBBREwuCisKKyAgICAgICAgVG8gYXZvaWQgYWJpZ3Vp
dHkgd2hlbiBoYXNoaW5nIHN0ZDo6YXJyYXksIHRoZSBhZGQoKSBvdmVybG9hZCBlbmFibGVkIGZv
ciBjb250YWluZXJzCisgICAgICAgIHdpdGggYSBiZWdpbiBtZW1iZXIgZnVuY3Rpb25zIGFsc28g
bm93IGNoZWNrcyB0aGF0IHRoZSBjb250YWluZXIgaXMgbm90IHR1cGxlLWxpa2UuCisgICAgICAg
IFRoZSBzdGQ6OnBhaXIgb3ZlcmxvYWQgaXMgbm8gbG9uZ2VyIG5lZWRlZCBhcyBpdCB3aWxsIHVz
ZSB0aGUgdHVwbGUtbGlrZSBvbmUgbm93LgorCisgICAgICAgICogd3RmL09wdGlvblNldC5oOgor
ICAgICAgICAqIHd0Zi9TdGRMaWJFeHRyYXMuaDoKKyAgICAgICAgTW92ZSBpc190eXBlX2NvbXBs
ZXRlX3Y8PiBmcm9tIE9wdGlvblNldC5oIHRvIFN0ZExpYkV4dHJhcy5oIGFuZCByZW5hbWUgdG8K
KyAgICAgICAgYWRoZWFyIHRvIFdlYktpdCBzdHlsZSBhcyBJc1R5cGVDb21wbGV0ZTw+LgorCiAy
MDIwLTA3LTEwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBH
YW1lQ29udHJvbGxlci5mcmFtZXdvcmsgZ2FtZXBhZHMgc2hvdWxkIHN1cHBvcnQgSG9tZSBidXR0
b25zLgpJbmRleDogU291cmNlL1dURi93dGYvSGFzaGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvSGFzaGVyLmgJKHJldmlzaW9uIDI2NDIzMCkKKysrIFNvdXJjZS9XVEYvd3RmL0hh
c2hlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsMTEgKzEwNiwxMCBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBFbnVtZXJhdGlvbj4gc3RkOjplbmFiCiAgICAgYWRkKGhhc2hlciwgc3RhdGljX2Nhc3Q8
c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFbnVtZXJhdGlvbj4+KHZhbHVlKSk7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lPiBzdHJ1Y3QgVHlwZUNoZWNrSGVscGVyIHsgfTsKLXRlbXBsYXRlPHR5cGVu
YW1lLCB0eXBlbmFtZSA9IHZvaWQ+IHN0cnVjdCBIYXNCZWdpbkZ1bmN0aW9uTWVtYmVyIDogc3Rk
OjpmYWxzZV90eXBlIHsgfTsKLXRlbXBsYXRlPHR5cGVuYW1lIENvbnRhaW5lcj4gc3RydWN0IEhh
c0JlZ2luRnVuY3Rpb25NZW1iZXI8Q29udGFpbmVyLCBzdGQ6OmNvbmRpdGlvbmFsX3Q8ZmFsc2Us
IFR5cGVDaGVja0hlbHBlcjxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8Q29udGFpbmVyPigpLmJlZ2lu
KCkpPiwgdm9pZD4+IDogc3RkOjp0cnVlX3R5cGUgeyB9OwordGVtcGxhdGU8dHlwZW5hbWUsIHR5
cGVuYW1lID0gdm9pZD4gY29uc3RleHByIGJvb2wgSGFzQmVnaW5GdW5jdGlvbk1lbWJlciA9IGZh
bHNlOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGJvb2wgSGFzQmVnaW5GdW5jdGlv
bk1lbWJlcjxULCBzdGQ6OnZvaWRfdDxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VD4oKS5iZWdpbigp
KT4+ID0gdHJ1ZTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgQ29udGFpbmVyPiBzdGQ6OmVuYWJsZV9p
Zl90PEhhc0JlZ2luRnVuY3Rpb25NZW1iZXI8Q29udGFpbmVyPjo6dmFsdWUsIHZvaWQ+IGFkZChI
YXNoZXImIGhhc2hlciwgY29uc3QgQ29udGFpbmVyJiBjb250YWluZXIpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBDb250YWluZXI+IHN0ZDo6ZW5hYmxlX2lmX3Q8SGFzQmVnaW5GdW5jdGlvbk1lbWJlcjxD
b250YWluZXI+ICYmICFJc1R5cGVDb21wbGV0ZTxzdGQ6OnR1cGxlX3NpemU8Q29udGFpbmVyPj4s
IHZvaWQ+IGFkZChIYXNoZXImIGhhc2hlciwgY29uc3QgQ29udGFpbmVyJiBjb250YWluZXIpCiB7
CiAgICAgZm9yIChjb25zdCBhdXRvJiB2YWx1ZSA6IGNvbnRhaW5lcikKICAgICAgICAgYWRkKGhh
c2hlciwgdmFsdWUpOwpAQCAtMTI2LDIwICsxMjUsMjIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQXJn
LCB0eXBlbmFtZSAuLi5BcmdzPgogICAgIGFkZEFyZ3MoaGFzaGVyLCBhcmdzLi4uKTsKIH0KIAot
dGVtcGxhdGU8dHlwZW5hbWUgVHVwbGUsIHN0ZDo6c2l6ZV90IC4uLmk+IHZvaWQgYWRkVHVwbGVI
ZWxwZXIoSGFzaGVyJiBoYXNoZXIsIGNvbnN0IFR1cGxlJiB2YWx1ZXMsIHN0ZDo6aW5kZXhfc2Vx
dWVuY2U8aS4uLj4pCi17Ci0gICAgYWRkQXJncyhoYXNoZXIsIHN0ZDo6Z2V0PGk+KHZhbHVlcyku
Li4pOwotfQordGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lID0gdm9pZD4gY29uc3RleHByIGJv
b2wgSGFzR2V0RnVuY3Rpb25NZW1iZXIgPSBmYWxzZTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNv
bnN0ZXhwciBib29sIEhhc0dldEZ1bmN0aW9uTWVtYmVyPFQsIHN0ZDo6dm9pZF90PGRlY2x0eXBl
KHN0ZDo6ZGVjbHZhbDxUPigpLnRlbXBsYXRlIGdldDwwPigpKT4+ID0gdHJ1ZTsKIAotdGVtcGxh
dGU8dHlwZW5hbWUuLi4gVHlwZXM+IHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBzdGQ6
OnR1cGxlPFR5cGVzLi4uPiYgdHVwbGUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUdXBsZUxpa2UsIHN0
ZDo6c2l6ZV90IC4uLkk+IHZvaWQgYWRkVHVwbGVMaWtlSGVscGVyKEhhc2hlciYgaGFzaGVyLCBj
b25zdCBUdXBsZUxpa2UmIHR1cGxlTGlrZSwgc3RkOjppbmRleF9zZXF1ZW5jZTxJLi4uPikKIHsK
LSAgICBhZGRUdXBsZUhlbHBlcihoYXNoZXIsIHR1cGxlLCBzdGQ6Om1ha2VfaW5kZXhfc2VxdWVu
Y2U8c3RkOjp0dXBsZV9zaXplPHN0ZDo6dHVwbGU8VHlwZXMuLi4+Pjo6dmFsdWU+IHsgfSk7Cisg
ICAgaWYgY29uc3RleHByIChIYXNHZXRGdW5jdGlvbk1lbWJlcjxUdXBsZUxpa2U+KQorICAgICAg
ICBhZGRBcmdzKGhhc2hlciwgdHVwbGVMaWtlLnRlbXBsYXRlIGdldDxJPigpLi4uKTsKKyAgICBl
bHNlIHsKKyAgICAgICAgdXNpbmcgc3RkOjpnZXQ7CisgICAgICAgIGFkZEFyZ3MoaGFzaGVyLCBn
ZXQ8ST4odHVwbGVMaWtlKS4uLik7CisgICAgfQogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUMSwg
dHlwZW5hbWUgVDI+IHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBzdGQ6OnBhaXI8VDEs
IFQyPiYgcGFpcikKK3RlbXBsYXRlPHR5cGVuYW1lIFR1cGxlTGlrZT4gc3RkOjplbmFibGVfaWZf
dDxJc1R5cGVDb21wbGV0ZTxzdGQ6OnR1cGxlX3NpemU8VHVwbGVMaWtlPj4sIHZvaWQ+IGFkZChI
YXNoZXImIGhhc2hlciwgY29uc3QgVHVwbGVMaWtlJiB0dXBsZSkKIHsKLSAgICBhZGQoaGFzaGVy
LCBwYWlyLmZpcnN0KTsKLSAgICBhZGQoaGFzaGVyLCBwYWlyLnNlY29uZCk7CisgICAgYWRkVHVw
bGVMaWtlSGVscGVyKGhhc2hlciwgdHVwbGUsIHN0ZDo6bWFrZV9pbmRleF9zZXF1ZW5jZTxzdGQ6
OnR1cGxlX3NpemU8VHVwbGVMaWtlPjo6dmFsdWU+IHsgfSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBPcHRpb25hbDxUPiYgb3B0aW9u
YWwpCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9PcHRpb25TZXQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9PcHRpb25TZXQuaAkocmV2aXNpb24gMjY0MjMwKQorKysgU291cmNlL1dURi93
dGYvT3B0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDE4ICszMiwxMCBAQAogI2luY2x1
ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5h
bWVzcGFjZSBXVEYgewogCi0vLyBEZXRlY3RpbmcgaW4gQysrIHdoZXRoZXIgYSB0eXBlIGlzIGRl
ZmluZWQsIHBhcnQgMzogU0ZJTkFFIGFuZCBpbmNvbXBsZXRlIHR5cGVzCi0vLyA8aHR0cHM6Ly9k
ZXZibG9ncy5taWNyb3NvZnQuY29tL29sZG5ld3RoaW5nLzIwMTkwNzEwLTAwLz9wPTEwMjY3OD4K
LXRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZSA9IHZvaWQ+Ci1jb25zdGV4cHIgYm9vbCBpc190
eXBlX2NvbXBsZXRlX3YgPSBmYWxzZTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNvbnN0ZXhw
ciBib29sIGlzX3R5cGVfY29tcGxldGVfdjxULCBzdGQ6OnZvaWRfdDxkZWNsdHlwZShzaXplb2Yo
VCkpPj4gPSB0cnVlOwotCi0KIHRlbXBsYXRlPHR5cGVuYW1lIEU+IGNsYXNzIE9wdGlvblNldDsK
IAogCkBAIC03NiwxMyArNjgsMTMgQEAgc3RydWN0IE9wdGlvblNldFZhbHVlQ2hlY2tlcjxULCBF
bnVtVmFsdQogfTsKIAogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFLCBzdGQ6OmVuYWJsZV9pZl90PHN0
ZDo6aXNfZW51bTxFPjo6dmFsdWUgJiYgaXNfdHlwZV9jb21wbGV0ZV92PEVudW1UcmFpdHM8RT4+
PiogPSBudWxscHRyPgordGVtcGxhdGU8dHlwZW5hbWUgRSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6
OmlzX2VudW08RT46OnZhbHVlICYmIElzVHlwZUNvbXBsZXRlPEVudW1UcmFpdHM8RT4+PiogPSBu
dWxscHRyPgogY29uc3RleHByIGJvb2wgaXNWYWxpZE9wdGlvblNldEVudW0oRSBlKQogewogICAg
IHJldHVybiBPcHRpb25TZXRWYWx1ZUNoZWNrZXI8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPiwg
dHlwZW5hbWUgRW51bVRyYWl0czxFPjo6dmFsdWVzPjo6aXNWYWxpZE9wdGlvblNldEVudW0oc3Rh
dGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPj4oZSkpOwogfQogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBFLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bTxFPjo6dmFsdWUgJiYgIWlz
X3R5cGVfY29tcGxldGVfdjxFbnVtVHJhaXRzPEU+Pj4qID0gbnVsbHB0cj4KK3RlbXBsYXRlPHR5
cGVuYW1lIEUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZSAmJiAhSXNU
eXBlQ29tcGxldGU8RW51bVRyYWl0czxFPj4+KiA9IG51bGxwdHI+CiBjb25zdGV4cHIgYm9vbCBp
c1ZhbGlkT3B0aW9uU2V0RW51bShFIGUpCiB7CiAgICAgLy8gRklYTUU6IFJlbW92ZSBvbmNlIGFs
bCBPcHRpb25TZXQ8PiBlbnVtcyBoYXZlIEVudW1UcmFpdHM8PiBkZWZpbmVkLgpAQCAtOTAsMTQg
KzgyLDE0IEBAIGNvbnN0ZXhwciBib29sIGlzVmFsaWRPcHRpb25TZXRFbnVtKEUgZSkKIH0KIAog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBFLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bTxFPjo6
dmFsdWUgJiYgaXNfdHlwZV9jb21wbGV0ZV92PEVudW1UcmFpdHM8RT4+PiogPSBudWxscHRyPgor
dGVtcGxhdGU8dHlwZW5hbWUgRSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZh
bHVlICYmIElzVHlwZUNvbXBsZXRlPEVudW1UcmFpdHM8RT4+PiogPSBudWxscHRyPgogY29uc3Rl
eHByIHR5cGVuYW1lIE9wdGlvblNldDxFPjo6U3RvcmFnZVR5cGUgbWFza1Jhd1ZhbHVlKHR5cGVu
YW1lIE9wdGlvblNldDxFPjo6U3RvcmFnZVR5cGUgcmF3VmFsdWUpCiB7CiAgICAgYXV0byBhbGxW
YWxpZEJpdHNWYWx1ZSA9IE9wdGlvblNldFZhbHVlQ2hlY2tlcjxzdGQ6OnVuZGVybHlpbmdfdHlw
ZV90PEU+LCB0eXBlbmFtZSBFbnVtVHJhaXRzPEU+Ojp2YWx1ZXM+OjphbGxWYWxpZEJpdHMoKTsK
ICAgICByZXR1cm4gcmF3VmFsdWUgJiBhbGxWYWxpZEJpdHNWYWx1ZTsKIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgRSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVlICYmICFp
c190eXBlX2NvbXBsZXRlX3Y8RW51bVRyYWl0czxFPj4+KiA9IG51bGxwdHI+Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBFLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bTxFPjo6dmFsdWUgJiYgIUlz
VHlwZUNvbXBsZXRlPEVudW1UcmFpdHM8RT4+PiogPSBudWxscHRyPgogY29uc3RleHByIHR5cGVu
YW1lIE9wdGlvblNldDxFPjo6U3RvcmFnZVR5cGUgbWFza1Jhd1ZhbHVlKHR5cGVuYW1lIE9wdGlv
blNldDxFPjo6U3RvcmFnZVR5cGUgcmF3VmFsdWUpCiB7CiAgICAgLy8gRklYTUU6IFJlbW92ZSBv
bmNlIGFsbCBPcHRpb25TZXQ8PiBlbnVtcyBoYXZlIEVudW1UcmFpdHM8PiBkZWZpbmVkLgpJbmRl
eDogU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvU3RkTGliRXh0cmFzLmgJKHJldmlzaW9uIDI2NDIzMCkKKysrIFNvdXJjZS9XVEYvd3Rm
L1N0ZExpYkV4dHJhcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MTgsNiArNDE4LDExIEBAIG5hbWVz
cGFjZSBEZXRhaWwKIHRlbXBsYXRlIDx0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4+IGNsYXNzIEJhc2Us
IHR5cGVuYW1lIERlcml2ZWQ+CiBzdHJ1Y3QgSXNCYXNlT2ZUZW1wbGF0ZSA6IHB1YmxpYyBzdGQ6
OmludGVncmFsX2NvbnN0YW50PGJvb2wsIERldGFpbDo6SXNCYXNlT2ZUZW1wbGF0ZUltcGw8QmFz
ZSwgRGVyaXZlZD46OnZhbHVlPiB7fTsKIAorLy8gQmFzZWQgb24gJ0RldGVjdGluZyBpbiBDKysg
d2hldGhlciBhIHR5cGUgaXMgZGVmaW5lZCwgcGFydCAzOiBTRklOQUUgYW5kIGluY29tcGxldGUg
dHlwZXMnCisvLyA8aHR0cHM6Ly9kZXZibG9ncy5taWNyb3NvZnQuY29tL29sZG5ld3RoaW5nLzIw
MTkwNzEwLTAwLz9wPTEwMjY3OD4KK3RlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZSA9IHZvaWQ+
IGNvbnN0ZXhwciBib29sIElzVHlwZUNvbXBsZXRlID0gZmFsc2U7Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBjb25zdGV4cHIgYm9vbCBJc1R5cGVDb21wbGV0ZTxULCBzdGQ6OnZvaWRfdDxkZWNsdHlw
ZShzaXplb2YoVCkpPj4gPSB0cnVlOworCiB0ZW1wbGF0ZSA8Y2xhc3MgVD4KIHN0cnVjdCBSZW1v
dmVDVkFuZFJlZmVyZW5jZSAgewogICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY3Y8
dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlPjo6dHlwZSB0eXBlOwpJbmRl
eDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNp
b24gMjY0MjY5KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMjAtMDctMTEgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAg
ICAgIE1ha2UgaGFzaGVyIHdvcmsgd2l0aCB0dXBsZS1saWtlIGNsYXNzZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDIyNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvSGFzaGVyLmNwcDoKKyAgICAgICAgRW5hYmxlIGFuZCBleHRlbmQgdGVzdHMgZm9yIHVz
aW5nIGNvbXB1dGVIYXNoKCkgd2l0aCB1c2VyIGRlZmluZWQgdHVwbGUtbGlrZSBjbGFzc2VzLCBz
dXBwb3J0aW5nCisgICAgICAgIGJvdGggdGhlIGdldCBmdW5jdGlvbiBhcyBhIG1lbWJlciBhbmQg
YXMgYSBBREwtYWJsZSBmcmVlIGZ1bmN0aW9uLgorCiAyMDIwLTA3LTEwICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNjQy
NDIuCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hlci5jcHAJKHJldmlz
aW9uIDI2NDIzMCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIwOCw4ICsyMDgsNiBAQCBURVNUKFdURiwgSGFzaGVyX2N1c3Rv
bSkKICAgICBFWFBFQ1RfRVEoMTY1MjM1MjMyMVUsIGNvbXB1dGVIYXNoKEhhc2hlckFkZEN1c3Rv
bTIgeyB9KSk7CiB9CiAKLSNpZiAwIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgdHVwbGUtbGlr
ZSBjbGFzc2VzLgotCiBzdHJ1Y3QgSGFzaGVyQWRkVHVwbGVMaWtlQ2xhc3MxIHsKICAgICBzdGQ6
OmFycmF5PGludCwgND4gYXJyYXkgeyB7IDEsIDIsIDMsIDQgfSB9OwogICAgIHRlbXBsYXRlPHNp
emVfdCBpPiBpbnQgZ2V0KCkgY29uc3QgeyByZXR1cm4gc3RkOjpnZXQ8aT4oYXJyYXkpOyB9CkBA
IC0yMTksMzQgKzIxNyw0NiBAQCBzdHJ1Y3QgSGFzaGVyQWRkVHVwbGVMaWtlQ2xhc3MyIHsKICAg
ICBzdGQ6OmFycmF5PGludCwgND4gYXJyYXkgeyB7IDEsIDIsIDMsIDQgfSB9OwogfTsKIAordGVt
cGxhdGU8c2l6ZV90IGk+IGludCBnZXQoY29uc3QgSGFzaGVyQWRkVHVwbGVMaWtlQ2xhc3MyJiBv
YmplY3QpCit7CisgICAgcmV0dXJuIG9iamVjdC5hcnJheVtpXTsKK30KKworc3RydWN0IEhhc2hl
ckFkZFR1cGxlTGlrZUNsYXNzMyB7CisgICAgaW50IGEgPSAxOworICAgIGRvdWJsZSBiID0gMjsK
KyAgICAKKyAgICB0ZW1wbGF0ZTxzaXplX3QgaT4gZGVjbHR5cGUoYXV0bykgZ2V0KCkgY29uc3QK
KyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIWkpCisgICAgICAgICAgICByZXR1cm4gYTsK
KyAgICAgICAgaWYgY29uc3RleHByIChpID09IDEpCisgICAgICAgICAgICByZXR1cm4gYjsKKyAg
ICB9Cit9OworCiB9CiAKIG5hbWVzcGFjZSBzdGQgewogCi0vLyBGSVhNRTogRG9jdW1lbnRhdGlv
biBhdCBjcHByZWZlcmVuY2UuY3BwIHNheXMgc3RkOjp0dXBsZV9zaXplIGlzIGEgc3RydWN0LCBi
dXQgaXQncyBhIGNsYXNzIGluIGN1cnJlbnQgbWFjT1MgdG9vbHMuCi0vLyBGSVhNRTogSXQncyBp
bmVsZWdhbnQgdG8gaW5qZWN0IHRoaXMgaW50byB0aGUgc3RkIG5hbWVzcGFjZS4gSXMgdGhhdCBy
ZWFsbHkgaG93IGEgdHVwbGUtbGlrZSBjbGFzcyBuZWVkcyB0byBiZSBkZWZpbmVkPwotLy8gRklY
TUU6IFRoaXMgaXMgc28gaW5jb252ZW5pZW50IHRoYXQgSSBhbSBub3Qgc3VyZSBpdCdzIHNvbWV0
aGluZyB3ZSB3YW50IHRvIGRvIGZvciBsb3RzIG9mIGNsYXNzZXMgaW4gV2ViS2l0LgotdGVtcGxh
dGU8PiBjbGFzcyBzdGQ6OnR1cGxlX3NpemU8VGVzdFdlYktpdEFQSTo6SGFzaGVyQWRkVHVwbGVM
aWtlQ2xhc3MxPiA6IHB1YmxpYyBzdGQ6OmludGVncmFsX2NvbnN0YW50PHNpemVfdCwgc3RkOjp0
dXBsZV9zaXplPGRlY2x0eXBlKFRlc3RXZWJLaXRBUEk6Okhhc2hlckFkZFR1cGxlTGlrZUNsYXNz
MTo6YXJyYXkpPjo6dmFsdWU+IHsgfTsKK3RlbXBsYXRlPD4gY2xhc3MgdHVwbGVfc2l6ZTxUZXN0
V2ViS2l0QVBJOjpIYXNoZXJBZGRUdXBsZUxpa2VDbGFzczE+IDogcHVibGljIGludGVncmFsX2Nv
bnN0YW50PHNpemVfdCwgND4geyB9OwordGVtcGxhdGU8c2l6ZV90IEk+IGNsYXNzIHR1cGxlX2Vs
ZW1lbnQ8SSwgVGVzdFdlYktpdEFQSTo6SGFzaGVyQWRkVHVwbGVMaWtlQ2xhc3MxPiB7IHB1Ymxp
YzogdXNpbmcgdHlwZSA9IGludDsgfTsKIAotdGVtcGxhdGU8PiBjbGFzcyBzdGQ6OnR1cGxlX3Np
emU8VGVzdFdlYktpdEFQSTo6SGFzaGVyQWRkVHVwbGVMaWtlQ2xhc3MyPiA6IHB1YmxpYyBzdGQ6
OmludGVncmFsX2NvbnN0YW50PHNpemVfdCwgc3RkOjp0dXBsZV9zaXplPGRlY2x0eXBlKFRlc3RX
ZWJLaXRBUEk6Okhhc2hlckFkZFR1cGxlTGlrZUNsYXNzMjo6YXJyYXkpPjo6dmFsdWU+IHsgfTsK
K3RlbXBsYXRlPD4gY2xhc3MgdHVwbGVfc2l6ZTxUZXN0V2ViS2l0QVBJOjpIYXNoZXJBZGRUdXBs
ZUxpa2VDbGFzczI+IDogcHVibGljIGludGVncmFsX2NvbnN0YW50PHNpemVfdCwgND4geyB9Owor
dGVtcGxhdGU8c2l6ZV90IEk+IGNsYXNzIHR1cGxlX2VsZW1lbnQ8SSwgVGVzdFdlYktpdEFQSTo6
SGFzaGVyQWRkVHVwbGVMaWtlQ2xhc3MyPiB7IHB1YmxpYzogdXNpbmcgdHlwZSA9IGludDsgfTsK
KwordGVtcGxhdGU8PiBjbGFzcyB0dXBsZV9zaXplPFRlc3RXZWJLaXRBUEk6Okhhc2hlckFkZFR1
cGxlTGlrZUNsYXNzMz4gOiBwdWJsaWMgaW50ZWdyYWxfY29uc3RhbnQ8c2l6ZV90LCAyPiB7IH07
Cit0ZW1wbGF0ZTxzaXplX3QgST4gY2xhc3MgdHVwbGVfZWxlbWVudDxJLCBUZXN0V2ViS2l0QVBJ
OjpIYXNoZXJBZGRUdXBsZUxpa2VDbGFzczM+IHsgcHVibGljOiB1c2luZyB0eXBlID0gZGVjbHR5
cGUoZGVjbHZhbDxUZXN0V2ViS2l0QVBJOjpIYXNoZXJBZGRUdXBsZUxpa2VDbGFzczM+KCkudGVt
cGxhdGUgZ2V0PEk+KCkpOyB9OwogCiB9CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAot
Ly8gRklYTUU6IElzIGl0IE9LIGZvciB0aGUgZ2V0IHRvIGJlIGluIHRoZSBjbGFzcydzIG5hbWVz
cGFjZSBhbmQgcmVseSBvbiBhcmd1bWVudC1kZXBlbmRlbnQgbG9va3VwPwotLy8gT3IgZG9lcyB0
aGlzIGZ1bmN0aW9uIHRlbXBsYXRlIG5lZWQgdG8gYmUgbW92ZWQgaW50byB0aGUgc3RkIG5hbWVz
cGFjZSBsaWtlIHRoZSB0dXBsZV9zaXplIHNwZWNpYWxpemF0aW9uPwotdGVtcGxhdGU8c2l6ZV90
IGk+IGludCBnZXQoY29uc3QgSGFzaGVyQWRkVHVwbGVMaWtlQ2xhc3MyJiBvYmplY3QpCi17Ci0g
ICAgcmV0dXJuIGdldDxpPihvYmplY3QuYXJyYXkpOwotfQotCiBURVNUKFdURiwgSGFzaGVyX3R1
cGxlTGlrZSkKIHsKICAgICBFWFBFQ1RfRVEoMTY1MjM1MjMyMVUsIGNvbXB1dGVIYXNoKEhhc2hl
ckFkZFR1cGxlTGlrZUNsYXNzMSB7IH0pKTsKICAgICBFWFBFQ1RfRVEoMTY1MjM1MjMyMVUsIGNv
bXB1dGVIYXNoKEhhc2hlckFkZFR1cGxlTGlrZUNsYXNzMiB7IH0pKTsKKyAgICBFWFBFQ1RfRVEo
MzQ4OTYwMTIxNlUsIGNvbXB1dGVIYXNoKEhhc2hlckFkZFR1cGxlTGlrZUNsYXNzMyB7IH0pKTsK
IH0KIAotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>
<flag name="review"
          id="419461"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404090</attachid>
            <date>2020-07-12 01:32:40 -0700</date>
            <delta_ts>2020-07-12 01:32:40 -0700</delta_ts>
            <desc>Patch + `constexpr` =&gt; `inline constexpr` template variable fix</desc>
            <filename>bug-214224-20200712013239.patch</filename>
            <type>text/plain</type>
            <size>12246</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0Mjc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY5YTNmNTgzNTAxOTE5OGYyMGIzMTc4
YmZhM2VjYThjMjgyNWM4YTcuLmQyYjgxNGZmM2JhZDZmNWNjMWRjZjU3ZjMxZGUxZTliOWZmYmQ2
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjAtMDctMTEgIFNhbSBXZWluaWcgIDx3ZWluaWdA
YXBwbGUuY29tPgorCisgICAgICAgIFJlbGFuZGluZyAiTWFrZSBoYXNoZXIgd29yayB3aXRoIHR1
cGxlLWxpa2UgY2xhc3NlcyIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNDIyNAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisg
ICAgICAgIFRoZSBvcmlnaW5hbCBwYXRjaCBicm9rZSB0aGUgaW50ZXJuYWwgYnVpbGQuIEFuZCBy
ZXZlcnRpbmcgcGF0Y2ggKHIyNjQyNzQpIGJyb2tlIHRoZSBidWlsZCB0b28uCisgICAgICAgIFRo
aXMgcGF0Y2ggcmVsYW5kcyByMjY0MjcwIHdpdGggYGNvbnN0ZXhwcmAgPT4gYGlubGluZSBjb25z
dGV4cHJgIHRlbXBsYXRlIHZhcmlhYmxlIGZpeC4KKworICAgICAgICAqIHd0Zi9IYXNoZXIuaDoK
KyAgICAgICAgKFdURjo6YWRkKToKKyAgICAgICAgKFdURjo6YWRkVHVwbGVMaWtlSGVscGVyKToK
KyAgICAgICAgKFdURjo6VHlwZUNoZWNrSGVscGVyPGRlY2x0eXBlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdURjo6YWRkVHVwbGVIZWxwZXIpOiBEZWxldGVkLgorICAgICAgICBBZGQgc3VwcG9ydCBm
b3IgdHVwbGUtbGlrZSBjbGFzc2VzLiBUaGVzZSBhcmUgY2xhc3NlcyB0aGF0OgorICAgICAgICAt
IEhhdmUgZGVmaW5lZCBzcGVjaWFsaXphdGlvbnMgb2Ygc3RkOjp0dXBsZV9zaXplPD4gYW5kIHN0
ZDo6dHVwbGVfZWxlbWVudDw+LgorICAgICAgICAtIEFuZCBoYXZlIGVpdGhlciBhIG1lbWJlciBm
dW5jdGlvbiBuYW1lZCBnZXQ8PiBvciB0aGVyZSBleGlzdHMgYSBmdW5jdGlvbiBnZXQ8PigpCisg
ICAgICAgICAgdGhhdCB0YWtlcyB0aGUgY2xhc3MgYXMgYXJndW1lbnQgdGhhdCBjYW4gYmUgbG9v
a2VkIHVwIHZpYSBBREwuCisKKyAgICAgICAgVG8gYXZvaWQgYWJpZ3VpdHkgd2hlbiBoYXNoaW5n
IHN0ZDo6YXJyYXksIHRoZSBhZGQoKSBvdmVybG9hZCBlbmFibGVkIGZvciBjb250YWluZXJzCisg
ICAgICAgIHdpdGggYSBiZWdpbiBtZW1iZXIgZnVuY3Rpb25zIGFsc28gbm93IGNoZWNrcyB0aGF0
IHRoZSBjb250YWluZXIgaXMgbm90IHR1cGxlLWxpa2UuCisgICAgICAgIFRoZSBzdGQ6OnBhaXIg
b3ZlcmxvYWQgaXMgbm8gbG9uZ2VyIG5lZWRlZCBhcyBpdCB3aWxsIHVzZSB0aGUgdHVwbGUtbGlr
ZSBvbmUgbm93LgorCisgICAgICAgICogd3RmL09wdGlvblNldC5oOgorICAgICAgICAqIHd0Zi9T
dGRMaWJFeHRyYXMuaDoKKyAgICAgICAgTW92ZSBpc190eXBlX2NvbXBsZXRlX3Y8PiBmcm9tIE9w
dGlvblNldC5oIHRvIFN0ZExpYkV4dHJhcy5oIGFuZCByZW5hbWUgdG8KKyAgICAgICAgYWRoZXJl
IHRvIFdlYktpdCBzdHlsZSBhcyBJc1R5cGVDb21wbGV0ZTw+LgorCiAyMDIwLTA3LTExICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2Vk
LCByZXZlcnRpbmcgcjI2NDI3MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hlci5o
IGIvU291cmNlL1dURi93dGYvSGFzaGVyLmgKaW5kZXggYWQ1NTRlOWJmMmRmMTFkZDE0NGY3MGFk
YmYwYTE5ODgwNTZhNmUxYy4uODc0MjQ2YzNjMjdkYTBhYTVjODk1YWUwODY3OGQ1ZDQ0NGE4MmFi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGFzaGVyLmgKKysrIGIvU291cmNlL1dURi93
dGYvSGFzaGVyLmgKQEAgLTEwNiwxMSArMTA2LDEwIEBAIHRlbXBsYXRlPHR5cGVuYW1lIEVudW1l
cmF0aW9uPiBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bTxFbnVtZXJhdGlvbj46OnZhbHVl
CiAgICAgYWRkKGhhc2hlciwgc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFbnVt
ZXJhdGlvbj4+KHZhbHVlKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgVHlwZUNo
ZWNrSGVscGVyIHsgfTsKLXRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZSA9IHZvaWQ+IHN0cnVj
dCBIYXNCZWdpbkZ1bmN0aW9uTWVtYmVyIDogc3RkOjpmYWxzZV90eXBlIHsgfTsKLXRlbXBsYXRl
PHR5cGVuYW1lIENvbnRhaW5lcj4gc3RydWN0IEhhc0JlZ2luRnVuY3Rpb25NZW1iZXI8Q29udGFp
bmVyLCBzdGQ6OmNvbmRpdGlvbmFsX3Q8ZmFsc2UsIFR5cGVDaGVja0hlbHBlcjxkZWNsdHlwZShz
dGQ6OmRlY2x2YWw8Q29udGFpbmVyPigpLmJlZ2luKCkpPiwgdm9pZD4+IDogc3RkOjp0cnVlX3R5
cGUgeyB9OwordGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lID0gdm9pZD4gaW5saW5lIGNvbnN0
ZXhwciBib29sIEhhc0JlZ2luRnVuY3Rpb25NZW1iZXIgPSBmYWxzZTsKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IGlubGluZSBjb25zdGV4cHIgYm9vbCBIYXNCZWdpbkZ1bmN0aW9uTWVtYmVyPFQsIHN0
ZDo6dm9pZF90PGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxUPigpLmJlZ2luKCkpPj4gPSB0cnVlOwog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDb250YWluZXI+IHN0ZDo6ZW5hYmxlX2lmX3Q8SGFzQmVnaW5G
dW5jdGlvbk1lbWJlcjxDb250YWluZXI+Ojp2YWx1ZSwgdm9pZD4gYWRkKEhhc2hlciYgaGFzaGVy
LCBjb25zdCBDb250YWluZXImIGNvbnRhaW5lcikKK3RlbXBsYXRlPHR5cGVuYW1lIENvbnRhaW5l
cj4gc3RkOjplbmFibGVfaWZfdDxIYXNCZWdpbkZ1bmN0aW9uTWVtYmVyPENvbnRhaW5lcj4gJiYg
IUlzVHlwZUNvbXBsZXRlPHN0ZDo6dHVwbGVfc2l6ZTxDb250YWluZXI+Piwgdm9pZD4gYWRkKEhh
c2hlciYgaGFzaGVyLCBjb25zdCBDb250YWluZXImIGNvbnRhaW5lcikKIHsKICAgICBmb3IgKGNv
bnN0IGF1dG8mIHZhbHVlIDogY29udGFpbmVyKQogICAgICAgICBhZGQoaGFzaGVyLCB2YWx1ZSk7
CkBAIC0xMjYsMjAgKzEyNSwyMiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBBcmcsIHR5cGVuYW1lIC4u
LkFyZ3M+IHZvaWQgYWRkQXJncyhIYXNoZXImIGhhc2hlciwgY29uc3QgQXJnJgogICAgIGFkZEFy
Z3MoaGFzaGVyLCBhcmdzLi4uKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVHVwbGUsIHN0ZDo6
c2l6ZV90IC4uLmk+IHZvaWQgYWRkVHVwbGVIZWxwZXIoSGFzaGVyJiBoYXNoZXIsIGNvbnN0IFR1
cGxlJiB2YWx1ZXMsIHN0ZDo6aW5kZXhfc2VxdWVuY2U8aS4uLj4pCi17Ci0gICAgYWRkQXJncyho
YXNoZXIsIHN0ZDo6Z2V0PGk+KHZhbHVlcykuLi4pOwotfQordGVtcGxhdGU8dHlwZW5hbWUsIHR5
cGVuYW1lID0gdm9pZD4gaW5saW5lIGNvbnN0ZXhwciBib29sIEhhc0dldEZ1bmN0aW9uTWVtYmVy
ID0gZmFsc2U7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFz
R2V0RnVuY3Rpb25NZW1iZXI8VCwgc3RkOjp2b2lkX3Q8ZGVjbHR5cGUoc3RkOjpkZWNsdmFsPFQ+
KCkudGVtcGxhdGUgZ2V0PDA+KCkpPj4gPSB0cnVlOwogCi10ZW1wbGF0ZTx0eXBlbmFtZS4uLiBU
eXBlcz4gdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIGNvbnN0IHN0ZDo6dHVwbGU8VHlwZXMuLi4+
JiB0dXBsZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFR1cGxlTGlrZSwgc3RkOjpzaXplX3QgLi4uST4g
dm9pZCBhZGRUdXBsZUxpa2VIZWxwZXIoSGFzaGVyJiBoYXNoZXIsIGNvbnN0IFR1cGxlTGlrZSYg
dHVwbGVMaWtlLCBzdGQ6OmluZGV4X3NlcXVlbmNlPEkuLi4+KQogewotICAgIGFkZFR1cGxlSGVs
cGVyKGhhc2hlciwgdHVwbGUsIHN0ZDo6bWFrZV9pbmRleF9zZXF1ZW5jZTxzdGQ6OnR1cGxlX3Np
emU8c3RkOjp0dXBsZTxUeXBlcy4uLj4+Ojp2YWx1ZT4geyB9KTsKKyAgICBpZiBjb25zdGV4cHIg
KEhhc0dldEZ1bmN0aW9uTWVtYmVyPFR1cGxlTGlrZT4pCisgICAgICAgIGFkZEFyZ3MoaGFzaGVy
LCB0dXBsZUxpa2UudGVtcGxhdGUgZ2V0PEk+KCkuLi4pOworICAgIGVsc2UgeworICAgICAgICB1
c2luZyBzdGQ6OmdldDsKKyAgICAgICAgYWRkQXJncyhoYXNoZXIsIGdldDxJPih0dXBsZUxpa2Up
Li4uKTsKKyAgICB9CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4gdm9p
ZCBhZGQoSGFzaGVyJiBoYXNoZXIsIGNvbnN0IHN0ZDo6cGFpcjxUMSwgVDI+JiBwYWlyKQordGVt
cGxhdGU8dHlwZW5hbWUgVHVwbGVMaWtlPiBzdGQ6OmVuYWJsZV9pZl90PElzVHlwZUNvbXBsZXRl
PHN0ZDo6dHVwbGVfc2l6ZTxUdXBsZUxpa2U+Piwgdm9pZD4gYWRkKEhhc2hlciYgaGFzaGVyLCBj
b25zdCBUdXBsZUxpa2UmIHR1cGxlKQogewotICAgIGFkZChoYXNoZXIsIHBhaXIuZmlyc3QpOwot
ICAgIGFkZChoYXNoZXIsIHBhaXIuc2Vjb25kKTsKKyAgICBhZGRUdXBsZUxpa2VIZWxwZXIoaGFz
aGVyLCB0dXBsZSwgc3RkOjptYWtlX2luZGV4X3NlcXVlbmNlPHN0ZDo6dHVwbGVfc2l6ZTxUdXBs
ZUxpa2U+Ojp2YWx1ZT4geyB9KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBhZGQo
SGFzaGVyJiBoYXNoZXIsIGNvbnN0IE9wdGlvbmFsPFQ+JiBvcHRpb25hbCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL09wdGlvblNldC5oIGIvU291cmNlL1dURi93dGYvT3B0aW9uU2V0LmgK
aW5kZXggZDk3Y2M3YzQwYzJlNzIzOGIzZGNjNzQ3NWE2YTk4MTNjMTgxZmY1OS4uOTkzZTdiNDk0
NDcxZTYxOTI2NTZlYmI0NDc3MWQ4ZjA1Zjk4ZGQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvT3B0aW9uU2V0LmgKKysrIGIvU291cmNlL1dURi93dGYvT3B0aW9uU2V0LmgKQEAgLTMyLDE4
ICszMiwxMCBAQAogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL01h
dGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCi0vLyBEZXRlY3RpbmcgaW4gQysrIHdo
ZXRoZXIgYSB0eXBlIGlzIGRlZmluZWQsIHBhcnQgMzogU0ZJTkFFIGFuZCBpbmNvbXBsZXRlIHR5
cGVzCi0vLyA8aHR0cHM6Ly9kZXZibG9ncy5taWNyb3NvZnQuY29tL29sZG5ld3RoaW5nLzIwMTkw
NzEwLTAwLz9wPTEwMjY3OD4KLXRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZSA9IHZvaWQ+Ci1j
b25zdGV4cHIgYm9vbCBpc190eXBlX2NvbXBsZXRlX3YgPSBmYWxzZTsKLQotdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KLWNvbnN0ZXhwciBib29sIGlzX3R5cGVfY29tcGxldGVfdjxULCBzdGQ6OnZvaWRf
dDxkZWNsdHlwZShzaXplb2YoVCkpPj4gPSB0cnVlOwotCi0KIHRlbXBsYXRlPHR5cGVuYW1lIEU+
IGNsYXNzIE9wdGlvblNldDsKIAogCkBAIC03NiwxMyArNjgsMTMgQEAgc3RydWN0IE9wdGlvblNl
dFZhbHVlQ2hlY2tlcjxULCBFbnVtVmFsdWVzPEU+PiB7CiB9OwogCiAKLXRlbXBsYXRlPHR5cGVu
YW1lIEUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZSAmJiBpc190eXBl
X2NvbXBsZXRlX3Y8RW51bVRyYWl0czxFPj4+KiA9IG51bGxwdHI+Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBFLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bTxFPjo6dmFsdWUgJiYgSXNUeXBlQ29t
cGxldGU8RW51bVRyYWl0czxFPj4+KiA9IG51bGxwdHI+CiBjb25zdGV4cHIgYm9vbCBpc1ZhbGlk
T3B0aW9uU2V0RW51bShFIGUpCiB7CiAgICAgcmV0dXJuIE9wdGlvblNldFZhbHVlQ2hlY2tlcjxz
dGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+LCB0eXBlbmFtZSBFbnVtVHJhaXRzPEU+Ojp2YWx1ZXM+
Ojppc1ZhbGlkT3B0aW9uU2V0RW51bShzdGF0aWNfY2FzdDxzdGQ6OnVuZGVybHlpbmdfdHlwZV90
PEU+PihlKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3Rk
Ojppc19lbnVtPEU+Ojp2YWx1ZSAmJiAhaXNfdHlwZV9jb21wbGV0ZV92PEVudW1UcmFpdHM8RT4+
PiogPSBudWxscHRyPgordGVtcGxhdGU8dHlwZW5hbWUgRSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6
OmlzX2VudW08RT46OnZhbHVlICYmICFJc1R5cGVDb21wbGV0ZTxFbnVtVHJhaXRzPEU+Pj4qID0g
bnVsbHB0cj4KIGNvbnN0ZXhwciBib29sIGlzVmFsaWRPcHRpb25TZXRFbnVtKEUgZSkKIHsKICAg
ICAvLyBGSVhNRTogUmVtb3ZlIG9uY2UgYWxsIE9wdGlvblNldDw+IGVudW1zIGhhdmUgRW51bVRy
YWl0czw+IGRlZmluZWQuCkBAIC05MCwxNCArODIsMTQgQEAgY29uc3RleHByIGJvb2wgaXNWYWxp
ZE9wdGlvblNldEVudW0oRSBlKQogfQogCiAKLXRlbXBsYXRlPHR5cGVuYW1lIEUsIHN0ZDo6ZW5h
YmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZSAmJiBpc190eXBlX2NvbXBsZXRlX3Y8RW51
bVRyYWl0czxFPj4+KiA9IG51bGxwdHI+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBzdGQ6OmVuYWJs
ZV9pZl90PHN0ZDo6aXNfZW51bTxFPjo6dmFsdWUgJiYgSXNUeXBlQ29tcGxldGU8RW51bVRyYWl0
czxFPj4+KiA9IG51bGxwdHI+CiBjb25zdGV4cHIgdHlwZW5hbWUgT3B0aW9uU2V0PEU+OjpTdG9y
YWdlVHlwZSBtYXNrUmF3VmFsdWUodHlwZW5hbWUgT3B0aW9uU2V0PEU+OjpTdG9yYWdlVHlwZSBy
YXdWYWx1ZSkKIHsKICAgICBhdXRvIGFsbFZhbGlkQml0c1ZhbHVlID0gT3B0aW9uU2V0VmFsdWVD
aGVja2VyPHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4sIHR5cGVuYW1lIEVudW1UcmFpdHM8RT46
OnZhbHVlcz46OmFsbFZhbGlkQml0cygpOwogICAgIHJldHVybiByYXdWYWx1ZSAmIGFsbFZhbGlk
Qml0c1ZhbHVlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFLCBzdGQ6OmVuYWJsZV9pZl90PHN0
ZDo6aXNfZW51bTxFPjo6dmFsdWUgJiYgIWlzX3R5cGVfY29tcGxldGVfdjxFbnVtVHJhaXRzPEU+
Pj4qID0gbnVsbHB0cj4KK3RlbXBsYXRlPHR5cGVuYW1lIEUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3Rk
Ojppc19lbnVtPEU+Ojp2YWx1ZSAmJiAhSXNUeXBlQ29tcGxldGU8RW51bVRyYWl0czxFPj4+KiA9
IG51bGxwdHI+CiBjb25zdGV4cHIgdHlwZW5hbWUgT3B0aW9uU2V0PEU+OjpTdG9yYWdlVHlwZSBt
YXNrUmF3VmFsdWUodHlwZW5hbWUgT3B0aW9uU2V0PEU+OjpTdG9yYWdlVHlwZSByYXdWYWx1ZSkK
IHsKICAgICAvLyBGSVhNRTogUmVtb3ZlIG9uY2UgYWxsIE9wdGlvblNldDw+IGVudW1zIGhhdmUg
RW51bVRyYWl0czw+IGRlZmluZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJF
eHRyYXMuaCBiL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCmluZGV4IDgwNzkzMzk4NGQ4
MTA3ZTg2YjVkNWQxMzkzYmEwNTFkYjQ4MzBjZjkuLjA1Nzk4YmU3MGUzNDA0YWU1ODgyNmZjZjgw
MjEzMDJiNjQ5NjQ0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCkBAIC00MTgsNiArNDE4LDExIEBA
IG5hbWVzcGFjZSBEZXRhaWwKIHRlbXBsYXRlIDx0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4+IGNsYXNz
IEJhc2UsIHR5cGVuYW1lIERlcml2ZWQ+CiBzdHJ1Y3QgSXNCYXNlT2ZUZW1wbGF0ZSA6IHB1Ymxp
YyBzdGQ6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIERldGFpbDo6SXNCYXNlT2ZUZW1wbGF0ZUlt
cGw8QmFzZSwgRGVyaXZlZD46OnZhbHVlPiB7fTsKIAorLy8gQmFzZWQgb24gJ0RldGVjdGluZyBp
biBDKysgd2hldGhlciBhIHR5cGUgaXMgZGVmaW5lZCwgcGFydCAzOiBTRklOQUUgYW5kIGluY29t
cGxldGUgdHlwZXMnCisvLyA8aHR0cHM6Ly9kZXZibG9ncy5taWNyb3NvZnQuY29tL29sZG5ld3Ro
aW5nLzIwMTkwNzEwLTAwLz9wPTEwMjY3OD4KK3RlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZSA9
IHZvaWQ+IGlubGluZSBjb25zdGV4cHIgYm9vbCBJc1R5cGVDb21wbGV0ZSA9IGZhbHNlOwordGVt
cGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIGNvbnN0ZXhwciBib29sIElzVHlwZUNvbXBsZXRlPFQs
IHN0ZDo6dm9pZF90PGRlY2x0eXBlKHNpemVvZihUKSk+PiA9IHRydWU7CisKIHRlbXBsYXRlIDxj
bGFzcyBUPgogc3RydWN0IFJlbW92ZUNWQW5kUmVmZXJlbmNlICB7CiAgICAgdHlwZWRlZiB0eXBl
bmFtZSBzdGQ6OnJlbW92ZV9jdjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8VD46OnR5
cGU+Ojp0eXBlIHR5cGU7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggNjI5NzFmYWNkMjkyMmYyODAzMzQ1NjcwNzEwYTQ3Y2IyYzJiZDE5Yy4uMGNh
YTMxN2Y0NDMxOGE2OGQxODA3YWI3NzhjNmE1ZGRkNmNmZjczZiAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA3
LTExICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZWxhbmRpbmcg
Ik1ha2UgaGFzaGVyIHdvcmsgd2l0aCB0dXBsZS1saWtlIGNsYXNzZXMiCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQyMjQKKworICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0hhc2hlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpnZXQpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6SGFzaGVyQWRkVHVwbGVMaWtlQ2xhc3MzOjpnZXQgY29uc3QpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIFVwZGF0ZSB1c2luZyBuZXcgQ29sb3Ig
Y29uc3RydWN0b3IgZm9yIGV4dGVuZGVkIGNvbG9ycy4KKwogMjAyMC0wNy0xMiAgWXVzdWtlIFN1
enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZvbGxvdy11
cCBhZnRlciByMjY0MjEwCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9IYXNoZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaGVyLmNwcApp
bmRleCAxNzMxOWYyYzE3YWJlYWVjOWUxNTY0ZmYxOWQ3NDcyY2YwOTg1YmI5Li40MTdmNjRiMDJk
MzBjNjhhOWMzNTVkOTc5NzVlZTcyMGJhMjFmNjBhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9IYXNoZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0hhc2hlci5jcHAKQEAgLTIwOCw4ICsyMDgsNiBAQCBURVNUKFdURiwgSGFzaGVyX2N1
c3RvbSkKICAgICBFWFBFQ1RfRVEoMTY1MjM1MjMyMVUsIGNvbXB1dGVIYXNoKEhhc2hlckFkZEN1
c3RvbTIgeyB9KSk7CiB9CiAKLSNpZiAwIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgdHVwbGUt
bGlrZSBjbGFzc2VzLgotCiBzdHJ1Y3QgSGFzaGVyQWRkVHVwbGVMaWtlQ2xhc3MxIHsKICAgICBz
dGQ6OmFycmF5PGludCwgND4gYXJyYXkgeyB7IDEsIDIsIDMsIDQgfSB9OwogICAgIHRlbXBsYXRl
PHNpemVfdCBpPiBpbnQgZ2V0KCkgY29uc3QgeyByZXR1cm4gc3RkOjpnZXQ8aT4oYXJyYXkpOyB9
CkBAIC0yMTksMzQgKzIxNyw0NiBAQCBzdHJ1Y3QgSGFzaGVyQWRkVHVwbGVMaWtlQ2xhc3MyIHsK
ICAgICBzdGQ6OmFycmF5PGludCwgND4gYXJyYXkgeyB7IDEsIDIsIDMsIDQgfSB9OwogfTsKIAor
dGVtcGxhdGU8c2l6ZV90IGk+IGludCBnZXQoY29uc3QgSGFzaGVyQWRkVHVwbGVMaWtlQ2xhc3My
JiBvYmplY3QpCit7CisgICAgcmV0dXJuIG9iamVjdC5hcnJheVtpXTsKK30KKworc3RydWN0IEhh
c2hlckFkZFR1cGxlTGlrZUNsYXNzMyB7CisgICAgaW50IGEgPSAxOworICAgIGRvdWJsZSBiID0g
MjsKKyAgICAKKyAgICB0ZW1wbGF0ZTxzaXplX3QgaT4gZGVjbHR5cGUoYXV0bykgZ2V0KCkgY29u
c3QKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIWkpCisgICAgICAgICAgICByZXR1cm4g
YTsKKyAgICAgICAgaWYgY29uc3RleHByIChpID09IDEpCisgICAgICAgICAgICByZXR1cm4gYjsK
KyAgICB9Cit9OworCiB9CiAKIG5hbWVzcGFjZSBzdGQgewogCi0vLyBGSVhNRTogRG9jdW1lbnRh
dGlvbiBhdCBjcHByZWZlcmVuY2UuY3BwIHNheXMgc3RkOjp0dXBsZV9zaXplIGlzIGEgc3RydWN0
LCBidXQgaXQncyBhIGNsYXNzIGluIGN1cnJlbnQgbWFjT1MgdG9vbHMuCi0vLyBGSVhNRTogSXQn
cyBpbmVsZWdhbnQgdG8gaW5qZWN0IHRoaXMgaW50byB0aGUgc3RkIG5hbWVzcGFjZS4gSXMgdGhh
dCByZWFsbHkgaG93IGEgdHVwbGUtbGlrZSBjbGFzcyBuZWVkcyB0byBiZSBkZWZpbmVkPwotLy8g
RklYTUU6IFRoaXMgaXMgc28gaW5jb252ZW5pZW50IHRoYXQgSSBhbSBub3Qgc3VyZSBpdCdzIHNv
bWV0aGluZyB3ZSB3YW50IHRvIGRvIGZvciBsb3RzIG9mIGNsYXNzZXMgaW4gV2ViS2l0LgotdGVt
cGxhdGU8PiBjbGFzcyBzdGQ6OnR1cGxlX3NpemU8VGVzdFdlYktpdEFQSTo6SGFzaGVyQWRkVHVw
bGVMaWtlQ2xhc3MxPiA6IHB1YmxpYyBzdGQ6OmludGVncmFsX2NvbnN0YW50PHNpemVfdCwgc3Rk
Ojp0dXBsZV9zaXplPGRlY2x0eXBlKFRlc3RXZWJLaXRBUEk6Okhhc2hlckFkZFR1cGxlTGlrZUNs
YXNzMTo6YXJyYXkpPjo6dmFsdWU+IHsgfTsKK3RlbXBsYXRlPD4gY2xhc3MgdHVwbGVfc2l6ZTxU
ZXN0V2ViS2l0QVBJOjpIYXNoZXJBZGRUdXBsZUxpa2VDbGFzczE+IDogcHVibGljIGludGVncmFs
X2NvbnN0YW50PHNpemVfdCwgND4geyB9OwordGVtcGxhdGU8c2l6ZV90IEk+IGNsYXNzIHR1cGxl
X2VsZW1lbnQ8SSwgVGVzdFdlYktpdEFQSTo6SGFzaGVyQWRkVHVwbGVMaWtlQ2xhc3MxPiB7IHB1
YmxpYzogdXNpbmcgdHlwZSA9IGludDsgfTsKIAotdGVtcGxhdGU8PiBjbGFzcyBzdGQ6OnR1cGxl
X3NpemU8VGVzdFdlYktpdEFQSTo6SGFzaGVyQWRkVHVwbGVMaWtlQ2xhc3MyPiA6IHB1YmxpYyBz
dGQ6OmludGVncmFsX2NvbnN0YW50PHNpemVfdCwgc3RkOjp0dXBsZV9zaXplPGRlY2x0eXBlKFRl
c3RXZWJLaXRBUEk6Okhhc2hlckFkZFR1cGxlTGlrZUNsYXNzMjo6YXJyYXkpPjo6dmFsdWU+IHsg
fTsKK3RlbXBsYXRlPD4gY2xhc3MgdHVwbGVfc2l6ZTxUZXN0V2ViS2l0QVBJOjpIYXNoZXJBZGRU
dXBsZUxpa2VDbGFzczI+IDogcHVibGljIGludGVncmFsX2NvbnN0YW50PHNpemVfdCwgND4geyB9
OwordGVtcGxhdGU8c2l6ZV90IEk+IGNsYXNzIHR1cGxlX2VsZW1lbnQ8SSwgVGVzdFdlYktpdEFQ
STo6SGFzaGVyQWRkVHVwbGVMaWtlQ2xhc3MyPiB7IHB1YmxpYzogdXNpbmcgdHlwZSA9IGludDsg
fTsKKwordGVtcGxhdGU8PiBjbGFzcyB0dXBsZV9zaXplPFRlc3RXZWJLaXRBUEk6Okhhc2hlckFk
ZFR1cGxlTGlrZUNsYXNzMz4gOiBwdWJsaWMgaW50ZWdyYWxfY29uc3RhbnQ8c2l6ZV90LCAyPiB7
IH07Cit0ZW1wbGF0ZTxzaXplX3QgST4gY2xhc3MgdHVwbGVfZWxlbWVudDxJLCBUZXN0V2ViS2l0
QVBJOjpIYXNoZXJBZGRUdXBsZUxpa2VDbGFzczM+IHsgcHVibGljOiB1c2luZyB0eXBlID0gZGVj
bHR5cGUoZGVjbHZhbDxUZXN0V2ViS2l0QVBJOjpIYXNoZXJBZGRUdXBsZUxpa2VDbGFzczM+KCku
dGVtcGxhdGUgZ2V0PEk+KCkpOyB9OwogCiB9CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsK
IAotLy8gRklYTUU6IElzIGl0IE9LIGZvciB0aGUgZ2V0IHRvIGJlIGluIHRoZSBjbGFzcydzIG5h
bWVzcGFjZSBhbmQgcmVseSBvbiBhcmd1bWVudC1kZXBlbmRlbnQgbG9va3VwPwotLy8gT3IgZG9l
cyB0aGlzIGZ1bmN0aW9uIHRlbXBsYXRlIG5lZWQgdG8gYmUgbW92ZWQgaW50byB0aGUgc3RkIG5h
bWVzcGFjZSBsaWtlIHRoZSB0dXBsZV9zaXplIHNwZWNpYWxpemF0aW9uPwotdGVtcGxhdGU8c2l6
ZV90IGk+IGludCBnZXQoY29uc3QgSGFzaGVyQWRkVHVwbGVMaWtlQ2xhc3MyJiBvYmplY3QpCi17
Ci0gICAgcmV0dXJuIGdldDxpPihvYmplY3QuYXJyYXkpOwotfQotCiBURVNUKFdURiwgSGFzaGVy
X3R1cGxlTGlrZSkKIHsKICAgICBFWFBFQ1RfRVEoMTY1MjM1MjMyMVUsIGNvbXB1dGVIYXNoKEhh
c2hlckFkZFR1cGxlTGlrZUNsYXNzMSB7IH0pKTsKICAgICBFWFBFQ1RfRVEoMTY1MjM1MjMyMVUs
IGNvbXB1dGVIYXNoKEhhc2hlckFkZFR1cGxlTGlrZUNsYXNzMiB7IH0pKTsKKyAgICBFWFBFQ1Rf
RVEoMzQ4OTYwMTIxNlUsIGNvbXB1dGVIYXNoKEhhc2hlckFkZFR1cGxlTGlrZUNsYXNzMyB7IH0p
KTsKIH0KIAotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
      

    </bug>

</bugzilla>