<?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>173484</bug_id>
          
          <creation_ts>2017-06-16 11:21:04 -0700</creation_ts>
          <short_desc>NavigationAction has too many constructors</short_desc>
          <delta_ts>2017-06-20 15:41:08 -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>WebCore Misc.</component>
          <version>WebKit Local Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=173564</see_also>
          <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="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>japhet</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1320037</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-06-16 11:21:04 -0700</bug_when>
    <thetext>We consider NavigationAction an immutable object once constructed. There are 12 different constructors for instantiating a NavigationAction. To have NavigationAction require more data on construction can require updating 11 of these constructors (-1 for the default constructor) or adding a new constructor. I suggest that we extract all the optional arguments passed to NavigationAction to a struct that is passed to a NavigationAction. This will allow us to reduce the number of constructors from 12 to 2: the default constructor and a constructor that takes a resource request and a struct of details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320038</commentid>
    <comment_count>1</comment_count>
      <attachid>313095</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-06-16 11:23:28 -0700</bug_when>
    <thetext>Created attachment 313095
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320039</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-16 11:25:30 -0700</bug_when>
    <thetext>Attachment 313095 did not pass style-queue:


ERROR: Source/WebCore/loader/NavigationAction.cpp:62:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320052</commentid>
    <comment_count>3</comment_count>
      <attachid>313103</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-06-16 11:42:22 -0700</bug_when>
    <thetext>Created attachment 313103
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320055</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-16 11:45:33 -0700</bug_when>
    <thetext>Attachment 313103 did not pass style-queue:


ERROR: Source/WebCore/loader/NavigationAction.cpp:62:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320059</commentid>
    <comment_count>5</comment_count>
      <attachid>313104</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-06-16 11:50:17 -0700</bug_when>
    <thetext>Created attachment 313104
Patch

Attempt to fix the Windows EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320061</commentid>
    <comment_count>6</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-16 11:52:24 -0700</bug_when>
    <thetext>Attachment 313104 did not pass style-queue:


ERROR: Source/WebCore/loader/NavigationAction.cpp:62:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320210</commentid>
    <comment_count>7</comment_count>
      <attachid>313149</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-06-16 15:43:02 -0700</bug_when>
    <thetext>Created attachment 313149
Patch

Another attempt to fix the Windows EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320211</commentid>
    <comment_count>8</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-16 15:45:19 -0700</bug_when>
    <thetext>Attachment 313149 did not pass style-queue:


ERROR: Source/WebCore/loader/NavigationAction.cpp:62:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320309</commentid>
    <comment_count>9</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-06-16 20:29:47 -0700</bug_when>
    <thetext>Could we not achieve pretty much the same thing by using default values for the parameters?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320345</commentid>
    <comment_count>10</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-06-16 22:37:04 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #9)
&gt; Could we not achieve pretty much the same thing by using default values for
&gt; the parameters?

We can. Will update patch to take this approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320346</commentid>
    <comment_count>11</comment_count>
      <attachid>313188</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-06-16 22:52:38 -0700</bug_when>
    <thetext>Created attachment 313188
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320347</commentid>
    <comment_count>12</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-16 22:54:28 -0700</bug_when>
    <thetext>Attachment 313188 did not pass style-queue:


ERROR: Source/WebCore/loader/NavigationAction.cpp:47:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320869</commentid>
    <comment_count>13</comment_count>
      <attachid>313188</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-06-19 15:37:09 -0700</bug_when>
    <thetext>Comment on attachment 313188
Patch

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

Stylistic comments only.

&gt; Source/WebCore/loader/FrameLoader.cpp:3411
&gt; -            action = NavigationAction(request, loadType, isFormSubmission, event, shouldOpenExternalURLsPolicy);
&gt; +            action = NavigationAction { request, loadType, isFormSubmission, event, shouldOpenExternalURLsPolicy };

&quot;action&quot; is already known to be a NavigationAction object, and therefore the initializer list does not need a type name preceding it.

&gt; Source/WebCore/loader/FrameLoader.cpp:3414
&gt; +            action = NavigationAction { request, NavigationType::FormResubmitted, shouldOpenExternalURLsPolicy, event };

Ditto

&gt; Source/WebCore/loader/FrameLoader.cpp:3703
&gt; +    Page* page = oldPage-&gt;chrome().createWindow(openerFrame, requestWithReferrer, features, NavigationAction { requestWithReferrer.resourceRequest(), NavigationType::Other, shouldOpenExternalURLsPolicy });

Ditto

&gt; Source/WebCore/loader/NavigationAction.cpp:47
&gt; +NavigationAction::NavigationAction(const ResourceRequest&amp; resourceRequest, NavigationType type,
&gt; +    ShouldOpenExternalURLsPolicy shouldOpenExternalURLsPolicy, Event* event, const AtomicString&amp; downloadAttribute)
&gt; +    : m_resourceRequest { resourceRequest }

We don&apos;t normally break up lines like this (the previous line wasn&apos;t nearly too long, IMHO), and this is confusing style-bot on like 47</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320883</commentid>
    <comment_count>14</comment_count>
      <attachid>313188</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-06-19 16:19:43 -0700</bug_when>
    <thetext>Comment on attachment 313188
Patch

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

&gt;&gt; Source/WebCore/loader/FrameLoader.cpp:3411
&gt;&gt; +            action = NavigationAction { request, loadType, isFormSubmission, event, shouldOpenExternalURLsPolicy };
&gt; 
&gt; &quot;action&quot; is already known to be a NavigationAction object, and therefore the initializer list does not need a type name preceding it.

We need to specify the type here because the NavigationAction constructor is marked explicit. It is marked explicit because in the case that only a ResourceRequest object is used to instantiate a NavigationAction it seems error prone to allow implicit conversion to NavigationAction. We could separate out the NavigationAction constructor that takes only a ResourceRequest object as an argument and mark that constructor explicit and remove the keyword explicit from the NavigationAction constructor overload that takes more than one argument.

&gt;&gt; Source/WebCore/loader/NavigationAction.cpp:47
&gt;&gt; +    : m_resourceRequest { resourceRequest }
&gt; 
&gt; We don&apos;t normally break up lines like this (the previous line wasn&apos;t nearly too long, IMHO), and this is confusing style-bot on like 47

Will unwrap this line before landing. We should fix the style checker :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320884</commentid>
    <comment_count>15</comment_count>
      <attachid>313341</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-06-19 16:33:57 -0700</bug_when>
    <thetext>Created attachment 313341
Patch for landing

For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320885</commentid>
    <comment_count>16</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-19 16:36:44 -0700</bug_when>
    <thetext>Attachment 313341 did not pass style-queue:


ERROR: Source/WebCore/loader/NavigationAction.cpp:53:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320894</commentid>
    <comment_count>17</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-06-19 17:04:15 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #14)
&gt; Comment on attachment 313188 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=313188&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/loader/FrameLoader.cpp:3411
&gt; &gt;&gt; +            action = NavigationAction { request, loadType, isFormSubmission, event, shouldOpenExternalURLsPolicy };
&gt; &gt; 
&gt; &gt; &quot;action&quot; is already known to be a NavigationAction object, and therefore the initializer list does not need a type name preceding it.
&gt; 
&gt; We need to specify the type here because the NavigationAction constructor is
&gt; marked explicit. It is marked explicit because in the case that only a
&gt; ResourceRequest object is used to instantiate a NavigationAction it seems
&gt; error prone to allow implicit conversion to NavigationAction. We could
&gt; separate out the NavigationAction constructor that takes only a
&gt; ResourceRequest object as an argument and mark that constructor explicit and
&gt; remove the keyword explicit from the NavigationAction constructor overload
&gt; that takes more than one argument.

It&apos;s fine to have an explicit one - I would request *not* using initializer list construction in that case - That&apos;s very uncommon in the code base (at least in the parts where I spend my time, like the loader)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321146</commentid>
    <comment_count>18</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-06-20 09:58:29 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #17)
&gt; (In reply to Daniel Bates from comment #14)
&gt; &gt; Comment on attachment 313188 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=313188&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/loader/FrameLoader.cpp:3411
&gt; &gt; &gt;&gt; +            action = NavigationAction { request, loadType, isFormSubmission, event, shouldOpenExternalURLsPolicy };
&gt; &gt; &gt; 
&gt; &gt; &gt; &quot;action&quot; is already known to be a NavigationAction object, and therefore the initializer list does not need a type name preceding it.
&gt; &gt; 
&gt; &gt; We need to specify the type here because the NavigationAction constructor is
&gt; &gt; marked explicit. It is marked explicit because in the case that only a
&gt; &gt; ResourceRequest object is used to instantiate a NavigationAction it seems
&gt; &gt; error prone to allow implicit conversion to NavigationAction. We could
&gt; &gt; separate out the NavigationAction constructor that takes only a
&gt; &gt; ResourceRequest object as an argument and mark that constructor explicit and
&gt; &gt; remove the keyword explicit from the NavigationAction constructor overload
&gt; &gt; that takes more than one argument.
&gt; 
&gt; It&apos;s fine to have an explicit one - I would request *not* using initializer
&gt; list construction in that case - That&apos;s very uncommon in the code base (at
&gt; least in the parts where I spend my time, like the loader)

OK. Will keep the explicit NavigationAction constructor that has default values for all of its arguments and will use function style notation instead of C++11 brace initialization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321152</commentid>
    <comment_count>19</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-06-20 10:15:14 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #18)
&gt; (In reply to Brady Eidson from comment #17)
&gt; &gt; (In reply to Daniel Bates from comment #14)
&gt; &gt; &gt; Comment on attachment 313188 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=313188&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt;&gt; Source/WebCore/loader/FrameLoader.cpp:3411
&gt; &gt; &gt; &gt;&gt; +            action = NavigationAction { request, loadType, isFormSubmission, event, shouldOpenExternalURLsPolicy };
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &quot;action&quot; is already known to be a NavigationAction object, and therefore the initializer list does not need a type name preceding it.
&gt; &gt; &gt; 
&gt; &gt; &gt; We need to specify the type here because the NavigationAction constructor is
&gt; &gt; &gt; marked explicit. It is marked explicit because in the case that only a
&gt; &gt; &gt; ResourceRequest object is used to instantiate a NavigationAction it seems
&gt; &gt; &gt; error prone to allow implicit conversion to NavigationAction. We could
&gt; &gt; &gt; separate out the NavigationAction constructor that takes only a
&gt; &gt; &gt; ResourceRequest object as an argument and mark that constructor explicit and
&gt; &gt; &gt; remove the keyword explicit from the NavigationAction constructor overload
&gt; &gt; &gt; that takes more than one argument.
&gt; &gt; 
&gt; &gt; It&apos;s fine to have an explicit one - I would request *not* using initializer
&gt; &gt; list construction in that case - That&apos;s very uncommon in the code base (at
&gt; &gt; least in the parts where I spend my time, like the loader)
&gt; 
&gt; OK. Will keep the explicit NavigationAction constructor that has default
&gt; values for all of its arguments and will use function style notation instead
&gt; of C++11 brace initialization.

From quickly greping our source code using C++11 brace initialization syntax with an explicit type (e.g. NavigationAction { ... }) I see over 200 places in WebCore where we use this style.

I used the following grep command executed inside my top-level WebKit checkout:

grep -R -E -e &apos;(\(|= )\w+ \{&apos; --exclude &apos;ChangeLog*&apos; --exclude &apos;*.pl&apos; --exclude &apos;*.rb&apos; --exclude-dir Source/WebCore/bindings Source/WebCore | wc -l

You can modify this query to see that we also use this syntax in WTF, JavaScriptCore, WebKit, and WebKit2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321155</commentid>
    <comment_count>20</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-06-20 10:21:57 -0700</bug_when>
    <thetext>Committed r218599: &lt;http://trac.webkit.org/changeset/218599&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321263</commentid>
    <comment_count>21</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-06-20 15:41:08 -0700</bug_when>
    <thetext>&lt;rdar://problem/32884936&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313095</attachid>
            <date>2017-06-16 11:23:28 -0700</date>
            <delta_ts>2017-06-16 11:42:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173484-20170616112328.patch</filename>
            <type>text/plain</type>
            <size>26378</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4MzUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWY4NDI4OGE3MzU2Y2Uy
NTNjY2JlMjk3OGJhN2ZjZjA3M2RmYWVkNy4uZDQ0ZGM5YjVjZWYzY2EzZjU0NWRiMzUzMGQ1MjUx
NTJmZjg1ODY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE3LTA2LTE2ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRyYWN0IE5hdmlnYXRp
b25BY3Rpb24gY29uc3RydWN0b3IgYXJndW1lbnRzIGludG8gYSBzdHJ1Y3QKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzQ4NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEEgTmF2aWdhdGlvbkFjdGlvbiBv
YmplY3QgaXMgYW4gaW1tdXRhYmxlIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgdGhlIGRldGFpbHMg
b2YgYQorICAgICAgICBuYXZpZ2F0aW9uLCBpbmNsdWRpbmcgdGhlIHR5cGUgb2YgYSBuYXZpZ2F0
aW9uIChlLmcuIGxpbmsgY2xpY2spLCB3aGF0IHRyaWdnZXJlZAorICAgICAgICB0aGUgbmF2aWdh
dGlvbiwgYW5kIHRoZSBleHRlcm5hbCBVUkwgcG9saWN5IHRvIHVzZSBmb3IgdGhlIG5hdmlnYXRp
b24uIE92ZXIgdGltZQorICAgICAgICB0aGUgbnVtYmVyIG9mIE5hdmlnYXRpb25BY3Rpb24gY29u
c3RydWN0b3Igb3ZlcmxvYWRzIGhhcyBncm93biB0byAxMiB0byBzdXBwb3J0CisgICAgICAgIGRp
ZmZlcmVudCBjb21iaW5hdGlvbnMgb2YgZGV0YWlscy4gVG8gc3VwcG9ydCBpbnN0YW50aWF0aW5n
IGEgTmF2aWdhdGlvbkFjdGlvbgorICAgICAgICB3aXRoIGFkZGl0aW9uYWwgZGV0YWlscyB3ZSBz
aG91bGQgZXh0cmFjdCBhbGwgb2YgdGhlIG9wdGlvbmFsIGFyZ3VtZW50cyB0aGF0IGNhbgorICAg
ICAgICBiZSBwYXNzZWQgdG8gYSBOYXZpZ2F0aW9uQWN0aW9uIGludG8gYSBzdHJ1Y3QgdGhhdCBj
YW4gYmUgcGFzc2VkIHdoZW4gaW5zdGFudGlhdGluZworICAgICAgICBvbmUuCisKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmxvYWRVUkwpOiBVcGRhdGUgY29kZSB0byBwYXNzIGEgTmF2aWdhdGlvbkFjdGlvbjo6RGV0YWls
cyBvYmplY3QKKyAgICAgICAgd2hlbiBpbnN0YW50aWF0aW5nIGEgTmF2aWdhdGlvbkFjdGlvbi4K
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVudExvYWRlcik6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnJlbG9hZCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERvY3VtZW50
SXRlbSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV2luZG93KToKKyAgICAgICAg
KiBsb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHA6IFJlbW92ZWQgYWxsIGNvbnN0cnVjdG9yIG92
ZXJsb2FkcyBleGNlcHQgdGhlIGRlZmF1bHQKKyAgICAgICAgY29uc3RydWN0b3IgYW5kIHRoZSBj
b25zdHJ1Y3RvciB0aGF0IHRha2VzIG9ubHkgYSBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLiBSZW1v
dmUKKyAgICAgICAgdW5uZWNlc3NhcnkgI2luY2x1ZGUgb2YgaGVhZGVyIFNjcmlwdENvbnRyb2xs
ZXIuaC4gSW5jbHVkZSBoZWFkZXIgRXZlbnQuaC4KKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRp
b25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24pOiBBZGRlZC4KKyAgICAgICAgKiBsb2FkZXIvTmF2
aWdhdGlvbkFjdGlvbi5oOiBGb3J3YXJkIGRlY2xhcmUgY2xhc3MgRXZlbnQgYW5kIHJlbW92ZSAj
aW5jbHVkZSBvZgorICAgICAgICBoZWFkZXIgRXZlbnQuaC4gTWFrZSBjb3B5IGNvbnN0cnVjdG9y
LCBjb3B5IGFzc2lnbm1lbnQgb3BlcmF0b3IsIG1vdmUgY29uc3RydWN0b3IsCisgICAgICAgIGFu
ZCBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3Igb3V0LW9mLWxpbmUgdG8gYXZvaWQgdGhlIG5lZWQg
dG8gaW5jbHVkZSBoZWFkZXIgRXZlbnQuaC4KKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Q
b2xpY3kpOiBVcGRhdGUgY29kZSB0byBwYXNzIGEgTmF2aWdhdGlvbkFjdGlvbjo6RGV0YWlscwor
ICAgICAgICBvYmplY3Qgd2hlbiBpbnN0YW50aWF0aW5nIGEgTmF2aWdhdGlvbkFjdGlvbi4KKyAg
ICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpvcGVuTmV3V2luZG93KTogRGl0dG8uCisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZS5jcHA6
IEluY2x1ZGUgaGVhZGVyIEV2ZW50LmguCisgICAgICAgICogcmVwbGF5L1JlcGxheUNvbnRyb2xs
ZXIuY3BwOiBEaXR0by4KKwogMjAxNy0wNi0xNSAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBw
bGUuY29tPgogCiAgICAgICAgIEVuc3VyZSB3ZSBvbmx5IGxvZyBjaGFuZ2VzIHRvIHRoZSBTY3Jp
cHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIgc3VzcGVuZGVkIHN0YXRlIGluIGRlYnVnIGJ1aWxkcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCmluZGV4IGRkNGQ1NmJlODUxMTdkYjQxMjIyMmM5NTJiMzM0ZjY2M2Y1MWJmOTkuLjUz
YjI1MWYzZmUyNWI0OGJmNjk1YTBhZTZlY2I3NTFlYjI3ZWMzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxNy0wNi0xNiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+
CisKKyAgICAgICAgRXh0cmFjdCBOYXZpZ2F0aW9uQWN0aW9uIGNvbnN0cnVjdG9yIGFyZ3VtZW50
cyBpbnRvIGEgc3RydWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzM0ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVcGRhdGUgY29kZSB0byBwYXNzIGEgTmF2aWdhdGlvbkFjdGlvbjo6RGV0YWlscyBv
YmplY3Qgd2hlbiBpbnN0YW50aWF0aW5nIGEgTmF2aWdhdGlvbkFjdGlvbi4KKworICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3I6Om9wZW5Jbk5ld1RhYik6CisKIDIwMTctMDYtMTUgIFdlbnNvbiBIc2llaCAg
PHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgVXNpbmcgLVtXZWJJdGVtUHJvdmlk
ZXJQYXN0ZWJvYXJkIHNldEl0ZW1Qcm92aWRlcnM6XSB0byBzd2FwIG91dCBpdGVtIHByb3ZpZGVy
cyBiZWZvcmUgYSBkcm9wIGJyZWFrcyBpdGVtIHByb3ZpZGVyIGxvYWRpbmcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGFhNGI4MDgyMmJjNGI1ZTM1MzVjNzgwMzY5YmJh
MDRkZWFkOTFiODguLjYzN2JhOWNjNzg0YWMzNTdhMzZiNmVkZjczYjhlMjEyNjI5ZDQyMjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMTI1OCw3ICsxMjU4LDEwIEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVM
b2FkUmVxdWVzdCwgY29uc3QgU3RyaW5nCiAgICAgaWYgKCFpc05hdmlnYXRpb25BbGxvd2VkKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uKHJlcXVlc3Qs
IG5ld0xvYWRUeXBlLCBpc0Zvcm1TdWJtaXNzaW9uLCBldmVudCwgZnJhbWVMb2FkUmVxdWVzdC5z
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCksIGZyYW1lTG9hZFJlcXVlc3QuZG93bmxvYWRB
dHRyaWJ1dGUoKSk7CisgICAgYXV0byBhY3Rpb25EZXRhaWxzID0gTmF2aWdhdGlvbkFjdGlvbjo6
RGV0YWlsczo6Y3JlYXRlRnJvbUxvYWRUeXBlKG5ld0xvYWRUeXBlLCBpc0Zvcm1TdWJtaXNzaW9u
LCBldmVudCk7CisgICAgYWN0aW9uRGV0YWlscy5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
ID0gZnJhbWVMb2FkUmVxdWVzdC5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCk7CisgICAg
YWN0aW9uRGV0YWlscy5kb3dubG9hZEF0dHJpYnV0ZSA9IGZyYW1lTG9hZFJlcXVlc3QuZG93bmxv
YWRBdHRyaWJ1dGUoKTsKKyAgICBOYXZpZ2F0aW9uQWN0aW9uIGFjdGlvbiB7IHJlcXVlc3QsIFdU
Rk1vdmUoYWN0aW9uRGV0YWlscykgfTsKIAogICAgIGlmICghdGFyZ2V0RnJhbWUgJiYgIWZyYW1l
TmFtZS5pc0VtcHR5KCkpIHsKICAgICAgICAgYWN0aW9uID0gYWN0aW9uLmNvcHlXaXRoU2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeShzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9BcHBs
eShtX2ZyYW1lLCBmcmFtZUxvYWRSZXF1ZXN0LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ko
KSkpOwpAQCAtMTMzMyw3ICsxMzM2LDkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChjb25zdCBG
cmFtZUxvYWRSZXF1ZXN0JiBwYXNzZWRSZXF1ZXN0KQogICAgIH0KIAogICAgIGlmIChyZXF1ZXN0
LnNob3VsZENoZWNrTmV3V2luZG93UG9saWN5KCkpIHsKLSAgICAgICAgTmF2aWdhdGlvbkFjdGlv
biBhY3Rpb24ocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwgTmF2aWdhdGlvblR5cGU6Ok90aGVy
LCBwYXNzZWRSZXF1ZXN0LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSk7CisgICAgICAg
IE5hdmlnYXRpb25BY3Rpb246OkRldGFpbHMgYWN0aW9uRGV0YWlsczsKKyAgICAgICAgYWN0aW9u
RGV0YWlscy5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gcGFzc2VkUmVxdWVzdC5zaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCk7CisgICAgICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0
aW9uIHsgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwgV1RGTW92ZShhY3Rpb25EZXRhaWxzKSB9
OwogICAgICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOZXdXaW5kb3dQb2xpY3koYWN0aW9uLCBy
ZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCBudWxscHRyLCByZXF1ZXN0LmZyYW1lTmFtZSgpLCBb
dGhpc10gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRm9ybVN0YXRlKiBmb3JtU3Rh
dGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rp
b24sIGJvb2wgc2hvdWxkQ29udGludWUpIHsKICAgICAgICAgICAgIGNvbnRpbnVlTG9hZEFmdGVy
TmV3V2luZG93UG9saWN5KHJlcXVlc3QsIGZvcm1TdGF0ZSwgZnJhbWVOYW1lLCBhY3Rpb24sIHNo
b3VsZENvbnRpbnVlLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgTmV3RnJhbWVP
cGVuZXJQb2xpY3k6OlN1cHByZXNzKTsKICAgICAgICAgfSk7CkBAIC0xNDM4LDcgKzE0NDMsMTAg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRl
ciogbG9hZGVyLCBGcmFtZUxvYWRUeXBlIHQKIAogICAgIGlmIChzaG91bGRQZXJmb3JtRnJhZ21l
bnROYXZpZ2F0aW9uKGlzRm9ybVN1Ym1pc3Npb24sIGh0dHBNZXRob2QsIHBvbGljeUNoZWNrZXIo
KS5sb2FkVHlwZSgpLCBuZXdVUkwpKSB7CiAgICAgICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4g
b2xkRG9jdW1lbnRMb2FkZXIgPSBtX2RvY3VtZW50TG9hZGVyOwotICAgICAgICBOYXZpZ2F0aW9u
QWN0aW9uIGFjdGlvbihsb2FkZXItPnJlcXVlc3QoKSwgcG9saWN5Q2hlY2tlcigpLmxvYWRUeXBl
KCksIGlzRm9ybVN1Ym1pc3Npb24pOworCisgICAgICAgIEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQg
PSBudWxscHRyOworICAgICAgICBhdXRvIGFjdGlvbkRldGFpbHMgPSBOYXZpZ2F0aW9uQWN0aW9u
OjpEZXRhaWxzOjpjcmVhdGVGcm9tTG9hZFR5cGUocG9saWN5Q2hlY2tlcigpLmxvYWRUeXBlKCks
IGlzRm9ybVN1Ym1pc3Npb24sIHRyaWdnZXJpbmdFdmVudCk7CisgICAgICAgIE5hdmlnYXRpb25B
Y3Rpb24gYWN0aW9uIHsgbG9hZGVyLT5yZXF1ZXN0KCksIFdURk1vdmUoYWN0aW9uRGV0YWlscykg
fTsKIAogICAgICAgICBvbGREb2N1bWVudExvYWRlci0+c2V0VHJpZ2dlcmluZ0FjdGlvbihhY3Rp
b24pOwogICAgICAgICBvbGREb2N1bWVudExvYWRlci0+c2V0TGFzdENoZWNrZWRSZXF1ZXN0KFJl
c291cmNlUmVxdWVzdCgpKTsKQEAgLTE0NTQsOCArMTQ2MiwxMSBAQCB2b2lkIEZyYW1lTG9hZGVy
Ojpsb2FkV2l0aERvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIEZyYW1lTG9h
ZFR5cGUgdAogCiAgICAgcG9saWN5Q2hlY2tlcigpLnN0b3BDaGVjaygpOwogICAgIHNldFBvbGlj
eURvY3VtZW50TG9hZGVyKGxvYWRlcik7Ci0gICAgaWYgKGxvYWRlci0+dHJpZ2dlcmluZ0FjdGlv
bigpLmlzRW1wdHkoKSkKLSAgICAgICAgbG9hZGVyLT5zZXRUcmlnZ2VyaW5nQWN0aW9uKE5hdmln
YXRpb25BY3Rpb24obG9hZGVyLT5yZXF1ZXN0KCksIHBvbGljeUNoZWNrZXIoKS5sb2FkVHlwZSgp
LCBpc0Zvcm1TdWJtaXNzaW9uKSk7CisgICAgaWYgKGxvYWRlci0+dHJpZ2dlcmluZ0FjdGlvbigp
LmlzRW1wdHkoKSkgeworICAgICAgICBFdmVudCogdHJpZ2dlcmluZ0V2ZW50ID0gbnVsbHB0cjsK
KyAgICAgICAgYXV0byBhY3Rpb25EZXRhaWxzID0gTmF2aWdhdGlvbkFjdGlvbjo6RGV0YWlsczo6
Y3JlYXRlRnJvbUxvYWRUeXBlKHBvbGljeUNoZWNrZXIoKS5sb2FkVHlwZSgpLCBpc0Zvcm1TdWJt
aXNzaW9uLCB0cmlnZ2VyaW5nRXZlbnQpOworICAgICAgICBsb2FkZXItPnNldFRyaWdnZXJpbmdB
Y3Rpb24oTmF2aWdhdGlvbkFjdGlvbiB7IGxvYWRlci0+cmVxdWVzdCgpLCBXVEZNb3ZlKGFjdGlv
bkRldGFpbHMpIH0pOworICAgIH0KIAogICAgIGlmIChFbGVtZW50KiBvd25lckVsZW1lbnQgPSBt
X2ZyYW1lLm93bmVyRWxlbWVudCgpKSB7CiAgICAgICAgIC8vIFdlIHNraXAgZGlzcGF0Y2hpbmcg
dGhlIGJlZm9yZWxvYWQgZXZlbnQgaWYgd2UndmUgYWxyZWFkeQpAQCAtMTU5NCw3ICsxNjA1LDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVsb2FkKE9wdGlvblNldDxSZWxvYWRPcHRpb24+IG9wdGlv
bnMpCiAKICAgICAvLyBJZiB3ZSdyZSBhYm91dCB0byByZS1wb3N0LCBzZXQgdXAgYWN0aW9uIHNv
IHRoZSBhcHBsaWNhdGlvbiBjYW4gd2FybiB0aGUgdXNlci4KICAgICBpZiAocmVxdWVzdC5odHRw
TWV0aG9kKCkgPT0gIlBPU1QiKQotICAgICAgICBsb2FkZXItPnNldFRyaWdnZXJpbmdBY3Rpb24o
TmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0LCBOYXZpZ2F0aW9uVHlwZTo6Rm9ybVJlc3VibWl0dGVk
KSk7CisgICAgICAgIGxvYWRlci0+c2V0VHJpZ2dlcmluZ0FjdGlvbihOYXZpZ2F0aW9uQWN0aW9u
IHsgcmVxdWVzdCwgeyBOYXZpZ2F0aW9uVHlwZTo6Rm9ybVJlc3VibWl0dGVkIH0gfSk7CiAKICAg
ICBsb2FkZXItPnNldE92ZXJyaWRlRW5jb2RpbmcobV9kb2N1bWVudExvYWRlci0+b3ZlcnJpZGVF
bmNvZGluZygpKTsKIApAQCAtMjcxOCw3ICsyNzI5LDExIEBAIHZvaWQgRnJhbWVMb2FkZXI6Omxv
YWRQb3N0UmVxdWVzdChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJp
bmcmCiAgICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUuZG9jdW1lbnQoKSkKICAg
ICAgICAgZG9jdW1lbnQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT51cGdyYWRlSW5zZWN1cmVS
ZXF1ZXN0SWZOZWVkZWQod29ya2luZ1Jlc291cmNlUmVxdWVzdCwgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjpJbnNlY3VyZVJlcXVlc3RUeXBlOjpMb2FkKTsKIAotICAgIE5hdmlnYXRpb25BY3Rpb24g
YWN0aW9uKHdvcmtpbmdSZXNvdXJjZVJlcXVlc3QsIGxvYWRUeXBlLCB0cnVlLCBldmVudCwgcmVx
dWVzdC5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCksIHJlcXVlc3QuZG93bmxvYWRBdHRy
aWJ1dGUoKSk7CisgICAgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uID0gdHJ1ZTsKKyAgICBhdXRvIGFj
dGlvbkRldGFpbHMgPSBOYXZpZ2F0aW9uQWN0aW9uOjpEZXRhaWxzOjpjcmVhdGVGcm9tTG9hZFR5
cGUobG9hZFR5cGUsIGlzRm9ybVN1Ym1pc3Npb24sIGV2ZW50KTsKKyAgICBhY3Rpb25EZXRhaWxz
LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSByZXF1ZXN0LnNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3koKTsKKyAgICBhY3Rpb25EZXRhaWxzLmRvd25sb2FkQXR0cmlidXRlID0gcmVx
dWVzdC5kb3dubG9hZEF0dHJpYnV0ZSgpOworICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uIHsg
d29ya2luZ1Jlc291cmNlUmVxdWVzdCwgV1RGTW92ZShhY3Rpb25EZXRhaWxzKSB9OwogCiAgICAg
aWYgKCFmcmFtZU5hbWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFRoZSBzZWFyY2ggZm9yIGEg
dGFyZ2V0IGZyYW1lIGlzIGRvbmUgZWFybGllciBpbiB0aGUgY2FzZSBvZiBmb3JtIHN1Ym1pc3Np
b24uCkBAIC0zMTc0LDcgKzMxODksOSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRB
ZnRlck5ld1dpbmRvd1BvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlcwogICAgICAg
ICBtYWluRnJhbWUtPmRvY3VtZW50KCktPnNldFJlZmVycmVyUG9saWN5KGZyYW1lLT5kb2N1bWVu
dCgpLT5yZWZlcnJlclBvbGljeSgpKTsKICAgICB9CiAKLSAgICBOYXZpZ2F0aW9uQWN0aW9uIG5l
d0FjdGlvbihyZXF1ZXN0LCBhY3Rpb24uc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpKTsK
KyAgICBOYXZpZ2F0aW9uQWN0aW9uOjpEZXRhaWxzIG5ld0FjdGlvbk9wdGlvbnM7CisgICAgbmV3
QWN0aW9uT3B0aW9ucy5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gYWN0aW9uLnNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKTsKKyAgICBOYXZpZ2F0aW9uQWN0aW9uIG5ld0FjdGlv
biB7IHJlcXVlc3QsIFdURk1vdmUobmV3QWN0aW9uT3B0aW9ucykgfTsKICAgICBtYWluRnJhbWUt
PmxvYWRlcigpLmxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0LCBuZXdBY3Rpb24sIExv
Y2tIaXN0b3J5OjpObywgRnJhbWVMb2FkVHlwZTo6U3RhbmRhcmQsIGZvcm1TdGF0ZSwgYWxsb3dO
YXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKIH0KIApAQCAtMzM2MCw3ICszMzc3LDEyIEBAIHZvaWQg
RnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0s
IEZyYW1lTG9hZFR5cGUgbG9hCiAgICAgaWYgKENhY2hlZFBhZ2UqIGNhY2hlZFBhZ2UgPSBQYWdl
Q2FjaGU6OnNpbmdsZXRvbigpLmdldChpdGVtLCBtX2ZyYW1lLnBhZ2UoKSkpIHsKICAgICAgICAg
YXV0byBkb2N1bWVudExvYWRlciA9IGNhY2hlZFBhZ2UtPmRvY3VtZW50TG9hZGVyKCk7CiAgICAg
ICAgIG1fY2xpZW50LnVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVyKCpkb2N1bWVudExvYWRlcik7
Ci0gICAgICAgIGRvY3VtZW50TG9hZGVyLT5zZXRUcmlnZ2VyaW5nQWN0aW9uKE5hdmlnYXRpb25B
Y3Rpb24oZG9jdW1lbnRMb2FkZXItPnJlcXVlc3QoKSwgbG9hZFR5cGUsIGZhbHNlKSk7CisKKyAg
ICAgICAgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uID0gZmFsc2U7CisgICAgICAgIEV2ZW50KiB0cmln
Z2VyaW5nRXZlbnQgPSBudWxscHRyOworICAgICAgICBhdXRvIGFjdGlvbkRldGFpbHMgPSBOYXZp
Z2F0aW9uQWN0aW9uOjpEZXRhaWxzOjpjcmVhdGVGcm9tTG9hZFR5cGUobG9hZFR5cGUsIGlzRm9y
bVN1Ym1pc3Npb24sIHRyaWdnZXJpbmdFdmVudCk7CisKKyAgICAgICAgZG9jdW1lbnRMb2FkZXIt
PnNldFRyaWdnZXJpbmdBY3Rpb24oTmF2aWdhdGlvbkFjdGlvbiB7IGRvY3VtZW50TG9hZGVyLT5y
ZXF1ZXN0KCksIFdURk1vdmUoYWN0aW9uRGV0YWlscykgfSk7CiAgICAgICAgIGRvY3VtZW50TG9h
ZGVyLT5zZXRMYXN0Q2hlY2tlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KCkpOwogICAgICAgICBs
b2FkV2l0aERvY3VtZW50TG9hZGVyKGRvY3VtZW50TG9hZGVyLCBsb2FkVHlwZSwgMCwgQWxsb3dO
YXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMpOwogICAgICAgICByZXR1cm47CkBAIC0zNDA4LDEw
ICszNDMwLDEzIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEl0ZW0o
SGlzdG9yeUl0ZW0mIGl0ZW0sIEZyYW1lTG9hZFR5cGUgbG9hCiAgICAgICAgIAogICAgICAgICBp
ZiAoY2FjaGVMb2FkUG9saWN5ID09IE1heUF0dGVtcHRDYWNoZU9ubHlMb2FkRm9yRm9ybVN1Ym1p
c3Npb25JdGVtKSB7CiAgICAgICAgICAgICByZXF1ZXN0LnNldENhY2hlUG9saWN5KFJldHVybkNh
Y2hlRGF0YURvbnRMb2FkKTsKLSAgICAgICAgICAgIGFjdGlvbiA9IE5hdmlnYXRpb25BY3Rpb24o
cmVxdWVzdCwgbG9hZFR5cGUsIGlzRm9ybVN1Ym1pc3Npb24sIGV2ZW50LCBzaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5KTsKKworICAgICAgICAgICAgYXV0byBhY3Rpb25EZXRhaWxzID0gTmF2
aWdhdGlvbkFjdGlvbjo6RGV0YWlsczo6Y3JlYXRlRnJvbUxvYWRUeXBlKGxvYWRUeXBlLCBpc0Zv
cm1TdWJtaXNzaW9uLCBldmVudCk7CisgICAgICAgICAgICBhY3Rpb25EZXRhaWxzLnNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OworICAg
ICAgICAgICAgYWN0aW9uID0gTmF2aWdhdGlvbkFjdGlvbiB7IHJlcXVlc3QsIFdURk1vdmUoYWN0
aW9uRGV0YWlscykgfTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHJlcXVlc3Quc2V0
Q2FjaGVQb2xpY3koUmV0dXJuQ2FjaGVEYXRhRWxzZUxvYWQpOwotICAgICAgICAgICAgYWN0aW9u
ID0gTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0LCBOYXZpZ2F0aW9uVHlwZTo6Rm9ybVJlc3VibWl0
dGVkLCBldmVudCwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CisgICAgICAgICAgICBh
Y3Rpb24gPSBOYXZpZ2F0aW9uQWN0aW9uIHsgcmVxdWVzdCwgeyBOYXZpZ2F0aW9uVHlwZTo6Rm9y
bVJlc3VibWl0dGVkLCBldmVudCwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSB9IH07CiAg
ICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBzd2l0Y2ggKGxvYWRUeXBlKSB7CkBAIC0z
NDQ1LDcgKzM0NzAsMTAgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERvY3VtZW50
SXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlwZSBsb2EKIAogICAgICAgICBSZXNv
dXJjZVJlcXVlc3QgcmVxdWVzdEZvck9yaWdpbmFsVVJMKHJlcXVlc3QpOwogICAgICAgICByZXF1
ZXN0Rm9yT3JpZ2luYWxVUkwuc2V0VVJMKGl0ZW1PcmlnaW5hbFVSTCk7Ci0gICAgICAgIGFjdGlv
biA9IE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdEZvck9yaWdpbmFsVVJMLCBsb2FkVHlwZSwgaXNG
b3JtU3VibWlzc2lvbiwgZXZlbnQsIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOworCisg
ICAgICAgIGF1dG8gYWN0aW9uRGV0YWlscyA9IE5hdmlnYXRpb25BY3Rpb246OkRldGFpbHM6OmNy
ZWF0ZUZyb21Mb2FkVHlwZShsb2FkVHlwZSwgaXNGb3JtU3VibWlzc2lvbiwgZXZlbnQpOworICAg
ICAgICBhY3Rpb25EZXRhaWxzLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBzaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5OworICAgICAgICBhY3Rpb24gPSBOYXZpZ2F0aW9uQWN0aW9u
IHsgcmVxdWVzdEZvck9yaWdpbmFsVVJMLCBXVEZNb3ZlKGFjdGlvbkRldGFpbHMpIH07CiAgICAg
fQogCiAgICAgbG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKHJlcXVlc3QsIGFjdGlvbiwgTG9ja0hp
c3Rvcnk6Ok5vLCBsb2FkVHlwZSwgMCwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMp
OwpAQCAtMzY5OSw4ICszNzI3LDExIEBAIFJlZlB0cjxGcmFtZT4gY3JlYXRlV2luZG93KEZyYW1l
JiBvcGVuZXJGcmFtZSwgRnJhbWUmIGxvb2t1cEZyYW1lLCBjb25zdCBGcmFtZUxvCiAgICAgaWYg
KCFvbGRQYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IHNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5KG9wZW5lckZyYW1lLCByZXF1ZXN0LnNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3koKSk7Ci0gICAgUGFnZSogcGFnZSA9IG9sZFBhZ2UtPmNocm9tZSgp
LmNyZWF0ZVdpbmRvdyhvcGVuZXJGcmFtZSwgcmVxdWVzdFdpdGhSZWZlcnJlciwgZmVhdHVyZXMs
IE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdFdpdGhSZWZlcnJlci5yZXNvdXJjZVJlcXVlc3QoKSwg
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkpOworICAgIE5hdmlnYXRpb25BY3Rpb246OkRl
dGFpbHMgYWN0aW9uRGV0YWlsczsKKyAgICBhY3Rpb25EZXRhaWxzLnNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kgPSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9BcHBseShvcGVuZXJG
cmFtZSwgcmVxdWVzdC5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkpOworICAgIE5hdmln
YXRpb25BY3Rpb24gYWN0aW9uIHsgcmVxdWVzdFdpdGhSZWZlcnJlci5yZXNvdXJjZVJlcXVlc3Qo
KSwgV1RGTW92ZShhY3Rpb25EZXRhaWxzKSB9OworCisgICAgUGFnZSogcGFnZSA9IG9sZFBhZ2Ut
PmNocm9tZSgpLmNyZWF0ZVdpbmRvdyhvcGVuZXJGcmFtZSwgcmVxdWVzdFdpdGhSZWZlcnJlciwg
ZmVhdHVyZXMsIGFjdGlvbik7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCmluZGV4IDM2
MjRiNDI4M2M4N2JhZDFiZTg2M2U3YzJjM2UxNTdhNTgxYTkxMDQuLmNjOTJlZjBjNGQ0NWE1YWZm
ZTM1YjIxNTBhZTY1Y2RiZTExMzU1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9OYXZpZ2F0aW9uQWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdh
dGlvbkFjdGlvbi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2
LTIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNyArMzEsNiBAQAogCiAjaW5jbHVkZSAiRXZlbnQuaCIK
ICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgotI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00OCw3MCArNDcsMzMgQEAgc3RhdGljIE5hdmln
YXRpb25UeXBlIG5hdmlnYXRpb25UeXBlKEZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSwgYm9v
bCBpc0Zvcm1TdWIKICAgICByZXR1cm4gTmF2aWdhdGlvblR5cGU6Ok90aGVyOwogfQogCi1OYXZp
Z2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVz
b3VyY2VSZXF1ZXN0LCBOYXZpZ2F0aW9uVHlwZSB0eXBlLCBFdmVudCogZXZlbnQsIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgY29uc3Qg
QXRvbWljU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSkKLSAgICA6IG1fcmVzb3VyY2VSZXF1ZXN0
KHJlc291cmNlUmVxdWVzdCkKLSAgICAsIG1fdHlwZSh0eXBlKQotICAgICwgbV9ldmVudChldmVu
dCkKLSAgICAsIG1fdXNlckdlc3R1cmVUb2tlbihVc2VyR2VzdHVyZUluZGljYXRvcjo6Y3VycmVu
dFVzZXJHZXN0dXJlKCkpCi0gICAgLCBtX3Nob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkKLSAgICAsIG1fZG93bmxvYWRBdHRyaWJ1dGUoZG93
bmxvYWRBdHRyaWJ1dGUpCithdXRvIE5hdmlnYXRpb25BY3Rpb246OkRldGFpbHM6OmNyZWF0ZUZy
b21Mb2FkVHlwZShGcmFtZUxvYWRUeXBlIHR5cGUsIGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgRXZl
bnQqIGV2ZW50KSAtPiBEZXRhaWxzCiB7CisgICAgRGV0YWlscyBkZXRhaWxzOworICAgIGRldGFp
bHMubmF2aWdhdGlvblR5cGUgPSBXZWJDb3JlOjpuYXZpZ2F0aW9uVHlwZSh0eXBlLCBpc0Zvcm1T
dWJtaXNzaW9uLCAhIWV2ZW50KTsKKyAgICBkZXRhaWxzLnRyaWdnZXJpbmdFdmVudCA9IGV2ZW50
OworICAgIHJldHVybiBkZXRhaWxzOwogfQogCi1OYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9u
QWN0aW9uKCkKLSAgICA6IE5hdmlnYXRpb25BY3Rpb24oUmVzb3VyY2VSZXF1ZXN0KCksIE5hdmln
YXRpb25UeXBlOjpPdGhlciwgbnVsbHB0ciwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6
U2hvdWxkTm90QWxsb3csIG51bGxBdG9tKQotewotfQotCi1OYXZpZ2F0aW9uQWN0aW9uOjpOYXZp
Z2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQotICAg
IDogTmF2aWdhdGlvbkFjdGlvbihyZXNvdXJjZVJlcXVlc3QsIE5hdmlnYXRpb25UeXBlOjpPdGhl
ciwgbnVsbHB0ciwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cs
IG51bGxBdG9tKQotewotfQotCi1OYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpCi0gICAgOiBOYXZpZ2F0aW9u
QWN0aW9uKHJlc291cmNlUmVxdWVzdCwgTmF2aWdhdGlvblR5cGU6Ok90aGVyLCBudWxscHRyLCBz
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBudWxsQXRvbSkKLXsKLX0KLQotTmF2aWdhdGlv
bkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNl
UmVxdWVzdCwgTmF2aWdhdGlvblR5cGUgdHlwZSkKLSAgICA6IE5hdmlnYXRpb25BY3Rpb24ocmVz
b3VyY2VSZXF1ZXN0LCB0eXBlLCBudWxscHRyLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
OjpTaG91bGROb3RBbGxvdywgbnVsbEF0b20pCi17Ci19Ci0KLU5hdmlnYXRpb25BY3Rpb246Ok5h
dmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIE5h
dmlnYXRpb25UeXBlIHR5cGUsIEV2ZW50KiBldmVudCwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQotICAgIDogTmF2aWdhdGlvbkFjdGlv
bihyZXNvdXJjZVJlcXVlc3QsIHR5cGUsIGV2ZW50LCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5LCBudWxsQXRvbSkKLXsKLX0KK05hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb246
Ok5hdmlnYXRpb25BY3Rpb24oKSA9IGRlZmF1bHQ7CiAKLU5hdmlnYXRpb25BY3Rpb246Ok5hdmln
YXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIEZyYW1l
TG9hZFR5cGUgZnJhbWVMb2FkVHlwZSwgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uKQotICAgIDogTmF2
aWdhdGlvbkFjdGlvbihyZXNvdXJjZVJlcXVlc3QsIG5hdmlnYXRpb25UeXBlKGZyYW1lTG9hZFR5
cGUsIGlzRm9ybVN1Ym1pc3Npb24sIDApLCBudWxscHRyLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5OjpTaG91bGROb3RBbGxvdywgbnVsbEF0b20pCitOYXZpZ2F0aW9uQWN0aW9uOjpOYXZp
Z2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBEZXRh
aWxzJiYgZGV0YWlscykKKyAgICA6IG1fcmVzb3VyY2VSZXF1ZXN0IHsgcmVzb3VyY2VSZXF1ZXN0
IH0KKyAgICAsIG1fdHlwZSB7IFdURk1vdmUoZGV0YWlscy5uYXZpZ2F0aW9uVHlwZSkgfQorICAg
ICwgbV9ldmVudCB7IFdURk1vdmUoZGV0YWlscy50cmlnZ2VyaW5nRXZlbnQpIH0KKyAgICAsIG1f
dXNlckdlc3R1cmVUb2tlbiB7IFVzZXJHZXN0dXJlSW5kaWNhdG9yOjpjdXJyZW50VXNlckdlc3R1
cmUoKSB9CisgICAgLCBtX3Nob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgeyBXVEZNb3ZlKGRl
dGFpbHMuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkgfQorICAgICwgbV9kb3dubG9hZEF0
dHJpYnV0ZSB7IFdURk1vdmUoZGV0YWlscy5kb3dubG9hZEF0dHJpYnV0ZSkgfQogewogfQogCi1O
YXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVzb3VyY2VSZXF1ZXN0LCBOYXZpZ2F0aW9uVHlwZSB0eXBlLCBFdmVudCogZXZlbnQpCi0gICAg
OiBOYXZpZ2F0aW9uQWN0aW9uKHJlc291cmNlUmVxdWVzdCwgdHlwZSwgZXZlbnQsIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBudWxsQXRvbSkKLXsKLX0KK05h
dmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYp
ID0gZGVmYXVsdDsKK05hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oTmF2aWdhdGlv
bkFjdGlvbiYmKSA9IGRlZmF1bHQ7CiAKLU5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rp
b24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIE5hdmlnYXRpb25UeXBl
IHR5cGUsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSkKLSAgICA6IE5hdmlnYXRpb25BY3Rpb24ocmVzb3VyY2VSZXF1ZXN0LCB0eXBlLCBu
dWxscHRyLCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBudWxsQXRvbSkKLXsKLX0KK05h
dmlnYXRpb25BY3Rpb246On5OYXZpZ2F0aW9uQWN0aW9uKCkgPSBkZWZhdWx0OwogCi1OYXZpZ2F0
aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3Vy
Y2VSZXF1ZXN0LCBGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUsIGJvb2wgaXNGb3JtU3VibWlz
c2lvbiwgRXZlbnQqIGV2ZW50KQotICAgIDogTmF2aWdhdGlvbkFjdGlvbihyZXNvdXJjZVJlcXVl
c3QsIG5hdmlnYXRpb25UeXBlKGZyYW1lTG9hZFR5cGUsIGlzRm9ybVN1Ym1pc3Npb24sIGV2ZW50
KSwgZXZlbnQsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBu
dWxsQXRvbSkKLXsKLX0KLQotTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgRnJhbWVMb2FkVHlwZSBmcmFtZUxv
YWRUeXBlLCBib29sIGlzRm9ybVN1Ym1pc3Npb24sIEV2ZW50KiBldmVudCwgU2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQotICAgIDogTmF2
aWdhdGlvbkFjdGlvbihyZXNvdXJjZVJlcXVlc3QsIG5hdmlnYXRpb25UeXBlKGZyYW1lTG9hZFR5
cGUsIGlzRm9ybVN1Ym1pc3Npb24sIGV2ZW50KSwgZXZlbnQsIHNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3ksIG51bGxBdG9tKQotewotfQotCi1OYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9u
QWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBGcmFtZUxvYWRU
eXBlIGZyYW1lTG9hZFR5cGUsIGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgRXZlbnQqIGV2ZW50LCBT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ks
IGNvbnN0IEF0b21pY1N0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUpCi0gICAgOiBOYXZpZ2F0aW9u
QWN0aW9uKHJlc291cmNlUmVxdWVzdCwgbmF2aWdhdGlvblR5cGUoZnJhbWVMb2FkVHlwZSwgaXNG
b3JtU3VibWlzc2lvbiwgZXZlbnQpLCBldmVudCwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSwgZG93bmxvYWRBdHRyaWJ1dGUpCi17Ci19CitOYXZpZ2F0aW9uQWN0aW9uJiBOYXZpZ2F0aW9u
QWN0aW9uOjpvcGVyYXRvcj0oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpID0gZGVmYXVsdDsKK05h
dmlnYXRpb25BY3Rpb24mIE5hdmlnYXRpb25BY3Rpb246Om9wZXJhdG9yPShOYXZpZ2F0aW9uQWN0
aW9uJiYpID0gZGVmYXVsdDsKIAogTmF2aWdhdGlvbkFjdGlvbiBOYXZpZ2F0aW9uQWN0aW9uOjpj
b3B5V2l0aFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koU2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KSBjb25zdAogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmgKaW5kZXggMzcwMmRjNTUwZjI2NzBjOTczZDBl
MjQ2ZjUzYTQ0ZmJjODM1ODhmZi4uMmM1ODcyNGM5Y2E4ZTEzNjI1YTkxNWYyY2UzYTU4YTM5ODM1
YTU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE2IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4
LDMwICsyOCwzNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5j
bHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlJl
c291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBFdmVu
dDsKKwogY2xhc3MgTmF2aWdhdGlvbkFjdGlvbiB7CiBwdWJsaWM6CisgICAgc3RydWN0IERldGFp
bHMgeworICAgICAgICBOYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZSB7IE5hdmlnYXRpb25U
eXBlOjpPdGhlciB9OworICAgICAgICBFdmVudCogdHJpZ2dlcmluZ0V2ZW50IHsgbnVsbHB0ciB9
OworICAgICAgICBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kgeyBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxv
dyB9OworICAgICAgICBBdG9taWNTdHJpbmcgZG93bmxvYWRBdHRyaWJ1dGUgeyBudWxsQXRvbSB9
OworCisgICAgICAgIHN0YXRpYyBEZXRhaWxzIGNyZWF0ZUZyb21Mb2FkVHlwZShGcmFtZUxvYWRU
eXBlLCBib29sIGlzRm9ybVN1Ym1pc3Npb24sIEV2ZW50Kik7CisgICAgfTsKKworICAgIC8vIEZJ
WE1FOiBSZW1vdmUgdGhlIGVtcHR5IGNvbnN0cnVjdG9yIGFuZCBoYXZlIGNhbGxlcnMgdXNlIHN0
ZDo6b3B0aW9uYWw8TmF2aWdhdGlvbkFjdGlvbj4uCiAgICAgV0VCQ09SRV9FWFBPUlQgTmF2aWdh
dGlvbkFjdGlvbigpOwotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IE5hdmlnYXRpb25BY3Rp
b24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgTmF2aWdhdGlv
bkFjdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBOYXZpZ2F0aW9uVHlwZSk7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgTmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGcmFt
ZUxvYWRUeXBlLCBib29sIGlzRm9ybVN1Ym1pc3Npb24pOwotCi0gICAgTmF2aWdhdGlvbkFjdGlv
bihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsK
LSAgICBOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE5hdmlnYXRpb25U
eXBlLCBFdmVudCopOwotICAgIE5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgTmF2aWdhdGlvblR5cGUsIEV2ZW50KiwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7
Ci0gICAgTmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBOYXZpZ2F0aW9u
VHlwZSwgRXZlbnQqLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBjb25zdCBBdG9taWNT
dHJpbmcmIGRvd25sb2FkQXR0cmlidXRlKTsKLSAgICBOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIE5hdmlnYXRpb25UeXBlLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5KTsKLSAgICBOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZyYW1l
TG9hZFR5cGUsIGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgRXZlbnQqKTsKLSAgICBOYXZpZ2F0aW9u
QWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZyYW1lTG9hZFR5cGUsIGJvb2wgaXNGb3Jt
U3VibWlzc2lvbiwgRXZlbnQqLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKLSAgICBO
YXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZyYW1lTG9hZFR5cGUsIGJv
b2wgaXNGb3JtU3VibWlzc2lvbiwgRXZlbnQqLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
LCBjb25zdCBBdG9taWNTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIERl
dGFpbHMmJik7CisKKyAgICBOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24m
KTsKKyAgICBOYXZpZ2F0aW9uQWN0aW9uKE5hdmlnYXRpb25BY3Rpb24mJik7CisKKyAgICBXRUJD
T1JFX0VYUE9SVCB+TmF2aWdhdGlvbkFjdGlvbigpOworCisgICAgTmF2aWdhdGlvbkFjdGlvbiYg
b3BlcmF0b3I9KGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mKTsKKyAgICBOYXZpZ2F0aW9uQWN0aW9u
JiBvcGVyYXRvcj0oTmF2aWdhdGlvbkFjdGlvbiYmKTsKIAogICAgIE5hdmlnYXRpb25BY3Rpb24g
Y29weVdpdGhTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KFNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3kpIGNvbnN0OwogCkBAIC03Niw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRy
PEV2ZW50PiBtX2V2ZW50OwogICAgIFJlZlB0cjxVc2VyR2VzdHVyZVRva2VuPiBtX3VzZXJHZXN0
dXJlVG9rZW47CiAgICAgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBtX3Nob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3kgeyBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRO
b3RBbGxvdyB9OwotICAgIEF0b21pY1N0cmluZyBtX2Rvd25sb2FkQXR0cmlidXRlOworICAgIEF0
b21pY1N0cmluZyBtX2Rvd25sb2FkQXR0cmlidXRlIHsgbnVsbEF0b20gfTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xp
Y3lDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcApp
bmRleCA0ZWFlN2I2MmI2ZWRiMjIzMGUzODA3NTA5ZTI2NjFlYmZmZWUyN2IwLi42MjIwMmVmMGE2
ZmYxNjUyNjE2MmY4MDY0ZjhkNWE3NTcyYjk5YmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Bv
bGljeUNoZWNrZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiQ29udGVudFNlY3Vy
aXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRM
b2FkZXIuaCIKKyNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNp
bmNsdWRlICJGb3JtU3RhdGUuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtODMsNyArODQsOSBA
QCB2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgZAogewogICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9u
ID0gbG9hZGVyLT50cmlnZ2VyaW5nQWN0aW9uKCk7CiAgICAgaWYgKGFjdGlvbi5pc0VtcHR5KCkp
IHsKLSAgICAgICAgYWN0aW9uID0gTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0LCBOYXZpZ2F0aW9u
VHlwZTo6T3RoZXIsIGxvYWRlci0+c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFn
YXRlKCkpOworICAgICAgICBOYXZpZ2F0aW9uQWN0aW9uOjpEZXRhaWxzIGFjdGlvbkRldGFpbHM7
CisgICAgICAgIGFjdGlvbkRldGFpbHMuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IGxv
YWRlci0+c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCk7CisgICAgICAg
IGFjdGlvbiA9IE5hdmlnYXRpb25BY3Rpb24geyByZXF1ZXN0LCBXVEZNb3ZlKGFjdGlvbkRldGFp
bHMpIH07CiAgICAgICAgIGxvYWRlci0+c2V0VHJpZ2dlcmluZ0FjdGlvbihhY3Rpb24pOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCmlu
ZGV4IDY4YjEyZWJmNDdkYmM0MWZmMDliMzRmNmNmNzgwMDZiYWE5NjU2NDAuLjFlNjYwNjE5YzRl
OGRjMDQxZDRlZWNhNjNhMmVkZTQzYTg2NjgxZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKQEAgLTE5MSw3ICsxOTEsOCBAQCBzdGF0aWMgdm9p
ZCBvcGVuTmV3V2luZG93KGNvbnN0IFVSTCYgdXJsVG9Mb2FkLCBGcmFtZSYgZnJhbWUsIFNob3Vs
ZE9wZW5FeHRlcm5hbAogCiAgICAgRnJhbWVMb2FkUmVxdWVzdCByZXF1ZXN0KGZyYW1lLmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIFJlc291cmNlUmVxdWVzdCh1cmxUb0xvYWQsIGZyYW1l
LmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSksIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tG
b3J3YXJkTGlzdDo6Tm8sIE1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFs
aWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6OlN1cHByZXNzLCBzaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5KTsKIAotICAgIFBhZ2UqIG5ld1BhZ2UgPSBvbGRQYWdlLT5jaHJvbWUo
KS5jcmVhdGVXaW5kb3coZnJhbWUsIHJlcXVlc3QsIFdpbmRvd0ZlYXR1cmVzKCksIE5hdmlnYXRp
b25BY3Rpb24ocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSkpOworICAgIC8vIEZJWE1FOiBTaG91
bGQgdGhlIE5hdmlnYXRpb25BY3Rpb24gc3BlY2lmeSB0aGUgb3BlbiBleHRlcm5hbCBVUkwgcG9s
aWN5IChzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KT8KKyAgICBQYWdlKiBuZXdQYWdlID0g
b2xkUGFnZS0+Y2hyb21lKCkuY3JlYXRlV2luZG93KGZyYW1lLCByZXF1ZXN0LCBXaW5kb3dGZWF0
dXJlcygpLCBOYXZpZ2F0aW9uQWN0aW9uIHsgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwgeyB9
IH0pOwogICAgIGlmICghbmV3UGFnZSkKICAgICAgICAgcmV0dXJuOwogICAgIG5ld1BhZ2UtPmNo
cm9tZSgpLnNob3coKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFu
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAKaW5kZXggYzM1YjBl
ZmEwYzJlMzQ3MDU2ZmQ1MTY3MDBmNWI3YzA3ZmRmZWFlNC4uNGZhNTZlODU2M2E5NWE3YjBmZWU0
ZjhkZDk2Yjk3M2Q4ZDZjNDkxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJm
b3JtYW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAKQEAg
LTM3LDYgKzM3LDcgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnRMb2FkZXIuaCIKKyNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIK
ICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIlBlcmZvcm1hbmNlRW50cnkuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250cm9sbGVyLmNwcAppbmRleCBiZjM1OGRjNmFiNDg1
MDk4NjQ1MDFhMDViNmY3M2Q4YjBhYzk5Mjg5Li5jMDFiMzhiZjIyODg1NWY3ZWQyNTZjMDJmODU5
NjJiZDIwMWI2MDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIu
Y3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQ2FwdHVyaW5nSW5wdXRDdXJzb3IuaCIK
ICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgorI2lu
Y2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVRyZWUu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKaW5kZXggNTBjYWFh
NDdkMmMyMGE2MWFhOTk2M2Q5OGQ2NzYxNmY4ZjY0MTI1Mi4uZGQ5MTA3ZmEzODZlY2FlNmYzMmNk
N2E3NTFjNWU2Y2YzZTc2ZDQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKQEAgLTE0OCw3ICsxNDgsOCBAQCB2b2lkIFdlYklu
c3BlY3Rvcjo6b3BlbkluTmV3VGFiKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogICAgIEZyYW1l
JiBpbnNwZWN0ZWRNYWluRnJhbWUgPSBpbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKTsKICAgICBG
cmFtZUxvYWRSZXF1ZXN0IHJlcXVlc3QoaW5zcGVjdGVkTWFpbkZyYW1lLmRvY3VtZW50KCktPnNl
Y3VyaXR5T3JpZ2luKCksIFJlc291cmNlUmVxdWVzdCh1cmxTdHJpbmcpLCAiX2JsYW5rIiwgTG9j
a0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIs
IEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6
QWxsb3csIFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCwgU2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOwogCi0gICAgUGFnZSogbmV3UGFnZSA9IGluc3Bl
Y3RlZFBhZ2UtPmNocm9tZSgpLmNyZWF0ZVdpbmRvdyhpbnNwZWN0ZWRNYWluRnJhbWUsIHJlcXVl
c3QsIFdpbmRvd0ZlYXR1cmVzKCksIE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdC5yZXNvdXJjZVJl
cXVlc3QoKSwgTmF2aWdhdGlvblR5cGU6OkxpbmtDbGlja2VkKSk7CisgICAgTmF2aWdhdGlvbkFj
dGlvbiBhY3Rpb24geyByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCB7IE5hdmlnYXRpb25UeXBl
OjpMaW5rQ2xpY2tlZCB9IH07CisgICAgUGFnZSogbmV3UGFnZSA9IGluc3BlY3RlZFBhZ2UtPmNo
cm9tZSgpLmNyZWF0ZVdpbmRvdyhpbnNwZWN0ZWRNYWluRnJhbWUsIHJlcXVlc3QsIHsgfSwgYWN0
aW9uKTsKICAgICBpZiAoIW5ld1BhZ2UpCiAgICAgICAgIHJldHVybjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313103</attachid>
            <date>2017-06-16 11:42:22 -0700</date>
            <delta_ts>2017-06-16 11:50:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173484-20170616114222.patch</filename>
            <type>text/plain</type>
            <size>26419</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4Mzk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzZjN2M3OTkzNjI5NTdj
N2I4ZDg2ZDUyMWQzMmYyMTU4ZjI5NzI2Zi4uOTNjMDBiODFlYjYxOTY2NDI1N2NiNWEwNjg3YzUz
N2JhZGIzY2I0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE3LTA2LTE2ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRyYWN0IE5hdmlnYXRp
b25BY3Rpb24gY29uc3RydWN0b3IgYXJndW1lbnRzIGludG8gYSBzdHJ1Y3QKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzQ4NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEEgTmF2aWdhdGlvbkFjdGlvbiBv
YmplY3QgaXMgYW4gaW1tdXRhYmxlIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgdGhlIGRldGFpbHMg
b2YgYQorICAgICAgICBuYXZpZ2F0aW9uLCBpbmNsdWRpbmcgdGhlIHR5cGUgb2YgYSBuYXZpZ2F0
aW9uIChlLmcuIGxpbmsgY2xpY2spLCB3aGF0IHRyaWdnZXJlZAorICAgICAgICB0aGUgbmF2aWdh
dGlvbiwgYW5kIHRoZSBleHRlcm5hbCBVUkwgcG9saWN5IHRvIHVzZSBmb3IgdGhlIG5hdmlnYXRp
b24uIE92ZXIgdGltZQorICAgICAgICB0aGUgbnVtYmVyIG9mIE5hdmlnYXRpb25BY3Rpb24gY29u
c3RydWN0b3Igb3ZlcmxvYWRzIGhhcyBncm93biB0byAxMiB0byBzdXBwb3J0CisgICAgICAgIGRp
ZmZlcmVudCBjb21iaW5hdGlvbnMgb2YgZGV0YWlscy4gVG8gc3VwcG9ydCBpbnN0YW50aWF0aW5n
IGEgTmF2aWdhdGlvbkFjdGlvbgorICAgICAgICB3aXRoIGFkZGl0aW9uYWwgZGV0YWlscyB3ZSBz
aG91bGQgZXh0cmFjdCBhbGwgb2YgdGhlIG9wdGlvbmFsIGFyZ3VtZW50cyB0aGF0IGNhbgorICAg
ICAgICBiZSBwYXNzZWQgdG8gYSBOYXZpZ2F0aW9uQWN0aW9uIGludG8gYSBzdHJ1Y3QgdGhhdCBj
YW4gYmUgcGFzc2VkIHdoZW4gaW5zdGFudGlhdGluZworICAgICAgICBvbmUuCisKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmxvYWRVUkwpOiBVcGRhdGUgY29kZSB0byBwYXNzIGEgTmF2aWdhdGlvbkFjdGlvbjo6RGV0YWls
cyBvYmplY3QKKyAgICAgICAgd2hlbiBpbnN0YW50aWF0aW5nIGEgTmF2aWdhdGlvbkFjdGlvbi4K
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVudExvYWRlcik6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnJlbG9hZCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERvY3VtZW50
SXRlbSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV2luZG93KToKKyAgICAgICAg
KiBsb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHA6IFJlbW92ZWQgYWxsIGNvbnN0cnVjdG9yIG92
ZXJsb2FkcyBleGNlcHQgdGhlIGRlZmF1bHQKKyAgICAgICAgY29uc3RydWN0b3IgYW5kIHRoZSBj
b25zdHJ1Y3RvciB0aGF0IHRha2VzIG9ubHkgYSBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLiBSZW1v
dmUKKyAgICAgICAgdW5uZWNlc3NhcnkgI2luY2x1ZGUgb2YgaGVhZGVyIFNjcmlwdENvbnRyb2xs
ZXIuaC4gSW5jbHVkZSBoZWFkZXIgRXZlbnQuaC4KKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRp
b25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24pOiBBZGRlZC4KKyAgICAgICAgKiBsb2FkZXIvTmF2
aWdhdGlvbkFjdGlvbi5oOiBGb3J3YXJkIGRlY2xhcmUgY2xhc3MgRXZlbnQgYW5kIHJlbW92ZSAj
aW5jbHVkZSBvZgorICAgICAgICBoZWFkZXIgRXZlbnQuaC4gTWFrZSBjb3B5IGNvbnN0cnVjdG9y
LCBjb3B5IGFzc2lnbm1lbnQgb3BlcmF0b3IsIG1vdmUgY29uc3RydWN0b3IsCisgICAgICAgIGFu
ZCBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3Igb3V0LW9mLWxpbmUgdG8gYXZvaWQgdGhlIG5lZWQg
dG8gaW5jbHVkZSBoZWFkZXIgRXZlbnQuaC4KKyAgICAgICAgRXhwb3J0IHRoZSBjb3B5IGNvbnN0
cnVjdG9yIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgZnJvbSBXZWJLaXQgb24gdGhlIEFwcGxlIFdp
bmRvd3MgcG9ydC4KKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3kpOiBVcGRhdGUg
Y29kZSB0byBwYXNzIGEgTmF2aWdhdGlvbkFjdGlvbjo6RGV0YWlscworICAgICAgICBvYmplY3Qg
d2hlbiBpbnN0YW50aWF0aW5nIGEgTmF2aWdhdGlvbkFjdGlvbi4KKyAgICAgICAgKiBwYWdlL0Nv
bnRleHRNZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVuTmV3V2luZG93
KTogRGl0dG8uCisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZS5jcHA6IEluY2x1ZGUgaGVhZGVy
IEV2ZW50LmguCisgICAgICAgICogcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwOiBEaXR0by4K
KwogMjAxNy0wNi0xNiAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAg
ICAgIEJhY2tkcm9wIGJsdXIgbWlzc2luZyBpbiBtZWRpYSBjb250cm9scyBiYXIgb24gU2llcnJh
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggZTdjZGZkMGExYjM5NTY5ZWNjZmUyNTMyMGQ3NDQ0YjlkNWNhOGI4Mi4u
NDIzZDkxYWM0ZTZhYjU2OTgxNTE4OGFjYjM2ZGI2N2FjM2IyMTkwMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSw1ICsxLDE3IEBACiAyMDE3LTA2LTE2ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNv
bT4KIAorICAgICAgICBFeHRyYWN0IE5hdmlnYXRpb25BY3Rpb24gY29uc3RydWN0b3IgYXJndW1l
bnRzIGludG8gYSBzdHJ1Y3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3MzQ4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFVwZGF0ZSBjb2RlIHRvIHBhc3MgYSBOYXZpZ2F0aW9uQWN0aW9uOjpEZXRhaWxz
IG9iamVjdCB3aGVuIGluc3RhbnRpYXRpbmcgYSBOYXZpZ2F0aW9uQWN0aW9uLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3Rvcjo6b3BlbkluTmV3VGFiKToKKworMjAxNy0wNi0xNiAgRGFuaWVsIEJhdGVz
ICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKICAgICAgICAgVXNlIHRoZSB0ZXJtIGljb24gaW5zdGVh
ZCBvZiBmYXZpY29uCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzM0MDAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggYWE0
YjgwODIyYmM0YjVlMzUzNWM3ODAzNjliYmEwNGRlYWQ5MWI4OC4uNjM3YmE5Y2M3ODRhYzM1N2Ez
NmI2ZWRmNzNiOGUyMTI2MjlkNDIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCkBAIC0xMjU4LDcgKzEyNTgsMTAgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChjb25z
dCBGcmFtZUxvYWRSZXF1ZXN0JiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBTdHJpbmcKICAgICBp
ZiAoIWlzTmF2aWdhdGlvbkFsbG93ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTmF2aWdh
dGlvbkFjdGlvbiBhY3Rpb24ocmVxdWVzdCwgbmV3TG9hZFR5cGUsIGlzRm9ybVN1Ym1pc3Npb24s
IGV2ZW50LCBmcmFtZUxvYWRSZXF1ZXN0LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSwg
ZnJhbWVMb2FkUmVxdWVzdC5kb3dubG9hZEF0dHJpYnV0ZSgpKTsKKyAgICBhdXRvIGFjdGlvbkRl
dGFpbHMgPSBOYXZpZ2F0aW9uQWN0aW9uOjpEZXRhaWxzOjpjcmVhdGVGcm9tTG9hZFR5cGUobmV3
TG9hZFR5cGUsIGlzRm9ybVN1Ym1pc3Npb24sIGV2ZW50KTsKKyAgICBhY3Rpb25EZXRhaWxzLnNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBmcmFtZUxvYWRSZXF1ZXN0LnNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3koKTsKKyAgICBhY3Rpb25EZXRhaWxzLmRvd25sb2FkQXR0cmlidXRl
ID0gZnJhbWVMb2FkUmVxdWVzdC5kb3dubG9hZEF0dHJpYnV0ZSgpOworICAgIE5hdmlnYXRpb25B
Y3Rpb24gYWN0aW9uIHsgcmVxdWVzdCwgV1RGTW92ZShhY3Rpb25EZXRhaWxzKSB9OwogCiAgICAg
aWYgKCF0YXJnZXRGcmFtZSAmJiAhZnJhbWVOYW1lLmlzRW1wdHkoKSkgewogICAgICAgICBhY3Rp
b24gPSBhY3Rpb24uY29weVdpdGhTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KHNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5KG1fZnJhbWUsIGZyYW1lTG9hZFJlcXVlc3Quc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpKSk7CkBAIC0xMzMzLDcgKzEzMzYsOSBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpsb2FkKGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHBhc3NlZFJlcXVlc3Qp
CiAgICAgfQogCiAgICAgaWYgKHJlcXVlc3Quc2hvdWxkQ2hlY2tOZXdXaW5kb3dQb2xpY3koKSkg
ewotICAgICAgICBOYXZpZ2F0aW9uQWN0aW9uIGFjdGlvbihyZXF1ZXN0LnJlc291cmNlUmVxdWVz
dCgpLCBOYXZpZ2F0aW9uVHlwZTo6T3RoZXIsIHBhc3NlZFJlcXVlc3Quc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSgpKTsKKyAgICAgICAgTmF2aWdhdGlvbkFjdGlvbjo6RGV0YWlscyBhY3Rp
b25EZXRhaWxzOworICAgICAgICBhY3Rpb25EZXRhaWxzLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kgPSBwYXNzZWRSZXF1ZXN0LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKTsKKyAg
ICAgICAgTmF2aWdhdGlvbkFjdGlvbiBhY3Rpb24geyByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgp
LCBXVEZNb3ZlKGFjdGlvbkRldGFpbHMpIH07CiAgICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVj
a05ld1dpbmRvd1BvbGljeShhY3Rpb24sIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIG51bGxw
dHIsIHJlcXVlc3QuZnJhbWVOYW1lKCksIFt0aGlzXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNv
bnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgYm9vbCBzaG91bGRDb250aW51ZSkgewogICAg
ICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kocmVxdWVzdCwgZm9ybVN0
YXRlLCBmcmFtZU5hbWUsIGFjdGlvbiwgc2hvdWxkQ29udGludWUsIEFsbG93TmF2aWdhdGlvblRv
SW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6U3VwcHJlc3MpOwogICAgICAg
ICB9KTsKQEAgLTE0MzgsNyArMTQ0MywxMCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0aERv
Y3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIEZyYW1lTG9hZFR5cGUgdAogCiAg
ICAgaWYgKHNob3VsZFBlcmZvcm1GcmFnbWVudE5hdmlnYXRpb24oaXNGb3JtU3VibWlzc2lvbiwg
aHR0cE1ldGhvZCwgcG9saWN5Q2hlY2tlcigpLmxvYWRUeXBlKCksIG5ld1VSTCkpIHsKICAgICAg
ICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBvbGREb2N1bWVudExvYWRlciA9IG1fZG9jdW1lbnRM
b2FkZXI7Ci0gICAgICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uKGxvYWRlci0+cmVxdWVzdCgp
LCBwb2xpY3lDaGVja2VyKCkubG9hZFR5cGUoKSwgaXNGb3JtU3VibWlzc2lvbik7CisKKyAgICAg
ICAgRXZlbnQqIHRyaWdnZXJpbmdFdmVudCA9IG51bGxwdHI7CisgICAgICAgIGF1dG8gYWN0aW9u
RGV0YWlscyA9IE5hdmlnYXRpb25BY3Rpb246OkRldGFpbHM6OmNyZWF0ZUZyb21Mb2FkVHlwZShw
b2xpY3lDaGVja2VyKCkubG9hZFR5cGUoKSwgaXNGb3JtU3VibWlzc2lvbiwgdHJpZ2dlcmluZ0V2
ZW50KTsKKyAgICAgICAgTmF2aWdhdGlvbkFjdGlvbiBhY3Rpb24geyBsb2FkZXItPnJlcXVlc3Qo
KSwgV1RGTW92ZShhY3Rpb25EZXRhaWxzKSB9OwogCiAgICAgICAgIG9sZERvY3VtZW50TG9hZGVy
LT5zZXRUcmlnZ2VyaW5nQWN0aW9uKGFjdGlvbik7CiAgICAgICAgIG9sZERvY3VtZW50TG9hZGVy
LT5zZXRMYXN0Q2hlY2tlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KCkpOwpAQCAtMTQ1NCw4ICsx
NDYyLDExIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIoRG9jdW1l
bnRMb2FkZXIqIGxvYWRlciwgRnJhbWVMb2FkVHlwZSB0CiAKICAgICBwb2xpY3lDaGVja2VyKCku
c3RvcENoZWNrKCk7CiAgICAgc2V0UG9saWN5RG9jdW1lbnRMb2FkZXIobG9hZGVyKTsKLSAgICBp
ZiAobG9hZGVyLT50cmlnZ2VyaW5nQWN0aW9uKCkuaXNFbXB0eSgpKQotICAgICAgICBsb2FkZXIt
PnNldFRyaWdnZXJpbmdBY3Rpb24oTmF2aWdhdGlvbkFjdGlvbihsb2FkZXItPnJlcXVlc3QoKSwg
cG9saWN5Q2hlY2tlcigpLmxvYWRUeXBlKCksIGlzRm9ybVN1Ym1pc3Npb24pKTsKKyAgICBpZiAo
bG9hZGVyLT50cmlnZ2VyaW5nQWN0aW9uKCkuaXNFbXB0eSgpKSB7CisgICAgICAgIEV2ZW50KiB0
cmlnZ2VyaW5nRXZlbnQgPSBudWxscHRyOworICAgICAgICBhdXRvIGFjdGlvbkRldGFpbHMgPSBO
YXZpZ2F0aW9uQWN0aW9uOjpEZXRhaWxzOjpjcmVhdGVGcm9tTG9hZFR5cGUocG9saWN5Q2hlY2tl
cigpLmxvYWRUeXBlKCksIGlzRm9ybVN1Ym1pc3Npb24sIHRyaWdnZXJpbmdFdmVudCk7CisgICAg
ICAgIGxvYWRlci0+c2V0VHJpZ2dlcmluZ0FjdGlvbihOYXZpZ2F0aW9uQWN0aW9uIHsgbG9hZGVy
LT5yZXF1ZXN0KCksIFdURk1vdmUoYWN0aW9uRGV0YWlscykgfSk7CisgICAgfQogCiAgICAgaWYg
KEVsZW1lbnQqIG93bmVyRWxlbWVudCA9IG1fZnJhbWUub3duZXJFbGVtZW50KCkpIHsKICAgICAg
ICAgLy8gV2Ugc2tpcCBkaXNwYXRjaGluZyB0aGUgYmVmb3JlbG9hZCBldmVudCBpZiB3ZSd2ZSBh
bHJlYWR5CkBAIC0xNTk0LDcgKzE2MDUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZWxvYWQoT3B0
aW9uU2V0PFJlbG9hZE9wdGlvbj4gb3B0aW9ucykKIAogICAgIC8vIElmIHdlJ3JlIGFib3V0IHRv
IHJlLXBvc3QsIHNldCB1cCBhY3Rpb24gc28gdGhlIGFwcGxpY2F0aW9uIGNhbiB3YXJuIHRoZSB1
c2VyLgogICAgIGlmIChyZXF1ZXN0Lmh0dHBNZXRob2QoKSA9PSAiUE9TVCIpCi0gICAgICAgIGxv
YWRlci0+c2V0VHJpZ2dlcmluZ0FjdGlvbihOYXZpZ2F0aW9uQWN0aW9uKHJlcXVlc3QsIE5hdmln
YXRpb25UeXBlOjpGb3JtUmVzdWJtaXR0ZWQpKTsKKyAgICAgICAgbG9hZGVyLT5zZXRUcmlnZ2Vy
aW5nQWN0aW9uKE5hdmlnYXRpb25BY3Rpb24geyByZXF1ZXN0LCB7IE5hdmlnYXRpb25UeXBlOjpG
b3JtUmVzdWJtaXR0ZWQgfSB9KTsKIAogICAgIGxvYWRlci0+c2V0T3ZlcnJpZGVFbmNvZGluZyht
X2RvY3VtZW50TG9hZGVyLT5vdmVycmlkZUVuY29kaW5nKCkpOwogCkBAIC0yNzE4LDcgKzI3Mjks
MTEgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KGNvbnN0IEZyYW1lTG9hZFJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYKICAgICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50
ID0gbV9mcmFtZS5kb2N1bWVudCgpKQogICAgICAgICBkb2N1bWVudC0+Y29udGVudFNlY3VyaXR5
UG9saWN5KCktPnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZCh3b3JraW5nUmVzb3VyY2VS
ZXF1ZXN0LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6Okluc2VjdXJlUmVxdWVzdFR5cGU6OkxvYWQp
OwogCi0gICAgTmF2aWdhdGlvbkFjdGlvbiBhY3Rpb24od29ya2luZ1Jlc291cmNlUmVxdWVzdCwg
bG9hZFR5cGUsIHRydWUsIGV2ZW50LCByZXF1ZXN0LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3koKSwgcmVxdWVzdC5kb3dubG9hZEF0dHJpYnV0ZSgpKTsKKyAgICBib29sIGlzRm9ybVN1Ym1p
c3Npb24gPSB0cnVlOworICAgIGF1dG8gYWN0aW9uRGV0YWlscyA9IE5hdmlnYXRpb25BY3Rpb246
OkRldGFpbHM6OmNyZWF0ZUZyb21Mb2FkVHlwZShsb2FkVHlwZSwgaXNGb3JtU3VibWlzc2lvbiwg
ZXZlbnQpOworICAgIGFjdGlvbkRldGFpbHMuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9
IHJlcXVlc3Quc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpOworICAgIGFjdGlvbkRldGFp
bHMuZG93bmxvYWRBdHRyaWJ1dGUgPSByZXF1ZXN0LmRvd25sb2FkQXR0cmlidXRlKCk7CisgICAg
TmF2aWdhdGlvbkFjdGlvbiBhY3Rpb24geyB3b3JraW5nUmVzb3VyY2VSZXF1ZXN0LCBXVEZNb3Zl
KGFjdGlvbkRldGFpbHMpIH07CiAKICAgICBpZiAoIWZyYW1lTmFtZS5pc0VtcHR5KCkpIHsKICAg
ICAgICAgLy8gVGhlIHNlYXJjaCBmb3IgYSB0YXJnZXQgZnJhbWUgaXMgZG9uZSBlYXJsaWVyIGlu
IHRoZSBjYXNlIG9mIGZvcm0gc3VibWlzc2lvbi4KQEAgLTMxNzQsNyArMzE4OSw5IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzCiAgICAgICAgIG1haW5GcmFtZS0+ZG9jdW1lbnQoKS0+c2V0UmVm
ZXJyZXJQb2xpY3koZnJhbWUtPmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCkpOwogICAgIH0K
IAotICAgIE5hdmlnYXRpb25BY3Rpb24gbmV3QWN0aW9uKHJlcXVlc3QsIGFjdGlvbi5zaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkpOworICAgIE5hdmlnYXRpb25BY3Rpb246OkRldGFpbHMg
bmV3QWN0aW9uT3B0aW9uczsKKyAgICBuZXdBY3Rpb25PcHRpb25zLnNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kgPSBhY3Rpb24uc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpOworICAg
IE5hdmlnYXRpb25BY3Rpb24gbmV3QWN0aW9uIHsgcmVxdWVzdCwgV1RGTW92ZShuZXdBY3Rpb25P
cHRpb25zKSB9OwogICAgIG1haW5GcmFtZS0+bG9hZGVyKCkubG9hZFdpdGhOYXZpZ2F0aW9uQWN0
aW9uKHJlcXVlc3QsIG5ld0FjdGlvbiwgTG9ja0hpc3Rvcnk6Ok5vLCBGcmFtZUxvYWRUeXBlOjpT
dGFuZGFyZCwgZm9ybVN0YXRlLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwpOwogfQogCkBA
IC0zMzYwLDcgKzMzNzcsMTIgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERvY3Vt
ZW50SXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlwZSBsb2EKICAgICBpZiAoQ2Fj
aGVkUGFnZSogY2FjaGVkUGFnZSA9IFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkuZ2V0KGl0ZW0sIG1f
ZnJhbWUucGFnZSgpKSkgewogICAgICAgICBhdXRvIGRvY3VtZW50TG9hZGVyID0gY2FjaGVkUGFn
ZS0+ZG9jdW1lbnRMb2FkZXIoKTsKICAgICAgICAgbV9jbGllbnQudXBkYXRlQ2FjaGVkRG9jdW1l
bnRMb2FkZXIoKmRvY3VtZW50TG9hZGVyKTsKLSAgICAgICAgZG9jdW1lbnRMb2FkZXItPnNldFRy
aWdnZXJpbmdBY3Rpb24oTmF2aWdhdGlvbkFjdGlvbihkb2N1bWVudExvYWRlci0+cmVxdWVzdCgp
LCBsb2FkVHlwZSwgZmFsc2UpKTsKKworICAgICAgICBib29sIGlzRm9ybVN1Ym1pc3Npb24gPSBm
YWxzZTsKKyAgICAgICAgRXZlbnQqIHRyaWdnZXJpbmdFdmVudCA9IG51bGxwdHI7CisgICAgICAg
IGF1dG8gYWN0aW9uRGV0YWlscyA9IE5hdmlnYXRpb25BY3Rpb246OkRldGFpbHM6OmNyZWF0ZUZy
b21Mb2FkVHlwZShsb2FkVHlwZSwgaXNGb3JtU3VibWlzc2lvbiwgdHJpZ2dlcmluZ0V2ZW50KTsK
KworICAgICAgICBkb2N1bWVudExvYWRlci0+c2V0VHJpZ2dlcmluZ0FjdGlvbihOYXZpZ2F0aW9u
QWN0aW9uIHsgZG9jdW1lbnRMb2FkZXItPnJlcXVlc3QoKSwgV1RGTW92ZShhY3Rpb25EZXRhaWxz
KSB9KTsKICAgICAgICAgZG9jdW1lbnRMb2FkZXItPnNldExhc3RDaGVja2VkUmVxdWVzdChSZXNv
dXJjZVJlcXVlc3QoKSk7CiAgICAgICAgIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIoZG9jdW1lbnRM
b2FkZXIsIGxvYWRUeXBlLCAwLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6Olllcyk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTM0MDgsMTAgKzM0MzAsMTMgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
bG9hZERpZmZlcmVudERvY3VtZW50SXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlw
ZSBsb2EKICAgICAgICAgCiAgICAgICAgIGlmIChjYWNoZUxvYWRQb2xpY3kgPT0gTWF5QXR0ZW1w
dENhY2hlT25seUxvYWRGb3JGb3JtU3VibWlzc2lvbkl0ZW0pIHsKICAgICAgICAgICAgIHJlcXVl
c3Quc2V0Q2FjaGVQb2xpY3koUmV0dXJuQ2FjaGVEYXRhRG9udExvYWQpOwotICAgICAgICAgICAg
YWN0aW9uID0gTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0LCBsb2FkVHlwZSwgaXNGb3JtU3VibWlz
c2lvbiwgZXZlbnQsIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOworCisgICAgICAgICAg
ICBhdXRvIGFjdGlvbkRldGFpbHMgPSBOYXZpZ2F0aW9uQWN0aW9uOjpEZXRhaWxzOjpjcmVhdGVG
cm9tTG9hZFR5cGUobG9hZFR5cGUsIGlzRm9ybVN1Ym1pc3Npb24sIGV2ZW50KTsKKyAgICAgICAg
ICAgIGFjdGlvbkRldGFpbHMuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IHNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3k7CisgICAgICAgICAgICBhY3Rpb24gPSBOYXZpZ2F0aW9uQWN0
aW9uIHsgcmVxdWVzdCwgV1RGTW92ZShhY3Rpb25EZXRhaWxzKSB9OwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgcmVxdWVzdC5zZXRDYWNoZVBvbGljeShSZXR1cm5DYWNoZURhdGFFbHNl
TG9hZCk7Ci0gICAgICAgICAgICBhY3Rpb24gPSBOYXZpZ2F0aW9uQWN0aW9uKHJlcXVlc3QsIE5h
dmlnYXRpb25UeXBlOjpGb3JtUmVzdWJtaXR0ZWQsIGV2ZW50LCBzaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5KTsKKyAgICAgICAgICAgIGFjdGlvbiA9IE5hdmlnYXRpb25BY3Rpb24geyByZXF1
ZXN0LCB7IE5hdmlnYXRpb25UeXBlOjpGb3JtUmVzdWJtaXR0ZWQsIGV2ZW50LCBzaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5IH0gfTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAg
IHN3aXRjaCAobG9hZFR5cGUpIHsKQEAgLTM0NDUsNyArMzQ3MCwxMCBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKEhpc3RvcnlJdGVtJiBpdGVtLCBGcmFtZUxv
YWRUeXBlIGxvYQogCiAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0Rm9yT3JpZ2luYWxV
UkwocmVxdWVzdCk7CiAgICAgICAgIHJlcXVlc3RGb3JPcmlnaW5hbFVSTC5zZXRVUkwoaXRlbU9y
aWdpbmFsVVJMKTsKLSAgICAgICAgYWN0aW9uID0gTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0Rm9y
T3JpZ2luYWxVUkwsIGxvYWRUeXBlLCBpc0Zvcm1TdWJtaXNzaW9uLCBldmVudCwgc2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSk7CisKKyAgICAgICAgYXV0byBhY3Rpb25EZXRhaWxzID0gTmF2
aWdhdGlvbkFjdGlvbjo6RGV0YWlsczo6Y3JlYXRlRnJvbUxvYWRUeXBlKGxvYWRUeXBlLCBpc0Zv
cm1TdWJtaXNzaW9uLCBldmVudCk7CisgICAgICAgIGFjdGlvbkRldGFpbHMuc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSA9IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k7CisgICAgICAg
IGFjdGlvbiA9IE5hdmlnYXRpb25BY3Rpb24geyByZXF1ZXN0Rm9yT3JpZ2luYWxVUkwsIFdURk1v
dmUoYWN0aW9uRGV0YWlscykgfTsKICAgICB9CiAKICAgICBsb2FkV2l0aE5hdmlnYXRpb25BY3Rp
b24ocmVxdWVzdCwgYWN0aW9uLCBMb2NrSGlzdG9yeTo6Tm8sIGxvYWRUeXBlLCAwLCBBbGxvd05h
dmlnYXRpb25Ub0ludmFsaWRVUkw6Olllcyk7CkBAIC0zNjk5LDggKzM3MjcsMTEgQEAgUmVmUHRy
PEZyYW1lPiBjcmVhdGVXaW5kb3coRnJhbWUmIG9wZW5lckZyYW1lLCBGcmFtZSYgbG9va3VwRnJh
bWUsIGNvbnN0IEZyYW1lTG8KICAgICBpZiAoIW9sZFBhZ2UpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5ID0gc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvQXBwbHkob3BlbmVy
RnJhbWUsIHJlcXVlc3Quc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpKTsKLSAgICBQYWdl
KiBwYWdlID0gb2xkUGFnZS0+Y2hyb21lKCkuY3JlYXRlV2luZG93KG9wZW5lckZyYW1lLCByZXF1
ZXN0V2l0aFJlZmVycmVyLCBmZWF0dXJlcywgTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0V2l0aFJl
ZmVycmVyLnJlc291cmNlUmVxdWVzdCgpLCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KSk7
CisgICAgTmF2aWdhdGlvbkFjdGlvbjo6RGV0YWlscyBhY3Rpb25EZXRhaWxzOworICAgIGFjdGlv
bkRldGFpbHMuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IHNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3lUb0FwcGx5KG9wZW5lckZyYW1lLCByZXF1ZXN0LnNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3koKSk7CisgICAgTmF2aWdhdGlvbkFjdGlvbiBhY3Rpb24geyByZXF1ZXN0V2l0
aFJlZmVycmVyLnJlc291cmNlUmVxdWVzdCgpLCBXVEZNb3ZlKGFjdGlvbkRldGFpbHMpIH07CisK
KyAgICBQYWdlKiBwYWdlID0gb2xkUGFnZS0+Y2hyb21lKCkuY3JlYXRlV2luZG93KG9wZW5lckZy
YW1lLCByZXF1ZXN0V2l0aFJlZmVycmVyLCBmZWF0dXJlcywgYWN0aW9uKTsKICAgICBpZiAoIXBh
Z2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2
aWdhdGlvbkFjdGlvbi5jcHAKaW5kZXggMzYyNGI0MjgzYzg3YmFkMWJlODYzZTdjMmMzZTE1N2E1
ODFhOTEwNC4uY2M5MmVmMGM0ZDQ1YTVhZmZlMzViMjE1MGFlNjVjZGJlMTEzNTVkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw3ICszMSw2
IEBACiAKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCi0jaW5j
bHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ4
LDcwICs0NywzMyBAQCBzdGF0aWMgTmF2aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5cGUoRnJhbWVM
b2FkVHlwZSBmcmFtZUxvYWRUeXBlLCBib29sIGlzRm9ybVN1YgogICAgIHJldHVybiBOYXZpZ2F0
aW9uVHlwZTo6T3RoZXI7CiB9CiAKLU5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24o
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIE5hdmlnYXRpb25UeXBlIHR5
cGUsIEV2ZW50KiBldmVudCwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5LCBjb25zdCBBdG9taWNTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRl
KQotICAgIDogbV9yZXNvdXJjZVJlcXVlc3QocmVzb3VyY2VSZXF1ZXN0KQotICAgICwgbV90eXBl
KHR5cGUpCi0gICAgLCBtX2V2ZW50KGV2ZW50KQotICAgICwgbV91c2VyR2VzdHVyZVRva2VuKFVz
ZXJHZXN0dXJlSW5kaWNhdG9yOjpjdXJyZW50VXNlckdlc3R1cmUoKSkKLSAgICAsIG1fc2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeShzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQotICAg
ICwgbV9kb3dubG9hZEF0dHJpYnV0ZShkb3dubG9hZEF0dHJpYnV0ZSkKK2F1dG8gTmF2aWdhdGlv
bkFjdGlvbjo6RGV0YWlsczo6Y3JlYXRlRnJvbUxvYWRUeXBlKEZyYW1lTG9hZFR5cGUgdHlwZSwg
Ym9vbCBpc0Zvcm1TdWJtaXNzaW9uLCBFdmVudCogZXZlbnQpIC0+IERldGFpbHMKIHsKKyAgICBE
ZXRhaWxzIGRldGFpbHM7CisgICAgZGV0YWlscy5uYXZpZ2F0aW9uVHlwZSA9IFdlYkNvcmU6Om5h
dmlnYXRpb25UeXBlKHR5cGUsIGlzRm9ybVN1Ym1pc3Npb24sICEhZXZlbnQpOworICAgIGRldGFp
bHMudHJpZ2dlcmluZ0V2ZW50ID0gZXZlbnQ7CisgICAgcmV0dXJuIGRldGFpbHM7CiB9CiAKLU5h
dmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oKQotICAgIDogTmF2aWdhdGlvbkFjdGlv
bihSZXNvdXJjZVJlcXVlc3QoKSwgTmF2aWdhdGlvblR5cGU6Ok90aGVyLCBudWxscHRyLCBTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdywgbnVsbEF0b20pCi17Ci19
Ci0KLU5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXNvdXJjZVJlcXVlc3QpCi0gICAgOiBOYXZpZ2F0aW9uQWN0aW9uKHJlc291cmNlUmVx
dWVzdCwgTmF2aWdhdGlvblR5cGU6Ok90aGVyLCBudWxscHRyLCBTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5OjpTaG91bGROb3RBbGxvdywgbnVsbEF0b20pCi17Ci19Ci0KLU5hdmlnYXRpb25B
Y3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJl
cXVlc3QsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSkKLSAgICA6IE5hdmlnYXRpb25BY3Rpb24ocmVzb3VyY2VSZXF1ZXN0LCBOYXZpZ2F0
aW9uVHlwZTo6T3RoZXIsIG51bGxwdHIsIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIG51
bGxBdG9tKQotewotfQotCi1OYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBOYXZpZ2F0aW9uVHlwZSB0eXBlKQot
ICAgIDogTmF2aWdhdGlvbkFjdGlvbihyZXNvdXJjZVJlcXVlc3QsIHR5cGUsIG51bGxwdHIsIFNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBudWxsQXRvbSkKLXsK
LX0KLQotTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlc291cmNlUmVxdWVzdCwgTmF2aWdhdGlvblR5cGUgdHlwZSwgRXZlbnQqIGV2ZW50
LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3kpCi0gICAgOiBOYXZpZ2F0aW9uQWN0aW9uKHJlc291cmNlUmVxdWVzdCwgdHlwZSwgZXZlbnQs
IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIG51bGxBdG9tKQotewotfQorTmF2aWdhdGlv
bkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbigpID0gZGVmYXVsdDsK
IAotTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlc291cmNlUmVxdWVzdCwgRnJhbWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlLCBib29sIGlz
Rm9ybVN1Ym1pc3Npb24pCi0gICAgOiBOYXZpZ2F0aW9uQWN0aW9uKHJlc291cmNlUmVxdWVzdCwg
bmF2aWdhdGlvblR5cGUoZnJhbWVMb2FkVHlwZSwgaXNGb3JtU3VibWlzc2lvbiwgMCksIG51bGxw
dHIsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBudWxsQXRv
bSkKK05hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXNvdXJjZVJlcXVlc3QsIERldGFpbHMmJiBkZXRhaWxzKQorICAgIDogbV9yZXNvdXJj
ZVJlcXVlc3QgeyByZXNvdXJjZVJlcXVlc3QgfQorICAgICwgbV90eXBlIHsgV1RGTW92ZShkZXRh
aWxzLm5hdmlnYXRpb25UeXBlKSB9CisgICAgLCBtX2V2ZW50IHsgV1RGTW92ZShkZXRhaWxzLnRy
aWdnZXJpbmdFdmVudCkgfQorICAgICwgbV91c2VyR2VzdHVyZVRva2VuIHsgVXNlckdlc3R1cmVJ
bmRpY2F0b3I6OmN1cnJlbnRVc2VyR2VzdHVyZSgpIH0KKyAgICAsIG1fc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSB7IFdURk1vdmUoZGV0YWlscy5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5KSB9CisgICAgLCBtX2Rvd25sb2FkQXR0cmlidXRlIHsgV1RGTW92ZShkZXRhaWxzLmRvd25s
b2FkQXR0cmlidXRlKSB9CiB7CiB9CiAKLU5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rp
b24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIE5hdmlnYXRpb25UeXBl
IHR5cGUsIEV2ZW50KiBldmVudCkKLSAgICA6IE5hdmlnYXRpb25BY3Rpb24ocmVzb3VyY2VSZXF1
ZXN0LCB0eXBlLCBldmVudCwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90
QWxsb3csIG51bGxBdG9tKQotewotfQorTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlv
bihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJikgPSBkZWZhdWx0OworTmF2aWdhdGlvbkFjdGlvbjo6
TmF2aWdhdGlvbkFjdGlvbihOYXZpZ2F0aW9uQWN0aW9uJiYpID0gZGVmYXVsdDsKIAotTmF2aWdh
dGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291
cmNlUmVxdWVzdCwgTmF2aWdhdGlvblR5cGUgdHlwZSwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQotICAgIDogTmF2aWdhdGlvbkFjdGlv
bihyZXNvdXJjZVJlcXVlc3QsIHR5cGUsIG51bGxwdHIsIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3ksIG51bGxBdG9tKQotewotfQorTmF2aWdhdGlvbkFjdGlvbjo6fk5hdmlnYXRpb25BY3Rp
b24oKSA9IGRlZmF1bHQ7CiAKLU5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIEZyYW1lTG9hZFR5cGUgZnJhbWVM
b2FkVHlwZSwgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uLCBFdmVudCogZXZlbnQpCi0gICAgOiBOYXZp
Z2F0aW9uQWN0aW9uKHJlc291cmNlUmVxdWVzdCwgbmF2aWdhdGlvblR5cGUoZnJhbWVMb2FkVHlw
ZSwgaXNGb3JtU3VibWlzc2lvbiwgZXZlbnQpLCBldmVudCwgU2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeTo6U2hvdWxkTm90QWxsb3csIG51bGxBdG9tKQotewotfQotCi1OYXZpZ2F0aW9uQWN0
aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1
ZXN0LCBGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUsIGJvb2wgaXNGb3JtU3VibWlzc2lvbiwg
RXZlbnQqIGV2ZW50LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3kpCi0gICAgOiBOYXZpZ2F0aW9uQWN0aW9uKHJlc291cmNlUmVxdWVzdCwg
bmF2aWdhdGlvblR5cGUoZnJhbWVMb2FkVHlwZSwgaXNGb3JtU3VibWlzc2lvbiwgZXZlbnQpLCBl
dmVudCwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgbnVsbEF0b20pCi17Ci19Ci0KLU5h
dmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXNvdXJjZVJlcXVlc3QsIEZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSwgYm9vbCBpc0Zvcm1T
dWJtaXNzaW9uLCBFdmVudCogZXZlbnQsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgY29uc3QgQXRvbWljU3RyaW5nJiBkb3dubG9hZEF0
dHJpYnV0ZSkKLSAgICA6IE5hdmlnYXRpb25BY3Rpb24ocmVzb3VyY2VSZXF1ZXN0LCBuYXZpZ2F0
aW9uVHlwZShmcmFtZUxvYWRUeXBlLCBpc0Zvcm1TdWJtaXNzaW9uLCBldmVudCksIGV2ZW50LCBz
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBkb3dubG9hZEF0dHJpYnV0ZSkKLXsKLX0KK05h
dmlnYXRpb25BY3Rpb24mIE5hdmlnYXRpb25BY3Rpb246Om9wZXJhdG9yPShjb25zdCBOYXZpZ2F0
aW9uQWN0aW9uJikgPSBkZWZhdWx0OworTmF2aWdhdGlvbkFjdGlvbiYgTmF2aWdhdGlvbkFjdGlv
bjo6b3BlcmF0b3I9KE5hdmlnYXRpb25BY3Rpb24mJikgPSBkZWZhdWx0OwogCiBOYXZpZ2F0aW9u
QWN0aW9uIE5hdmlnYXRpb25BY3Rpb246OmNvcHlXaXRoU2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeShTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdh
dGlvbkFjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaApp
bmRleCAzNzAyZGM1NTBmMjY3MGM5NzNkMGUyNDZmNTNhNDRmYmM4MzU4OGZmLi4xNWI4ZTM1YTI3
NDQ4MDkwYjI3M2U3OGU1MjJmYWEzMmQ2ZDRiMDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9O
YXZpZ2F0aW9uQWN0aW9uLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA2LTIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMzAgKzI4LDM3IEBACiAKICNwcmFnbWEgb25jZQog
Ci0jaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCi0jaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiVXNl
ckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIEV2ZW50OworCiBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uIHsK
IHB1YmxpYzoKKyAgICBzdHJ1Y3QgRGV0YWlscyB7CisgICAgICAgIE5hdmlnYXRpb25UeXBlIG5h
dmlnYXRpb25UeXBlIHsgTmF2aWdhdGlvblR5cGU6Ok90aGVyIH07CisgICAgICAgIEV2ZW50KiB0
cmlnZ2VyaW5nRXZlbnQgeyBudWxscHRyIH07CisgICAgICAgIFNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSB7IFNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93IH07CisgICAgICAgIEF0b21pY1N0cmluZyBkb3du
bG9hZEF0dHJpYnV0ZSB7IG51bGxBdG9tIH07CisKKyAgICAgICAgc3RhdGljIERldGFpbHMgY3Jl
YXRlRnJvbUxvYWRUeXBlKEZyYW1lTG9hZFR5cGUsIGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgRXZl
bnQqKTsKKyAgICB9OworCisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgZW1wdHkgY29uc3RydWN0
b3IgYW5kIGhhdmUgY2FsbGVycyB1c2Ugc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW9uQWN0aW9uPi4K
ICAgICBXRUJDT1JFX0VYUE9SVCBOYXZpZ2F0aW9uQWN0aW9uKCk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgZXhwbGljaXQgTmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IE5hdmlnYXRpb25UeXBlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBOYXZpZ2F0aW9uQWN0aW9uKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIEZyYW1lTG9hZFR5cGUsIGJvb2wgaXNGb3JtU3VibWlzc2lv
bik7Ci0KLSAgICBOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwotICAgIE5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgTmF2aWdhdGlvblR5cGUsIEV2ZW50Kik7Ci0gICAgTmF2aWdhdGlvbkFj
dGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBOYXZpZ2F0aW9uVHlwZSwgRXZlbnQqLCBTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKLSAgICBOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIE5hdmlnYXRpb25UeXBlLCBFdmVudCosIFNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3ksIGNvbnN0IEF0b21pY1N0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUpOwotICAg
IE5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgTmF2aWdhdGlvblR5cGUs
IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwotICAgIE5hdmlnYXRpb25BY3Rpb24oY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgRnJhbWVMb2FkVHlwZSwgYm9vbCBpc0Zvcm1TdWJtaXNzaW9u
LCBFdmVudCopOwotICAgIE5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
RnJhbWVMb2FkVHlwZSwgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uLCBFdmVudCosIFNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3kpOwotICAgIE5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgRnJhbWVMb2FkVHlwZSwgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uLCBFdmVudCosIFNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIGNvbnN0IEF0b21pY1N0cmluZyYgZG93bmxvYWRB
dHRyaWJ1dGUpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IE5hdmlnYXRpb25BY3Rpb24o
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRGV0YWlscyYmKTsKKworICAgIFdFQkNPUkVfRVhQT1JU
IE5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpOworICAgIE5hdmlnYXRp
b25BY3Rpb24oTmF2aWdhdGlvbkFjdGlvbiYmKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIH5OYXZp
Z2F0aW9uQWN0aW9uKCk7CisKKyAgICBOYXZpZ2F0aW9uQWN0aW9uJiBvcGVyYXRvcj0oY29uc3Qg
TmF2aWdhdGlvbkFjdGlvbiYpOworICAgIE5hdmlnYXRpb25BY3Rpb24mIG9wZXJhdG9yPShOYXZp
Z2F0aW9uQWN0aW9uJiYpOwogCiAgICAgTmF2aWdhdGlvbkFjdGlvbiBjb3B5V2l0aFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3koU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkgY29uc3Q7
CiAKQEAgLTc2LDcgKzgzLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RXZlbnQ+IG1fZXZlbnQ7
CiAgICAgUmVmUHRyPFVzZXJHZXN0dXJlVG9rZW4+IG1fdXNlckdlc3R1cmVUb2tlbjsKICAgICBT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IG1fc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSB7IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93IH07Ci0gICAg
QXRvbWljU3RyaW5nIG1fZG93bmxvYWRBdHRyaWJ1dGU7CisgICAgQXRvbWljU3RyaW5nIG1fZG93
bmxvYWRBdHRyaWJ1dGUgeyBudWxsQXRvbSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCmluZGV4IDRlYWU3YjYyYjZl
ZGIyMjMwZTM4MDc1MDllMjY2MWViZmZlZTI3YjAuLjYyMjAyZWYwYTZmZjE2NTI2MTYyZjgwNjRm
OGQ1YTc1NzJiOTliZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lD
aGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNp
bmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgorI2luY2x1
ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZvcm1TdGF0
ZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC04Myw3ICs4NCw5IEBAIHZvaWQgUG9saWN5Q2hl
Y2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgYm9vbCBkCiB7CiAgICAgTmF2aWdhdGlvbkFjdGlvbiBhY3Rpb24gPSBsb2FkZXItPnRyaWdn
ZXJpbmdBY3Rpb24oKTsKICAgICBpZiAoYWN0aW9uLmlzRW1wdHkoKSkgewotICAgICAgICBhY3Rp
b24gPSBOYXZpZ2F0aW9uQWN0aW9uKHJlcXVlc3QsIE5hdmlnYXRpb25UeXBlOjpPdGhlciwgbG9h
ZGVyLT5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdhdGUoKSk7CisgICAgICAg
IE5hdmlnYXRpb25BY3Rpb246OkRldGFpbHMgYWN0aW9uRGV0YWlsczsKKyAgICAgICAgYWN0aW9u
RGV0YWlscy5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gbG9hZGVyLT5zaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdhdGUoKTsKKyAgICAgICAgYWN0aW9uID0gTmF2aWdh
dGlvbkFjdGlvbiB7IHJlcXVlc3QsIFdURk1vdmUoYWN0aW9uRGV0YWlscykgfTsKICAgICAgICAg
bG9hZGVyLT5zZXRUcmlnZ2VyaW5nQWN0aW9uKGFjdGlvbik7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggNjhiMTJlYmY0N2Ri
YzQxZmYwOWIzNGY2Y2Y3ODAwNmJhYTk2NTY0MC4uMWU2NjA2MTljNGU4ZGMwNDFkNGVlY2E2M2Ey
ZWRlNDNhODY2ODFkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVu
dUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250
cm9sbGVyLmNwcApAQCAtMTkxLDcgKzE5MSw4IEBAIHN0YXRpYyB2b2lkIG9wZW5OZXdXaW5kb3co
Y29uc3QgVVJMJiB1cmxUb0xvYWQsIEZyYW1lJiBmcmFtZSwgU2hvdWxkT3BlbkV4dGVybmFsCiAK
ICAgICBGcmFtZUxvYWRSZXF1ZXN0IHJlcXVlc3QoZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKSwgUmVzb3VyY2VSZXF1ZXN0KHVybFRvTG9hZCwgZnJhbWUubG9hZGVyKCkub3V0Z29p
bmdSZWZlcnJlcigpKSwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywg
TWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdG
cmFtZU9wZW5lclBvbGljeTo6U3VwcHJlc3MsIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kp
OwogCi0gICAgUGFnZSogbmV3UGFnZSA9IG9sZFBhZ2UtPmNocm9tZSgpLmNyZWF0ZVdpbmRvdyhm
cmFtZSwgcmVxdWVzdCwgV2luZG93RmVhdHVyZXMoKSwgTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0
LnJlc291cmNlUmVxdWVzdCgpKSk7CisgICAgLy8gRklYTUU6IFNob3VsZCB0aGUgTmF2aWdhdGlv
bkFjdGlvbiBzcGVjaWZ5IHRoZSBvcGVuIGV4dGVybmFsIFVSTCBwb2xpY3kgKHNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3kpPworICAgIFBhZ2UqIG5ld1BhZ2UgPSBvbGRQYWdlLT5jaHJvbWUo
KS5jcmVhdGVXaW5kb3coZnJhbWUsIHJlcXVlc3QsIFdpbmRvd0ZlYXR1cmVzKCksIE5hdmlnYXRp
b25BY3Rpb24geyByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCB7IH0gfSk7CiAgICAgaWYgKCFu
ZXdQYWdlKQogICAgICAgICByZXR1cm47CiAgICAgbmV3UGFnZS0+Y2hyb21lKCkuc2hvdygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAppbmRleCBjMzViMGVmYTBjMmUzNDcwNTZmZDUx
NjcwMGY1YjdjMDdmZGZlYWU0Li40ZmE1NmU4NTYzYTk1YTdiMGZlZTRmOGRkOTZiOTczZDhkNmM0
OTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcApAQCAtMzcsNiArMzcsNyBAQAog
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgorI2lu
Y2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiUGVyZm9ybWFuY2VFbnRyeS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5
L1JlcGxheUNvbnRyb2xsZXIuY3BwCmluZGV4IGJmMzU4ZGM2YWI0ODUwOTg2NDUwMWEwNWI2Zjcz
ZDhiMGFjOTkyODkuLmMwMWIzOGJmMjI4ODU1ZjdlZDI1NmMwMmY4NTk2MmJkMjAxYjYwMDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxlci5jcHAKQEAgLTM0LDYgKzM0
LDcgQEAKICNpbmNsdWRlICJDYXB0dXJpbmdJbnB1dEN1cnNvci5oIgogI2luY2x1ZGUgIkRPTVdp
bmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCisjaW5jbHVkZSAiRXZlbnQuaCIK
ICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgogI2luY2x1ZGUgIklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAppbmRleCA1MGNhYWE0N2QyYzIwYTYxYWE5OTYz
ZDk4ZDY3NjE2ZjhmNjQxMjUyLi5kZDkxMDdmYTM4NmVjYWU2ZjMyY2Q3YTc1MWM1ZTZjZjNlNzZk
NDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5z
cGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5z
cGVjdG9yLmNwcApAQCAtMTQ4LDcgKzE0OCw4IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpvcGVuSW5O
ZXdUYWIoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiAgICAgRnJhbWUmIGluc3BlY3RlZE1haW5G
cmFtZSA9IGluc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpOwogICAgIEZyYW1lTG9hZFJlcXVlc3Qg
cmVxdWVzdChpbnNwZWN0ZWRNYWluRnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwg
UmVzb3VyY2VSZXF1ZXN0KHVybFN0cmluZyksICJfYmxhbmsiLCBMb2NrSGlzdG9yeTo6Tm8sIExv
Y2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBNYXliZVNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9u
VG9JbnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdywgUmVwbGFjZURv
Y3VtZW50SWZKYXZhU2NyaXB0VVJMLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91
bGROb3RBbGxvdyk7CiAKLSAgICBQYWdlKiBuZXdQYWdlID0gaW5zcGVjdGVkUGFnZS0+Y2hyb21l
KCkuY3JlYXRlV2luZG93KGluc3BlY3RlZE1haW5GcmFtZSwgcmVxdWVzdCwgV2luZG93RmVhdHVy
ZXMoKSwgTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCBOYXZpZ2F0
aW9uVHlwZTo6TGlua0NsaWNrZWQpKTsKKyAgICBOYXZpZ2F0aW9uQWN0aW9uIGFjdGlvbiB7IHJl
cXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIHsgTmF2aWdhdGlvblR5cGU6OkxpbmtDbGlja2VkIH0g
fTsKKyAgICBQYWdlKiBuZXdQYWdlID0gaW5zcGVjdGVkUGFnZS0+Y2hyb21lKCkuY3JlYXRlV2lu
ZG93KGluc3BlY3RlZE1haW5GcmFtZSwgcmVxdWVzdCwgeyB9LCBhY3Rpb24pOwogICAgIGlmICgh
bmV3UGFnZSkKICAgICAgICAgcmV0dXJuOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313104</attachid>
            <date>2017-06-16 11:50:17 -0700</date>
            <delta_ts>2017-06-16 15:43:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173484-20170616115016.patch</filename>
            <type>text/plain</type>
            <size>26674</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4Mzk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzZjN2M3OTkzNjI5NTdj
N2I4ZDg2ZDUyMWQzMmYyMTU4ZjI5NzI2Zi4uOTNjMDBiODFlYjYxOTY2NDI1N2NiNWEwNjg3YzUz
N2JhZGIzY2I0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE3LTA2LTE2ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRyYWN0IE5hdmlnYXRp
b25BY3Rpb24gY29uc3RydWN0b3IgYXJndW1lbnRzIGludG8gYSBzdHJ1Y3QKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzQ4NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEEgTmF2aWdhdGlvbkFjdGlvbiBv
YmplY3QgaXMgYW4gaW1tdXRhYmxlIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgdGhlIGRldGFpbHMg
b2YgYQorICAgICAgICBuYXZpZ2F0aW9uLCBpbmNsdWRpbmcgdGhlIHR5cGUgb2YgYSBuYXZpZ2F0
aW9uIChlLmcuIGxpbmsgY2xpY2spLCB3aGF0IHRyaWdnZXJlZAorICAgICAgICB0aGUgbmF2aWdh
dGlvbiwgYW5kIHRoZSBleHRlcm5hbCBVUkwgcG9saWN5IHRvIHVzZSBmb3IgdGhlIG5hdmlnYXRp
b24uIE92ZXIgdGltZQorICAgICAgICB0aGUgbnVtYmVyIG9mIE5hdmlnYXRpb25BY3Rpb24gY29u
c3RydWN0b3Igb3ZlcmxvYWRzIGhhcyBncm93biB0byAxMiB0byBzdXBwb3J0CisgICAgICAgIGRp
ZmZlcmVudCBjb21iaW5hdGlvbnMgb2YgZGV0YWlscy4gVG8gc3VwcG9ydCBpbnN0YW50aWF0aW5n
IGEgTmF2aWdhdGlvbkFjdGlvbgorICAgICAgICB3aXRoIGFkZGl0aW9uYWwgZGV0YWlscyB3ZSBz
aG91bGQgZXh0cmFjdCBhbGwgb2YgdGhlIG9wdGlvbmFsIGFyZ3VtZW50cyB0aGF0IGNhbgorICAg
ICAgICBiZSBwYXNzZWQgdG8gYSBOYXZpZ2F0aW9uQWN0aW9uIGludG8gYSBzdHJ1Y3QgdGhhdCBj
YW4gYmUgcGFzc2VkIHdoZW4gaW5zdGFudGlhdGluZworICAgICAgICBvbmUuCisKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmxvYWRVUkwpOiBVcGRhdGUgY29kZSB0byBwYXNzIGEgTmF2aWdhdGlvbkFjdGlvbjo6RGV0YWls
cyBvYmplY3QKKyAgICAgICAgd2hlbiBpbnN0YW50aWF0aW5nIGEgTmF2aWdhdGlvbkFjdGlvbi4K
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVudExvYWRlcik6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnJlbG9hZCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERvY3VtZW50
SXRlbSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV2luZG93KToKKyAgICAgICAg
KiBsb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHA6IFJlbW92ZWQgYWxsIGNvbnN0cnVjdG9yIG92
ZXJsb2FkcyBleGNlcHQgdGhlIGRlZmF1bHQKKyAgICAgICAgY29uc3RydWN0b3IgYW5kIHRoZSBj
b25zdHJ1Y3RvciB0aGF0IHRha2VzIG9ubHkgYSBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLiBSZW1v
dmUKKyAgICAgICAgdW5uZWNlc3NhcnkgI2luY2x1ZGUgb2YgaGVhZGVyIFNjcmlwdENvbnRyb2xs
ZXIuaC4gSW5jbHVkZSBoZWFkZXIgRXZlbnQuaC4KKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRp
b25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24pOiBBZGRlZC4KKyAgICAgICAgKiBsb2FkZXIvTmF2
aWdhdGlvbkFjdGlvbi5oOiBGb3J3YXJkIGRlY2xhcmUgY2xhc3MgRXZlbnQgYW5kIHJlbW92ZSAj
aW5jbHVkZSBvZgorICAgICAgICBoZWFkZXIgRXZlbnQuaC4gTWFrZSBjb3B5IGNvbnN0cnVjdG9y
LCBjb3B5IGFzc2lnbm1lbnQgb3BlcmF0b3IsIG1vdmUgY29uc3RydWN0b3IsCisgICAgICAgIGFu
ZCBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3Igb3V0LW9mLWxpbmUgdG8gYXZvaWQgdGhlIG5lZWQg
dG8gaW5jbHVkZSBoZWFkZXIgRXZlbnQuaC4KKyAgICAgICAgRXhwb3J0IHRoZSBjb3B5IGNvbnN0
cnVjdG9yIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgZnJvbSBXZWJLaXQgb24gdGhlIEFwcGxlIFdp
bmRvd3MgcG9ydC4KKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3kpOiBVcGRhdGUg
Y29kZSB0byBwYXNzIGEgTmF2aWdhdGlvbkFjdGlvbjo6RGV0YWlscworICAgICAgICBvYmplY3Qg
d2hlbiBpbnN0YW50aWF0aW5nIGEgTmF2aWdhdGlvbkFjdGlvbi4KKyAgICAgICAgKiBwYWdlL0Nv
bnRleHRNZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVuTmV3V2luZG93
KTogRGl0dG8uCisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZS5jcHA6IEluY2x1ZGUgaGVhZGVy
IEV2ZW50LmguCisgICAgICAgICogcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwOiBEaXR0by4K
KwogMjAxNy0wNi0xNiAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAg
ICAgIEJhY2tkcm9wIGJsdXIgbWlzc2luZyBpbiBtZWRpYSBjb250cm9scyBiYXIgb24gU2llcnJh
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggZTdjZGZkMGExYjM5NTY5ZWNjZmUyNTMyMGQ3NDQ0YjlkNWNhOGI4Mi4u
NDIzZDkxYWM0ZTZhYjU2OTgxNTE4OGFjYjM2ZGI2N2FjM2IyMTkwMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSw1ICsxLDE3IEBACiAyMDE3LTA2LTE2ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNv
bT4KIAorICAgICAgICBFeHRyYWN0IE5hdmlnYXRpb25BY3Rpb24gY29uc3RydWN0b3IgYXJndW1l
bnRzIGludG8gYSBzdHJ1Y3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3MzQ4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFVwZGF0ZSBjb2RlIHRvIHBhc3MgYSBOYXZpZ2F0aW9uQWN0aW9uOjpEZXRhaWxz
IG9iamVjdCB3aGVuIGluc3RhbnRpYXRpbmcgYSBOYXZpZ2F0aW9uQWN0aW9uLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3Rvcjo6b3BlbkluTmV3VGFiKToKKworMjAxNy0wNi0xNiAgRGFuaWVsIEJhdGVz
ICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKICAgICAgICAgVXNlIHRoZSB0ZXJtIGljb24gaW5zdGVh
ZCBvZiBmYXZpY29uCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzM0MDAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggYWE0
YjgwODIyYmM0YjVlMzUzNWM3ODAzNjliYmEwNGRlYWQ5MWI4OC4uOWNkZmI1Yzg1NmNhZjkxZTQ1
MTU1NTYxMjQyNjA0NDJjNTUzNjAwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCkBAIC0xMjU4LDcgKzEyNTgsMTAgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChjb25z
dCBGcmFtZUxvYWRSZXF1ZXN0JiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBTdHJpbmcKICAgICBp
ZiAoIWlzTmF2aWdhdGlvbkFsbG93ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTmF2aWdh
dGlvbkFjdGlvbiBhY3Rpb24ocmVxdWVzdCwgbmV3TG9hZFR5cGUsIGlzRm9ybVN1Ym1pc3Npb24s
IGV2ZW50LCBmcmFtZUxvYWRSZXF1ZXN0LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSwg
ZnJhbWVMb2FkUmVxdWVzdC5kb3dubG9hZEF0dHJpYnV0ZSgpKTsKKyAgICBhdXRvIGFjdGlvbkRl
dGFpbHMgPSBOYXZpZ2F0aW9uQWN0aW9uOjpEZXRhaWxzOjpjcmVhdGVGcm9tTG9hZFR5cGUobmV3
TG9hZFR5cGUsIGlzRm9ybVN1Ym1pc3Npb24sIGV2ZW50KTsKKyAgICBhY3Rpb25EZXRhaWxzLnNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBmcmFtZUxvYWRSZXF1ZXN0LnNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3koKTsKKyAgICBhY3Rpb25EZXRhaWxzLmRvd25sb2FkQXR0cmlidXRl
ID0gZnJhbWVMb2FkUmVxdWVzdC5kb3dubG9hZEF0dHJpYnV0ZSgpOworICAgIE5hdmlnYXRpb25B
Y3Rpb24gYWN0aW9uIHsgcmVxdWVzdCwgV1RGTW92ZShhY3Rpb25EZXRhaWxzKSB9OwogCiAgICAg
aWYgKCF0YXJnZXRGcmFtZSAmJiAhZnJhbWVOYW1lLmlzRW1wdHkoKSkgewogICAgICAgICBhY3Rp
b24gPSBhY3Rpb24uY29weVdpdGhTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KHNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5KG1fZnJhbWUsIGZyYW1lTG9hZFJlcXVlc3Quc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpKSk7CkBAIC0xMzMzLDcgKzEzMzYsOSBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpsb2FkKGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHBhc3NlZFJlcXVlc3Qp
CiAgICAgfQogCiAgICAgaWYgKHJlcXVlc3Quc2hvdWxkQ2hlY2tOZXdXaW5kb3dQb2xpY3koKSkg
ewotICAgICAgICBOYXZpZ2F0aW9uQWN0aW9uIGFjdGlvbihyZXF1ZXN0LnJlc291cmNlUmVxdWVz
dCgpLCBOYXZpZ2F0aW9uVHlwZTo6T3RoZXIsIHBhc3NlZFJlcXVlc3Quc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSgpKTsKKyAgICAgICAgTmF2aWdhdGlvbkFjdGlvbjo6RGV0YWlscyBhY3Rp
b25EZXRhaWxzOworICAgICAgICBhY3Rpb25EZXRhaWxzLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kgPSBwYXNzZWRSZXF1ZXN0LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKTsKKyAg
ICAgICAgTmF2aWdhdGlvbkFjdGlvbiBhY3Rpb24geyByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgp
LCBXVEZNb3ZlKGFjdGlvbkRldGFpbHMpIH07CiAgICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVj
a05ld1dpbmRvd1BvbGljeShhY3Rpb24sIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIG51bGxw
dHIsIHJlcXVlc3QuZnJhbWVOYW1lKCksIFt0aGlzXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNv
bnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgYm9vbCBzaG91bGRDb250aW51ZSkgewogICAg
ICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kocmVxdWVzdCwgZm9ybVN0
YXRlLCBmcmFtZU5hbWUsIGFjdGlvbiwgc2hvdWxkQ29udGludWUsIEFsbG93TmF2aWdhdGlvblRv
SW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6U3VwcHJlc3MpOwogICAgICAg
ICB9KTsKQEAgLTE0MzgsNyArMTQ0MywxMCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0aERv
Y3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIEZyYW1lTG9hZFR5cGUgdAogCiAg
ICAgaWYgKHNob3VsZFBlcmZvcm1GcmFnbWVudE5hdmlnYXRpb24oaXNGb3JtU3VibWlzc2lvbiwg
aHR0cE1ldGhvZCwgcG9saWN5Q2hlY2tlcigpLmxvYWRUeXBlKCksIG5ld1VSTCkpIHsKICAgICAg
ICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBvbGREb2N1bWVudExvYWRlciA9IG1fZG9jdW1lbnRM
b2FkZXI7Ci0gICAgICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uKGxvYWRlci0+cmVxdWVzdCgp
LCBwb2xpY3lDaGVja2VyKCkubG9hZFR5cGUoKSwgaXNGb3JtU3VibWlzc2lvbik7CisKKyAgICAg
ICAgRXZlbnQqIHRyaWdnZXJpbmdFdmVudCA9IG51bGxwdHI7CisgICAgICAgIGF1dG8gYWN0aW9u
RGV0YWlscyA9IE5hdmlnYXRpb25BY3Rpb246OkRldGFpbHM6OmNyZWF0ZUZyb21Mb2FkVHlwZShw
b2xpY3lDaGVja2VyKCkubG9hZFR5cGUoKSwgaXNGb3JtU3VibWlzc2lvbiwgdHJpZ2dlcmluZ0V2
ZW50KTsKKyAgICAgICAgTmF2aWdhdGlvbkFjdGlvbiBhY3Rpb24geyBsb2FkZXItPnJlcXVlc3Qo
KSwgV1RGTW92ZShhY3Rpb25EZXRhaWxzKSB9OwogCiAgICAgICAgIG9sZERvY3VtZW50TG9hZGVy
LT5zZXRUcmlnZ2VyaW5nQWN0aW9uKGFjdGlvbik7CiAgICAgICAgIG9sZERvY3VtZW50TG9hZGVy
LT5zZXRMYXN0Q2hlY2tlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KCkpOwpAQCAtMTQ1NCw4ICsx
NDYyLDExIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIoRG9jdW1l
bnRMb2FkZXIqIGxvYWRlciwgRnJhbWVMb2FkVHlwZSB0CiAKICAgICBwb2xpY3lDaGVja2VyKCku
c3RvcENoZWNrKCk7CiAgICAgc2V0UG9saWN5RG9jdW1lbnRMb2FkZXIobG9hZGVyKTsKLSAgICBp
ZiAobG9hZGVyLT50cmlnZ2VyaW5nQWN0aW9uKCkuaXNFbXB0eSgpKQotICAgICAgICBsb2FkZXIt
PnNldFRyaWdnZXJpbmdBY3Rpb24oTmF2aWdhdGlvbkFjdGlvbihsb2FkZXItPnJlcXVlc3QoKSwg
cG9saWN5Q2hlY2tlcigpLmxvYWRUeXBlKCksIGlzRm9ybVN1Ym1pc3Npb24pKTsKKyAgICBpZiAo
bG9hZGVyLT50cmlnZ2VyaW5nQWN0aW9uKCkuaXNFbXB0eSgpKSB7CisgICAgICAgIEV2ZW50KiB0
cmlnZ2VyaW5nRXZlbnQgPSBudWxscHRyOworICAgICAgICBhdXRvIGFjdGlvbkRldGFpbHMgPSBO
YXZpZ2F0aW9uQWN0aW9uOjpEZXRhaWxzOjpjcmVhdGVGcm9tTG9hZFR5cGUocG9saWN5Q2hlY2tl
cigpLmxvYWRUeXBlKCksIGlzRm9ybVN1Ym1pc3Npb24sIHRyaWdnZXJpbmdFdmVudCk7CisgICAg
ICAgIGxvYWRlci0+c2V0VHJpZ2dlcmluZ0FjdGlvbihOYXZpZ2F0aW9uQWN0aW9uIHsgbG9hZGVy
LT5yZXF1ZXN0KCksIFdURk1vdmUoYWN0aW9uRGV0YWlscykgfSk7CisgICAgfQogCiAgICAgaWYg
KEVsZW1lbnQqIG93bmVyRWxlbWVudCA9IG1fZnJhbWUub3duZXJFbGVtZW50KCkpIHsKICAgICAg
ICAgLy8gV2Ugc2tpcCBkaXNwYXRjaGluZyB0aGUgYmVmb3JlbG9hZCBldmVudCBpZiB3ZSd2ZSBh
bHJlYWR5CkBAIC0xNTkzLDggKzE2MDQsMTAgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVsb2FkKE9w
dGlvblNldDxSZWxvYWRPcHRpb24+IG9wdGlvbnMpCiAgICAgcmVxdWVzdC5zZXRDYWNoZVBvbGlj
eShSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSk7CiAKICAgICAvLyBJZiB3ZSdyZSBhYm91dCB0byBy
ZS1wb3N0LCBzZXQgdXAgYWN0aW9uIHNvIHRoZSBhcHBsaWNhdGlvbiBjYW4gd2FybiB0aGUgdXNl
ci4KLSAgICBpZiAocmVxdWVzdC5odHRwTWV0aG9kKCkgPT0gIlBPU1QiKQotICAgICAgICBsb2Fk
ZXItPnNldFRyaWdnZXJpbmdBY3Rpb24oTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0LCBOYXZpZ2F0
aW9uVHlwZTo6Rm9ybVJlc3VibWl0dGVkKSk7CisgICAgaWYgKHJlcXVlc3QuaHR0cE1ldGhvZCgp
ID09ICJQT1NUIikgeworICAgICAgICBOYXZpZ2F0aW9uQWN0aW9uOjpEZXRhaWxzIGFjdGlvbkRl
dGFpbHMgeyBOYXZpZ2F0aW9uVHlwZTo6Rm9ybVJlc3VibWl0dGVkIH07CisgICAgICAgIGxvYWRl
ci0+c2V0VHJpZ2dlcmluZ0FjdGlvbihOYXZpZ2F0aW9uQWN0aW9uIHsgcmVxdWVzdCwgV1RGTW92
ZShhY3Rpb25EZXRhaWxzKSB9KTsKKyAgICB9CiAKICAgICBsb2FkZXItPnNldE92ZXJyaWRlRW5j
b2RpbmcobV9kb2N1bWVudExvYWRlci0+b3ZlcnJpZGVFbmNvZGluZygpKTsKIApAQCAtMjcxOCw3
ICsyNzMxLDExIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChjb25zdCBGcmFt
ZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmCiAgICAgaWYgKERvY3VtZW50KiBk
b2N1bWVudCA9IG1fZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgZG9jdW1lbnQtPmNvbnRlbnRT
ZWN1cml0eVBvbGljeSgpLT51cGdyYWRlSW5zZWN1cmVSZXF1ZXN0SWZOZWVkZWQod29ya2luZ1Jl
c291cmNlUmVxdWVzdCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpJbnNlY3VyZVJlcXVlc3RUeXBl
OjpMb2FkKTsKIAotICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uKHdvcmtpbmdSZXNvdXJjZVJl
cXVlc3QsIGxvYWRUeXBlLCB0cnVlLCBldmVudCwgcmVxdWVzdC5zaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5KCksIHJlcXVlc3QuZG93bmxvYWRBdHRyaWJ1dGUoKSk7CisgICAgYm9vbCBpc0Zv
cm1TdWJtaXNzaW9uID0gdHJ1ZTsKKyAgICBhdXRvIGFjdGlvbkRldGFpbHMgPSBOYXZpZ2F0aW9u
QWN0aW9uOjpEZXRhaWxzOjpjcmVhdGVGcm9tTG9hZFR5cGUobG9hZFR5cGUsIGlzRm9ybVN1Ym1p
c3Npb24sIGV2ZW50KTsKKyAgICBhY3Rpb25EZXRhaWxzLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kgPSByZXF1ZXN0LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKTsKKyAgICBhY3Rp
b25EZXRhaWxzLmRvd25sb2FkQXR0cmlidXRlID0gcmVxdWVzdC5kb3dubG9hZEF0dHJpYnV0ZSgp
OworICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uIHsgd29ya2luZ1Jlc291cmNlUmVxdWVzdCwg
V1RGTW92ZShhY3Rpb25EZXRhaWxzKSB9OwogCiAgICAgaWYgKCFmcmFtZU5hbWUuaXNFbXB0eSgp
KSB7CiAgICAgICAgIC8vIFRoZSBzZWFyY2ggZm9yIGEgdGFyZ2V0IGZyYW1lIGlzIGRvbmUgZWFy
bGllciBpbiB0aGUgY2FzZSBvZiBmb3JtIHN1Ym1pc3Npb24uCkBAIC0zMTc0LDcgKzMxOTEsOSBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeShjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlcwogICAgICAgICBtYWluRnJhbWUtPmRvY3VtZW50KCkt
PnNldFJlZmVycmVyUG9saWN5KGZyYW1lLT5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpKTsK
ICAgICB9CiAKLSAgICBOYXZpZ2F0aW9uQWN0aW9uIG5ld0FjdGlvbihyZXF1ZXN0LCBhY3Rpb24u
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpKTsKKyAgICBOYXZpZ2F0aW9uQWN0aW9uOjpE
ZXRhaWxzIG5ld0FjdGlvbk9wdGlvbnM7CisgICAgbmV3QWN0aW9uT3B0aW9ucy5zaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5ID0gYWN0aW9uLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ko
KTsKKyAgICBOYXZpZ2F0aW9uQWN0aW9uIG5ld0FjdGlvbiB7IHJlcXVlc3QsIFdURk1vdmUobmV3
QWN0aW9uT3B0aW9ucykgfTsKICAgICBtYWluRnJhbWUtPmxvYWRlcigpLmxvYWRXaXRoTmF2aWdh
dGlvbkFjdGlvbihyZXF1ZXN0LCBuZXdBY3Rpb24sIExvY2tIaXN0b3J5OjpObywgRnJhbWVMb2Fk
VHlwZTo6U3RhbmRhcmQsIGZvcm1TdGF0ZSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsK
IH0KIApAQCAtMzM2MCw3ICszMzc5LDEyIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWREaWZmZXJl
bnREb2N1bWVudEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEZyYW1lTG9hZFR5cGUgbG9hCiAgICAg
aWYgKENhY2hlZFBhZ2UqIGNhY2hlZFBhZ2UgPSBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLmdldChp
dGVtLCBtX2ZyYW1lLnBhZ2UoKSkpIHsKICAgICAgICAgYXV0byBkb2N1bWVudExvYWRlciA9IGNh
Y2hlZFBhZ2UtPmRvY3VtZW50TG9hZGVyKCk7CiAgICAgICAgIG1fY2xpZW50LnVwZGF0ZUNhY2hl
ZERvY3VtZW50TG9hZGVyKCpkb2N1bWVudExvYWRlcik7Ci0gICAgICAgIGRvY3VtZW50TG9hZGVy
LT5zZXRUcmlnZ2VyaW5nQWN0aW9uKE5hdmlnYXRpb25BY3Rpb24oZG9jdW1lbnRMb2FkZXItPnJl
cXVlc3QoKSwgbG9hZFR5cGUsIGZhbHNlKSk7CisKKyAgICAgICAgYm9vbCBpc0Zvcm1TdWJtaXNz
aW9uID0gZmFsc2U7CisgICAgICAgIEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQgPSBudWxscHRyOwor
ICAgICAgICBhdXRvIGFjdGlvbkRldGFpbHMgPSBOYXZpZ2F0aW9uQWN0aW9uOjpEZXRhaWxzOjpj
cmVhdGVGcm9tTG9hZFR5cGUobG9hZFR5cGUsIGlzRm9ybVN1Ym1pc3Npb24sIHRyaWdnZXJpbmdF
dmVudCk7CisKKyAgICAgICAgZG9jdW1lbnRMb2FkZXItPnNldFRyaWdnZXJpbmdBY3Rpb24oTmF2
aWdhdGlvbkFjdGlvbiB7IGRvY3VtZW50TG9hZGVyLT5yZXF1ZXN0KCksIFdURk1vdmUoYWN0aW9u
RGV0YWlscykgfSk7CiAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zZXRMYXN0Q2hlY2tlZFJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0KCkpOwogICAgICAgICBsb2FkV2l0aERvY3VtZW50TG9hZGVyKGRv
Y3VtZW50TG9hZGVyLCBsb2FkVHlwZSwgMCwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZ
ZXMpOwogICAgICAgICByZXR1cm47CkBAIC0zNDA4LDEwICszNDMyLDE0IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEZyYW1l
TG9hZFR5cGUgbG9hCiAgICAgICAgIAogICAgICAgICBpZiAoY2FjaGVMb2FkUG9saWN5ID09IE1h
eUF0dGVtcHRDYWNoZU9ubHlMb2FkRm9yRm9ybVN1Ym1pc3Npb25JdGVtKSB7CiAgICAgICAgICAg
ICByZXF1ZXN0LnNldENhY2hlUG9saWN5KFJldHVybkNhY2hlRGF0YURvbnRMb2FkKTsKLSAgICAg
ICAgICAgIGFjdGlvbiA9IE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdCwgbG9hZFR5cGUsIGlzRm9y
bVN1Ym1pc3Npb24sIGV2ZW50LCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKKworICAg
ICAgICAgICAgYXV0byBhY3Rpb25EZXRhaWxzID0gTmF2aWdhdGlvbkFjdGlvbjo6RGV0YWlsczo6
Y3JlYXRlRnJvbUxvYWRUeXBlKGxvYWRUeXBlLCBpc0Zvcm1TdWJtaXNzaW9uLCBldmVudCk7Cisg
ICAgICAgICAgICBhY3Rpb25EZXRhaWxzLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBz
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OworICAgICAgICAgICAgYWN0aW9uID0gTmF2aWdh
dGlvbkFjdGlvbiB7IHJlcXVlc3QsIFdURk1vdmUoYWN0aW9uRGV0YWlscykgfTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIHJlcXVlc3Quc2V0Q2FjaGVQb2xpY3koUmV0dXJuQ2FjaGVE
YXRhRWxzZUxvYWQpOwotICAgICAgICAgICAgYWN0aW9uID0gTmF2aWdhdGlvbkFjdGlvbihyZXF1
ZXN0LCBOYXZpZ2F0aW9uVHlwZTo6Rm9ybVJlc3VibWl0dGVkLCBldmVudCwgc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSk7CisgICAgICAgICAgICBOYXZpZ2F0aW9uQWN0aW9uOjpEZXRhaWxz
IGFjdGlvbkRldGFpbHMgeyBOYXZpZ2F0aW9uVHlwZTo6Rm9ybVJlc3VibWl0dGVkLCBldmVudCwg
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSB9OworICAgICAgICAgICAgYWN0aW9uID0gTmF2
aWdhdGlvbkFjdGlvbiB7IHJlcXVlc3QsIFdURk1vdmUoYWN0aW9uRGV0YWlscykgfTsKICAgICAg
ICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIHN3aXRjaCAobG9hZFR5cGUpIHsKQEAgLTM0NDUs
NyArMzQ3MywxMCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVt
KEhpc3RvcnlJdGVtJiBpdGVtLCBGcmFtZUxvYWRUeXBlIGxvYQogCiAgICAgICAgIFJlc291cmNl
UmVxdWVzdCByZXF1ZXN0Rm9yT3JpZ2luYWxVUkwocmVxdWVzdCk7CiAgICAgICAgIHJlcXVlc3RG
b3JPcmlnaW5hbFVSTC5zZXRVUkwoaXRlbU9yaWdpbmFsVVJMKTsKLSAgICAgICAgYWN0aW9uID0g
TmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0Rm9yT3JpZ2luYWxVUkwsIGxvYWRUeXBlLCBpc0Zvcm1T
dWJtaXNzaW9uLCBldmVudCwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CisKKyAgICAg
ICAgYXV0byBhY3Rpb25EZXRhaWxzID0gTmF2aWdhdGlvbkFjdGlvbjo6RGV0YWlsczo6Y3JlYXRl
RnJvbUxvYWRUeXBlKGxvYWRUeXBlLCBpc0Zvcm1TdWJtaXNzaW9uLCBldmVudCk7CisgICAgICAg
IGFjdGlvbkRldGFpbHMuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IHNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3k7CisgICAgICAgIGFjdGlvbiA9IE5hdmlnYXRpb25BY3Rpb24geyBy
ZXF1ZXN0Rm9yT3JpZ2luYWxVUkwsIFdURk1vdmUoYWN0aW9uRGV0YWlscykgfTsKICAgICB9CiAK
ICAgICBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdCwgYWN0aW9uLCBMb2NrSGlzdG9y
eTo6Tm8sIGxvYWRUeXBlLCAwLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6Olllcyk7CkBA
IC0zNjk5LDggKzM3MzAsMTEgQEAgUmVmUHRyPEZyYW1lPiBjcmVhdGVXaW5kb3coRnJhbWUmIG9w
ZW5lckZyYW1lLCBGcmFtZSYgbG9va3VwRnJhbWUsIGNvbnN0IEZyYW1lTG8KICAgICBpZiAoIW9s
ZFBhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgU2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeVRvQXBwbHkob3BlbmVyRnJhbWUsIHJlcXVlc3Quc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSgpKTsKLSAgICBQYWdlKiBwYWdlID0gb2xkUGFnZS0+Y2hyb21lKCkuY3Jl
YXRlV2luZG93KG9wZW5lckZyYW1lLCByZXF1ZXN0V2l0aFJlZmVycmVyLCBmZWF0dXJlcywgTmF2
aWdhdGlvbkFjdGlvbihyZXF1ZXN0V2l0aFJlZmVycmVyLnJlc291cmNlUmVxdWVzdCgpLCBzaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KSk7CisgICAgTmF2aWdhdGlvbkFjdGlvbjo6RGV0YWls
cyBhY3Rpb25EZXRhaWxzOworICAgIGFjdGlvbkRldGFpbHMuc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSA9IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5KG9wZW5lckZyYW1l
LCByZXF1ZXN0LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSk7CisgICAgTmF2aWdhdGlv
bkFjdGlvbiBhY3Rpb24geyByZXF1ZXN0V2l0aFJlZmVycmVyLnJlc291cmNlUmVxdWVzdCgpLCBX
VEZNb3ZlKGFjdGlvbkRldGFpbHMpIH07CisKKyAgICBQYWdlKiBwYWdlID0gb2xkUGFnZS0+Y2hy
b21lKCkuY3JlYXRlV2luZG93KG9wZW5lckZyYW1lLCByZXF1ZXN0V2l0aFJlZmVycmVyLCBmZWF0
dXJlcywgYWN0aW9uKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAKaW5kZXggMzYyNGI0
MjgzYzg3YmFkMWJlODYzZTdjMmMzZTE1N2E1ODFhOTEwNC4uY2M5MmVmMGM0ZDQ1YTVhZmZlMzVi
MjE1MGFlNjVjZGJlMTEzNTVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05h
dmlnYXRpb25BY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9u
QWN0aW9uLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAx
NiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zMSw3ICszMSw2IEBACiAKICNpbmNsdWRlICJFdmVudC5oIgogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ4LDcwICs0NywzMyBAQCBzdGF0aWMgTmF2aWdhdGlv
blR5cGUgbmF2aWdhdGlvblR5cGUoRnJhbWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlLCBib29sIGlz
Rm9ybVN1YgogICAgIHJldHVybiBOYXZpZ2F0aW9uVHlwZTo6T3RoZXI7CiB9CiAKLU5hdmlnYXRp
b25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJj
ZVJlcXVlc3QsIE5hdmlnYXRpb25UeXBlIHR5cGUsIEV2ZW50KiBldmVudCwgU2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBjb25zdCBBdG9t
aWNTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlKQotICAgIDogbV9yZXNvdXJjZVJlcXVlc3QocmVz
b3VyY2VSZXF1ZXN0KQotICAgICwgbV90eXBlKHR5cGUpCi0gICAgLCBtX2V2ZW50KGV2ZW50KQot
ICAgICwgbV91c2VyR2VzdHVyZVRva2VuKFVzZXJHZXN0dXJlSW5kaWNhdG9yOjpjdXJyZW50VXNl
ckdlc3R1cmUoKSkKLSAgICAsIG1fc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShzaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5KQotICAgICwgbV9kb3dubG9hZEF0dHJpYnV0ZShkb3dubG9h
ZEF0dHJpYnV0ZSkKK2F1dG8gTmF2aWdhdGlvbkFjdGlvbjo6RGV0YWlsczo6Y3JlYXRlRnJvbUxv
YWRUeXBlKEZyYW1lTG9hZFR5cGUgdHlwZSwgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uLCBFdmVudCog
ZXZlbnQpIC0+IERldGFpbHMKIHsKKyAgICBEZXRhaWxzIGRldGFpbHM7CisgICAgZGV0YWlscy5u
YXZpZ2F0aW9uVHlwZSA9IFdlYkNvcmU6Om5hdmlnYXRpb25UeXBlKHR5cGUsIGlzRm9ybVN1Ym1p
c3Npb24sICEhZXZlbnQpOworICAgIGRldGFpbHMudHJpZ2dlcmluZ0V2ZW50ID0gZXZlbnQ7Cisg
ICAgcmV0dXJuIGRldGFpbHM7CiB9CiAKLU5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rp
b24oKQotICAgIDogTmF2aWdhdGlvbkFjdGlvbihSZXNvdXJjZVJlcXVlc3QoKSwgTmF2aWdhdGlv
blR5cGU6Ok90aGVyLCBudWxscHRyLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91
bGROb3RBbGxvdywgbnVsbEF0b20pCi17Ci19Ci0KLU5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRp
b25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCi0gICAgOiBO
YXZpZ2F0aW9uQWN0aW9uKHJlc291cmNlUmVxdWVzdCwgTmF2aWdhdGlvblR5cGU6Ok90aGVyLCBu
dWxscHRyLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdywgbnVs
bEF0b20pCi17Ci19Ci0KLU5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkKLSAgICA6IE5hdmlnYXRpb25BY3Rp
b24ocmVzb3VyY2VSZXF1ZXN0LCBOYXZpZ2F0aW9uVHlwZTo6T3RoZXIsIG51bGxwdHIsIHNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIG51bGxBdG9tKQotewotfQotCi1OYXZpZ2F0aW9uQWN0
aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1
ZXN0LCBOYXZpZ2F0aW9uVHlwZSB0eXBlKQotICAgIDogTmF2aWdhdGlvbkFjdGlvbihyZXNvdXJj
ZVJlcXVlc3QsIHR5cGUsIG51bGxwdHIsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNo
b3VsZE5vdEFsbG93LCBudWxsQXRvbSkKLXsKLX0KLQotTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdh
dGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgTmF2aWdh
dGlvblR5cGUgdHlwZSwgRXZlbnQqIGV2ZW50LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpCi0gICAgOiBOYXZpZ2F0aW9uQWN0aW9uKHJl
c291cmNlUmVxdWVzdCwgdHlwZSwgZXZlbnQsIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ks
IG51bGxBdG9tKQotewotfQorTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbjo6TmF2
aWdhdGlvbkFjdGlvbigpID0gZGVmYXVsdDsKIAotTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlv
bkFjdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgRnJhbWVMb2Fk
VHlwZSBmcmFtZUxvYWRUeXBlLCBib29sIGlzRm9ybVN1Ym1pc3Npb24pCi0gICAgOiBOYXZpZ2F0
aW9uQWN0aW9uKHJlc291cmNlUmVxdWVzdCwgbmF2aWdhdGlvblR5cGUoZnJhbWVMb2FkVHlwZSwg
aXNGb3JtU3VibWlzc2lvbiwgMCksIG51bGxwdHIsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3k6OlNob3VsZE5vdEFsbG93LCBudWxsQXRvbSkKK05hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRp
b25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIERldGFpbHMm
JiBkZXRhaWxzKQorICAgIDogbV9yZXNvdXJjZVJlcXVlc3QgeyByZXNvdXJjZVJlcXVlc3QgfQor
ICAgICwgbV90eXBlIHsgV1RGTW92ZShkZXRhaWxzLm5hdmlnYXRpb25UeXBlKSB9CisgICAgLCBt
X2V2ZW50IHsgV1RGTW92ZShkZXRhaWxzLnRyaWdnZXJpbmdFdmVudCkgfQorICAgICwgbV91c2Vy
R2VzdHVyZVRva2VuIHsgVXNlckdlc3R1cmVJbmRpY2F0b3I6OmN1cnJlbnRVc2VyR2VzdHVyZSgp
IH0KKyAgICAsIG1fc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSB7IFdURk1vdmUoZGV0YWls
cy5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KSB9CisgICAgLCBtX2Rvd25sb2FkQXR0cmli
dXRlIHsgV1RGTW92ZShkZXRhaWxzLmRvd25sb2FkQXR0cmlidXRlKSB9CiB7CiB9CiAKLU5hdmln
YXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNv
dXJjZVJlcXVlc3QsIE5hdmlnYXRpb25UeXBlIHR5cGUsIEV2ZW50KiBldmVudCkKLSAgICA6IE5h
dmlnYXRpb25BY3Rpb24ocmVzb3VyY2VSZXF1ZXN0LCB0eXBlLCBldmVudCwgU2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3csIG51bGxBdG9tKQotewotfQorTmF2aWdh
dGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJikgPSBk
ZWZhdWx0OworTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihOYXZpZ2F0aW9uQWN0
aW9uJiYpID0gZGVmYXVsdDsKIAotTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgTmF2aWdhdGlvblR5cGUgdHlw
ZSwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5KQotICAgIDogTmF2aWdhdGlvbkFjdGlvbihyZXNvdXJjZVJlcXVlc3QsIHR5cGUsIG51bGxw
dHIsIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIG51bGxBdG9tKQotewotfQorTmF2aWdh
dGlvbkFjdGlvbjo6fk5hdmlnYXRpb25BY3Rpb24oKSA9IGRlZmF1bHQ7CiAKLU5hdmlnYXRpb25B
Y3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJl
cXVlc3QsIEZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSwgYm9vbCBpc0Zvcm1TdWJtaXNzaW9u
LCBFdmVudCogZXZlbnQpCi0gICAgOiBOYXZpZ2F0aW9uQWN0aW9uKHJlc291cmNlUmVxdWVzdCwg
bmF2aWdhdGlvblR5cGUoZnJhbWVMb2FkVHlwZSwgaXNGb3JtU3VibWlzc2lvbiwgZXZlbnQpLCBl
dmVudCwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3csIG51bGxB
dG9tKQotewotfQotCi1OYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5
cGUsIGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgRXZlbnQqIGV2ZW50LCBTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpCi0gICAgOiBOYXZpZ2F0
aW9uQWN0aW9uKHJlc291cmNlUmVxdWVzdCwgbmF2aWdhdGlvblR5cGUoZnJhbWVMb2FkVHlwZSwg
aXNGb3JtU3VibWlzc2lvbiwgZXZlbnQpLCBldmVudCwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSwgbnVsbEF0b20pCi17Ci19Ci0KLU5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rp
b24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIEZyYW1lTG9hZFR5cGUg
ZnJhbWVMb2FkVHlwZSwgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uLCBFdmVudCogZXZlbnQsIFNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgY29u
c3QgQXRvbWljU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSkKLSAgICA6IE5hdmlnYXRpb25BY3Rp
b24ocmVzb3VyY2VSZXF1ZXN0LCBuYXZpZ2F0aW9uVHlwZShmcmFtZUxvYWRUeXBlLCBpc0Zvcm1T
dWJtaXNzaW9uLCBldmVudCksIGV2ZW50LCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBk
b3dubG9hZEF0dHJpYnV0ZSkKLXsKLX0KK05hdmlnYXRpb25BY3Rpb24mIE5hdmlnYXRpb25BY3Rp
b246Om9wZXJhdG9yPShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJikgPSBkZWZhdWx0OworTmF2aWdh
dGlvbkFjdGlvbiYgTmF2aWdhdGlvbkFjdGlvbjo6b3BlcmF0b3I9KE5hdmlnYXRpb25BY3Rpb24m
JikgPSBkZWZhdWx0OwogCiBOYXZpZ2F0aW9uQWN0aW9uIE5hdmlnYXRpb25BY3Rpb246OmNvcHlX
aXRoU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaAppbmRleCAzNzAyZGM1NTBmMjY3MGM5NzNkMGUyNDZm
NTNhNDRmYmM4MzU4OGZmLi4xNWI4ZTM1YTI3NDQ4MDkwYjI3M2U3OGU1MjJmYWEzMmQ2ZDRiMDE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMzAg
KzI4LDM3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRl
ICJGcmFtZUxvYWRlclR5cGVzLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEV2ZW50Owor
CiBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uIHsKIHB1YmxpYzoKKyAgICBzdHJ1Y3QgRGV0YWlscyB7
CisgICAgICAgIE5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlIHsgTmF2aWdhdGlvblR5cGU6
Ok90aGVyIH07CisgICAgICAgIEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQgeyBudWxscHRyIH07Cisg
ICAgICAgIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSB7IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93IH07
CisgICAgICAgIEF0b21pY1N0cmluZyBkb3dubG9hZEF0dHJpYnV0ZSB7IG51bGxBdG9tIH07CisK
KyAgICAgICAgc3RhdGljIERldGFpbHMgY3JlYXRlRnJvbUxvYWRUeXBlKEZyYW1lTG9hZFR5cGUs
IGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgRXZlbnQqKTsKKyAgICB9OworCisgICAgLy8gRklYTUU6
IFJlbW92ZSB0aGUgZW1wdHkgY29uc3RydWN0b3IgYW5kIGhhdmUgY2FsbGVycyB1c2Ugc3RkOjpv
cHRpb25hbDxOYXZpZ2F0aW9uQWN0aW9uPi4KICAgICBXRUJDT1JFX0VYUE9SVCBOYXZpZ2F0aW9u
QWN0aW9uKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgTmF2aWdhdGlvbkFjdGlvbihj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBOYXZpZ2F0aW9uQWN0
aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE5hdmlnYXRpb25UeXBlKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCBOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZyYW1lTG9h
ZFR5cGUsIGJvb2wgaXNGb3JtU3VibWlzc2lvbik7Ci0KLSAgICBOYXZpZ2F0aW9uQWN0aW9uKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwotICAg
IE5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgTmF2aWdhdGlvblR5cGUs
IEV2ZW50Kik7Ci0gICAgTmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBO
YXZpZ2F0aW9uVHlwZSwgRXZlbnQqLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKLSAg
ICBOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE5hdmlnYXRpb25UeXBl
LCBFdmVudCosIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZG93bmxvYWRBdHRyaWJ1dGUpOwotICAgIE5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgTmF2aWdhdGlvblR5cGUsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kp
OwotICAgIE5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRnJhbWVMb2Fk
VHlwZSwgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uLCBFdmVudCopOwotICAgIE5hdmlnYXRpb25BY3Rp
b24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRnJhbWVMb2FkVHlwZSwgYm9vbCBpc0Zvcm1TdWJt
aXNzaW9uLCBFdmVudCosIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwotICAgIE5hdmln
YXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRnJhbWVMb2FkVHlwZSwgYm9vbCBp
c0Zvcm1TdWJtaXNzaW9uLCBFdmVudCosIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIGNv
bnN0IEF0b21pY1N0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUpOworICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IE5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRGV0YWls
cyYmKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIE5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdh
dGlvbkFjdGlvbiYpOworICAgIE5hdmlnYXRpb25BY3Rpb24oTmF2aWdhdGlvbkFjdGlvbiYmKTsK
KworICAgIFdFQkNPUkVfRVhQT1JUIH5OYXZpZ2F0aW9uQWN0aW9uKCk7CisKKyAgICBOYXZpZ2F0
aW9uQWN0aW9uJiBvcGVyYXRvcj0oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpOworICAgIE5hdmln
YXRpb25BY3Rpb24mIG9wZXJhdG9yPShOYXZpZ2F0aW9uQWN0aW9uJiYpOwogCiAgICAgTmF2aWdh
dGlvbkFjdGlvbiBjb3B5V2l0aFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koU2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSkgY29uc3Q7CiAKQEAgLTc2LDcgKzgzLDcgQEAgcHJpdmF0ZToK
ICAgICBSZWZQdHI8RXZlbnQ+IG1fZXZlbnQ7CiAgICAgUmVmUHRyPFVzZXJHZXN0dXJlVG9rZW4+
IG1fdXNlckdlc3R1cmVUb2tlbjsKICAgICBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IG1f
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSB7IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3k6OlNob3VsZE5vdEFsbG93IH07Ci0gICAgQXRvbWljU3RyaW5nIG1fZG93bmxvYWRBdHRyaWJ1
dGU7CisgICAgQXRvbWljU3RyaW5nIG1fZG93bmxvYWRBdHRyaWJ1dGUgeyBudWxsQXRvbSB9Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNo
ZWNrZXIuY3BwCmluZGV4IDRlYWU3YjYyYjZlZGIyMjMwZTM4MDc1MDllMjY2MWViZmZlZTI3YjAu
LjYyMjAyZWYwYTZmZjE2NTI2MTYyZjgwNjRmOGQ1YTc1NzJiOTliZTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJD
b250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRl
ICJEb2N1bWVudExvYWRlci5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgogI2luY2x1ZGUgIkZvcm1TdGF0ZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC04
Myw3ICs4NCw5IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBkCiB7CiAgICAgTmF2aWdhdGlvbkFj
dGlvbiBhY3Rpb24gPSBsb2FkZXItPnRyaWdnZXJpbmdBY3Rpb24oKTsKICAgICBpZiAoYWN0aW9u
LmlzRW1wdHkoKSkgewotICAgICAgICBhY3Rpb24gPSBOYXZpZ2F0aW9uQWN0aW9uKHJlcXVlc3Qs
IE5hdmlnYXRpb25UeXBlOjpPdGhlciwgbG9hZGVyLT5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5VG9Qcm9wYWdhdGUoKSk7CisgICAgICAgIE5hdmlnYXRpb25BY3Rpb246OkRldGFpbHMgYWN0
aW9uRGV0YWlsczsKKyAgICAgICAgYWN0aW9uRGV0YWlscy5zaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5ID0gbG9hZGVyLT5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdhdGUo
KTsKKyAgICAgICAgYWN0aW9uID0gTmF2aWdhdGlvbkFjdGlvbiB7IHJlcXVlc3QsIFdURk1vdmUo
YWN0aW9uRGV0YWlscykgfTsKICAgICAgICAgbG9hZGVyLT5zZXRUcmlnZ2VyaW5nQWN0aW9uKGFj
dGlvbik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRN
ZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJv
bGxlci5jcHAKaW5kZXggNjhiMTJlYmY0N2RiYzQxZmYwOWIzNGY2Y2Y3ODAwNmJhYTk2NTY0MC4u
MWU2NjA2MTljNGU4ZGMwNDFkNGVlY2E2M2EyZWRlNDNhODY2ODFkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtMTkxLDcgKzE5MSw4IEBA
IHN0YXRpYyB2b2lkIG9wZW5OZXdXaW5kb3coY29uc3QgVVJMJiB1cmxUb0xvYWQsIEZyYW1lJiBm
cmFtZSwgU2hvdWxkT3BlbkV4dGVybmFsCiAKICAgICBGcmFtZUxvYWRSZXF1ZXN0IHJlcXVlc3Qo
ZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgUmVzb3VyY2VSZXF1ZXN0KHVybFRv
TG9hZCwgZnJhbWUubG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpKSwgTG9ja0hpc3Rvcnk6Ok5v
LCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdh
dGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6U3VwcHJlc3MsIHNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwogCi0gICAgUGFnZSogbmV3UGFnZSA9IG9sZFBh
Z2UtPmNocm9tZSgpLmNyZWF0ZVdpbmRvdyhmcmFtZSwgcmVxdWVzdCwgV2luZG93RmVhdHVyZXMo
KSwgTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKSk7CisgICAgLy8g
RklYTUU6IFNob3VsZCB0aGUgTmF2aWdhdGlvbkFjdGlvbiBzcGVjaWZ5IHRoZSBvcGVuIGV4dGVy
bmFsIFVSTCBwb2xpY3kgKHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpPworICAgIFBhZ2Uq
IG5ld1BhZ2UgPSBvbGRQYWdlLT5jaHJvbWUoKS5jcmVhdGVXaW5kb3coZnJhbWUsIHJlcXVlc3Qs
IFdpbmRvd0ZlYXR1cmVzKCksIE5hdmlnYXRpb25BY3Rpb24geyByZXF1ZXN0LnJlc291cmNlUmVx
dWVzdCgpLCB7IH0gfSk7CiAgICAgaWYgKCFuZXdQYWdlKQogICAgICAgICByZXR1cm47CiAgICAg
bmV3UGFnZS0+Y2hyb21lKCkuc2hvdygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QZXJmb3JtYW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcApp
bmRleCBjMzViMGVmYTBjMmUzNDcwNTZmZDUxNjcwMGY1YjdjMDdmZGZlYWU0Li40ZmE1NmU4NTYz
YTk1YTdiMGZlZTRmOGRkOTZiOTczZDhkNmM0OTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1h
bmNlLmNwcApAQCAtMzcsNiArMzcsNyBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJEb2N1bWVudExvYWRlci5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiUGVyZm9ybWFuY2VFbnRy
eS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwCmluZGV4IGJm
MzU4ZGM2YWI0ODUwOTg2NDUwMWEwNWI2ZjczZDhiMGFjOTkyODkuLmMwMWIzOGJmMjI4ODU1Zjdl
ZDI1NmMwMmY4NTk2MmJkMjAxYjYwMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlcGxh
eS9SZXBsYXlDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5
Q29udHJvbGxlci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJDYXB0dXJpbmdJbnB1
dEN1cnNvci5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9h
ZGVyLmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUg
IkZyYW1lVHJlZS5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcApp
bmRleCA1MGNhYWE0N2QyYzIwYTYxYWE5OTYzZDk4ZDY3NjE2ZjhmNjQxMjUyLi5kZDkxMDdmYTM4
NmVjYWU2ZjMyY2Q3YTc1MWM1ZTZjZjNlNzZkNDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcApAQCAtMTQ4LDcgKzE0OCw4IEBA
IHZvaWQgV2ViSW5zcGVjdG9yOjpvcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcp
CiAgICAgRnJhbWUmIGluc3BlY3RlZE1haW5GcmFtZSA9IGluc3BlY3RlZFBhZ2UtPm1haW5GcmFt
ZSgpOwogICAgIEZyYW1lTG9hZFJlcXVlc3QgcmVxdWVzdChpbnNwZWN0ZWRNYWluRnJhbWUuZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgUmVzb3VyY2VSZXF1ZXN0KHVybFN0cmluZyksICJf
YmxhbmsiLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBNYXliZVNl
bmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3Bl
bmVyUG9saWN5OjpBbGxvdywgUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMLCBTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CiAKLSAgICBQYWdlKiBuZXdQ
YWdlID0gaW5zcGVjdGVkUGFnZS0+Y2hyb21lKCkuY3JlYXRlV2luZG93KGluc3BlY3RlZE1haW5G
cmFtZSwgcmVxdWVzdCwgV2luZG93RmVhdHVyZXMoKSwgTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0
LnJlc291cmNlUmVxdWVzdCgpLCBOYXZpZ2F0aW9uVHlwZTo6TGlua0NsaWNrZWQpKTsKKyAgICBO
YXZpZ2F0aW9uQWN0aW9uIGFjdGlvbiB7IHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIHsgTmF2
aWdhdGlvblR5cGU6OkxpbmtDbGlja2VkIH0gfTsKKyAgICBQYWdlKiBuZXdQYWdlID0gaW5zcGVj
dGVkUGFnZS0+Y2hyb21lKCkuY3JlYXRlV2luZG93KGluc3BlY3RlZE1haW5GcmFtZSwgcmVxdWVz
dCwgeyB9LCBhY3Rpb24pOwogICAgIGlmICghbmV3UGFnZSkKICAgICAgICAgcmV0dXJuOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313149</attachid>
            <date>2017-06-16 15:43:02 -0700</date>
            <delta_ts>2017-06-16 22:52:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173484-20170616154301.patch</filename>
            <type>text/plain</type>
            <size>26863</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWJmYjRhODUzZmNlZTg2
NTY5OWM5N2E0ZDA1OTM3YTcwOWQ2MGU1Yy4uNzA0ZWJjYzIzM2FmYzMxZDhhYTVkNjE4NDA4NjUw
YjE5Mzc3NmU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE3LTA2LTE2ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRyYWN0IE5hdmlnYXRp
b25BY3Rpb24gY29uc3RydWN0b3IgYXJndW1lbnRzIGludG8gYSBzdHJ1Y3QKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzQ4NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEEgTmF2aWdhdGlvbkFjdGlvbiBv
YmplY3QgaXMgYW4gaW1tdXRhYmxlIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgdGhlIGRldGFpbHMg
b2YgYQorICAgICAgICBuYXZpZ2F0aW9uLCBpbmNsdWRpbmcgdGhlIHR5cGUgb2YgYSBuYXZpZ2F0
aW9uIChlLmcuIGxpbmsgY2xpY2spLCB3aGF0IHRyaWdnZXJlZAorICAgICAgICB0aGUgbmF2aWdh
dGlvbiwgYW5kIHRoZSBleHRlcm5hbCBVUkwgcG9saWN5IHRvIHVzZSBmb3IgdGhlIG5hdmlnYXRp
b24uIE92ZXIgdGltZQorICAgICAgICB0aGUgbnVtYmVyIG9mIE5hdmlnYXRpb25BY3Rpb24gY29u
c3RydWN0b3Igb3ZlcmxvYWRzIGhhcyBncm93biB0byAxMiB0byBzdXBwb3J0CisgICAgICAgIGRp
ZmZlcmVudCBjb21iaW5hdGlvbnMgb2YgZGV0YWlscy4gVG8gc3VwcG9ydCBpbnN0YW50aWF0aW5n
IGEgTmF2aWdhdGlvbkFjdGlvbgorICAgICAgICB3aXRoIGFkZGl0aW9uYWwgZGV0YWlscyB3ZSBz
aG91bGQgZXh0cmFjdCBhbGwgb2YgdGhlIG9wdGlvbmFsIGFyZ3VtZW50cyB0aGF0IGNhbgorICAg
ICAgICBiZSBwYXNzZWQgdG8gYSBOYXZpZ2F0aW9uQWN0aW9uIGludG8gYSBzdHJ1Y3QgdGhhdCBj
YW4gYmUgcGFzc2VkIHdoZW4gaW5zdGFudGlhdGluZworICAgICAgICBvbmUuCisKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmxvYWRVUkwpOiBVcGRhdGUgY29kZSB0byBwYXNzIGEgTmF2aWdhdGlvbkFjdGlvbjo6RGV0YWls
cyBvYmplY3QKKyAgICAgICAgd2hlbiBpbnN0YW50aWF0aW5nIGEgTmF2aWdhdGlvbkFjdGlvbi4K
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVudExvYWRlcik6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnJlbG9hZCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERvY3VtZW50
SXRlbSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV2luZG93KToKKyAgICAgICAg
KiBsb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHA6IFJlbW92ZWQgYWxsIGNvbnN0cnVjdG9yIG92
ZXJsb2FkcyBleGNlcHQgdGhlIGRlZmF1bHQKKyAgICAgICAgY29uc3RydWN0b3IgYW5kIHRoZSBj
b25zdHJ1Y3RvciB0aGF0IHRha2VzIG9ubHkgYSBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLiBSZW1v
dmUKKyAgICAgICAgdW5uZWNlc3NhcnkgI2luY2x1ZGUgb2YgaGVhZGVyIFNjcmlwdENvbnRyb2xs
ZXIuaC4gSW5jbHVkZSBoZWFkZXIgRXZlbnQuaC4KKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRp
b25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24pOiBBZGRlZC4KKyAgICAgICAgKiBsb2FkZXIvTmF2
aWdhdGlvbkFjdGlvbi5oOiBGb3J3YXJkIGRlY2xhcmUgY2xhc3MgRXZlbnQgYW5kIHJlbW92ZSAj
aW5jbHVkZSBvZgorICAgICAgICBoZWFkZXIgRXZlbnQuaC4gTWFrZSBjb3B5IGNvbnN0cnVjdG9y
LCBjb3B5IGFzc2lnbm1lbnQgb3BlcmF0b3IsIG1vdmUgY29uc3RydWN0b3IsCisgICAgICAgIGFu
ZCBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3Igb3V0LW9mLWxpbmUgdG8gYXZvaWQgdGhlIG5lZWQg
dG8gaW5jbHVkZSBoZWFkZXIgRXZlbnQuaC4KKyAgICAgICAgRXhwb3J0IHRoZSBjb3B5IGNvbnN0
cnVjdG9yIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgZnJvbSBXZWJLaXQgb24gdGhlIEFwcGxlIFdp
bmRvd3MgcG9ydC4KKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3kpOiBVcGRhdGUg
Y29kZSB0byBwYXNzIGEgTmF2aWdhdGlvbkFjdGlvbjo6RGV0YWlscworICAgICAgICBvYmplY3Qg
d2hlbiBpbnN0YW50aWF0aW5nIGEgTmF2aWdhdGlvbkFjdGlvbi4KKyAgICAgICAgKiBwYWdlL0Nv
bnRleHRNZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVuTmV3V2luZG93
KTogRGl0dG8uCisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZS5jcHA6IEluY2x1ZGUgaGVhZGVy
IEV2ZW50LmguCisgICAgICAgICogcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwOiBEaXR0by4K
KwogMjAxNy0wNi0xNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IFtXSzJdIEFkZCBXS1Byb2Nlc3NQb29sIFNQSSB0byBlZmZpY2llbnRseSByZXNldCBhbGwgcGx1
Z2luIGxvYWQgY2xpZW50IHBvbGljaWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTAzNTQzNTk4ZjlhZjk1OTVl
ODY1ZjhjNDM0NWUyOWU1ZDZkYmQyNy4uNjUxMDg4ZTBiYTU2YjBjYWIzNGE3NDhkNGJjOWM5MjI1
MTU4MzU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTA2LTE2ICBEYW5pZWwg
QmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRyYWN0IE5hdmlnYXRpb25B
Y3Rpb24gY29uc3RydWN0b3IgYXJndW1lbnRzIGludG8gYSBzdHJ1Y3QKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzQ4NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjb2RlIHRvIHBhc3MgYSBO
YXZpZ2F0aW9uQWN0aW9uOjpEZXRhaWxzIG9iamVjdCB3aGVuIGluc3RhbnRpYXRpbmcgYSBOYXZp
Z2F0aW9uQWN0aW9uLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rv
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6b3BlbkluTmV3VGFiKToKKwog
MjAxNy0wNi0xNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtX
SzJdIEFkZCBXS1Byb2Nlc3NQb29sIFNQSSB0byBlZmZpY2llbnRseSByZXNldCBhbGwgcGx1Z2lu
IGxvYWQgY2xpZW50IHBvbGljaWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApp
bmRleCBhYTRiODA4MjJiYzRiNWUzNTM1Yzc4MDM2OWJiYTA0ZGVhZDkxYjg4Li42NmQ2ZTYwOTA5
ZDZiNmE5ZDc0MjhkYTI4MTBhNjIyNzhjNTYwNmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKQEAgLTEyNTgsNyArMTI1OCwxMCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2Fk
VVJMKGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0IFN0cmlu
ZwogICAgIGlmICghaXNOYXZpZ2F0aW9uQWxsb3dlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBOYXZpZ2F0aW9uQWN0aW9uIGFjdGlvbihyZXF1ZXN0LCBuZXdMb2FkVHlwZSwgaXNGb3JtU3Vi
bWlzc2lvbiwgZXZlbnQsIGZyYW1lTG9hZFJlcXVlc3Quc2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSgpLCBmcmFtZUxvYWRSZXF1ZXN0LmRvd25sb2FkQXR0cmlidXRlKCkpOworICAgIGF1dG8g
YWN0aW9uRGV0YWlscyA9IE5hdmlnYXRpb25BY3Rpb246OkRldGFpbHM6OmNyZWF0ZUZyb21Mb2Fk
VHlwZShuZXdMb2FkVHlwZSwgaXNGb3JtU3VibWlzc2lvbiwgZXZlbnQpOworICAgIGFjdGlvbkRl
dGFpbHMuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IGZyYW1lTG9hZFJlcXVlc3Quc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpOworICAgIGFjdGlvbkRldGFpbHMuZG93bmxvYWRB
dHRyaWJ1dGUgPSBmcmFtZUxvYWRSZXF1ZXN0LmRvd25sb2FkQXR0cmlidXRlKCk7CisgICAgTmF2
aWdhdGlvbkFjdGlvbiBhY3Rpb24geyByZXF1ZXN0LCBXVEZNb3ZlKGFjdGlvbkRldGFpbHMpIH07
CiAKICAgICBpZiAoIXRhcmdldEZyYW1lICYmICFmcmFtZU5hbWUuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIGFjdGlvbiA9IGFjdGlvbi5jb3B5V2l0aFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ko
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvQXBwbHkobV9mcmFtZSwgZnJhbWVMb2FkUmVx
dWVzdC5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkpKTsKQEAgLTEzMzMsNyArMTMzNiw5
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWQoY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcGFzc2Vk
UmVxdWVzdCkKICAgICB9CiAKICAgICBpZiAocmVxdWVzdC5zaG91bGRDaGVja05ld1dpbmRvd1Bv
bGljeSgpKSB7Ci0gICAgICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uKHJlcXVlc3QucmVzb3Vy
Y2VSZXF1ZXN0KCksIE5hdmlnYXRpb25UeXBlOjpPdGhlciwgcGFzc2VkUmVxdWVzdC5zaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkpOworICAgICAgICBOYXZpZ2F0aW9uQWN0aW9uOjpEZXRh
aWxzIGFjdGlvbkRldGFpbHM7CisgICAgICAgIGFjdGlvbkRldGFpbHMuc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSA9IHBhc3NlZFJlcXVlc3Quc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSgpOworICAgICAgICBOYXZpZ2F0aW9uQWN0aW9uIGFjdGlvbiB7IHJlcXVlc3QucmVzb3VyY2VS
ZXF1ZXN0KCksIFdURk1vdmUoYWN0aW9uRGV0YWlscykgfTsKICAgICAgICAgcG9saWN5Q2hlY2tl
cigpLmNoZWNrTmV3V2luZG93UG9saWN5KGFjdGlvbiwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3Qo
KSwgbnVsbHB0ciwgcmVxdWVzdC5mcmFtZU5hbWUoKSwgW3RoaXNdIChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1l
TmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBib29sIHNob3VsZENvbnRpbnVl
KSB7CiAgICAgICAgICAgICBjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeShyZXF1ZXN0
LCBmb3JtU3RhdGUsIGZyYW1lTmFtZSwgYWN0aW9uLCBzaG91bGRDb250aW51ZSwgQWxsb3dOYXZp
Z2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpTdXBwcmVzcyk7
CiAgICAgICAgIH0pOwpAQCAtMTQzOCw3ICsxNDQzLDEwIEBAIHZvaWQgRnJhbWVMb2FkZXI6Omxv
YWRXaXRoRG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgRnJhbWVMb2FkVHlw
ZSB0CiAKICAgICBpZiAoc2hvdWxkUGVyZm9ybUZyYWdtZW50TmF2aWdhdGlvbihpc0Zvcm1TdWJt
aXNzaW9uLCBodHRwTWV0aG9kLCBwb2xpY3lDaGVja2VyKCkubG9hZFR5cGUoKSwgbmV3VVJMKSkg
ewogICAgICAgICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IG9sZERvY3VtZW50TG9hZGVyID0gbV9k
b2N1bWVudExvYWRlcjsKLSAgICAgICAgTmF2aWdhdGlvbkFjdGlvbiBhY3Rpb24obG9hZGVyLT5y
ZXF1ZXN0KCksIHBvbGljeUNoZWNrZXIoKS5sb2FkVHlwZSgpLCBpc0Zvcm1TdWJtaXNzaW9uKTsK
KworICAgICAgICBFdmVudCogdHJpZ2dlcmluZ0V2ZW50ID0gbnVsbHB0cjsKKyAgICAgICAgYXV0
byBhY3Rpb25EZXRhaWxzID0gTmF2aWdhdGlvbkFjdGlvbjo6RGV0YWlsczo6Y3JlYXRlRnJvbUxv
YWRUeXBlKHBvbGljeUNoZWNrZXIoKS5sb2FkVHlwZSgpLCBpc0Zvcm1TdWJtaXNzaW9uLCB0cmln
Z2VyaW5nRXZlbnQpOworICAgICAgICBOYXZpZ2F0aW9uQWN0aW9uIGFjdGlvbiB7IGxvYWRlci0+
cmVxdWVzdCgpLCBXVEZNb3ZlKGFjdGlvbkRldGFpbHMpIH07CiAKICAgICAgICAgb2xkRG9jdW1l
bnRMb2FkZXItPnNldFRyaWdnZXJpbmdBY3Rpb24oYWN0aW9uKTsKICAgICAgICAgb2xkRG9jdW1l
bnRMb2FkZXItPnNldExhc3RDaGVja2VkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QoKSk7CkBAIC0x
NDU0LDggKzE0NjIsMTEgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVudExvYWRl
cihEb2N1bWVudExvYWRlciogbG9hZGVyLCBGcmFtZUxvYWRUeXBlIHQKIAogICAgIHBvbGljeUNo
ZWNrZXIoKS5zdG9wQ2hlY2soKTsKICAgICBzZXRQb2xpY3lEb2N1bWVudExvYWRlcihsb2FkZXIp
OwotICAgIGlmIChsb2FkZXItPnRyaWdnZXJpbmdBY3Rpb24oKS5pc0VtcHR5KCkpCi0gICAgICAg
IGxvYWRlci0+c2V0VHJpZ2dlcmluZ0FjdGlvbihOYXZpZ2F0aW9uQWN0aW9uKGxvYWRlci0+cmVx
dWVzdCgpLCBwb2xpY3lDaGVja2VyKCkubG9hZFR5cGUoKSwgaXNGb3JtU3VibWlzc2lvbikpOwor
ICAgIGlmIChsb2FkZXItPnRyaWdnZXJpbmdBY3Rpb24oKS5pc0VtcHR5KCkpIHsKKyAgICAgICAg
RXZlbnQqIHRyaWdnZXJpbmdFdmVudCA9IG51bGxwdHI7CisgICAgICAgIGF1dG8gYWN0aW9uRGV0
YWlscyA9IE5hdmlnYXRpb25BY3Rpb246OkRldGFpbHM6OmNyZWF0ZUZyb21Mb2FkVHlwZShwb2xp
Y3lDaGVja2VyKCkubG9hZFR5cGUoKSwgaXNGb3JtU3VibWlzc2lvbiwgdHJpZ2dlcmluZ0V2ZW50
KTsKKyAgICAgICAgbG9hZGVyLT5zZXRUcmlnZ2VyaW5nQWN0aW9uKE5hdmlnYXRpb25BY3Rpb24g
eyBsb2FkZXItPnJlcXVlc3QoKSwgV1RGTW92ZShhY3Rpb25EZXRhaWxzKSB9KTsKKyAgICB9CiAK
ICAgICBpZiAoRWxlbWVudCogb3duZXJFbGVtZW50ID0gbV9mcmFtZS5vd25lckVsZW1lbnQoKSkg
ewogICAgICAgICAvLyBXZSBza2lwIGRpc3BhdGNoaW5nIHRoZSBiZWZvcmVsb2FkIGV2ZW50IGlm
IHdlJ3ZlIGFscmVhZHkKQEAgLTE1OTMsOCArMTYwNCwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpy
ZWxvYWQoT3B0aW9uU2V0PFJlbG9hZE9wdGlvbj4gb3B0aW9ucykKICAgICByZXF1ZXN0LnNldENh
Y2hlUG9saWN5KFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhKTsKIAogICAgIC8vIElmIHdlJ3JlIGFi
b3V0IHRvIHJlLXBvc3QsIHNldCB1cCBhY3Rpb24gc28gdGhlIGFwcGxpY2F0aW9uIGNhbiB3YXJu
IHRoZSB1c2VyLgotICAgIGlmIChyZXF1ZXN0Lmh0dHBNZXRob2QoKSA9PSAiUE9TVCIpCi0gICAg
ICAgIGxvYWRlci0+c2V0VHJpZ2dlcmluZ0FjdGlvbihOYXZpZ2F0aW9uQWN0aW9uKHJlcXVlc3Qs
IE5hdmlnYXRpb25UeXBlOjpGb3JtUmVzdWJtaXR0ZWQpKTsKKyAgICBpZiAocmVxdWVzdC5odHRw
TWV0aG9kKCkgPT0gIlBPU1QiKSB7CisgICAgICAgIE5hdmlnYXRpb25BY3Rpb246OkRldGFpbHMg
YWN0aW9uRGV0YWlsczsKKyAgICAgICAgYWN0aW9uRGV0YWlscy5uYXZpZ2F0aW9uVHlwZSA9IE5h
dmlnYXRpb25UeXBlOjpGb3JtUmVzdWJtaXR0ZWQ7CisgICAgICAgIGxvYWRlci0+c2V0VHJpZ2dl
cmluZ0FjdGlvbihOYXZpZ2F0aW9uQWN0aW9uIHsgcmVxdWVzdCwgV1RGTW92ZShhY3Rpb25EZXRh
aWxzKSB9KTsKKyAgICB9CiAKICAgICBsb2FkZXItPnNldE92ZXJyaWRlRW5jb2RpbmcobV9kb2N1
bWVudExvYWRlci0+b3ZlcnJpZGVFbmNvZGluZygpKTsKIApAQCAtMjcxOCw3ICsyNzMyLDExIEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmCiAgICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9IG1f
ZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgZG9jdW1lbnQtPmNvbnRlbnRTZWN1cml0eVBvbGlj
eSgpLT51cGdyYWRlSW5zZWN1cmVSZXF1ZXN0SWZOZWVkZWQod29ya2luZ1Jlc291cmNlUmVxdWVz
dCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpJbnNlY3VyZVJlcXVlc3RUeXBlOjpMb2FkKTsKIAot
ICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uKHdvcmtpbmdSZXNvdXJjZVJlcXVlc3QsIGxvYWRU
eXBlLCB0cnVlLCBldmVudCwgcmVxdWVzdC5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCks
IHJlcXVlc3QuZG93bmxvYWRBdHRyaWJ1dGUoKSk7CisgICAgYm9vbCBpc0Zvcm1TdWJtaXNzaW9u
ID0gdHJ1ZTsKKyAgICBhdXRvIGFjdGlvbkRldGFpbHMgPSBOYXZpZ2F0aW9uQWN0aW9uOjpEZXRh
aWxzOjpjcmVhdGVGcm9tTG9hZFR5cGUobG9hZFR5cGUsIGlzRm9ybVN1Ym1pc3Npb24sIGV2ZW50
KTsKKyAgICBhY3Rpb25EZXRhaWxzLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSByZXF1
ZXN0LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKTsKKyAgICBhY3Rpb25EZXRhaWxzLmRv
d25sb2FkQXR0cmlidXRlID0gcmVxdWVzdC5kb3dubG9hZEF0dHJpYnV0ZSgpOworICAgIE5hdmln
YXRpb25BY3Rpb24gYWN0aW9uIHsgd29ya2luZ1Jlc291cmNlUmVxdWVzdCwgV1RGTW92ZShhY3Rp
b25EZXRhaWxzKSB9OwogCiAgICAgaWYgKCFmcmFtZU5hbWUuaXNFbXB0eSgpKSB7CiAgICAgICAg
IC8vIFRoZSBzZWFyY2ggZm9yIGEgdGFyZ2V0IGZyYW1lIGlzIGRvbmUgZWFybGllciBpbiB0aGUg
Y2FzZSBvZiBmb3JtIHN1Ym1pc3Npb24uCkBAIC0zMTc0LDcgKzMxOTIsOSBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlcwogICAgICAgICBtYWluRnJhbWUtPmRvY3VtZW50KCktPnNldFJlZmVycmVy
UG9saWN5KGZyYW1lLT5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpKTsKICAgICB9CiAKLSAg
ICBOYXZpZ2F0aW9uQWN0aW9uIG5ld0FjdGlvbihyZXF1ZXN0LCBhY3Rpb24uc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSgpKTsKKyAgICBOYXZpZ2F0aW9uQWN0aW9uOjpEZXRhaWxzIG5ld0Fj
dGlvbk9wdGlvbnM7CisgICAgbmV3QWN0aW9uT3B0aW9ucy5zaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5ID0gYWN0aW9uLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKTsKKyAgICBOYXZp
Z2F0aW9uQWN0aW9uIG5ld0FjdGlvbiB7IHJlcXVlc3QsIFdURk1vdmUobmV3QWN0aW9uT3B0aW9u
cykgfTsKICAgICBtYWluRnJhbWUtPmxvYWRlcigpLmxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbihy
ZXF1ZXN0LCBuZXdBY3Rpb24sIExvY2tIaXN0b3J5OjpObywgRnJhbWVMb2FkVHlwZTo6U3RhbmRh
cmQsIGZvcm1TdGF0ZSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKIH0KIApAQCAtMzM2
MCw3ICszMzgwLDEyIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEl0
ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEZyYW1lTG9hZFR5cGUgbG9hCiAgICAgaWYgKENhY2hlZFBh
Z2UqIGNhY2hlZFBhZ2UgPSBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLmdldChpdGVtLCBtX2ZyYW1l
LnBhZ2UoKSkpIHsKICAgICAgICAgYXV0byBkb2N1bWVudExvYWRlciA9IGNhY2hlZFBhZ2UtPmRv
Y3VtZW50TG9hZGVyKCk7CiAgICAgICAgIG1fY2xpZW50LnVwZGF0ZUNhY2hlZERvY3VtZW50TG9h
ZGVyKCpkb2N1bWVudExvYWRlcik7Ci0gICAgICAgIGRvY3VtZW50TG9hZGVyLT5zZXRUcmlnZ2Vy
aW5nQWN0aW9uKE5hdmlnYXRpb25BY3Rpb24oZG9jdW1lbnRMb2FkZXItPnJlcXVlc3QoKSwgbG9h
ZFR5cGUsIGZhbHNlKSk7CisKKyAgICAgICAgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uID0gZmFsc2U7
CisgICAgICAgIEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQgPSBudWxscHRyOworICAgICAgICBhdXRv
IGFjdGlvbkRldGFpbHMgPSBOYXZpZ2F0aW9uQWN0aW9uOjpEZXRhaWxzOjpjcmVhdGVGcm9tTG9h
ZFR5cGUobG9hZFR5cGUsIGlzRm9ybVN1Ym1pc3Npb24sIHRyaWdnZXJpbmdFdmVudCk7CisKKyAg
ICAgICAgZG9jdW1lbnRMb2FkZXItPnNldFRyaWdnZXJpbmdBY3Rpb24oTmF2aWdhdGlvbkFjdGlv
biB7IGRvY3VtZW50TG9hZGVyLT5yZXF1ZXN0KCksIFdURk1vdmUoYWN0aW9uRGV0YWlscykgfSk7
CiAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zZXRMYXN0Q2hlY2tlZFJlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXN0KCkpOwogICAgICAgICBsb2FkV2l0aERvY3VtZW50TG9hZGVyKGRvY3VtZW50TG9hZGVy
LCBsb2FkVHlwZSwgMCwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMpOwogICAgICAg
ICByZXR1cm47CkBAIC0zNDA4LDEwICszNDMzLDE3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRE
aWZmZXJlbnREb2N1bWVudEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEZyYW1lTG9hZFR5cGUgbG9h
CiAgICAgICAgIAogICAgICAgICBpZiAoY2FjaGVMb2FkUG9saWN5ID09IE1heUF0dGVtcHRDYWNo
ZU9ubHlMb2FkRm9yRm9ybVN1Ym1pc3Npb25JdGVtKSB7CiAgICAgICAgICAgICByZXF1ZXN0LnNl
dENhY2hlUG9saWN5KFJldHVybkNhY2hlRGF0YURvbnRMb2FkKTsKLSAgICAgICAgICAgIGFjdGlv
biA9IE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdCwgbG9hZFR5cGUsIGlzRm9ybVN1Ym1pc3Npb24s
IGV2ZW50LCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKKworICAgICAgICAgICAgYXV0
byBhY3Rpb25EZXRhaWxzID0gTmF2aWdhdGlvbkFjdGlvbjo6RGV0YWlsczo6Y3JlYXRlRnJvbUxv
YWRUeXBlKGxvYWRUeXBlLCBpc0Zvcm1TdWJtaXNzaW9uLCBldmVudCk7CisgICAgICAgICAgICBh
Y3Rpb25EZXRhaWxzLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBzaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5OworICAgICAgICAgICAgYWN0aW9uID0gTmF2aWdhdGlvbkFjdGlvbiB7
IHJlcXVlc3QsIFdURk1vdmUoYWN0aW9uRGV0YWlscykgfTsKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIHJlcXVlc3Quc2V0Q2FjaGVQb2xpY3koUmV0dXJuQ2FjaGVEYXRhRWxzZUxvYWQp
OwotICAgICAgICAgICAgYWN0aW9uID0gTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0LCBOYXZpZ2F0
aW9uVHlwZTo6Rm9ybVJlc3VibWl0dGVkLCBldmVudCwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSk7CisgICAgICAgICAgICBOYXZpZ2F0aW9uQWN0aW9uOjpEZXRhaWxzIGFjdGlvbkRldGFp
bHM7CisgICAgICAgICAgICBhY3Rpb25EZXRhaWxzLm5hdmlnYXRpb25UeXBlID0gTmF2aWdhdGlv
blR5cGU6OkZvcm1SZXN1Ym1pdHRlZDsKKyAgICAgICAgICAgIGFjdGlvbkRldGFpbHMudHJpZ2dl
cmluZ0V2ZW50ID0gZXZlbnQ7CisgICAgICAgICAgICBhY3Rpb25EZXRhaWxzLnNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3kgPSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OworICAgICAg
ICAgICAgYWN0aW9uID0gTmF2aWdhdGlvbkFjdGlvbiB7IHJlcXVlc3QsIFdURk1vdmUoYWN0aW9u
RGV0YWlscykgfTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIHN3aXRjaCAobG9h
ZFR5cGUpIHsKQEAgLTM0NDUsNyArMzQ3NywxMCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRGlm
ZmVyZW50RG9jdW1lbnRJdGVtKEhpc3RvcnlJdGVtJiBpdGVtLCBGcmFtZUxvYWRUeXBlIGxvYQog
CiAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0Rm9yT3JpZ2luYWxVUkwocmVxdWVzdCk7
CiAgICAgICAgIHJlcXVlc3RGb3JPcmlnaW5hbFVSTC5zZXRVUkwoaXRlbU9yaWdpbmFsVVJMKTsK
LSAgICAgICAgYWN0aW9uID0gTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0Rm9yT3JpZ2luYWxVUkws
IGxvYWRUeXBlLCBpc0Zvcm1TdWJtaXNzaW9uLCBldmVudCwgc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSk7CisKKyAgICAgICAgYXV0byBhY3Rpb25EZXRhaWxzID0gTmF2aWdhdGlvbkFjdGlv
bjo6RGV0YWlsczo6Y3JlYXRlRnJvbUxvYWRUeXBlKGxvYWRUeXBlLCBpc0Zvcm1TdWJtaXNzaW9u
LCBldmVudCk7CisgICAgICAgIGFjdGlvbkRldGFpbHMuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSA9IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k7CisgICAgICAgIGFjdGlvbiA9IE5h
dmlnYXRpb25BY3Rpb24geyByZXF1ZXN0Rm9yT3JpZ2luYWxVUkwsIFdURk1vdmUoYWN0aW9uRGV0
YWlscykgfTsKICAgICB9CiAKICAgICBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdCwg
YWN0aW9uLCBMb2NrSGlzdG9yeTo6Tm8sIGxvYWRUeXBlLCAwLCBBbGxvd05hdmlnYXRpb25Ub0lu
dmFsaWRVUkw6Olllcyk7CkBAIC0zNjk5LDggKzM3MzQsMTEgQEAgUmVmUHRyPEZyYW1lPiBjcmVh
dGVXaW5kb3coRnJhbWUmIG9wZW5lckZyYW1lLCBGcmFtZSYgbG9va3VwRnJhbWUsIGNvbnN0IEZy
YW1lTG8KICAgICBpZiAoIW9sZFBhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
ID0gc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvQXBwbHkob3BlbmVyRnJhbWUsIHJlcXVl
c3Quc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpKTsKLSAgICBQYWdlKiBwYWdlID0gb2xk
UGFnZS0+Y2hyb21lKCkuY3JlYXRlV2luZG93KG9wZW5lckZyYW1lLCByZXF1ZXN0V2l0aFJlZmVy
cmVyLCBmZWF0dXJlcywgTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0V2l0aFJlZmVycmVyLnJlc291
cmNlUmVxdWVzdCgpLCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KSk7CisgICAgTmF2aWdh
dGlvbkFjdGlvbjo6RGV0YWlscyBhY3Rpb25EZXRhaWxzOworICAgIGFjdGlvbkRldGFpbHMuc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lU
b0FwcGx5KG9wZW5lckZyYW1lLCByZXF1ZXN0LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ko
KSk7CisgICAgTmF2aWdhdGlvbkFjdGlvbiBhY3Rpb24geyByZXF1ZXN0V2l0aFJlZmVycmVyLnJl
c291cmNlUmVxdWVzdCgpLCBXVEZNb3ZlKGFjdGlvbkRldGFpbHMpIH07CisKKyAgICBQYWdlKiBw
YWdlID0gb2xkUGFnZS0+Y2hyb21lKCkuY3JlYXRlV2luZG93KG9wZW5lckZyYW1lLCByZXF1ZXN0
V2l0aFJlZmVycmVyLCBmZWF0dXJlcywgYWN0aW9uKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2
aWdhdGlvbkFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlv
bi5jcHAKaW5kZXggMzYyNGI0MjgzYzg3YmFkMWJlODYzZTdjMmMzZTE1N2E1ODFhOTEwNC4uY2M5
MmVmMGM0ZDQ1YTVhZmZlMzViMjE1MGFlNjVjZGJlMTEzNTVkNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDYtMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw3ICszMSw2IEBACiAKICNpbmNs
dWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0
Q29udHJvbGxlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ4LDcwICs0NywzMyBA
QCBzdGF0aWMgTmF2aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5cGUoRnJhbWVMb2FkVHlwZSBmcmFt
ZUxvYWRUeXBlLCBib29sIGlzRm9ybVN1YgogICAgIHJldHVybiBOYXZpZ2F0aW9uVHlwZTo6T3Ro
ZXI7CiB9CiAKLU5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIE5hdmlnYXRpb25UeXBlIHR5cGUsIEV2ZW50KiBl
dmVudCwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5LCBjb25zdCBBdG9taWNTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlKQotICAgIDogbV9y
ZXNvdXJjZVJlcXVlc3QocmVzb3VyY2VSZXF1ZXN0KQotICAgICwgbV90eXBlKHR5cGUpCi0gICAg
LCBtX2V2ZW50KGV2ZW50KQotICAgICwgbV91c2VyR2VzdHVyZVRva2VuKFVzZXJHZXN0dXJlSW5k
aWNhdG9yOjpjdXJyZW50VXNlckdlc3R1cmUoKSkKLSAgICAsIG1fc2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeShzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQotICAgICwgbV9kb3dubG9h
ZEF0dHJpYnV0ZShkb3dubG9hZEF0dHJpYnV0ZSkKK2F1dG8gTmF2aWdhdGlvbkFjdGlvbjo6RGV0
YWlsczo6Y3JlYXRlRnJvbUxvYWRUeXBlKEZyYW1lTG9hZFR5cGUgdHlwZSwgYm9vbCBpc0Zvcm1T
dWJtaXNzaW9uLCBFdmVudCogZXZlbnQpIC0+IERldGFpbHMKIHsKKyAgICBEZXRhaWxzIGRldGFp
bHM7CisgICAgZGV0YWlscy5uYXZpZ2F0aW9uVHlwZSA9IFdlYkNvcmU6Om5hdmlnYXRpb25UeXBl
KHR5cGUsIGlzRm9ybVN1Ym1pc3Npb24sICEhZXZlbnQpOworICAgIGRldGFpbHMudHJpZ2dlcmlu
Z0V2ZW50ID0gZXZlbnQ7CisgICAgcmV0dXJuIGRldGFpbHM7CiB9CiAKLU5hdmlnYXRpb25BY3Rp
b246Ok5hdmlnYXRpb25BY3Rpb24oKQotICAgIDogTmF2aWdhdGlvbkFjdGlvbihSZXNvdXJjZVJl
cXVlc3QoKSwgTmF2aWdhdGlvblR5cGU6Ok90aGVyLCBudWxscHRyLCBTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdywgbnVsbEF0b20pCi17Ci19Ci0KLU5hdmlnYXRp
b25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJj
ZVJlcXVlc3QpCi0gICAgOiBOYXZpZ2F0aW9uQWN0aW9uKHJlc291cmNlUmVxdWVzdCwgTmF2aWdh
dGlvblR5cGU6Ok90aGVyLCBudWxscHRyLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpT
aG91bGROb3RBbGxvdywgbnVsbEF0b20pCi17Ci19Ci0KLU5hdmlnYXRpb25BY3Rpb246Ok5hdmln
YXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIFNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkKLSAg
ICA6IE5hdmlnYXRpb25BY3Rpb24ocmVzb3VyY2VSZXF1ZXN0LCBOYXZpZ2F0aW9uVHlwZTo6T3Ro
ZXIsIG51bGxwdHIsIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIG51bGxBdG9tKQotewot
fQotCi1OYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBOYXZpZ2F0aW9uVHlwZSB0eXBlKQotICAgIDogTmF2aWdh
dGlvbkFjdGlvbihyZXNvdXJjZVJlcXVlc3QsIHR5cGUsIG51bGxwdHIsIFNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBudWxsQXRvbSkKLXsKLX0KLQotTmF2aWdh
dGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291
cmNlUmVxdWVzdCwgTmF2aWdhdGlvblR5cGUgdHlwZSwgRXZlbnQqIGV2ZW50LCBTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpCi0gICAgOiBO
YXZpZ2F0aW9uQWN0aW9uKHJlc291cmNlUmVxdWVzdCwgdHlwZSwgZXZlbnQsIHNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3ksIG51bGxBdG9tKQotewotfQorTmF2aWdhdGlvbkFjdGlvbjo6TmF2
aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbigpID0gZGVmYXVsdDsKIAotTmF2aWdhdGlv
bkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNl
UmVxdWVzdCwgRnJhbWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlLCBib29sIGlzRm9ybVN1Ym1pc3Np
b24pCi0gICAgOiBOYXZpZ2F0aW9uQWN0aW9uKHJlc291cmNlUmVxdWVzdCwgbmF2aWdhdGlvblR5
cGUoZnJhbWVMb2FkVHlwZSwgaXNGb3JtU3VibWlzc2lvbiwgMCksIG51bGxwdHIsIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBudWxsQXRvbSkKK05hdmlnYXRp
b25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJj
ZVJlcXVlc3QsIERldGFpbHMmJiBkZXRhaWxzKQorICAgIDogbV9yZXNvdXJjZVJlcXVlc3QgeyBy
ZXNvdXJjZVJlcXVlc3QgfQorICAgICwgbV90eXBlIHsgV1RGTW92ZShkZXRhaWxzLm5hdmlnYXRp
b25UeXBlKSB9CisgICAgLCBtX2V2ZW50IHsgV1RGTW92ZShkZXRhaWxzLnRyaWdnZXJpbmdFdmVu
dCkgfQorICAgICwgbV91c2VyR2VzdHVyZVRva2VuIHsgVXNlckdlc3R1cmVJbmRpY2F0b3I6OmN1
cnJlbnRVc2VyR2VzdHVyZSgpIH0KKyAgICAsIG1fc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSB7IFdURk1vdmUoZGV0YWlscy5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KSB9CisgICAg
LCBtX2Rvd25sb2FkQXR0cmlidXRlIHsgV1RGTW92ZShkZXRhaWxzLmRvd25sb2FkQXR0cmlidXRl
KSB9CiB7CiB9CiAKLU5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIE5hdmlnYXRpb25UeXBlIHR5cGUsIEV2ZW50
KiBldmVudCkKLSAgICA6IE5hdmlnYXRpb25BY3Rpb24ocmVzb3VyY2VSZXF1ZXN0LCB0eXBlLCBl
dmVudCwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3csIG51bGxB
dG9tKQotewotfQorTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZp
Z2F0aW9uQWN0aW9uJikgPSBkZWZhdWx0OworTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFj
dGlvbihOYXZpZ2F0aW9uQWN0aW9uJiYpID0gZGVmYXVsdDsKIAotTmF2aWdhdGlvbkFjdGlvbjo6
TmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwg
TmF2aWdhdGlvblR5cGUgdHlwZSwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5KQotICAgIDogTmF2aWdhdGlvbkFjdGlvbihyZXNvdXJjZVJl
cXVlc3QsIHR5cGUsIG51bGxwdHIsIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIG51bGxB
dG9tKQotewotfQorTmF2aWdhdGlvbkFjdGlvbjo6fk5hdmlnYXRpb25BY3Rpb24oKSA9IGRlZmF1
bHQ7CiAKLU5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIEZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSwgYm9v
bCBpc0Zvcm1TdWJtaXNzaW9uLCBFdmVudCogZXZlbnQpCi0gICAgOiBOYXZpZ2F0aW9uQWN0aW9u
KHJlc291cmNlUmVxdWVzdCwgbmF2aWdhdGlvblR5cGUoZnJhbWVMb2FkVHlwZSwgaXNGb3JtU3Vi
bWlzc2lvbiwgZXZlbnQpLCBldmVudCwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hv
dWxkTm90QWxsb3csIG51bGxBdG9tKQotewotfQotCi1OYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0
aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBGcmFtZUxv
YWRUeXBlIGZyYW1lTG9hZFR5cGUsIGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgRXZlbnQqIGV2ZW50
LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3kpCi0gICAgOiBOYXZpZ2F0aW9uQWN0aW9uKHJlc291cmNlUmVxdWVzdCwgbmF2aWdhdGlvblR5
cGUoZnJhbWVMb2FkVHlwZSwgaXNGb3JtU3VibWlzc2lvbiwgZXZlbnQpLCBldmVudCwgc2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSwgbnVsbEF0b20pCi17Ci19Ci0KLU5hdmlnYXRpb25BY3Rp
b246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVl
c3QsIEZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSwgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uLCBF
dmVudCogZXZlbnQsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSwgY29uc3QgQXRvbWljU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSkKLSAg
ICA6IE5hdmlnYXRpb25BY3Rpb24ocmVzb3VyY2VSZXF1ZXN0LCBuYXZpZ2F0aW9uVHlwZShmcmFt
ZUxvYWRUeXBlLCBpc0Zvcm1TdWJtaXNzaW9uLCBldmVudCksIGV2ZW50LCBzaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5LCBkb3dubG9hZEF0dHJpYnV0ZSkKLXsKLX0KK05hdmlnYXRpb25BY3Rp
b24mIE5hdmlnYXRpb25BY3Rpb246Om9wZXJhdG9yPShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJikg
PSBkZWZhdWx0OworTmF2aWdhdGlvbkFjdGlvbiYgTmF2aWdhdGlvbkFjdGlvbjo6b3BlcmF0b3I9
KE5hdmlnYXRpb25BY3Rpb24mJikgPSBkZWZhdWx0OwogCiBOYXZpZ2F0aW9uQWN0aW9uIE5hdmln
YXRpb25BY3Rpb246OmNvcHlXaXRoU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpIGNvbnN0
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaAppbmRleCAzNzAyZGM1
NTBmMjY3MGM5NzNkMGUyNDZmNTNhNDRmYmM4MzU4OGZmLi4xNWI4ZTM1YTI3NDQ4MDkwYjI3M2U3
OGU1MjJmYWEzMmQ2ZDRiMDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2
aWdhdGlvbkFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0
aW9uLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjgsMzAgKzI4LDM3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAi
RXZlbnQuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCi0jaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRp
Y2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIEV2ZW50OworCiBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uIHsKIHB1YmxpYzoKKyAg
ICBzdHJ1Y3QgRGV0YWlscyB7CisgICAgICAgIE5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBl
IHsgTmF2aWdhdGlvblR5cGU6Ok90aGVyIH07CisgICAgICAgIEV2ZW50KiB0cmlnZ2VyaW5nRXZl
bnQgeyBudWxscHRyIH07CisgICAgICAgIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSB7IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6
OlNob3VsZE5vdEFsbG93IH07CisgICAgICAgIEF0b21pY1N0cmluZyBkb3dubG9hZEF0dHJpYnV0
ZSB7IG51bGxBdG9tIH07CisKKyAgICAgICAgc3RhdGljIERldGFpbHMgY3JlYXRlRnJvbUxvYWRU
eXBlKEZyYW1lTG9hZFR5cGUsIGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgRXZlbnQqKTsKKyAgICB9
OworCisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgZW1wdHkgY29uc3RydWN0b3IgYW5kIGhhdmUg
Y2FsbGVycyB1c2Ugc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW9uQWN0aW9uPi4KICAgICBXRUJDT1JF
X0VYUE9SVCBOYXZpZ2F0aW9uQWN0aW9uKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
TmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE5hdmlnYXRpb25U
eXBlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIEZyYW1lTG9hZFR5cGUsIGJvb2wgaXNGb3JtU3VibWlzc2lvbik7Ci0KLSAgICBO
YXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kpOwotICAgIE5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgTmF2aWdhdGlvblR5cGUsIEV2ZW50Kik7Ci0gICAgTmF2aWdhdGlvbkFjdGlvbihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBOYXZpZ2F0aW9uVHlwZSwgRXZlbnQqLCBTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5KTsKLSAgICBOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIE5hdmlnYXRpb25UeXBlLCBFdmVudCosIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ks
IGNvbnN0IEF0b21pY1N0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUpOwotICAgIE5hdmlnYXRpb25B
Y3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgTmF2aWdhdGlvblR5cGUsIFNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3kpOwotICAgIE5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgRnJhbWVMb2FkVHlwZSwgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uLCBFdmVudCopOwot
ICAgIE5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRnJhbWVMb2FkVHlw
ZSwgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uLCBFdmVudCosIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kpOwotICAgIE5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRnJh
bWVMb2FkVHlwZSwgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uLCBFdmVudCosIFNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3ksIGNvbnN0IEF0b21pY1N0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IE5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgRGV0YWlscyYmKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIE5hdmlnYXRpb25B
Y3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpOworICAgIE5hdmlnYXRpb25BY3Rpb24oTmF2
aWdhdGlvbkFjdGlvbiYmKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIH5OYXZpZ2F0aW9uQWN0aW9u
KCk7CisKKyAgICBOYXZpZ2F0aW9uQWN0aW9uJiBvcGVyYXRvcj0oY29uc3QgTmF2aWdhdGlvbkFj
dGlvbiYpOworICAgIE5hdmlnYXRpb25BY3Rpb24mIG9wZXJhdG9yPShOYXZpZ2F0aW9uQWN0aW9u
JiYpOwogCiAgICAgTmF2aWdhdGlvbkFjdGlvbiBjb3B5V2l0aFNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3koU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkgY29uc3Q7CiAKQEAgLTc2LDcg
KzgzLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RXZlbnQ+IG1fZXZlbnQ7CiAgICAgUmVmUHRy
PFVzZXJHZXN0dXJlVG9rZW4+IG1fdXNlckdlc3R1cmVUb2tlbjsKICAgICBTaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5IG1fc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSB7IFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93IH07Ci0gICAgQXRvbWljU3RyaW5n
IG1fZG93bmxvYWRBdHRyaWJ1dGU7CisgICAgQXRvbWljU3RyaW5nIG1fZG93bmxvYWRBdHRyaWJ1
dGUgeyBudWxsQXRvbSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCmluZGV4IDRlYWU3YjYyYjZlZGIyMjMwZTM4MDc1
MDllMjY2MWViZmZlZTI3YjAuLjYyMjAyZWYwYTZmZjE2NTI2MTYyZjgwNjRmOGQ1YTc1NzJiOTli
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKQEAgLTM1LDYgKzM1
LDcgQEAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJET01X
aW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgorI2luY2x1ZGUgIkV2ZW50Lmgi
CiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZvcm1TdGF0ZS5oIgogI2luY2x1
ZGUgIkZyYW1lLmgiCkBAIC04Myw3ICs4NCw5IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tO
YXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBkCiB7
CiAgICAgTmF2aWdhdGlvbkFjdGlvbiBhY3Rpb24gPSBsb2FkZXItPnRyaWdnZXJpbmdBY3Rpb24o
KTsKICAgICBpZiAoYWN0aW9uLmlzRW1wdHkoKSkgewotICAgICAgICBhY3Rpb24gPSBOYXZpZ2F0
aW9uQWN0aW9uKHJlcXVlc3QsIE5hdmlnYXRpb25UeXBlOjpPdGhlciwgbG9hZGVyLT5zaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdhdGUoKSk7CisgICAgICAgIE5hdmlnYXRpb25B
Y3Rpb246OkRldGFpbHMgYWN0aW9uRGV0YWlsczsKKyAgICAgICAgYWN0aW9uRGV0YWlscy5zaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gbG9hZGVyLT5zaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5VG9Qcm9wYWdhdGUoKTsKKyAgICAgICAgYWN0aW9uID0gTmF2aWdhdGlvbkFjdGlvbiB7
IHJlcXVlc3QsIFdURk1vdmUoYWN0aW9uRGV0YWlscykgfTsKICAgICAgICAgbG9hZGVyLT5zZXRU
cmlnZ2VyaW5nQWN0aW9uKGFjdGlvbik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggNjhiMTJlYmY0N2RiYzQxZmYwOWIzNGY2
Y2Y3ODAwNmJhYTk2NTY0MC4uMWU2NjA2MTljNGU4ZGMwNDFkNGVlY2E2M2EyZWRlNDNhODY2ODFk
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApA
QCAtMTkxLDcgKzE5MSw4IEBAIHN0YXRpYyB2b2lkIG9wZW5OZXdXaW5kb3coY29uc3QgVVJMJiB1
cmxUb0xvYWQsIEZyYW1lJiBmcmFtZSwgU2hvdWxkT3BlbkV4dGVybmFsCiAKICAgICBGcmFtZUxv
YWRSZXF1ZXN0IHJlcXVlc3QoZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgUmVz
b3VyY2VSZXF1ZXN0KHVybFRvTG9hZCwgZnJhbWUubG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigp
KSwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVm
ZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBv
bGljeTo6U3VwcHJlc3MsIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwogCi0gICAgUGFn
ZSogbmV3UGFnZSA9IG9sZFBhZ2UtPmNocm9tZSgpLmNyZWF0ZVdpbmRvdyhmcmFtZSwgcmVxdWVz
dCwgV2luZG93RmVhdHVyZXMoKSwgTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0LnJlc291cmNlUmVx
dWVzdCgpKSk7CisgICAgLy8gRklYTUU6IFNob3VsZCB0aGUgTmF2aWdhdGlvbkFjdGlvbiBzcGVj
aWZ5IHRoZSBvcGVuIGV4dGVybmFsIFVSTCBwb2xpY3kgKHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kpPworICAgIFBhZ2UqIG5ld1BhZ2UgPSBvbGRQYWdlLT5jaHJvbWUoKS5jcmVhdGVXaW5k
b3coZnJhbWUsIHJlcXVlc3QsIFdpbmRvd0ZlYXR1cmVzKCksIE5hdmlnYXRpb25BY3Rpb24geyBy
ZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCB7IH0gfSk7CiAgICAgaWYgKCFuZXdQYWdlKQogICAg
ICAgICByZXR1cm47CiAgICAgbmV3UGFnZS0+Y2hyb21lKCkuc2hvdygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BlcmZvcm1hbmNlLmNwcAppbmRleCBjMzViMGVmYTBjMmUzNDcwNTZmZDUxNjcwMGY1YjdjMDdm
ZGZlYWU0Li40ZmE1NmU4NTYzYTk1YTdiMGZlZTRmOGRkOTZiOTczZDhkNmM0OTE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcApAQCAtMzcsNiArMzcsNyBAQAogCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgorI2luY2x1ZGUgIkV2ZW50
LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVk
ZSAiUGVyZm9ybWFuY2VFbnRyeS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVwbGF5
L1JlcGxheUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheUNvbnRy
b2xsZXIuY3BwCmluZGV4IGJmMzU4ZGM2YWI0ODUwOTg2NDUwMWEwNWI2ZjczZDhiMGFjOTkyODku
LmMwMWIzOGJmMjI4ODU1ZjdlZDI1NmMwMmY4NTk2MmJkMjAxYjYwMDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxlci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJDYXB0dXJpbmdJbnB1dEN1cnNvci5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViSW5zcGVjdG9yLmNwcAppbmRleCA1MGNhYWE0N2QyYzIwYTYxYWE5OTYzZDk4ZDY3NjE2Zjhm
NjQxMjUyLi5kZDkxMDdmYTM4NmVjYWU2ZjMyY2Q3YTc1MWM1ZTZjZjNlNzZkNDhkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcApA
QCAtMTQ4LDcgKzE0OCw4IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpvcGVuSW5OZXdUYWIoY29uc3Qg
U3RyaW5nJiB1cmxTdHJpbmcpCiAgICAgRnJhbWUmIGluc3BlY3RlZE1haW5GcmFtZSA9IGluc3Bl
Y3RlZFBhZ2UtPm1haW5GcmFtZSgpOwogICAgIEZyYW1lTG9hZFJlcXVlc3QgcmVxdWVzdChpbnNw
ZWN0ZWRNYWluRnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgUmVzb3VyY2VSZXF1
ZXN0KHVybFN0cmluZyksICJfYmxhbmsiLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2Fy
ZExpc3Q6Ok5vLCBNYXliZVNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJM
OjpZZXMsIE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdywgUmVwbGFjZURvY3VtZW50SWZKYXZh
U2NyaXB0VVJMLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7
CiAKLSAgICBQYWdlKiBuZXdQYWdlID0gaW5zcGVjdGVkUGFnZS0+Y2hyb21lKCkuY3JlYXRlV2lu
ZG93KGluc3BlY3RlZE1haW5GcmFtZSwgcmVxdWVzdCwgV2luZG93RmVhdHVyZXMoKSwgTmF2aWdh
dGlvbkFjdGlvbihyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCBOYXZpZ2F0aW9uVHlwZTo6TGlu
a0NsaWNrZWQpKTsKKyAgICBOYXZpZ2F0aW9uQWN0aW9uIGFjdGlvbiB7IHJlcXVlc3QucmVzb3Vy
Y2VSZXF1ZXN0KCksIHsgTmF2aWdhdGlvblR5cGU6OkxpbmtDbGlja2VkIH0gfTsKKyAgICBQYWdl
KiBuZXdQYWdlID0gaW5zcGVjdGVkUGFnZS0+Y2hyb21lKCkuY3JlYXRlV2luZG93KGluc3BlY3Rl
ZE1haW5GcmFtZSwgcmVxdWVzdCwgeyB9LCBhY3Rpb24pOwogICAgIGlmICghbmV3UGFnZSkKICAg
ICAgICAgcmV0dXJuOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313188</attachid>
            <date>2017-06-16 22:52:38 -0700</date>
            <delta_ts>2017-06-19 15:37:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173484-20170616225237.patch</filename>
            <type>text/plain</type>
            <size>15611</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4Mzk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzZjN2M3OTkzNjI5NTdj
N2I4ZDg2ZDUyMWQzMmYyMTU4ZjI5NzI2Zi4uNTk4YWUzNDQyNWQzZTM4MDk4ZTk4N2E0M2NjNzYy
NmM5NDA3MDMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE3LTA2LTE2ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBOYXZpZ2F0aW9uQWN0aW9u
IGhhcyB0b28gbWFueSBjb25zdHJ1Y3RvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3MzQ4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEEgTmF2aWdhdGlvbkFjdGlvbiBvYmplY3QgaXMgYW4gaW1tdXRh
YmxlIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgdGhlIGRldGFpbHMgb2YgYQorICAgICAgICBuYXZp
Z2F0aW9uLCBpbmNsdWRpbmcgdGhlIHR5cGUgb2YgYSBuYXZpZ2F0aW9uIChlLmcuIGxpbmsgY2xp
Y2spLCB3aGF0IHRyaWdnZXJlZAorICAgICAgICB0aGUgbmF2aWdhdGlvbiwgYW5kIHRoZSBleHRl
cm5hbCBVUkwgcG9saWN5IHRvIHVzZSBmb3IgdGhlIG5hdmlnYXRpb24uIE92ZXIgdGltZQorICAg
ICAgICB0aGUgbnVtYmVyIG9mIE5hdmlnYXRpb25BY3Rpb24gY29uc3RydWN0b3Igb3ZlcmxvYWRz
IChub3QgaW5jbHVkaW5nIGNvcHkvbW92ZQorICAgICAgICBjb25zdHJ1Y3RvcnMpIGhhcyBncm93
biB0byAxMiB0byBzdXBwb3J0IGRpZmZlcmVudCBjb21iaW5hdGlvbnMgb2YgZGV0YWlscy4KKyAg
ICAgICAgV2UgY2FuIHVzZSBkZWZhdWx0IHZhbHVlcyB0byByZWR1Y2UgdGhlIG51bWJlciBvZiBj
b25zdHJ1Y3RvcnMgdG8gMiAobm90IGluY2x1ZGluZworICAgICAgICBjb3B5L21vdmUgY29uc3Ry
dWN0b3JzKS4KKworICAgICAgICBObyBiZWhhdmlvciBjaGFuZ2VkLiBTbywgbm8gbmV3IHRlc3Rz
LgorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeSk6IFBhc3MgTmF2
aWdhdGlvblR5cGU6Ok90aGVyIHdoZW4KKyAgICAgICAgaW5zdGFudGlhdGluZyBOYXZpZ2F0aW9u
QWN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1
bWVudEl0ZW0pOiBGaXggb3JkZXIgb2YgYXJndW1lbnRzIG5vdyB0aGF0CisgICAgICAgIHRoZSBj
b25zdHJ1Y3RvciBvdmVybG9hZCB0aGF0IHRha2VzIGEgTmF2aWdhdGlvblR5cGUgdGFrZXMgdGhl
IEV2ZW50KiBhcyB0aGUgZm91cnRoIGFyZ3VtZW50LAorICAgICAgICBub3QgdGhlIHRoaXJkLiBB
bHNvLCB1c2UgQysrMTEgYnJhY2UgaW5pdGlhbGl6YXRpb24gc3ludGF4IHdoZW4gaW5zdGFudGlh
dGluZyBhIE5hdmlnYXRpb25BY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVXaW5kb3cp
OgorICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcDogUmVtb3ZlIHVubmVjZXNz
YXJ5ICNpbmNsdWRlIG9mIGhlYWRlciBTY3JpcHRDb250cm9sbGVyLmguCisgICAgICAgIEluY2x1
ZGUgaGVhZGVyIEV2ZW50LmguCisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uOjpO
YXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oOiBG
b3J3YXJkIGRlY2xhcmUgY2xhc3MgRXZlbnQgYW5kIHJlbW92ZSAjaW5jbHVkZSBvZiBoZWFkZXIg
RXZlbnQuaC4KKyAgICAgICAgTWFrZSBjb3B5IGNvbnN0cnVjdG9yLCBjb3B5IGFzc2lnbm1lbnQg
b3BlcmF0b3IsIG1vdmUgY29uc3RydWN0b3IsIGFuZCBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IK
KyAgICAgICAgb3V0LW9mLWxpbmUgdG8gYXZvaWQgdGhlIG5lZWQgdG8gaW5jbHVkZSBoZWFkZXIg
RXZlbnQuaC4gRXhwb3J0IHRoZSBjb3B5IGNvbnN0cnVjdG9yIHNvIHRoYXQgaXQKKyAgICAgICAg
Y2FuIGJlIHVzZWQgZnJvbSBXZWJLaXQgb24gdGhlIEFwcGxlIFdpbmRvd3MgcG9ydC4gTW92ZSBT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHRvIGJlIGFmdGVyCisgICAgICAgIE5hdmlnYXRp
b25UeXBlIHRvIHJlZHVjZSB0aGUgc2l6ZSBvZiB0aGUgY2xhc3MgYnkgOCBieXRlcy4KKyAgICAg
ICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24pOgorICAgICAg
ICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDogSW5jbHVkZSBoZWFkZXIgRXZlbnQuaC4KKyAg
ICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlLmNwcDogRGl0dG8uCisgICAgICAgICogcmVwbGF5L1Jl
cGxheUNvbnRyb2xsZXIuY3BwOiBEaXR0by4KKwogMjAxNy0wNi0xNiAgQW50b2luZSBRdWludCAg
PGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIEJhY2tkcm9wIGJsdXIgbWlzc2luZyBpbiBt
ZWRpYSBjb250cm9scyBiYXIgb24gU2llcnJhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAppbmRleCBhYTRiODA4MjJiYzRiNWUzNTM1Yzc4MDM2OWJiYTA0ZGVhZDkxYjg4Li4yYWQ0
NDVlMzI5YjYyMDQ5OGJmOGI0YjMxYWI1Y2M4NGU4MTFjOWZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKQEAgLTMxNzQsNyArMzE3NCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmNvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzCiAgICAgICAgIG1haW5GcmFtZS0+ZG9jdW1lbnQoKS0+c2V0UmVmZXJyZXJQb2xpY3ko
ZnJhbWUtPmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCkpOwogICAgIH0KIAotICAgIE5hdmln
YXRpb25BY3Rpb24gbmV3QWN0aW9uKHJlcXVlc3QsIGFjdGlvbi5zaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5KCkpOworICAgIE5hdmlnYXRpb25BY3Rpb24gbmV3QWN0aW9uIHsgcmVxdWVzdCwg
TmF2aWdhdGlvblR5cGU6Ok90aGVyLCBhY3Rpb24uc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSgpIH07CiAgICAgbWFpbkZyYW1lLT5sb2FkZXIoKS5sb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24o
cmVxdWVzdCwgbmV3QWN0aW9uLCBMb2NrSGlzdG9yeTo6Tm8sIEZyYW1lTG9hZFR5cGU6OlN0YW5k
YXJkLCBmb3JtU3RhdGUsIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7CiB9CiAKQEAgLTM0
MDgsMTAgKzM0MDgsMTAgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERvY3VtZW50
SXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlwZSBsb2EKICAgICAgICAgCiAgICAg
ICAgIGlmIChjYWNoZUxvYWRQb2xpY3kgPT0gTWF5QXR0ZW1wdENhY2hlT25seUxvYWRGb3JGb3Jt
U3VibWlzc2lvbkl0ZW0pIHsKICAgICAgICAgICAgIHJlcXVlc3Quc2V0Q2FjaGVQb2xpY3koUmV0
dXJuQ2FjaGVEYXRhRG9udExvYWQpOwotICAgICAgICAgICAgYWN0aW9uID0gTmF2aWdhdGlvbkFj
dGlvbihyZXF1ZXN0LCBsb2FkVHlwZSwgaXNGb3JtU3VibWlzc2lvbiwgZXZlbnQsIHNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kpOworICAgICAgICAgICAgYWN0aW9uID0gTmF2aWdhdGlvbkFj
dGlvbiB7IHJlcXVlc3QsIGxvYWRUeXBlLCBpc0Zvcm1TdWJtaXNzaW9uLCBldmVudCwgc2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSB9OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
cmVxdWVzdC5zZXRDYWNoZVBvbGljeShSZXR1cm5DYWNoZURhdGFFbHNlTG9hZCk7Ci0gICAgICAg
ICAgICBhY3Rpb24gPSBOYXZpZ2F0aW9uQWN0aW9uKHJlcXVlc3QsIE5hdmlnYXRpb25UeXBlOjpG
b3JtUmVzdWJtaXR0ZWQsIGV2ZW50LCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKKyAg
ICAgICAgICAgIGFjdGlvbiA9IE5hdmlnYXRpb25BY3Rpb24geyByZXF1ZXN0LCBOYXZpZ2F0aW9u
VHlwZTo6Rm9ybVJlc3VibWl0dGVkLCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBldmVu
dCB9OwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgc3dpdGNoIChsb2FkVHlwZSkg
ewpAQCAtMzcwMCw3ICszNzAwLDcgQEAgUmVmUHRyPEZyYW1lPiBjcmVhdGVXaW5kb3coRnJhbWUm
IG9wZW5lckZyYW1lLCBGcmFtZSYgbG9va3VwRnJhbWUsIGNvbnN0IEZyYW1lTG8KICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9B
cHBseShvcGVuZXJGcmFtZSwgcmVxdWVzdC5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkp
OwotICAgIFBhZ2UqIHBhZ2UgPSBvbGRQYWdlLT5jaHJvbWUoKS5jcmVhdGVXaW5kb3cob3BlbmVy
RnJhbWUsIHJlcXVlc3RXaXRoUmVmZXJyZXIsIGZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0aW9uKHJl
cXVlc3RXaXRoUmVmZXJyZXIucmVzb3VyY2VSZXF1ZXN0KCksIHNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3kpKTsKKyAgICBQYWdlKiBwYWdlID0gb2xkUGFnZS0+Y2hyb21lKCkuY3JlYXRlV2lu
ZG93KG9wZW5lckZyYW1lLCByZXF1ZXN0V2l0aFJlZmVycmVyLCBmZWF0dXJlcywgTmF2aWdhdGlv
bkFjdGlvbiB7IHJlcXVlc3RXaXRoUmVmZXJyZXIucmVzb3VyY2VSZXF1ZXN0KCksIE5hdmlnYXRp
b25UeXBlOjpPdGhlciwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSB9KTsKICAgICBpZiAo
IXBhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TmF2aWdhdGlvbkFjdGlvbi5jcHAKaW5kZXggMzYyNGI0MjgzYzg3YmFkMWJlODYzZTdjMmMzZTE1
N2E1ODFhOTEwNC4uMDA2OGI0MDQyYTk3MThlMTdlYWZiMjMwNDZhZmMzMjQxNmJhMWFiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTcgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsMTAg
KzMxLDI3IEBACiAKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgi
Ci0jaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K05hdmlnYXRpb25BY3Rpb246On5OYXZpZ2F0aW9uQWN0aW9uKCkgPSBkZWZhdWx0OworCitOYXZp
Z2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mKSA9
IGRlZmF1bHQ7CitOYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKE5hdmlnYXRpb25B
Y3Rpb24mJikgPSBkZWZhdWx0OworCitOYXZpZ2F0aW9uQWN0aW9uJiBOYXZpZ2F0aW9uQWN0aW9u
OjpvcGVyYXRvcj0oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpID0gZGVmYXVsdDsKK05hdmlnYXRp
b25BY3Rpb24mIE5hdmlnYXRpb25BY3Rpb246Om9wZXJhdG9yPShOYXZpZ2F0aW9uQWN0aW9uJiYp
ID0gZGVmYXVsdDsKKworTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgTmF2aWdhdGlvblR5cGUgdHlwZSwKKyAg
ICBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3ksIEV2ZW50KiBldmVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSkK
KyAgICA6IG1fcmVzb3VyY2VSZXF1ZXN0IHsgcmVzb3VyY2VSZXF1ZXN0IH0KKyAgICAsIG1fdHlw
ZSB7IHR5cGUgfQorICAgICwgbV9zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHsgc2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSB9CisgICAgLCBtX2V2ZW50IHsgZXZlbnQgfQorICAgICwg
bV9kb3dubG9hZEF0dHJpYnV0ZSB7IGRvd25sb2FkQXR0cmlidXRlIH0KK3sKK30KKwogc3RhdGlj
IE5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlKEZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlw
ZSwgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uLCBib29sIGhhdmVFdmVudCkKIHsKICAgICBpZiAoaXNG
b3JtU3VibWlzc2lvbikKQEAgLTQ4LDY4ICs2NSwxMyBAQCBzdGF0aWMgTmF2aWdhdGlvblR5cGUg
bmF2aWdhdGlvblR5cGUoRnJhbWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlLCBib29sIGlzRm9ybVN1
YgogICAgIHJldHVybiBOYXZpZ2F0aW9uVHlwZTo6T3RoZXI7CiB9CiAKLU5hdmlnYXRpb25BY3Rp
b246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVl
c3QsIE5hdmlnYXRpb25UeXBlIHR5cGUsIEV2ZW50KiBldmVudCwgU2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBjb25zdCBBdG9taWNTdHJp
bmcmIGRvd25sb2FkQXR0cmlidXRlKQotICAgIDogbV9yZXNvdXJjZVJlcXVlc3QocmVzb3VyY2VS
ZXF1ZXN0KQotICAgICwgbV90eXBlKHR5cGUpCi0gICAgLCBtX2V2ZW50KGV2ZW50KQotICAgICwg
bV91c2VyR2VzdHVyZVRva2VuKFVzZXJHZXN0dXJlSW5kaWNhdG9yOjpjdXJyZW50VXNlckdlc3R1
cmUoKSkKLSAgICAsIG1fc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShzaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5KQotICAgICwgbV9kb3dubG9hZEF0dHJpYnV0ZShkb3dubG9hZEF0dHJp
YnV0ZSkKLXsKLX0KLQotTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbigpCi0gICAg
OiBOYXZpZ2F0aW9uQWN0aW9uKFJlc291cmNlUmVxdWVzdCgpLCBOYXZpZ2F0aW9uVHlwZTo6T3Ro
ZXIsIG51bGxwdHIsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93
LCBudWxsQXRvbSkKLXsKLX0KLQotTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKLSAgICA6IE5hdmlnYXRpb25B
Y3Rpb24ocmVzb3VyY2VSZXF1ZXN0LCBOYXZpZ2F0aW9uVHlwZTo6T3RoZXIsIG51bGxwdHIsIFNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBudWxsQXRvbSkKLXsK
LX0KLQotTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlc291cmNlUmVxdWVzdCwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQotICAgIDogTmF2aWdhdGlvbkFjdGlvbihyZXNvdXJj
ZVJlcXVlc3QsIE5hdmlnYXRpb25UeXBlOjpPdGhlciwgbnVsbHB0ciwgc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSwgbnVsbEF0b20pCi17Ci19Ci0KLU5hdmlnYXRpb25BY3Rpb246Ok5hdmln
YXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIE5hdmln
YXRpb25UeXBlIHR5cGUpCi0gICAgOiBOYXZpZ2F0aW9uQWN0aW9uKHJlc291cmNlUmVxdWVzdCwg
dHlwZSwgbnVsbHB0ciwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxs
b3csIG51bGxBdG9tKQotewotfQotCi1OYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9u
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBOYXZpZ2F0aW9uVHlwZSB0
eXBlLCBFdmVudCogZXZlbnQsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSkKLSAgICA6IE5hdmlnYXRpb25BY3Rpb24ocmVzb3VyY2VSZXF1
ZXN0LCB0eXBlLCBldmVudCwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgbnVsbEF0b20p
Ci17Ci19Ci0KLU5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIEZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSwg
Ym9vbCBpc0Zvcm1TdWJtaXNzaW9uKQotICAgIDogTmF2aWdhdGlvbkFjdGlvbihyZXNvdXJjZVJl
cXVlc3QsIG5hdmlnYXRpb25UeXBlKGZyYW1lTG9hZFR5cGUsIGlzRm9ybVN1Ym1pc3Npb24sIDAp
LCBudWxscHRyLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdywg
bnVsbEF0b20pCi17Ci19Ci0KLU5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIE5hdmlnYXRpb25UeXBlIHR5cGUs
IEV2ZW50KiBldmVudCkKLSAgICA6IE5hdmlnYXRpb25BY3Rpb24ocmVzb3VyY2VSZXF1ZXN0LCB0
eXBlLCBldmVudCwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cs
IG51bGxBdG9tKQotewotfQotCi1OYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBOYXZpZ2F0aW9uVHlwZSB0eXBl
LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3kpCi0gICAgOiBOYXZpZ2F0aW9uQWN0aW9uKHJlc291cmNlUmVxdWVzdCwgdHlwZSwgbnVsbHB0
ciwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgbnVsbEF0b20pCi17Ci19Ci0KLU5hdmln
YXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNv
dXJjZVJlcXVlc3QsIEZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSwgYm9vbCBpc0Zvcm1TdWJt
aXNzaW9uLCBFdmVudCogZXZlbnQpCi0gICAgOiBOYXZpZ2F0aW9uQWN0aW9uKHJlc291cmNlUmVx
dWVzdCwgbmF2aWdhdGlvblR5cGUoZnJhbWVMb2FkVHlwZSwgaXNGb3JtU3VibWlzc2lvbiwgZXZl
bnQpLCBldmVudCwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cs
IG51bGxBdG9tKQotewotfQotCi1OYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBGcmFtZUxvYWRUeXBlIGZyYW1l
TG9hZFR5cGUsIGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgRXZlbnQqIGV2ZW50LCBTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpCi0gICAgOiBO
YXZpZ2F0aW9uQWN0aW9uKHJlc291cmNlUmVxdWVzdCwgbmF2aWdhdGlvblR5cGUoZnJhbWVMb2Fk
VHlwZSwgaXNGb3JtU3VibWlzc2lvbiwgZXZlbnQpLCBldmVudCwgc2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSwgbnVsbEF0b20pCi17Ci19Ci0KLU5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRp
b25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIEZyYW1lTG9h
ZFR5cGUgZnJhbWVMb2FkVHlwZSwgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uLCBFdmVudCogZXZlbnQs
IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSwgY29uc3QgQXRvbWljU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSkKLSAgICA6IE5hdmlnYXRp
b25BY3Rpb24ocmVzb3VyY2VSZXF1ZXN0LCBuYXZpZ2F0aW9uVHlwZShmcmFtZUxvYWRUeXBlLCBp
c0Zvcm1TdWJtaXNzaW9uLCBldmVudCksIGV2ZW50LCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5LCBkb3dubG9hZEF0dHJpYnV0ZSkKK05hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rp
b24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIEZyYW1lTG9hZFR5cGUg
ZnJhbWVMb2FkVHlwZSwgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uLAorICAgIEV2ZW50KiBldmVudCwg
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
LCBjb25zdCBBdG9taWNTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlKQorICAgIDogbV9yZXNvdXJj
ZVJlcXVlc3QgeyByZXNvdXJjZVJlcXVlc3QgfQorICAgICwgbV90eXBlIHsgbmF2aWdhdGlvblR5
cGUoZnJhbWVMb2FkVHlwZSwgaXNGb3JtU3VibWlzc2lvbiwgISFldmVudCkgfQorICAgICwgbV9z
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHsgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSB9CisgICAgLCBtX2V2ZW50IHsgZXZlbnQgfQorICAgICwgbV9kb3dubG9hZEF0dHJpYnV0ZSB7
IGRvd25sb2FkQXR0cmlidXRlIH0KIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0
aW9uQWN0aW9uLmgKaW5kZXggMzcwMmRjNTUwZjI2NzBjOTczZDBlMjQ2ZjUzYTQ0ZmJjODM1ODhm
Zi4uZjg5NjkxZTBkYTNmOTcyYjNlOTMzYjZiYjkxNjdkNmNjYjMyZmYzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNi0yMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCwzMCArMjgsMzAgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVy
VHlwZXMuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIK
ICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRXZlbnQ7CisKIGNsYXNzIE5hdmln
YXRpb25BY3Rpb24gewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIE5hdmlnYXRpb25BY3Rp
b24oKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIE5hdmlnYXRpb25BY3Rpb24o
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgTmF2aWdhdGlvblR5cGUpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIE5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRnJhbWVMb2FkVHlw
ZSwgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uKTsKLQotICAgIE5hdmlnYXRpb25BY3Rpb24oY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7Ci0gICAgTmF2
aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBOYXZpZ2F0aW9uVHlwZSwgRXZl
bnQqKTsKLSAgICBOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE5hdmln
YXRpb25UeXBlLCBFdmVudCosIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwotICAgIE5h
dmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgTmF2aWdhdGlvblR5cGUsIEV2
ZW50KiwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgY29uc3QgQXRvbWljU3RyaW5nJiBk
b3dubG9hZEF0dHJpYnV0ZSk7Ci0gICAgTmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBOYXZpZ2F0aW9uVHlwZSwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7Ci0g
ICAgTmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGcmFtZUxvYWRUeXBl
LCBib29sIGlzRm9ybVN1Ym1pc3Npb24sIEV2ZW50Kik7Ci0gICAgTmF2aWdhdGlvbkFjdGlvbihj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGcmFtZUxvYWRUeXBlLCBib29sIGlzRm9ybVN1Ym1pc3Np
b24sIEV2ZW50KiwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7Ci0gICAgTmF2aWdhdGlv
bkFjdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGcmFtZUxvYWRUeXBlLCBib29sIGlzRm9y
bVN1Ym1pc3Npb24sIEV2ZW50KiwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgY29uc3Qg
QXRvbWljU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhw
bGljaXQgTmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmID0geyB9LCBOYXZp
Z2F0aW9uVHlwZSA9IE5hdmlnYXRpb25UeXBlOjpPdGhlciwKKyAgICAgICAgU2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSA9IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5v
dEFsbG93LCBFdmVudCogPSBudWxscHRyLAorICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGRv
d25sb2FkQXR0cmlidXRlID0gbnVsbEF0b20pOworICAgIE5hdmlnYXRpb25BY3Rpb24oY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgRnJhbWVMb2FkVHlwZSwgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uLCBF
dmVudCogPSBudWxscHRyLAorICAgICAgICBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0g
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3csIGNvbnN0IEF0b21p
Y1N0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUgPSBudWxsQXRvbSk7CisKKyAgICBXRUJDT1JFX0VY
UE9SVCB+TmF2aWdhdGlvbkFjdGlvbigpOworCisgICAgV0VCQ09SRV9FWFBPUlQgTmF2aWdhdGlv
bkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJik7CisgICAgTmF2aWdhdGlvbkFjdGlvbihO
YXZpZ2F0aW9uQWN0aW9uJiYpOworCisgICAgTmF2aWdhdGlvbkFjdGlvbiYgb3BlcmF0b3I9KGNv
bnN0IE5hdmlnYXRpb25BY3Rpb24mKTsKKyAgICBOYXZpZ2F0aW9uQWN0aW9uJiBvcGVyYXRvcj0o
TmF2aWdhdGlvbkFjdGlvbiYmKTsKIAogICAgIE5hdmlnYXRpb25BY3Rpb24gY29weVdpdGhTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpIGNv
bnN0OwogCkBAIC03MiwxMCArNzIsMTAgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFJlc291
cmNlUmVxdWVzdCBtX3Jlc291cmNlUmVxdWVzdDsKLSAgICBOYXZpZ2F0aW9uVHlwZSBtX3R5cGUg
eyBOYXZpZ2F0aW9uVHlwZTo6T3RoZXIgfTsKKyAgICBOYXZpZ2F0aW9uVHlwZSBtX3R5cGU7Cisg
ICAgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBtX3Nob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3k7CiAgICAgUmVmUHRyPEV2ZW50PiBtX2V2ZW50OwotICAgIFJlZlB0cjxVc2VyR2VzdHVy
ZVRva2VuPiBtX3VzZXJHZXN0dXJlVG9rZW47Ci0gICAgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSBtX3Nob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgeyBTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyB9OworICAgIFJlZlB0cjxVc2VyR2VzdHVyZVRva2Vu
PiBtX3VzZXJHZXN0dXJlVG9rZW4geyBVc2VyR2VzdHVyZUluZGljYXRvcjo6Y3VycmVudFVzZXJH
ZXN0dXJlKCkgfTsKICAgICBBdG9taWNTdHJpbmcgbV9kb3dubG9hZEF0dHJpYnV0ZTsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAppbmRleCA0ZWFlN2I2MmI2ZWRi
MjIzMGUzODA3NTA5ZTI2NjFlYmZmZWUyN2IwLi41NGFmMWYyNjhlOGJiYThjNTg1MzE2OWE5NjAz
NDgzYzZmNzRhMGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hl
Y2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCkBA
IC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5j
bHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKKyNpbmNsdWRl
ICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGb3JtU3RhdGUu
aCIKICNpbmNsdWRlICJGcmFtZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
ZXJmb3JtYW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAppbmRl
eCBjMzViMGVmYTBjMmUzNDcwNTZmZDUxNjcwMGY1YjdjMDdmZGZlYWU0Li40ZmE1NmU4NTYzYTk1
YTdiMGZlZTRmOGRkOTZiOTczZDhkNmM0OTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNl
LmNwcApAQCAtMzcsNiArMzcsNyBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJEb2N1bWVudExvYWRlci5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiUGVyZm9ybWFuY2VFbnRyeS5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwCmluZGV4IGJmMzU4
ZGM2YWI0ODUwOTg2NDUwMWEwNWI2ZjczZDhiMGFjOTkyODkuLmMwMWIzOGJmMjI4ODU1ZjdlZDI1
NmMwMmY4NTk2MmJkMjAxYjYwMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9S
ZXBsYXlDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29u
dHJvbGxlci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJDYXB0dXJpbmdJbnB1dEN1
cnNvci5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVy
LmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZy
YW1lVHJlZS5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgo=
</data>
<flag name="review"
          id="334095"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313341</attachid>
            <date>2017-06-19 16:33:57 -0700</date>
            <delta_ts>2017-06-19 16:33:57 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-173484-20170619163356.patch</filename>
            <type>text/plain</type>
            <size>16302</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmM4ZmFlYWU2YjI1MDBl
NDdmNTY2ZmU0NDI3MmI3M2MzZmY2ZmJkNS4uOTg0NWE0M2FlZDQ0YThiMTkzMGFmOGUyMjIyNmU3
ODc3YWIwNTI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE3LTA2LTE5ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBOYXZpZ2F0aW9uQWN0aW9u
IGhhcyB0b28gbWFueSBjb25zdHJ1Y3RvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3MzQ4NAorCisgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVp
ZHNvbi4KKworICAgICAgICBBIE5hdmlnYXRpb25BY3Rpb24gb2JqZWN0IGlzIGFuIGltbXV0YWJs
ZSBvYmplY3QgdGhhdCByZXByZXNlbnRzIHRoZSBkZXRhaWxzIG9mIGEKKyAgICAgICAgbmF2aWdh
dGlvbiwgaW5jbHVkaW5nIHRoZSB0eXBlIG9mIGEgbmF2aWdhdGlvbiAoZS5nLiBsaW5rIGNsaWNr
KSwgd2hhdCB0cmlnZ2VyZWQKKyAgICAgICAgdGhlIG5hdmlnYXRpb24sIGFuZCB0aGUgZXh0ZXJu
YWwgVVJMIHBvbGljeSB0byB1c2UgZm9yIHRoZSBuYXZpZ2F0aW9uLiBPdmVyIHRpbWUKKyAgICAg
ICAgdGhlIG51bWJlciBvZiBOYXZpZ2F0aW9uQWN0aW9uIGNvbnN0cnVjdG9yIG92ZXJsb2FkcyAo
bm90IGluY2x1ZGluZyBjb3B5L21vdmUKKyAgICAgICAgY29uc3RydWN0b3JzKSBoYXMgZ3Jvd24g
dG8gMTIgdG8gc3VwcG9ydCBkaWZmZXJlbnQgY29tYmluYXRpb25zIG9mIGRldGFpbHMuCisgICAg
ICAgIFdlIGNhbiB1c2UgZGVmYXVsdCB2YWx1ZXMgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2YgY29u
c3RydWN0b3JzIHRvIDQgKG5vdCBpbmNsdWRpbmcKKyAgICAgICAgY29weS9tb3ZlIGNvbnN0cnVj
dG9ycykuCisKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlZC4gU28sIG5vIG5ldyB0ZXN0cy4K
KworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kpOiBQYXNzIE5hdmln
YXRpb25UeXBlOjpPdGhlciB3aGVuCisgICAgICAgIGluc3RhbnRpYXRpbmcgTmF2aWdhdGlvbkFj
dGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1l
bnRJdGVtKTogRml4IG9yZGVyIG9mIGFyZ3VtZW50cyBub3cgdGhhdAorICAgICAgICB0aGUgY29u
c3RydWN0b3Igb3ZlcmxvYWQgdGhhdCB0YWtlcyBhIE5hdmlnYXRpb25UeXBlIHRha2VzIHRoZSBF
dmVudCogYXMgdGhlIGZvdXJ0aCBhcmd1bWVudCwKKyAgICAgICAgbm90IHRoZSB0aGlyZC4gQWxz
bywgdXNlIEMrKzExIGJyYWNlIGluaXRpYWxpemF0aW9uIHN5bnRheCB3aGVuIGluc3RhbnRpYXRp
bmcgYSBOYXZpZ2F0aW9uQWN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV2luZG93KToK
KyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHA6IFJlbW92ZSB1bm5lY2Vzc2Fy
eSAjaW5jbHVkZSBvZiBoZWFkZXIgU2NyaXB0Q29udHJvbGxlci5oLgorICAgICAgICBJbmNsdWRl
IGhlYWRlciBFdmVudC5oLgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbjo6TmF2
aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaDogRm9y
d2FyZCBkZWNsYXJlIGNsYXNzIEV2ZW50IGFuZCByZW1vdmUgI2luY2x1ZGUgb2YgaGVhZGVyIEV2
ZW50LmguCisgICAgICAgIE1ha2UgY29weSBjb25zdHJ1Y3RvciwgY29weSBhc3NpZ25tZW50IG9w
ZXJhdG9yLCBtb3ZlIGNvbnN0cnVjdG9yLCBhbmQgbW92ZSBhc3NpZ25tZW50IG9wZXJhdG9yCisg
ICAgICAgIG91dC1vZi1saW5lIHRvIGF2b2lkIHRoZSBuZWVkIHRvIGluY2x1ZGUgaGVhZGVyIEV2
ZW50LmguIEV4cG9ydCB0aGUgY29weSBjb25zdHJ1Y3RvciBzbyB0aGF0IGl0CisgICAgICAgIGNh
biBiZSB1c2VkIGZyb20gV2ViS2l0IG9uIHRoZSBBcHBsZSBXaW5kb3dzIHBvcnQuIE1vdmUgU2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSB0byBiZSBhZnRlcgorICAgICAgICBOYXZpZ2F0aW9u
VHlwZSB0byByZWR1Y2UgdGhlIHNpemUgb2YgdGhlIGNsYXNzIGJ5IDggYnl0ZXMuCisgICAgICAg
IChXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAg
KiBsb2FkZXIvUG9saWN5Q2hlY2tlci5jcHA6IEluY2x1ZGUgaGVhZGVyIEV2ZW50LmguCisgICAg
ICAgICogcGFnZS9QZXJmb3JtYW5jZS5jcHA6IERpdHRvLgorICAgICAgICAqIHJlcGxheS9SZXBs
YXlDb250cm9sbGVyLmNwcDogRGl0dG8uCisKIDIwMTctMDYtMTkgIEJyYWR5IEVpZHNvbiAgPGJl
aWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFZhcmlvdXMgSW5kZXhlZERCIGNyYXNoZXMgYXMg
YW4gYWZ0ZXIgZWZmZWN0IG9mIHByZXZpb3VzIHRlc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAppbmRleCBhYTRiODA4MjJiYzRiNWUzNTM1Yzc4MDM2OWJiYTA0ZGVhZDkxYjg4
Li4wNjY2NzU1MGVhZjkxYmM4ODE1ODI1MTIyZjA0NTY3ODJiMjFmYjcwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTMxNzQsNyArMzE3NCw3IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzCiAgICAgICAgIG1haW5GcmFtZS0+ZG9jdW1lbnQoKS0+c2V0UmVmZXJyZXJQ
b2xpY3koZnJhbWUtPmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCkpOwogICAgIH0KIAotICAg
IE5hdmlnYXRpb25BY3Rpb24gbmV3QWN0aW9uKHJlcXVlc3QsIGFjdGlvbi5zaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5KCkpOworICAgIE5hdmlnYXRpb25BY3Rpb24gbmV3QWN0aW9uIHsgcmVx
dWVzdCwgTmF2aWdhdGlvblR5cGU6Ok90aGVyLCBhY3Rpb24uc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSgpIH07CiAgICAgbWFpbkZyYW1lLT5sb2FkZXIoKS5sb2FkV2l0aE5hdmlnYXRpb25B
Y3Rpb24ocmVxdWVzdCwgbmV3QWN0aW9uLCBMb2NrSGlzdG9yeTo6Tm8sIEZyYW1lTG9hZFR5cGU6
OlN0YW5kYXJkLCBmb3JtU3RhdGUsIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7CiB9CiAK
QEAgLTM0MDgsMTAgKzM0MDgsMTAgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERv
Y3VtZW50SXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlwZSBsb2EKICAgICAgICAg
CiAgICAgICAgIGlmIChjYWNoZUxvYWRQb2xpY3kgPT0gTWF5QXR0ZW1wdENhY2hlT25seUxvYWRG
b3JGb3JtU3VibWlzc2lvbkl0ZW0pIHsKICAgICAgICAgICAgIHJlcXVlc3Quc2V0Q2FjaGVQb2xp
Y3koUmV0dXJuQ2FjaGVEYXRhRG9udExvYWQpOwotICAgICAgICAgICAgYWN0aW9uID0gTmF2aWdh
dGlvbkFjdGlvbihyZXF1ZXN0LCBsb2FkVHlwZSwgaXNGb3JtU3VibWlzc2lvbiwgZXZlbnQsIHNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOworICAgICAgICAgICAgYWN0aW9uID0geyByZXF1
ZXN0LCBsb2FkVHlwZSwgaXNGb3JtU3VibWlzc2lvbiwgZXZlbnQsIHNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kgfTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHJlcXVlc3Quc2V0
Q2FjaGVQb2xpY3koUmV0dXJuQ2FjaGVEYXRhRWxzZUxvYWQpOwotICAgICAgICAgICAgYWN0aW9u
ID0gTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0LCBOYXZpZ2F0aW9uVHlwZTo6Rm9ybVJlc3VibWl0
dGVkLCBldmVudCwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CisgICAgICAgICAgICBh
Y3Rpb24gPSB7IHJlcXVlc3QsIE5hdmlnYXRpb25UeXBlOjpGb3JtUmVzdWJtaXR0ZWQsIHNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIGV2ZW50IH07CiAgICAgICAgIH0KICAgICB9IGVsc2Ug
ewogICAgICAgICBzd2l0Y2ggKGxvYWRUeXBlKSB7CkBAIC0zNzAwLDcgKzM3MDAsNyBAQCBSZWZQ
dHI8RnJhbWU+IGNyZWF0ZVdpbmRvdyhGcmFtZSYgb3BlbmVyRnJhbWUsIEZyYW1lJiBsb29rdXBG
cmFtZSwgY29uc3QgRnJhbWVMbwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IHNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5KG9wZW5lckZyYW1lLCByZXF1ZXN0LnNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSk7Ci0gICAgUGFnZSogcGFnZSA9IG9sZFBhZ2Ut
PmNocm9tZSgpLmNyZWF0ZVdpbmRvdyhvcGVuZXJGcmFtZSwgcmVxdWVzdFdpdGhSZWZlcnJlciwg
ZmVhdHVyZXMsIE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdFdpdGhSZWZlcnJlci5yZXNvdXJjZVJl
cXVlc3QoKSwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkpOworICAgIFBhZ2UqIHBhZ2Ug
PSBvbGRQYWdlLT5jaHJvbWUoKS5jcmVhdGVXaW5kb3cob3BlbmVyRnJhbWUsIHJlcXVlc3RXaXRo
UmVmZXJyZXIsIGZlYXR1cmVzLCB7IHJlcXVlc3RXaXRoUmVmZXJyZXIucmVzb3VyY2VSZXF1ZXN0
KCksIE5hdmlnYXRpb25UeXBlOjpPdGhlciwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSB9
KTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAKaW5kZXggMzYyNGI0MjgzYzg3YmFkMWJl
ODYzZTdjMmMzZTE1N2E1ODFhOTEwNC4uNGY5Y2QxOTIyZDgwYTQxN2QxNGZkNjhhZjgyZWQ1NTI4
ZjZjOGU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNiBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTcgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzEsODUgKzMxLDUyIEBACiAKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXN0YXRpYyBOYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZShGcmFtZUxv
YWRUeXBlIGZyYW1lTG9hZFR5cGUsIGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgYm9vbCBoYXZlRXZl
bnQpCi17Ci0gICAgaWYgKGlzRm9ybVN1Ym1pc3Npb24pCi0gICAgICAgIHJldHVybiBOYXZpZ2F0
aW9uVHlwZTo6Rm9ybVN1Ym1pdHRlZDsKLSAgICBpZiAoaGF2ZUV2ZW50KQotICAgICAgICByZXR1
cm4gTmF2aWdhdGlvblR5cGU6OkxpbmtDbGlja2VkOwotICAgIGlmIChpc1JlbG9hZChmcmFtZUxv
YWRUeXBlKSkKLSAgICAgICAgcmV0dXJuIE5hdmlnYXRpb25UeXBlOjpSZWxvYWQ7Ci0gICAgaWYg
KGlzQmFja0ZvcndhcmRMb2FkVHlwZShmcmFtZUxvYWRUeXBlKSkKLSAgICAgICAgcmV0dXJuIE5h
dmlnYXRpb25UeXBlOjpCYWNrRm9yd2FyZDsKLSAgICByZXR1cm4gTmF2aWdhdGlvblR5cGU6Ok90
aGVyOwotfQorTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbigpID0gZGVmYXVsdDsK
K05hdmlnYXRpb25BY3Rpb246On5OYXZpZ2F0aW9uQWN0aW9uKCkgPSBkZWZhdWx0OwogCi1OYXZp
Z2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVz
b3VyY2VSZXF1ZXN0LCBOYXZpZ2F0aW9uVHlwZSB0eXBlLCBFdmVudCogZXZlbnQsIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgY29uc3Qg
QXRvbWljU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSkKLSAgICA6IG1fcmVzb3VyY2VSZXF1ZXN0
KHJlc291cmNlUmVxdWVzdCkKLSAgICAsIG1fdHlwZSh0eXBlKQotICAgICwgbV9ldmVudChldmVu
dCkKLSAgICAsIG1fdXNlckdlc3R1cmVUb2tlbihVc2VyR2VzdHVyZUluZGljYXRvcjo6Y3VycmVu
dFVzZXJHZXN0dXJlKCkpCi0gICAgLCBtX3Nob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkKLSAgICAsIG1fZG93bmxvYWRBdHRyaWJ1dGUoZG93
bmxvYWRBdHRyaWJ1dGUpCi17Ci19CitOYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9u
KGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mKSA9IGRlZmF1bHQ7CitOYXZpZ2F0aW9uQWN0aW9uOjpO
YXZpZ2F0aW9uQWN0aW9uKE5hdmlnYXRpb25BY3Rpb24mJikgPSBkZWZhdWx0OwogCi1OYXZpZ2F0
aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKCkKLSAgICA6IE5hdmlnYXRpb25BY3Rpb24oUmVz
b3VyY2VSZXF1ZXN0KCksIE5hdmlnYXRpb25UeXBlOjpPdGhlciwgbnVsbHB0ciwgU2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3csIG51bGxBdG9tKQotewotfQorTmF2
aWdhdGlvbkFjdGlvbiYgTmF2aWdhdGlvbkFjdGlvbjo6b3BlcmF0b3I9KGNvbnN0IE5hdmlnYXRp
b25BY3Rpb24mKSA9IGRlZmF1bHQ7CitOYXZpZ2F0aW9uQWN0aW9uJiBOYXZpZ2F0aW9uQWN0aW9u
OjpvcGVyYXRvcj0oTmF2aWdhdGlvbkFjdGlvbiYmKSA9IGRlZmF1bHQ7CiAKIE5hdmlnYXRpb25B
Y3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJl
cXVlc3QpCi0gICAgOiBOYXZpZ2F0aW9uQWN0aW9uKHJlc291cmNlUmVxdWVzdCwgTmF2aWdhdGlv
blR5cGU6Ok90aGVyLCBudWxscHRyLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91
bGROb3RBbGxvdywgbnVsbEF0b20pCi17Ci19Ci0KLU5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRp
b25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkKLSAgICA6
IE5hdmlnYXRpb25BY3Rpb24ocmVzb3VyY2VSZXF1ZXN0LCBOYXZpZ2F0aW9uVHlwZTo6T3RoZXIs
IG51bGxwdHIsIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIG51bGxBdG9tKQotewotfQot
Ci1OYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVzb3VyY2VSZXF1ZXN0LCBOYXZpZ2F0aW9uVHlwZSB0eXBlKQotICAgIDogTmF2aWdhdGlv
bkFjdGlvbihyZXNvdXJjZVJlcXVlc3QsIHR5cGUsIG51bGxwdHIsIFNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBudWxsQXRvbSkKKyAgICA6IE5hdmlnYXRpb25B
Y3Rpb24geyByZXNvdXJjZVJlcXVlc3QgfQogewogfQogCi1OYXZpZ2F0aW9uQWN0aW9uOjpOYXZp
Z2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBOYXZp
Z2F0aW9uVHlwZSB0eXBlLCBFdmVudCogZXZlbnQsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkKLSAgICA6IE5hdmlnYXRpb25BY3Rpb24o
cmVzb3VyY2VSZXF1ZXN0LCB0eXBlLCBldmVudCwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSwgbnVsbEF0b20pCitOYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBOYXZpZ2F0aW9uVHlwZSB0eXBlLCBTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEV2
ZW50KiBldmVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSkKKyAgICA6
IG1fcmVzb3VyY2VSZXF1ZXN0IHsgcmVzb3VyY2VSZXF1ZXN0IH0KKyAgICAsIG1fdHlwZSB7IHR5
cGUgfQorICAgICwgbV9zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHsgc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSB9CisgICAgLCBtX2V2ZW50IHsgZXZlbnQgfQorICAgICwgbV9kb3du
bG9hZEF0dHJpYnV0ZSB7IGRvd25sb2FkQXR0cmlidXRlIH0KIHsKIH0KIAotTmF2aWdhdGlvbkFj
dGlvbjo6TmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVx
dWVzdCwgRnJhbWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlLCBib29sIGlzRm9ybVN1Ym1pc3Npb24p
Ci0gICAgOiBOYXZpZ2F0aW9uQWN0aW9uKHJlc291cmNlUmVxdWVzdCwgbmF2aWdhdGlvblR5cGUo
ZnJhbWVMb2FkVHlwZSwgaXNGb3JtU3VibWlzc2lvbiwgMCksIG51bGxwdHIsIFNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBudWxsQXRvbSkKLXsKLX0KLQotTmF2
aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
c291cmNlUmVxdWVzdCwgTmF2aWdhdGlvblR5cGUgdHlwZSwgRXZlbnQqIGV2ZW50KQotICAgIDog
TmF2aWdhdGlvbkFjdGlvbihyZXNvdXJjZVJlcXVlc3QsIHR5cGUsIGV2ZW50LCBTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdywgbnVsbEF0b20pCi17Ci19Ci0KLU5h
dmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXNvdXJjZVJlcXVlc3QsIE5hdmlnYXRpb25UeXBlIHR5cGUsIFNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkKLSAgICA6IE5hdmlnYXRpb25B
Y3Rpb24ocmVzb3VyY2VSZXF1ZXN0LCB0eXBlLCBudWxscHRyLCBzaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5LCBudWxsQXRvbSkKLXsKLX0KLQotTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlv
bkFjdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgRnJhbWVMb2Fk
VHlwZSBmcmFtZUxvYWRUeXBlLCBib29sIGlzRm9ybVN1Ym1pc3Npb24sIEV2ZW50KiBldmVudCkK
LSAgICA6IE5hdmlnYXRpb25BY3Rpb24ocmVzb3VyY2VSZXF1ZXN0LCBuYXZpZ2F0aW9uVHlwZShm
cmFtZUxvYWRUeXBlLCBpc0Zvcm1TdWJtaXNzaW9uLCBldmVudCksIGV2ZW50LCBTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdywgbnVsbEF0b20pCi17Ci19Ci0KLU5h
dmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXNvdXJjZVJlcXVlc3QsIEZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSwgYm9vbCBpc0Zvcm1T
dWJtaXNzaW9uLCBFdmVudCogZXZlbnQsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkKLSAgICA6IE5hdmlnYXRpb25BY3Rpb24ocmVzb3Vy
Y2VSZXF1ZXN0LCBuYXZpZ2F0aW9uVHlwZShmcmFtZUxvYWRUeXBlLCBpc0Zvcm1TdWJtaXNzaW9u
LCBldmVudCksIGV2ZW50LCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBudWxsQXRvbSkK
K3N0YXRpYyBOYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZShGcmFtZUxvYWRUeXBlIGZyYW1l
TG9hZFR5cGUsIGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgYm9vbCBoYXZlRXZlbnQpCiB7CisgICAg
aWYgKGlzRm9ybVN1Ym1pc3Npb24pCisgICAgICAgIHJldHVybiBOYXZpZ2F0aW9uVHlwZTo6Rm9y
bVN1Ym1pdHRlZDsKKyAgICBpZiAoaGF2ZUV2ZW50KQorICAgICAgICByZXR1cm4gTmF2aWdhdGlv
blR5cGU6OkxpbmtDbGlja2VkOworICAgIGlmIChpc1JlbG9hZChmcmFtZUxvYWRUeXBlKSkKKyAg
ICAgICAgcmV0dXJuIE5hdmlnYXRpb25UeXBlOjpSZWxvYWQ7CisgICAgaWYgKGlzQmFja0Zvcndh
cmRMb2FkVHlwZShmcmFtZUxvYWRUeXBlKSkKKyAgICAgICAgcmV0dXJuIE5hdmlnYXRpb25UeXBl
OjpCYWNrRm9yd2FyZDsKKyAgICByZXR1cm4gTmF2aWdhdGlvblR5cGU6Ok90aGVyOwogfQogCi1O
YXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVzb3VyY2VSZXF1ZXN0LCBGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUsIGJvb2wgaXNGb3Jt
U3VibWlzc2lvbiwgRXZlbnQqIGV2ZW50LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIGNvbnN0IEF0b21pY1N0cmluZyYgZG93bmxvYWRB
dHRyaWJ1dGUpCi0gICAgOiBOYXZpZ2F0aW9uQWN0aW9uKHJlc291cmNlUmVxdWVzdCwgbmF2aWdh
dGlvblR5cGUoZnJhbWVMb2FkVHlwZSwgaXNGb3JtU3VibWlzc2lvbiwgZXZlbnQpLCBldmVudCwg
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgZG93bmxvYWRBdHRyaWJ1dGUpCitOYXZpZ2F0
aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3Vy
Y2VSZXF1ZXN0LCBGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUsIGJvb2wgaXNGb3JtU3VibWlz
c2lvbiwKKyAgICBFdmVudCogZXZlbnQsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgY29uc3QgQXRvbWljU3RyaW5nJiBkb3dubG9hZEF0
dHJpYnV0ZSkKKyAgICA6IG1fcmVzb3VyY2VSZXF1ZXN0IHsgcmVzb3VyY2VSZXF1ZXN0IH0KKyAg
ICAsIG1fdHlwZSB7IG5hdmlnYXRpb25UeXBlKGZyYW1lTG9hZFR5cGUsIGlzRm9ybVN1Ym1pc3Np
b24sICEhZXZlbnQpIH0KKyAgICAsIG1fc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSB7IHNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgfQorICAgICwgbV9ldmVudCB7IGV2ZW50IH0KKyAg
ICAsIG1fZG93bmxvYWRBdHRyaWJ1dGUgeyBkb3dubG9hZEF0dHJpYnV0ZSB9CiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCmluZGV4IDM3MDJkYzU1MGYyNjcw
Yzk3M2QwZTI0NmY1M2E0NGZiYzgzNTg4ZmYuLmRhYTVjNWVmOGJkNzM1OTFmN2MyNTRiNDI5NTNj
ZWMwN2M5Y2RjN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9u
QWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNiBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTcgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjgsMzAgKzI4LDI5IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRXZlbnQu
aCIKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3Iu
aCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIEV2ZW50OworCiBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uIHsKIHB1YmxpYzoKLSAgICBXRUJD
T1JFX0VYUE9SVCBOYXZpZ2F0aW9uQWN0aW9uKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgTmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCBOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE5hdmlnYXRp
b25UeXBlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIEZyYW1lTG9hZFR5cGUsIGJvb2wgaXNGb3JtU3VibWlzc2lvbik7Ci0KLSAg
ICBOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3kpOwotICAgIE5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgTmF2aWdhdGlvblR5cGUsIEV2ZW50Kik7Ci0gICAgTmF2aWdhdGlvbkFjdGlvbihjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBOYXZpZ2F0aW9uVHlwZSwgRXZlbnQqLCBTaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5KTsKLSAgICBOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIE5hdmlnYXRpb25UeXBlLCBFdmVudCosIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3ksIGNvbnN0IEF0b21pY1N0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUpOwotICAgIE5hdmlnYXRp
b25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgTmF2aWdhdGlvblR5cGUsIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwotICAgIE5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgRnJhbWVMb2FkVHlwZSwgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uLCBFdmVudCop
OwotICAgIE5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRnJhbWVMb2Fk
VHlwZSwgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uLCBFdmVudCosIFNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3kpOwotICAgIE5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
RnJhbWVMb2FkVHlwZSwgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uLCBFdmVudCosIFNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3ksIGNvbnN0IEF0b21pY1N0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUp
OworICAgIE5hdmlnYXRpb25BY3Rpb24oKTsKKyAgICBleHBsaWNpdCBOYXZpZ2F0aW9uQWN0aW9u
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgIFdFQkNPUkVfRVhQT1JUIE5hdmlnYXRpb25B
Y3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgTmF2aWdhdGlvblR5cGUgPSBOYXZpZ2F0aW9u
VHlwZTo6T3RoZXIsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBTaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdywgRXZlbnQqID0gbnVsbHB0ciwgY29uc3Qg
QXRvbWljU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSA9IG51bGxBdG9tKTsKKyAgICBOYXZpZ2F0
aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZyYW1lTG9hZFR5cGUsIGJvb2wgaXNG
b3JtU3VibWlzc2lvbiwgRXZlbnQqID0gbnVsbHB0ciwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSA9IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBjb25z
dCBBdG9taWNTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlID0gbnVsbEF0b20pOworCisgICAgV0VC
Q09SRV9FWFBPUlQgfk5hdmlnYXRpb25BY3Rpb24oKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIE5h
dmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpOworICAgIE5hdmlnYXRpb25B
Y3Rpb24oTmF2aWdhdGlvbkFjdGlvbiYmKTsKKworICAgIE5hdmlnYXRpb25BY3Rpb24mIG9wZXJh
dG9yPShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJik7CisgICAgTmF2aWdhdGlvbkFjdGlvbiYgb3Bl
cmF0b3I9KE5hdmlnYXRpb25BY3Rpb24mJik7CiAKICAgICBOYXZpZ2F0aW9uQWN0aW9uIGNvcHlX
aXRoU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5KSBjb25zdDsKIApAQCAtNzIsMTAgKzcxLDEwIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBSZXNvdXJjZVJlcXVlc3QgbV9yZXNvdXJjZVJlcXVlc3Q7Ci0gICAgTmF2aWdhdGlvblR5cGUg
bV90eXBlIHsgTmF2aWdhdGlvblR5cGU6Ok90aGVyIH07CisgICAgTmF2aWdhdGlvblR5cGUgbV90
eXBlOworICAgIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgbV9zaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5OwogICAgIFJlZlB0cjxFdmVudD4gbV9ldmVudDsKLSAgICBSZWZQdHI8VXNl
ckdlc3R1cmVUb2tlbj4gbV91c2VyR2VzdHVyZVRva2VuOwotICAgIFNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kgbV9zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHsgU2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cgfTsKKyAgICBSZWZQdHI8VXNlckdlc3R1
cmVUb2tlbj4gbV91c2VyR2VzdHVyZVRva2VuIHsgVXNlckdlc3R1cmVJbmRpY2F0b3I6OmN1cnJl
bnRVc2VyR2VzdHVyZSgpIH07CiAgICAgQXRvbWljU3RyaW5nIG1fZG93bmxvYWRBdHRyaWJ1dGU7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKaW5kZXggNGVhZTdi
NjJiNmVkYjIyMzBlMzgwNzUwOWUyNjYxZWJmZmVlMjdiMC4uNTRhZjFmMjY4ZThiYmE4YzU4NTMx
NjlhOTYwMzQ4M2M2Zjc0YTBiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Bv
bGljeUNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2Vy
LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5o
IgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCisj
aW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRm9y
bVN0YXRlLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGVyZm9ybWFuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5j
cHAKaW5kZXggYzM1YjBlZmEwYzJlMzQ3MDU2ZmQ1MTY3MDBmNWI3YzA3ZmRmZWFlNC4uNGZhNTZl
ODU2M2E5NWE3YjBmZWU0ZjhkZDk2Yjk3M2Q4ZDZjNDkxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJm
b3JtYW5jZS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKKyNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUg
IkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIlBlcmZvcm1hbmNl
RW50cnkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250cm9sbGVyLmNwcAppbmRl
eCBiZjM1OGRjNmFiNDg1MDk4NjQ1MDFhMDViNmY3M2Q4YjBhYzk5Mjg5Li5jMDFiMzhiZjIyODg1
NWY3ZWQyNTZjMDJmODU5NjJiZDIwMWI2MDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZXBsYXkvUmVwbGF5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1Jl
cGxheUNvbnRyb2xsZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQ2FwdHVyaW5n
SW5wdXRDdXJzb3IuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVu
dExvYWRlci5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJGcmFtZVRyZWUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIK
</data>

          </attachment>
      

    </bug>

</bugzilla>