<?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>165975</bug_id>
          
          <creation_ts>2016-12-16 16:33:52 -0800</creation_ts>
          <short_desc>Address some style problems found by static analysis</short_desc>
          <delta_ts>2016-12-20 15:33:45 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=166067</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>aestes</cc>
    
    <cc>andersca</cc>
    
    <cc>bburg</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>joepeck</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1260811</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-12-16 16:33:52 -0800</bug_when>
    <thetext>The static analyzer identified some miscellaneous problems in the code:

1. Some methods did not actually override the expected method due to signature differences.
2. Some large arguments were being passed by value.

This patch tidies up these issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260819</commentid>
    <comment_count>1</comment_count>
      <attachid>297374</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-12-16 16:40:37 -0800</bug_when>
    <thetext>Created attachment 297374
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260820</commentid>
    <comment_count>2</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-12-16 16:41:24 -0800</bug_when>
    <thetext>Note that the instances of &quot;const int*&quot; -&gt; &quot;const int* const&quot;, etc., were to match the method declarations in the implementation files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261129</commentid>
    <comment_count>3</comment_count>
      <attachid>297374</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-19 09:14:24 -0800</bug_when>
    <thetext>Comment on attachment 297374
Patch

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

&gt; Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.h:70
&gt; +    void setBreakpointByUrl(ErrorString&amp;, int lineNumber, const String* const optionalURL, const String* const optionalURLRegex, const int* const optionalColumnNumber, const Inspector::InspectorObject* options, Inspector::Protocol::Debugger::BreakpointId*, RefPtr&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::Debugger::Location&gt;&gt;&amp; locations) final;

This change caused a warning on Windows.  Let&apos;s double check it.

&gt; Source/WebKit2/Shared/WebBackForwardListItem.h:47
&gt; -    static PassRefPtr&lt;WebBackForwardListItem&gt; create(BackForwardListItemState, uint64_t pageID);
&gt; +    static PassRefPtr&lt;WebBackForwardListItem&gt; create(BackForwardListItemState&amp;&amp;, uint64_t pageID);

As long as we&apos;re touching this, can we make this return a Ref?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261141</commentid>
    <comment_count>4</comment_count>
      <attachid>297374</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-12-19 09:54:23 -0800</bug_when>
    <thetext>Comment on attachment 297374
Patch

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

&gt;&gt; Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.h:70
&gt;&gt; +    void setBreakpointByUrl(ErrorString&amp;, int lineNumber, const String* const optionalURL, const String* const optionalURLRegex, const int* const optionalColumnNumber, const Inspector::InspectorObject* options, Inspector::Protocol::Debugger::BreakpointId*, RefPtr&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::Debugger::Location&gt;&gt;&amp; locations) final;
&gt; 
&gt; This change caused a warning on Windows.  Let&apos;s double check it.

I think this is due to out-of-sync intermediate files. It&apos;s clear that JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp is declared as &quot;const String* const&quot; (etc.), so the headers should be made to match.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261393</commentid>
    <comment_count>5</comment_count>
      <attachid>297521</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-12-20 09:06:51 -0800</bug_when>
    <thetext>Created attachment 297521
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261395</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-20 09:09:27 -0800</bug_when>
    <thetext>Attachment 297521 did not pass style-queue:


ERROR: Source/WebCore/inspector/PageDebuggerAgent.h:68:  The parameter name &quot;const&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.h:86:  The parameter name &quot;const&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 20 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>1261438</commentid>
    <comment_count>7</comment_count>
      <attachid>297527</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-12-20 09:47:52 -0800</bug_when>
    <thetext>Created attachment 297527
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261442</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-20 09:49:34 -0800</bug_when>
    <thetext>Attachment 297527 did not pass style-queue:


ERROR: Source/WebCore/inspector/PageDebuggerAgent.h:68:  The parameter name &quot;const&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.h:86:  The parameter name &quot;const&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 20 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>1261459</commentid>
    <comment_count>9</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-12-20 10:06:04 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 297374 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=297374&amp;action=review
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.h:70
&gt; &gt;&gt; +    void setBreakpointByUrl(ErrorString&amp;, int lineNumber, const String* const optionalURL, const String* const optionalURLRegex, const int* const optionalColumnNumber, const Inspector::InspectorObject* options, Inspector::Protocol::Debugger::BreakpointId*, RefPtr&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::Debugger::Location&gt;&gt;&amp; locations) final;
&gt; &gt; 
&gt; &gt; This change caused a warning on Windows.  Let&apos;s double check it.
&gt; 
&gt; I think this is due to out-of-sync intermediate files. It&apos;s clear that
&gt; JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp is declared as
&gt; &quot;const String* const&quot; (etc.), so the headers should be made to match.

Someday these will use std::optional.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261460</commentid>
    <comment_count>10</comment_count>
      <attachid>297527</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-12-20 10:07:20 -0800</bug_when>
    <thetext>Comment on attachment 297527
Patch

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

&gt; Source/JavaScriptCore/inspector/scripts/codegen/cpp_generator.py:142
&gt; +                return &apos;const %s* const&apos; % cpp_name

You&apos;ll need to rebaseline the expected test results:

./Tools/Scripts/run-inspector-generator-tests --reset-results</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261462</commentid>
    <comment_count>11</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-12-20 10:09:36 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Attachment 297521 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/WebCore/inspector/PageDebuggerAgent.h:68:  The parameter name
&gt; &quot;const&quot; adds no information, so it should be removed. 
&gt; [readability/parameter_name] [5]
&gt; ERROR: Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.h:86: 
&gt; The parameter name &quot;const&quot; adds no information, so it should be removed. 
&gt; [readability/parameter_name] [5]
&gt; Total errors found: 2 in 20 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against
&gt; check-webkit-style.

LOL, please file a bug about this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261473</commentid>
    <comment_count>12</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-12-20 10:15:16 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #6)
&gt; &gt; Attachment 297521 [details] did not pass style-queue:
&gt; &gt; 
&gt; &gt; 
&gt; &gt; ERROR: Source/WebCore/inspector/PageDebuggerAgent.h:68:  The parameter name
&gt; &gt; &quot;const&quot; adds no information, so it should be removed. 
&gt; &gt; [readability/parameter_name] [5]
&gt; &gt; ERROR: Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.h:86: 
&gt; &gt; The parameter name &quot;const&quot; adds no information, so it should be removed. 
&gt; &gt; [readability/parameter_name] [5]
&gt; &gt; Total errors found: 2 in 20 files
&gt; &gt; 
&gt; &gt; 
&gt; &gt; If any of these errors are false positives, please file a bug against
&gt; &gt; check-webkit-style.
&gt; 
&gt; LOL, please file a bug about this.

Already did! Bug 166067.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261475</commentid>
    <comment_count>13</comment_count>
      <attachid>297532</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-12-20 10:17:55 -0800</bug_when>
    <thetext>Created attachment 297532
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261478</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-20 10:21:03 -0800</bug_when>
    <thetext>Attachment 297532 did not pass style-queue:


ERROR: Source/WebCore/inspector/PageDebuggerAgent.h:68:  The parameter name &quot;const&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.h:86:  The parameter name &quot;const&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 21 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>1261817</commentid>
    <comment_count>15</comment_count>
      <attachid>297532</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-20 15:33:41 -0800</bug_when>
    <thetext>Comment on attachment 297532
Patch

Clearing flags on attachment: 297532

Committed r210042: &lt;http://trac.webkit.org/changeset/210042&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261819</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-20 15:33:45 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297374</attachid>
            <date>2016-12-16 16:40:37 -0800</date>
            <delta_ts>2016-12-20 09:06:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165975-20161216163943.patch</filename>
            <type>text/plain</type>
            <size>22144</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA5OTIzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBA
CisyMDE2LTEyLTE2ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZHJlc3Mgc29tZSBzdHlsZSBwcm9ibGVtcyBmb3VuZCBieSBzdGF0aWMgYW5hbHlzaXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTk3NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvcnJlY3Qg
dGhlIGNvbnN0LWNvcnJlY3RuZXNzIG9mIGZ1bmN0aW9ucyB0aGF0IGFyZSBpbXBsZW1lbnRlZCB1
c2luZyBzdHJpY3RlcgorICAgICAgICBjb25zdCBkZWNsYXJhdGlvbnMuCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oOgorCiAyMDE2LTEyLTE2ICBLZWl0
aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIGk2NC5lcXogc2hv
dWxkIHVzZSBhbiBJbnQ2NCB6ZXJvCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5o
CShyZXZpc2lvbiAyMDk5MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMywgMjAxNS0yMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCwg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApA
QCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikg
ZmluYWw7CiAgICAgdm9pZCBzZXRBc3luY1N0YWNrVHJhY2VEZXB0aChFcnJvclN0cmluZyYsIGlu
dCBkZXB0aCkgZmluYWw7CiAgICAgdm9pZCBzZXRCcmVha3BvaW50c0FjdGl2ZShFcnJvclN0cmlu
ZyYsIGJvb2wgYWN0aXZlKSBmaW5hbDsKLSAgICB2b2lkIHNldEJyZWFrcG9pbnRCeVVybChFcnJv
clN0cmluZyYsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsVVJMLCBjb25z
dCBTdHJpbmcqIG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0IGludCogb3B0aW9uYWxDb2x1bW5OdW1i
ZXIsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBvcHRpb25zLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4+JiBs
b2NhdGlvbnMpIGZpbmFsOworICAgIHZvaWQgc2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5n
JiwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkwsIGNvbnN0
IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBjb25zdCBvcHRpb25h
bENvbHVtbk51bWJlciwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIG9wdGlvbnMs
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6Okxv
Y2F0aW9uPj4mIGxvY2F0aW9ucykgZmluYWw7CiAgICAgdm9pZCBzZXRCcmVha3BvaW50KEVycm9y
U3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIGxvY2F0aW9uLCBjb25z
dCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogb3B0aW9ucywgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpE
ZWJ1Z2dlcjo6TG9jYXRpb24+JiBhY3R1YWxMb2NhdGlvbikgZmluYWw7CiAgICAgdm9pZCByZW1v
dmVCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWRlbnRp
ZmllcikgZmluYWw7CiAgICAgdm9pZCBjb250aW51ZVVudGlsTmV4dFJ1bkxvb3AoRXJyb3JTdHJp
bmcmKSBmaW5hbDsKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RlcE91dChF
cnJvclN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgc2V0UGF1c2VPbkV4Y2VwdGlvbnMoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhdXNlU3RhdGUpIGZpbmFsOwogICAgIHZvaWQgc2V0UGF1
c2VPbkFzc2VydGlvbnMoRXJyb3JTdHJpbmcmLCBib29sIGVuYWJsZWQpIGZpbmFsOwotICAgIHZv
aWQgZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgY2FsbEZy
YW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91
cCwgY29uc3QgYm9vbCogaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBjb25zdCBib29sKiBkb05vdFBh
dXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGJvb2wqIHJldHVybkJ5VmFsdWUs
IGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgY29uc3QgYm9vbCogc2F2ZVJlc3VsdCwgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwg
SW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24sIEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBzYXZlZFJlc3VsdEluZGV4KSBmaW5hbDsKKyAg
ICB2b2lkIGV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNh
bGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyogY29uc3Qg
b2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGNvbnN0IGluY2x1ZGVDb21tYW5kTGluZUFQSSwgY29u
c3QgYm9vbCogY29uc3QgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25z
dCBib29sKiBjb25zdCByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcs
IGNvbnN0IGJvb2wqIHNhdmVSZXN1bHQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1
dDxib29sPiogd2FzVGhyb3duLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50Piog
c2F2ZWRSZXN1bHRJbmRleCkgZmluYWw7CiAgICAgdm9pZCBzZXRPdmVybGF5TWVzc2FnZShFcnJv
clN0cmluZyYsIGNvbnN0IFN0cmluZyopIG92ZXJyaWRlOwogCiAgICAgYm9vbCBpc1BhdXNlZCgp
IGNvbnN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUnVudGltZUFnZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmgJKHJldmlzaW9uIDIwOTky
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1
bnRpbWVBZ2VudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTU5LDExICs1OSwxMSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBlbmFibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZSB7IG1fZW5hYmxlZCA9IHRydWU7IH0KICAg
ICB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZSB7IG1fZW5hYmxlZCA9IGZhbHNl
OyB9CiAgICAgdm9pZCBwYXJzZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lv
biwgSW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBlKiByZXN1bHQs
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBtZXNzYWdlLCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6RXJyb3JSYW5nZT4mKSBmaW5hbDsKLSAgICB2
b2lkIGV2YWx1YXRlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25z
dCBTdHJpbmcqIG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBpbmNsdWRlQ29tbWFuZExpbmVBUEks
IGNvbnN0IGJvb2wqIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3Qg
aW50KiBleGVjdXRpb25Db250ZXh0SWQsIGNvbnN0IGJvb2wqIHJldHVybkJ5VmFsdWUsIGNvbnN0
IGJvb2wqIGdlbmVyYXRlUHJldmlldywgY29uc3QgYm9vbCogc2F2ZVJlc3VsdCwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVj
dG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24sIEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBzYXZlZFJlc3VsdEluZGV4KSBmaW5hbDsKLSAgICB2b2lk
IGNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5KiBv
cHRpb25hbEFyZ3VtZW50cywgY29uc3QgYm9vbCogZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11
dGVDb25zb2xlLCBjb25zdCBib29sKiByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0
ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmpl
Y3Q+JiByZXN1bHQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxib29sPiogd2FzVGhy
b3duKSBmaW5hbDsKKyAgICB2b2lkIGV2YWx1YXRlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBjb25zdCBib29s
KiBjb25zdCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGNvbnN0IGJvb2wqIGNvbnN0IGRvTm90UGF1
c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0
SWQsIGNvbnN0IGJvb2wqIHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmll
dywgY29uc3QgYm9vbCogc2F2ZVJlc3VsdCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0
cHV0PGJvb2w+KiB3YXNUaHJvd24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+
KiBzYXZlZFJlc3VsdEluZGV4KSBmaW5hbDsKKyAgICB2b2lkIGNhbGxGdW5jdGlvbk9uKEVycm9y
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9u
LCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5KiBvcHRpb25hbEFyZ3VtZW50cywgY29u
c3QgYm9vbCogY29uc3QgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25z
dCBib29sKiBjb25zdCByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1
bHQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKSBmaW5h
bDsKICAgICB2b2lkIHJlbGVhc2VPYmplY3QoRXJyb3JTdHJpbmcmLCBjb25zdCBFcnJvclN0cmlu
ZyYgb2JqZWN0SWQpIGZpbmFsOwotICAgIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0cmluZyYs
IGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIG93blByb3BlcnRpZXMsIGNvbnN0
IGJvb2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiByZXN1
bHQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBpbnRlcm5hbFByb3BlcnRp
ZXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKEVycm9yU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVu
dGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4mIHJlc3VsdCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVy
dHlEZXNjcmlwdG9yPj4mIGludGVybmFsUHJvcGVydGllcykgZmluYWw7CisgICAgdm9pZCBnZXRQ
cm9wZXJ0aWVzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9v
bCogY29uc3Qgb3duUHJvcGVydGllcywgY29uc3QgYm9vbCogY29uc3QgZ2VuZXJhdGVQcmV2aWV3
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4mIHJlc3VsdCwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFsUHJv
cGVydHlEZXNjcmlwdG9yPj4mIGludGVybmFsUHJvcGVydGllcykgZmluYWw7CisgICAgdm9pZCBn
ZXREaXNwbGF5YWJsZVByb3BlcnRpZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVj
dElkLCBjb25zdCBib29sKiBjb25zdCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURl
c2NyaXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYg
aW50ZXJuYWxQcm9wZXJ0aWVzKSBmaW5hbDsKICAgICB2b2lkIGdldENvbGxlY3Rpb25FbnRyaWVz
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nKiBvYmpl
Y3RHcm91cCwgY29uc3QgaW50KiBzdGFydEluZGV4LCBjb25zdCBpbnQqIG51bWJlclRvRmV0Y2gs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpS
dW50aW1lOjpDb2xsZWN0aW9uRW50cnk+PiYgZW50cmllcykgZmluYWw7CiAgICAgdm9pZCBzYXZl
UmVzdWx0KEVycm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIGNh
bGxBcmd1bWVudCwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQsIEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBzYXZlZFJlc3VsdEluZGV4KSBmaW5hbDsKICAgICB2b2lk
IHJlbGVhc2VPYmplY3RHcm91cChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0R3Jv
dXApIGZpbmFsOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA5OTI3KQorKysgU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTYtMTIt
MTYgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkcmVz
cyBzb21lIHN0eWxlIHByb2JsZW1zIGZvdW5kIGJ5IHN0YXRpYyBhbmFseXNpcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1OTc1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29ycmVjdCB0aGUgY29uc3Qt
Y29ycmVjdG5lc3Mgb2YgZnVuY3Rpb25zIHRoYXQgYXJlIGltcGxlbWVudGVkIHVzaW5nIHN0cmlj
dGVyCisgICAgICAgIGNvbnN0IGRlY2xhcmF0aW9ucy4KKworICAgICAgICBBdm9pZCBwYXNzaW5n
IGxhcmdlIEFOR0xFIGRhdGEgc3RydWN0dXJlcyB0aHJvdWdoIHRoZSBBTkdMRVdlYktpdEJyaWRn
ZSBtZXRob2RzLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmg6IERl
Y2xhcmUgdGhlIG1ldGhvZCBvdmVycmlkZXMgcHJvcGVybHkgdG8gbWF0Y2gKKyAgICAgICAgdGhl
IHN0cmljdGVyIGNvbnN0IGRlY2xhcmF0aW9ucyBpbiB0aGUgaW1wbGVtZW50YXRpb24gZmlsZXMu
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oOiBEaXR0by4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBTkdMRVdlYktpdEJyaWRnZTo6c2V0UmVzb3VyY2VzKTogUGFzcyBieSBjb25zdCBy
ZWZlcmVuY2UuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2Uu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFV2ViS2l0QnJpZGdlOjpnZXRSZXNvdXJjZXMpOiBS
ZXR1cm4gYSBjb25zdCByZWZlcmVuY2UuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlh
U291cmNlOjpzZWxlY3RTZXR0aW5ncyk6IFVzZSBhIGxhbWJkYSB0aGF0IHRha2VzCisgICAgICAg
IGEgY29uc3QgcmVmZXJlbmNlLCByYXRoZXIgdGhhbiBjb3B5aW5nIHRoZSBtYXBzIHdoaWxlIHNl
YXJjaGluZy4KKwogMjAxNi0xMi0xNCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFtBcHBsZVBheV0gUmVtb3ZlIHJlbWFpbmluZyBjdXN0b20gYmluZGluZ3MgZnJvbSB0
aGUgQXBwbGVQYXkgY29kZQpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmgJKHJldmlzaW9uIDIwOTkyMykKKysrIFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTExOCw3ICsxMTgsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBnZXREb2N1bWVudChFcnJvclN0cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpET006Ok5vZGU+JiByb290KSBvdmVycmlkZTsKICAgICB2b2lkIHJlcXVlc3RD
aGlsZE5vZGVzKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgaW50KiBkZXB0aCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzZXRBdHRyaWJ1dGVWYWx1ZShFcnJvclN0cmluZyYsIGludCBlbGVt
ZW50SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBzZXRBdHRyaWJ1dGVzQXNUZXh0KEVycm9yU3RyaW5nJiwgaW50IGVsZW1lbnRJ
ZCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcqIG5hbWUpIG92ZXJyaWRlOworICAg
IHZvaWQgc2V0QXR0cmlidXRlc0FzVGV4dChFcnJvclN0cmluZyYsIGludCBlbGVtZW50SWQsIGNv
bnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nKiBjb25zdCBuYW1lKSBvdmVycmlkZTsKICAg
ICB2b2lkIHJlbW92ZUF0dHJpYnV0ZShFcnJvclN0cmluZyYsIGludCBlbGVtZW50SWQsIGNvbnN0
IFN0cmluZyYgbmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVOb2RlKEVycm9yU3RyaW5n
JiwgaW50IG5vZGVJZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXROb2RlTmFtZShFcnJvclN0cmlu
ZyYsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgaW50KiBuZXdJZCkgb3ZlcnJpZGU7
CkBAIC0xMzAsNyArMTMwLDcgQEAgcHVibGljOgogICAgIHZvaWQgcGVyZm9ybVNlYXJjaChFcnJv
clN0cmluZyYsIGNvbnN0IFN0cmluZyYgd2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgY29uc3QgSW5z
cGVjdG9yOjpJbnNwZWN0b3JBcnJheSogbm9kZUlkcywgU3RyaW5nKiBzZWFyY2hJZCwgaW50KiBy
ZXN1bHRDb3VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRTZWFyY2hSZXN1bHRzKEVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCwgaW50IGZyb21JbmRleCwgaW50IHRvSW5kZXgs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+PiYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlzY2FyZFNlYXJjaFJlc3VsdHMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHNl
YXJjaElkKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlc29sdmVOb2RlKEVycm9yU3RyaW5nJiwgaW50
IG5vZGVJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCByZXNvbHZlTm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyogY29u
c3Qgb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+JiByZXN1bHQpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0QXR0cmlidXRlcyhFcnJv
clN0cmluZyYsIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxT
dHJpbmc+PiYgcmVzdWx0KSBvdmVycmlkZTsKICAgICB2b2lkIHNldEluc3BlY3RNb2RlRW5hYmxl
ZChFcnJvclN0cmluZyYsIGJvb2wgZW5hYmxlZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3QqIGhpZ2hsaWdodENvbmZpZykgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXF1ZXN0Tm9kZShF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGludCogbm9kZUlkKSBvdmVycmlk
ZTsKQEAgLTE0NCw3ICsxNDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBoaWdobGlnaHROb2RlKEVy
cm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIGhpZ2hsaWdodENv
bmZpZywgY29uc3QgaW50KiBub2RlSWQsIGNvbnN0IFN0cmluZyogb2JqZWN0SWQpIG92ZXJyaWRl
OwogICAgIHZvaWQgaGlnaGxpZ2h0RnJhbWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZy
YW1lSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBjb2xvciwgY29uc3QgSW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIG91dGxpbmVDb2xvcikgb3ZlcnJpZGU7CiAKLSAgICB2
b2lkIG1vdmVUbyhFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGludCB0YXJnZXROb2RlSWQsIGNv
bnN0IGludCogYW5jaG9yTm9kZUlkLCBpbnQqIG5ld05vZGVJZCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBtb3ZlVG8oRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBpbnQgdGFyZ2V0Tm9kZUlkLCBjb25z
dCBpbnQqIGNvbnN0IGFuY2hvck5vZGVJZCwgaW50KiBuZXdOb2RlSWQpIG92ZXJyaWRlOwogICAg
IHZvaWQgdW5kbyhFcnJvclN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVkbyhFcnJvclN0
cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgbWFya1VuZG9hYmxlU3RhdGUoRXJyb3JTdHJpbmcm
KSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdl
QWdlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UGFnZUFnZW50LmgJKHJldmlzaW9uIDIwOTkyMykKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JQYWdlQWdlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC05MywxNCArOTMsMTQgQEAg
cHVibGljOgogICAgIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZv
aWQgYWRkU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYg
c291cmNlLCBTdHJpbmcqIHJlc3VsdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVTY3JpcHRU
b0V2YWx1YXRlT25Mb2FkKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKSBv
dmVycmlkZTsKLSAgICB2b2lkIHJlbG9hZChFcnJvclN0cmluZyYsIGNvbnN0IGJvb2wqIG9wdGlv
bmFsSWdub3JlQ2FjaGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxTY3JpcHRUb0V2YWx1YXRlT25M
b2FkKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbG9hZChFcnJvclN0cmluZyYsIGNvbnN0IGJvb2wq
IGNvbnN0IG9wdGlvbmFsSWdub3JlQ2FjaGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxTY3JpcHRU
b0V2YWx1YXRlT25Mb2FkKSBvdmVycmlkZTsKICAgICB2b2lkIG5hdmlnYXRlKEVycm9yU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiB1cmwpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0Q29va2llcyhFcnJv
clN0cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpQYWdlOjpDb29raWU+PiYgY29va2llcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZWxl
dGVDb29raWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUsIGNvbnN0IFN0
cmluZyYgdXJsKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFJlc291cmNlVHJlZShFcnJvclN0cmlu
ZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT4m
KSBvdmVycmlkZTsKICAgICB2b2lkIGdldFJlc291cmNlQ29udGVudChFcnJvclN0cmluZyYsIGNv
bnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIFN0cmluZyogY29udGVudCwg
Ym9vbCogYmFzZTY0RW5jb2RlZCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZWFyY2hJblJlc291cmNl
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBj
b25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxSZXF1ZXN0
SWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4mKSBvdmVycmlkZTsKLSAgICB2b2lkIHNlYXJj
aEluUmVzb3VyY2VzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgYm9vbCogY2Fz
ZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogaXNSZWdleCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlNlYXJjaFJlc3VsdD4+Jikgb3Zl
cnJpZGU7CisgICAgdm9pZCBzZWFyY2hJblJlc291cmNlKEVycm9yU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29u
c3QgYm9vbCogY29uc3Qgb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBjb25zdCBv
cHRpb25hbElzUmVnZXgsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxSZXF1ZXN0SWQsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlw
ZXM6OlNlYXJjaE1hdGNoPj4mKSBvdmVycmlkZTsKKyAgICB2b2lkIHNlYXJjaEluUmVzb3VyY2Vz
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgYm9vbCogY29uc3QgY2FzZVNlbnNp
dGl2ZSwgY29uc3QgYm9vbCogY29uc3QgaXNSZWdleCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlNlYXJjaFJlc3VsdD4+Jikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzZXRTaG93UGFpbnRSZWN0cyhFcnJvclN0cmluZyYsIGJvb2wgc2hv
dykgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRFbXVsYXRlZE1lZGlhKEVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNp
YmxlKEVycm9yU3RyaW5nJiwgYm9vbCogb3V0X3BhcmFtKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRn
ZS5jcHAJKHJldmlzaW9uIDIwOTkyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTUyLDcgKzE1Miw3IEBA
IHZvaWQgQU5HTEVXZWJLaXRCcmlkZ2U6OmNsZWFudXBDb21waWxlcnMKICAgICBidWlsdENvbXBp
bGVycyA9IGZhbHNlOwogfQogICAgIAotdm9pZCBBTkdMRVdlYktpdEJyaWRnZTo6c2V0UmVzb3Vy
Y2VzKFNoQnVpbHRJblJlc291cmNlcyByZXNvdXJjZXMpCit2b2lkIEFOR0xFV2ViS2l0QnJpZGdl
OjpzZXRSZXNvdXJjZXMoY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMpCiB7CiAg
ICAgLy8gUmVzb3VyY2VzIGFyZSAocG9zc2libHkpIGNoYW5naW5nIC0gY2xlYW51cCBjb21waWxl
cnMgaWYgd2UgaGFkIHRoZW0gYWxyZWFkeQogICAgIGNsZWFudXBDb21waWxlcnMoKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRC
cmlkZ2UuaAkocmV2aXNpb24gMjA5OTIzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjMsOCArNjMsOCBAQCBw
dWJsaWM6CiAgICAgQU5HTEVXZWJLaXRCcmlkZ2UoU2hTaGFkZXJPdXRwdXQgPSBTSF9HTFNMX0NP
TVBBVElCSUxJVFlfT1VUUFVULCBTaFNoYWRlclNwZWMgPSBTSF9XRUJHTF9TUEVDKTsKICAgICB+
QU5HTEVXZWJLaXRCcmlkZ2UoKTsKICAgICAKLSAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgZ2V0UmVz
b3VyY2VzKCkgeyByZXR1cm4gbV9yZXNvdXJjZXM7IH0KLSAgICB2b2lkIHNldFJlc291cmNlcyhT
aEJ1aWx0SW5SZXNvdXJjZXMpOworICAgIGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgZ2V0UmVz
b3VyY2VzKCkgeyByZXR1cm4gbV9yZXNvdXJjZXM7IH0KKyAgICB2b2lkIHNldFJlc291cmNlcyhj
b25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMmKTsKICAgICAKICAgICBib29sIGNvbXBpbGVTaGFkZXJT
b3VyY2UoY29uc3QgY2hhciogc2hhZGVyU291cmNlLCBBTkdMRVNoYWRlclR5cGUsIFN0cmluZyYg
dHJhbnNsYXRlZFNoYWRlclNvdXJjZSwgU3RyaW5nJiBzaGFkZXJWYWxpZGF0aW9uTG9nLCBWZWN0
b3I8c3RkOjpwYWlyPEFOR0xFU2hhZGVyU3ltYm9sVHlwZSwgc2g6OlNoYWRlclZhcmlhYmxlPj4m
IHN5bWJvbHMsIGludCBleHRyYUNvbXBpbGVPcHRpb25zID0gMCk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVk
aWFTb3VyY2UuY3BwCShyZXZpc2lvbiAyMDk5MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTU0LDcgKzU1NCw3IEBAIGJvb2wgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2VsZWN0U2V0dGluZ3MK
ICAgICAvLyA2LiBTZWxlY3Qgb25lIHNldHRpbmdzIGRpY3Rpb25hcnkgZnJvbSBjYW5kaWRhdGVz
LCBhbmQgcmV0dXJuIGl0IGFzIHRoZSByZXN1bHQgb2YgdGhlIFNlbGVjdFNldHRpbmdzKCkgYWxn
b3JpdGhtLgogICAgIC8vICAgIFRoZSBVQSBzaG91bGQgdXNlIHRoZSBvbmUgd2l0aCB0aGUgc21h
bGxlc3QgZml0bmVzcyBkaXN0YW5jZSwgYXMgY2FsY3VsYXRlZCBpbiBzdGVwIDMuCiAgICAgaWYg
KCFzdGQ6OmlzaW5mKG1pbmltdW1EaXN0YW5jZSkpIHsKLSAgICAgICAgc3VwcG9ydGVkQ29uc3Ry
YWludHMucmVtb3ZlQWxsTWF0Y2hpbmcoWyZdKHN0ZDo6cGFpcjxkb3VibGUsIE1lZGlhVHJhY2tD
b25zdHJhaW50U2V0TWFwPiBwYWlyKSAtPiBib29sIHsKKyAgICAgICAgc3VwcG9ydGVkQ29uc3Ry
YWludHMucmVtb3ZlQWxsTWF0Y2hpbmcoWyZdKGNvbnN0IHN0ZDo6cGFpcjxkb3VibGUsIE1lZGlh
VHJhY2tDb25zdHJhaW50U2V0TWFwPiYgcGFpcikgLT4gYm9vbCB7CiAgICAgICAgICAgICByZXR1
cm4gcGFpci5maXJzdCA+IG1pbmltdW1EaXN0YW5jZTsKICAgICAgICAgfSk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cJKHJldmlzaW9uIDIwOTkyMykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE2LTEyLTE2ICBCcmVudCBGdWxnaGFtICA8
YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZHJlc3Mgc29tZSBzdHlsZSBwcm9ibGVt
cyBmb3VuZCBieSBzdGF0aWMgYW5hbHlzaXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2NTk3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEF2b2lkIHBhc3NpbmcgbGFyZ2UgQU5HTEUgZGF0YSBzdHJ1Y3R1
cmVzIHRocm91Z2ggdGhlIEFOR0xFV2ViS2l0QnJpZGdlIG1ldGhvZHMuCisKKyAgICAgICAgKiBT
aGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3
YXJkTGlzdEl0ZW06OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0pOgorICAgICAgICAqIFNoYXJlZC9X
ZWJCYWNrRm9yd2FyZExpc3RJdGVtLmg6CisKIDIwMTYtMTItMTYgIENsYXVkaW8gU2FhdmVkcmEg
IDxjc2FhdmVkcmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV0syXSBTaGFyZWRNZW1vcnk6IGlu
Y2x1ZGUgY2xlYW51cHMKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbS5jcHAJKHJldmlzaW9uIDIwOTkyMykKKysrIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTEsIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zMiwxMiArMzIsMTIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0YXRpYyB1aW50NjRf
dCBoaWdoZXN0SXRlbUlEID0gMDsKIAotUGFzc1JlZlB0cjxXZWJCYWNrRm9yd2FyZExpc3RJdGVt
PiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVhdGUoQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRl
IGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSwgdWludDY0X3QgcGFnZUlEKQorUGFzc1JlZlB0cjxX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVhdGUoQmFj
a0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYgYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlLCB1aW50NjRf
dCBwYWdlSUQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtKFdURk1vdmUoYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlKSwgcGFnZUlEKSk7CiB9CiAKLVdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW06OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRM
aXN0SXRlbVN0YXRlIGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSwgdWludDY0X3QgcGFnZUlEKQor
V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbShCYWNrRm9yd2Fy
ZExpc3RJdGVtU3RhdGUmJiBiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUsIHVpbnQ2NF90IHBhZ2VJ
RCkKICAgICA6IG1faXRlbVN0YXRlKFdURk1vdmUoYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlKSkK
ICAgICAsIG1fcGFnZUlEKHBhZ2VJRCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaAkocmV2aXNpb24gMjA5OTIzKQorKysgU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTEsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJC
YWNrRm9yd2FyZExpc3RJdGVtIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6
VHlwZTo6QmFja0ZvcndhcmRMaXN0SXRlbT4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+IGNyZWF0ZShCYWNrRm9yd2FyZExpc3RJdGVtU3Rh
dGUsIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQmFja0Zvcndh
cmRMaXN0SXRlbT4gY3JlYXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmLCB1aW50NjRfdCBw
YWdlSUQpOwogICAgIHZpcnR1YWwgfldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oKTsKIAogICAgIHVp
bnQ2NF90IGl0ZW1JRCgpIGNvbnN0IHsgcmV0dXJuIG1faXRlbVN0YXRlLmlkZW50aWZpZXI7IH0K
QEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB1aW50NjRfdCBoaWdoZXN0VXNl
ZEl0ZW1JRCgpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlLCB1aW50NjRfdCBwYWdlSUQpOworICAgIGV4cGxp
Y2l0IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYsIHVp
bnQ2NF90IHBhZ2VJRCk7CiAKICAgICBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUgbV9pdGVtU3Rh
dGU7CiAgICAgdWludDY0X3QgbV9wYWdlSUQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297521</attachid>
            <date>2016-12-20 09:06:51 -0800</date>
            <delta_ts>2016-12-20 09:47:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165975-20161220090551.patch</filename>
            <type>text/plain</type>
            <size>36561</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA5OTg5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBA
CisyMDE2LTEyLTE5ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZHJlc3Mgc29tZSBzdHlsZSBwcm9ibGVtcyBmb3VuZCBieSBzdGF0aWMgYW5hbHlzaXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTk3NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvcnJlY3Qg
dGhlIGNvbnN0LWNvcnJlY3RuZXNzIG9mIGZ1bmN0aW9ucyB0aGF0IGFyZSBpbXBsZW1lbnRlZCB1
c2luZyBzdHJpY3RlcgorICAgICAgICBjb25zdCBkZWNsYXJhdGlvbnMuCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL3Nj
cmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yLnB5OgorICAgICAgICAoY3BwX3R5cGVfZm9yX3Vu
Y2hlY2tlZF9mb3JtYWxfaW5fcGFyYW1ldGVyKTogVXBkYXRlIHRvIG1hdGNoIGNvbnN0IGRlY2xh
cmF0aW9ucyBvZgorICAgICAgICBpbXBsZW1lbnRhdGlvbiBmaWxlcy4KKwogMjAxNi0xMi0xOCAg
U2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJBc3NlbWJseTog
SW1wbGVtZW50IHRoZSBXZWJBc3NlbWJseS5jb21waWxlIGFuZCBXZWJBc3NlbWJseS52YWxpZGF0
ZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAkocmV2aXNpb24gMjA5OTg5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMCwgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTMsIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTY3LDEyICs2NywxMiBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBz
ZXRBc3luY1N0YWNrVHJhY2VEZXB0aChFcnJvclN0cmluZyYsIGludCBkZXB0aCkgZmluYWw7CiAg
ICAgdm9pZCBzZXRCcmVha3BvaW50c0FjdGl2ZShFcnJvclN0cmluZyYsIGJvb2wgYWN0aXZlKSBm
aW5hbDsKLSAgICB2b2lkIHNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyYsIGludCBsaW5l
TnVtYmVyLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsVVJMLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFs
VVJMUmVnZXgsIGNvbnN0IGludCogb3B0aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0IEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0KiBvcHRpb25zLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dl
cjo6QnJlYWtwb2ludElkKiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4+JiBsb2NhdGlvbnMpIGZpbmFsOwor
ICAgIHZvaWQgc2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nJiwgaW50IGxpbmVOdW1iZXIs
IGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0
aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBjb25zdCBvcHRpb25hbENvbHVtbk51bWJlciwgY29u
c3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIG9wdGlvbnMsIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9u
cykgZmluYWw7CiAgICAgdm9pZCBzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgSW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIGxvY2F0aW9uLCBjb25zdCBJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdCogb3B0aW9ucywgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFr
cG9pbnRJZCosIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+
JiBhY3R1YWxMb2NhdGlvbikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVCcmVha3BvaW50KEVycm9y
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWRlbnRpZmllcikgZmluYWw7CiAgICAg
dm9pZCBjb250aW51ZVVudGlsTmV4dFJ1bkxvb3AoRXJyb3JTdHJpbmcmKSBmaW5hbDsKICAgICB2
b2lkIGNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyYsIGNvbnN0IEluc3BlY3Rvck9iamVj
dCYgbG9jYXRpb24pIGZpbmFsOwotICAgIHZvaWQgc2VhcmNoSW5Db250ZW50KEVycm9yU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9v
bCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5l
cmljVHlwZXM6OlNlYXJjaE1hdGNoPj4mKSBmaW5hbDsKKyAgICB2b2lkIHNlYXJjaEluQ29udGVu
dChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIGNvbnN0IFN0cmluZyYgcXVl
cnksIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCog
Y29uc3Qgb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+JikgZmluYWw7
CiAgICAgdm9pZCBnZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHNj
cmlwdElELCBTdHJpbmcqIHNjcmlwdFNvdXJjZSkgZmluYWw7CiAgICAgdm9pZCBnZXRGdW5jdGlv
bkRldGFpbHMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiYpIGZpbmFsOwog
ICAgIHZvaWQgcGF1c2UoRXJyb3JTdHJpbmcmKSBmaW5hbDsKQEAgLTgyLDggKzgyLDggQEAgcHVi
bGljOgogICAgIHZvaWQgc3RlcE91dChFcnJvclN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgc2V0
UGF1c2VPbkV4Y2VwdGlvbnMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhdXNlU3RhdGUp
IGZpbmFsOwogICAgIHZvaWQgc2V0UGF1c2VPbkFzc2VydGlvbnMoRXJyb3JTdHJpbmcmLCBib29s
IGVuYWJsZWQpIGZpbmFsOwotICAgIHZvaWQgZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwg
Y29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgY29uc3QgYm9vbCogaW5jbHVkZUNvbW1hbmRMaW5l
QVBJLCBjb25zdCBib29sKiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNv
bnN0IGJvb2wqIHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgY29u
c3QgYm9vbCogc2F2ZVJlc3VsdCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6
OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGJv
b2w+KiB3YXNUaHJvd24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBzYXZl
ZFJlc3VsdEluZGV4KSBmaW5hbDsKLSAgICB2b2lkIHNldE92ZXJsYXlNZXNzYWdlKEVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nKikgb3ZlcnJpZGU7CisgICAgdm9pZCBldmFsdWF0ZU9uQ2FsbEZy
YW1lKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5n
JiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBjb25zdCBib29s
KiBjb25zdCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGNvbnN0IGJvb2wqIGNvbnN0IGRvTm90UGF1
c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3QgYm9vbCogY29uc3QgcmV0dXJuQnlW
YWx1ZSwgY29uc3QgYm9vbCogY29uc3QgZ2VuZXJhdGVQcmV2aWV3LCBjb25zdCBib29sKiBjb25z
dCBzYXZlUmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8Ym9vbD4qIHdh
c1Rocm93biwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4qIHNhdmVkUmVzdWx0
SW5kZXgpIGZpbmFsOworICAgIHZvaWQgc2V0T3ZlcmxheU1lc3NhZ2UoRXJyb3JTdHJpbmcmLCBj
b25zdCBTdHJpbmcqIGNvbnN0KSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNQYXVzZWQoKSBjb25z
dDsKICAgICBib29sIGJyZWFrcG9pbnRzQWN0aXZlKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckhlYXBBZ2VudC5jcHAJKHJldmlzaW9uIDIwOTk4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LCAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgSW5zcGVjdG9ySGVhcEFnZW50OjpnZXRQcmV2aWV3
KEVycm8KICAgICBvYmplY3RQcmV2aWV3ID0gaW5qZWN0ZWRTY3JpcHQucHJldmlld1ZhbHVlKGNl
bGwpOwogfQogCi12b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6Z2V0UmVtb3RlT2JqZWN0KEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgaW50IGhlYXBPYmplY3RJZCwgY29uc3QgU3RyaW5nKiBvcHRp
b25hbE9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVt
b3RlT2JqZWN0PiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JIZWFwQWdlbnQ6OmdldFJlbW90ZU9i
amVjdChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBoZWFwT2JqZWN0SWQsIGNvbnN0IFN0
cmluZyogY29uc3Qgb3B0aW9uYWxPYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCkKIHsKICAgICAvLyBQcmV2ZW50IHRo
ZSBjZWxsIGZyb20gZ2V0dGluZyBjb2xsZWN0ZWQgYXMgd2UgbG9vayBpdCB1cC4KICAgICBWTSYg
dm0gPSBtX2Vudmlyb25tZW50LnZtKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuaAkocmV2
aXNpb24gMjA5OTg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9ySGVhcEFnZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzdGFydFRyYWNraW5nKEVycm9yU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBz
dG9wVHJhY2tpbmcoRXJyb3JTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIGdldFByZXZpZXcoRXJy
b3JTdHJpbmcmLCBpbnQgaGVhcE9iamVjdElkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRw
dXQ8U3RyaW5nPiogcmVzdWx0U3RyaW5nLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVi
dWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4mIGZ1bmN0aW9uRGV0YWlscywgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc+JiBvYmplY3RQcmV2aWV3KSBmaW5h
bDsKLSAgICB2b2lkIGdldFJlbW90ZU9iamVjdChFcnJvclN0cmluZyYsIGludCBoZWFwT2JqZWN0
SWQsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxPYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCkgZmluYWw7CisgICAgdm9p
ZCBnZXRSZW1vdGVPYmplY3QoRXJyb3JTdHJpbmcmLCBpbnQgaGVhcE9iamVjdElkLCBjb25zdCBT
dHJpbmcqIGNvbnN0IG9wdGlvbmFsT2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpIGZpbmFsOwogCiAgICAgLy8gSGVh
cE9ic2VydmVyCiAgICAgdm9pZCB3aWxsR2FyYmFnZUNvbGxlY3QoKSBvdmVycmlkZTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVB
Z2VudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCShyZXZpc2lvbiAyMDk5ODkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CkBAIC01OSwxMyArNTksMTMgQEAgcHVibGljOgogICAgIHZvaWQgZW5hYmxlKEVycm9y
U3RyaW5nJikgb3ZlcnJpZGUgeyBtX2VuYWJsZWQgPSB0cnVlOyB9CiAgICAgdm9pZCBkaXNhYmxl
KEVycm9yU3RyaW5nJikgb3ZlcnJpZGUgeyBtX2VuYWJsZWQgPSBmYWxzZTsgfQogICAgIHZvaWQg
cGFyc2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZSogcmVzdWx0LCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogbWVzc2FnZSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlJ1bnRpbWU6OkVycm9yUmFuZ2U+JikgZmluYWw7Ci0gICAgdm9pZCBldmFsdWF0ZShF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nKiBvYmpl
Y3RHcm91cCwgY29uc3QgYm9vbCogaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBjb25zdCBib29sKiBk
b05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGludCogZXhlY3V0aW9u
Q29udGV4dElkLCBjb25zdCBib29sKiByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0
ZVByZXZpZXcsIGNvbnN0IGJvb2wqIHNhdmVSZXN1bHQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRw
dXQ8aW50Piogc2F2ZWRSZXN1bHRJbmRleCkgZmluYWw7Ci0gICAgdm9pZCBjYWxsRnVuY3Rpb25P
bihFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZXhw
cmVzc2lvbiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSogb3B0aW9uYWxBcmd1bWVu
dHMsIGNvbnN0IGJvb2wqIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29u
c3QgYm9vbCogcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikgZmluYWw7Cisg
ICAgdm9pZCBldmFsdWF0ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwg
Y29uc3QgU3RyaW5nKiBjb25zdCBvYmplY3RHcm91cCwgY29uc3QgYm9vbCogY29uc3QgaW5jbHVk
ZUNvbW1hbmRMaW5lQVBJLCBjb25zdCBib29sKiBjb25zdCBkb05vdFBhdXNlT25FeGNlcHRpb25z
QW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGludCogY29uc3QgZXhlY3V0aW9uQ29udGV4dElkLCBjb25z
dCBib29sKiBjb25zdCByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBjb25zdCBnZW5lcmF0ZVBy
ZXZpZXcsIGNvbnN0IGJvb2wqIGNvbnN0IHNhdmVSZXN1bHQsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIEluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRP
dXRwdXQ8aW50Piogc2F2ZWRSZXN1bHRJbmRleCkgZmluYWw7CisgICAgdm9pZCBjYWxsRnVuY3Rp
b25PbihFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYg
ZXhwcmVzc2lvbiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSogb3B0aW9uYWxBcmd1
bWVudHMsIGNvbnN0IGJvb2wqIGNvbnN0IGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29u
c29sZSwgY29uc3QgYm9vbCogY29uc3QgcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogY29uc3Qg
Z2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVt
b3RlT2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8Ym9vbD4q
IHdhc1Rocm93bikgZmluYWw7CiAgICAgdm9pZCByZWxlYXNlT2JqZWN0KEVycm9yU3RyaW5nJiwg
Y29uc3QgRXJyb3JTdHJpbmcmIG9iamVjdElkKSBmaW5hbDsKLSAgICB2b2lkIGdldFByb3BlcnRp
ZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBib29sKiBvd25Q
cm9wZXJ0aWVzLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURl
c2NyaXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYg
aW50ZXJuYWxQcm9wZXJ0aWVzKSBmaW5hbDsKLSAgICB2b2lkIGdldERpc3BsYXlhYmxlUHJvcGVy
dGllcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIGdl
bmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiByZXN1bHQsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1l
OjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBpbnRlcm5hbFByb3BlcnRpZXMpIGZpbmFs
OwotICAgIHZvaWQgZ2V0Q29sbGVjdGlvbkVudHJpZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBjb25zdCBpbnQqIHN0YXJ0
SW5kZXgsIGNvbnN0IGludCogbnVtYmVyVG9GZXRjaCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkNvbGxlY3Rpb25FbnRyeT4+
JiBlbnRyaWVzKSBmaW5hbDsKLSAgICB2b2lkIHNhdmVSZXN1bHQoRXJyb3JTdHJpbmcmLCBjb25z
dCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgY2FsbEFyZ3VtZW50LCBjb25zdCBpbnQqIGV4
ZWN1dGlvbkNvbnRleHRJZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4qIHNh
dmVkUmVzdWx0SW5kZXgpIGZpbmFsOworICAgIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIGNvbnN0IG93blByb3BlcnRp
ZXMsIGNvbnN0IGJvb2wqIGNvbnN0IGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVz
Y3JpcHRvcj4+JiByZXN1bHQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBp
bnRlcm5hbFByb3BlcnRpZXMpIGZpbmFsOworICAgIHZvaWQgZ2V0RGlzcGxheWFibGVQcm9wZXJ0
aWVzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCogY29u
c3QgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4mIHJlc3VsdCwg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1
bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4mIGludGVybmFsUHJvcGVydGllcykg
ZmluYWw7CisgICAgdm9pZCBnZXRDb2xsZWN0aW9uRW50cmllcyhFcnJvclN0cmluZyYsIGNvbnN0
IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIGNvbnN0
IGludCogY29uc3Qgc3RhcnRJbmRleCwgY29uc3QgaW50KiBjb25zdCBudW1iZXJUb0ZldGNoLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVu
dGltZTo6Q29sbGVjdGlvbkVudHJ5Pj4mIGVudHJpZXMpIGZpbmFsOworICAgIHZvaWQgc2F2ZVJl
c3VsdChFcnJvclN0cmluZyYsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBjYWxs
QXJndW1lbnQsIGNvbnN0IGludCogY29uc3QgZXhlY3V0aW9uQ29udGV4dElkLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50Piogc2F2ZWRSZXN1bHRJbmRleCkgZmluYWw7CiAgICAg
dm9pZCByZWxlYXNlT2JqZWN0R3JvdXAoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVj
dEdyb3VwKSBmaW5hbDsKICAgICB2b2lkIGdldFJ1bnRpbWVUeXBlc0ZvclZhcmlhYmxlc0F0T2Zm
c2V0cyhFcnJvclN0cmluZyYsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkmIGxvY2F0
aW9ucywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj4+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBlbmFi
bGVUeXBlUHJvZmlsZXIoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCShyZXZpc2lvbiAyMDk5ODkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9m
aWxlckFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgSW5zcGVjdG9y
U2NyaXB0UHJvZmlsZXJBZ2VudDo6d2lsbEQKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yU2Ny
aXB0UHJvZmlsZXJBZ2VudDo6c3RhcnRUcmFja2luZyhFcnJvclN0cmluZyYsIGNvbnN0IGJvb2wq
IGluY2x1ZGVTYW1wbGVzKQordm9pZCBJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50OjpzdGFy
dFRyYWNraW5nKEVycm9yU3RyaW5nJiwgY29uc3QgYm9vbCogY29uc3QgaW5jbHVkZVNhbXBsZXMp
CiB7CiAgICAgaWYgKG1fdHJhY2tpbmcpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdl
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmgJKHJldmlzaW9uIDIwOTk4OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2Zp
bGVyQWdlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRl
OwogCiAgICAgLy8gU2NyaXB0UHJvZmlsZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKLSAgICB2
b2lkIHN0YXJ0VHJhY2tpbmcoRXJyb3JTdHJpbmcmLCBjb25zdCBib29sKiBpbmNsdWRlU2FtcGxl
cykgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydFRyYWNraW5nKEVycm9yU3RyaW5nJiwgY29uc3Qg
Ym9vbCogY29uc3QgaW5jbHVkZVNhbXBsZXMpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RvcFRyYWNr
aW5nKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHByb2dyYW1tYXRpY0NhcHR1
cmVTdGFydGVkKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3IucHkJKHJldmlz
aW9uIDIwOTk4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL2NwcF9nZW5lcmF0b3IucHkJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw3ICsxMzksNyBA
QCBjbGFzcyBDcHBHZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShf
dHlwZSwgUHJpbWl0aXZlVHlwZSk6CiAgICAgICAgICAgICBjcHBfbmFtZSA9IENwcEdlbmVyYXRv
ci5jcHBfbmFtZV9mb3JfcHJpbWl0aXZlX3R5cGUoX3R5cGUpCiAgICAgICAgICAgICBpZiBwYXJh
bWV0ZXIuaXNfb3B0aW9uYWw6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICdjb25zdCAlcyonICUg
Y3BwX25hbWUKKyAgICAgICAgICAgICAgICByZXR1cm4gJ2NvbnN0ICVzKiBjb25zdCcgJSBjcHBf
bmFtZQogICAgICAgICAgICAgZWxpZiBfdHlwZS5yYXdfbmFtZSgpIGluIFsnc3RyaW5nJ106CiAg
ICAgICAgICAgICAgICAgcmV0dXJuICdjb25zdCAlcyYnICUgY3BwX25hbWUKICAgICAgICAgICAg
IGVsc2U6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDk5OTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOSBAQAorMjAxNi0xMi0xOSAg
QnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBBZGRyZXNzIHNv
bWUgc3R5bGUgcHJvYmxlbXMgZm91bmQgYnkgc3RhdGljIGFuYWx5c2lzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU5NzUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3JyZWN0IHRoZSBjb25zdC1jb3Jy
ZWN0bmVzcyBvZiBmdW5jdGlvbnMgdGhhdCBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgc3RyaWN0ZXIK
KyAgICAgICAgY29uc3QgZGVjbGFyYXRpb25zLgorCisgICAgICAgIEF2b2lkIHBhc3NpbmcgbGFy
Z2UgQU5HTEUgZGF0YSBzdHJ1Y3R1cmVzIHRocm91Z2ggdGhlIEFOR0xFV2ViS2l0QnJpZGdlIG1l
dGhvZHMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaDogRGVjbGFy
ZSB0aGUgbWV0aG9kIG92ZXJyaWRlcyBwcm9wZXJseSB0byBtYXRjaAorICAgICAgICB0aGUgc3Ry
aWN0ZXIgY29uc3QgZGVjbGFyYXRpb25zIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBmaWxlcy4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaDogRGl0dG8uCisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oOiBEaXR0by4KKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oOiBEaXR0by4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
UGFnZURlYnVnZ2VyQWdlbnQuaDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
QU5HTEVXZWJLaXRCcmlkZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVXZWJLaXRCcmlk
Z2U6OnNldFJlc291cmNlcyk6IFBhc3MgYnkgY29uc3QgcmVmZXJlbmNlLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmg6CisgICAgICAgIChXZWJDb3JlOjpB
TkdMRVdlYktpdEJyaWRnZTo6Z2V0UmVzb3VyY2VzKTogUmV0dXJuIGEgY29uc3QgcmVmZXJlbmNl
LgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2VsZWN0U2V0dGluZ3Mp
OiBVc2UgYSBsYW1iZGEgdGhhdCB0YWtlcworICAgICAgICBhIGNvbnN0IHJlZmVyZW5jZSwgcmF0
aGVyIHRoYW4gY29weWluZyB0aGUgbWFwcyB3aGlsZSBzZWFyY2hpbmcuCisKIDIwMTYtMTItMTgg
IEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgU2lkZSBlZmZl
Y3RzIHdoaWxlIHJlc3R0aW5nIGZvcm0gZWxlbWVudHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCShyZXZpc2lvbiAyMDk5ODkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEw
Nyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldENvbXB1dGVkU3R5bGVGb3JOb2Rl
KEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4m
KSBvdmVycmlkZTsKICAgICB2b2lkIGdldElubGluZVN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcm
LCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4m
IGlubGluZVN0eWxlLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4m
IGF0dHJpYnV0ZXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUo
RXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBib29sKiBpbmNsdWRlUHNldWRvLCBjb25z
dCBib29sKiBpbmNsdWRlSW5oZXJpdGVkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiYgbWF0Y2hlZENTU1J1bGVz
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+PiYgcHNldWRvSWRNYXRjaGVzLCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpJbmhlcml0ZWRTdHls
ZUVudHJ5Pj4mIGluaGVyaXRlZEVudHJpZXMpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0TWF0Y2hl
ZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBib29sKiBjb25z
dCBpbmNsdWRlUHNldWRvLCBjb25zdCBib29sKiBjb25zdCBpbmNsdWRlSW5oZXJpdGVkLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpS
dWxlTWF0Y2g+PiYgbWF0Y2hlZENTU1J1bGVzLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+PiYsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6Oklu
aGVyaXRlZFN0eWxlRW50cnk+PiYgaW5oZXJpdGVkRW50cmllcykgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZXRBbGxTdHlsZVNoZWV0cyhFcnJvclN0cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+
PiYgc3R5bGVTaGVldEluZm9zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFN0eWxlU2hlZXQoRXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGVTaGVldEJvZHk+JiByZXN1bHQpIG92ZXJyaWRlOwogICAg
IHZvaWQgZ2V0U3R5bGVTaGVldFRleHQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHN0eWxl
U2hlZXRJZCwgU3RyaW5nKiByZXN1bHQpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgJKHJldmlzaW9uIDIwOTk4OSkKKysrIFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTUtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTEx
NiwyMSArMTE2LDIxIEBAIHB1YmxpYzoKICAgICB2b2lkIHF1ZXJ5U2VsZWN0b3IoRXJyb3JTdHJp
bmcmLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgaW50KiBlbGVtZW50SWQp
IG92ZXJyaWRlOwogICAgIHZvaWQgcXVlcnlTZWxlY3RvckFsbChFcnJvclN0cmluZyYsIGludCBu
b2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8aW50Pj4mIHJlc3VsdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXREb2N1bWVudChF
cnJvclN0cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+JiByb290
KSBvdmVycmlkZTsKLSAgICB2b2lkIHJlcXVlc3RDaGlsZE5vZGVzKEVycm9yU3RyaW5nJiwgaW50
IG5vZGVJZCwgY29uc3QgaW50KiBkZXB0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZXF1ZXN0Q2hp
bGROb2RlcyhFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IGludCogY29uc3QgZGVwdGgp
IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0QXR0cmlidXRlVmFsdWUoRXJyb3JTdHJpbmcmLCBpbnQg
ZWxlbWVudElkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpIG92ZXJy
aWRlOwotICAgIHZvaWQgc2V0QXR0cmlidXRlc0FzVGV4dChFcnJvclN0cmluZyYsIGludCBlbGVt
ZW50SWQsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nKiBuYW1lKSBvdmVycmlkZTsK
KyAgICB2b2lkIHNldEF0dHJpYnV0ZXNBc1RleHQoRXJyb3JTdHJpbmcmLCBpbnQgZWxlbWVudElk
LCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyogY29uc3QgbmFtZSkgb3ZlcnJpZGU7
CiAgICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUoRXJyb3JTdHJpbmcmLCBpbnQgZWxlbWVudElkLCBj
b25zdCBTdHJpbmcmIG5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVtb3ZlTm9kZShFcnJvclN0
cmluZyYsIGludCBub2RlSWQpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Tm9kZU5hbWUoRXJyb3JT
dHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGludCogbmV3SWQpIG92ZXJy
aWRlOwogICAgIHZvaWQgZ2V0T3V0ZXJIVE1MKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgV1RG
OjpTdHJpbmcqIG91dGVySFRNTCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRPdXRlckhUTUwoRXJy
b3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIG91dGVySFRNTCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBzZXROb2RlVmFsdWUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBT
dHJpbmcmIHZhbHVlKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEV2ZW50TGlzdGVuZXJzRm9yTm9k
ZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFdURjo6U3RyaW5nKiBvYmplY3RHcm91
cCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRPTTo6RXZlbnRMaXN0ZW5lcj4+JiBsaXN0ZW5lcnNBcnJheSkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25z
dCBXVEY6OlN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkV2ZW50TGlzdGVuZXI+PiYgbGlz
dGVuZXJzQXJyYXkpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0QWNjZXNzaWJpbGl0eVByb3BlcnRp
ZXNGb3JOb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+JiBheFByb3BlcnRpZXMpIG92ZXJy
aWRlOwogICAgIHZvaWQgcGVyZm9ybVNlYXJjaChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYg
d2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSog
bm9kZUlkcywgU3RyaW5nKiBzZWFyY2hJZCwgaW50KiByZXN1bHRDb3VudCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBnZXRTZWFyY2hSZXN1bHRzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzZWFy
Y2hJZCwgaW50IGZyb21JbmRleCwgaW50IHRvSW5kZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxpbnQ+PiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzY2FyZFNlYXJjaFJlc3Vs
dHMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHNlYXJjaElkKSBvdmVycmlkZTsKLSAgICB2
b2lkIHJlc29sdmVOb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nKiBv
YmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD4mIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZXNvbHZlTm9kZShFcnJvclN0cmlu
ZyYsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpIG92ZXJy
aWRlOwogICAgIHZvaWQgZ2V0QXR0cmlidXRlcyhFcnJvclN0cmluZyYsIGludCBub2RlSWQsIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYgcmVzdWx0KSBvdmVycmlk
ZTsKICAgICB2b2lkIHNldEluc3BlY3RNb2RlRW5hYmxlZChFcnJvclN0cmluZyYsIGJvb2wgZW5h
YmxlZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdodENvbmZpZykg
b3ZlcnJpZGU7CiAgICAgdm9pZCByZXF1ZXN0Tm9kZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgb2JqZWN0SWQsIGludCogbm9kZUlkKSBvdmVycmlkZTsKQEAgLTEzOCwxMyArMTM4LDEzIEBA
IHB1YmxpYzoKICAgICB2b2lkIHB1c2hOb2RlQnlCYWNrZW5kSWRUb0Zyb250ZW5kKEVycm9yU3Ry
aW5nJiwgQmFja2VuZE5vZGVJZCwgaW50KiBub2RlSWQpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVs
ZWFzZUJhY2tlbmROb2RlSWRzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBub2RlR3JvdXAp
IG92ZXJyaWRlOwogICAgIHZvaWQgaGlkZUhpZ2hsaWdodChFcnJvclN0cmluZyYpIG92ZXJyaWRl
OwotICAgIHZvaWQgaGlnaGxpZ2h0UmVjdChFcnJvclN0cmluZyYsIGludCB4LCBpbnQgeSwgaW50
IHdpZHRoLCBpbnQgaGVpZ2h0LCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogY29s
b3IsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBvdXRsaW5lQ29sb3IsIGNvbnN0
IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBoaWdobGlnaHRR
dWFkKEVycm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSYgcXVhZCwg
Y29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIGNvbG9yLCBjb25zdCBJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdCogb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRp
bmF0ZXMpIG92ZXJyaWRlOwotICAgIHZvaWQgaGlnaGxpZ2h0U2VsZWN0b3IoRXJyb3JTdHJpbmcm
LCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgaGlnaGxpZ2h0Q29uZmlnLCBjb25z
dCBTdHJpbmcmIHNlbGVjdG9yU3RyaW5nLCBjb25zdCBTdHJpbmcqIGZyYW1lSWQpIG92ZXJyaWRl
OwotICAgIHZvaWQgaGlnaGxpZ2h0Tm9kZShFcnJvclN0cmluZyYsIGNvbnN0IEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0JiBoaWdobGlnaHRDb25maWcsIGNvbnN0IGludCogbm9kZUlkLCBjb25z
dCBTdHJpbmcqIG9iamVjdElkKSBvdmVycmlkZTsKKyAgICB2b2lkIGhpZ2hsaWdodFJlY3QoRXJy
b3JTdHJpbmcmLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgY29uc3QgSW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIGNvbG9yLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdCogb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiBjb25zdCB1c2VQYWdlQ29vcmRpbmF0
ZXMpIG92ZXJyaWRlOworICAgIHZvaWQgaGlnaGxpZ2h0UXVhZChFcnJvclN0cmluZyYsIGNvbnN0
IEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkmIHF1YWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0KiBjb2xvciwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIG91dGxp
bmVDb2xvciwgY29uc3QgYm9vbCogY29uc3QgdXNlUGFnZUNvb3JkaW5hdGVzKSBvdmVycmlkZTsK
KyAgICB2b2lkIGhpZ2hsaWdodFNlbGVjdG9yKEVycm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3QmIGhpZ2hsaWdodENvbmZpZywgY29uc3QgU3RyaW5nJiBzZWxlY3Rv
clN0cmluZywgY29uc3QgU3RyaW5nKiBjb25zdCBmcmFtZUlkKSBvdmVycmlkZTsKKyAgICB2b2lk
IGhpZ2hsaWdodE5vZGUoRXJyb3JTdHJpbmcmLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdCYgaGlnaGxpZ2h0Q29uZmlnLCBjb25zdCBpbnQqIGNvbnN0IG5vZGVJZCwgY29uc3QgU3Ry
aW5nKiBjb25zdCBvYmplY3RJZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBoaWdobGlnaHRGcmFtZShF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3QqIGNvbG9yLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogb3V0
bGluZUNvbG9yKSBvdmVycmlkZTsKIAotICAgIHZvaWQgbW92ZVRvKEVycm9yU3RyaW5nJiwgaW50
IG5vZGVJZCwgaW50IHRhcmdldE5vZGVJZCwgY29uc3QgaW50KiBhbmNob3JOb2RlSWQsIGludCog
bmV3Tm9kZUlkKSBvdmVycmlkZTsKKyAgICB2b2lkIG1vdmVUbyhFcnJvclN0cmluZyYsIGludCBu
b2RlSWQsIGludCB0YXJnZXROb2RlSWQsIGNvbnN0IGludCogY29uc3QgYW5jaG9yTm9kZUlkLCBp
bnQqIG5ld05vZGVJZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB1bmRvKEVycm9yU3RyaW5nJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCByZWRvKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBt
YXJrVW5kb2FibGVTdGF0ZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAkocmV2aXNpb24gMjA5OTg5
KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKQEAgLTkzLDE0ICs5MywxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNhYmxlKEVy
cm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGRTY3JpcHRUb0V2YWx1YXRlT25Mb2Fk
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIFN0cmluZyogcmVzdWx0KSBvdmVy
cmlkZTsKICAgICB2b2lkIHJlbW92ZVNjcmlwdFRvRXZhbHVhdGVPbkxvYWQoRXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVsb2FkKEVy
cm9yU3RyaW5nJiwgY29uc3QgYm9vbCogb3B0aW9uYWxJZ25vcmVDYWNoZSwgY29uc3QgU3RyaW5n
KiBvcHRpb25hbFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQpIG92ZXJyaWRlOworICAgIHZvaWQgcmVs
b2FkKEVycm9yU3RyaW5nJiwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJZ25vcmVDYWNoZSwg
Y29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQpIG92ZXJy
aWRlOwogICAgIHZvaWQgbmF2aWdhdGUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRDb29raWVzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkNvb2tpZT4+
JiBjb29raWVzKSBvdmVycmlkZTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZShFcnJvclN0cmluZyYs
IGNvbnN0IFN0cmluZyYgY29va2llTmFtZSwgY29uc3QgU3RyaW5nJiB1cmwpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZ2V0UmVzb3VyY2VUcmVlKEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiYpIG92ZXJyaWRlOwogICAgIHZvaWQg
Z2V0UmVzb3VyY2VDb250ZW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBj
b25zdCBTdHJpbmcmIHVybCwgU3RyaW5nKiBjb250ZW50LCBib29sKiBiYXNlNjRFbmNvZGVkKSBv
dmVycmlkZTsKLSAgICB2b2lkIHNlYXJjaEluUmVzb3VyY2UoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBj
b25zdCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNS
ZWdleCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFJlcXVlc3RJZCwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNo
TWF0Y2g+PiYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJp
bmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBib29sKiBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29s
KiBpc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mKSBvdmVycmlkZTsKKyAgICB2b2lkIHNlYXJj
aEluUmVzb3VyY2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25h
bENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgY29uc3Qg
U3RyaW5nKiBjb25zdCBvcHRpb25hbFJlcXVlc3RJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+
PiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBib29sKiBjb25zdCBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29s
KiBjb25zdCBpc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVj
dG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mKSBvdmVycmlkZTsKICAgICB2b2lk
IHNldFNob3dQYWludFJlY3RzKEVycm9yU3RyaW5nJiwgYm9vbCBzaG93KSBvdmVycmlkZTsKICAg
ICB2b2lkIHNldEVtdWxhdGVkTWVkaWEoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKICAgICB2b2lkIGdldENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUoRXJyb3JTdHJpbmcm
LCBib29sKiBvdXRfcGFyYW0pIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCShyZXZpc2lvbiAyMDk5ODkpCisr
KyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAqIENvcHlyaWdodCAoQykgMjAxNCBVbml2ZXJz
aXR5IG9mIFdhc2hpbmd0b24uCi0qIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICoKICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTk4
LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVy
KikgZmluYWw7CiAgICAgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3I6OkRpc2Nvbm5lY3RSZWFzb24pIGZpbmFsOwogCi0gICAgdm9pZCBzdGFydChFcnJvclN0cmlu
ZyYsIGNvbnN0IGludCogbWF4Q2FsbFN0YWNrRGVwdGggPSBudWxscHRyKSBmaW5hbDsKKyAgICB2
b2lkIHN0YXJ0KEVycm9yU3RyaW5nJiwgY29uc3QgaW50KiBjb25zdCBtYXhDYWxsU3RhY2tEZXB0
aCA9IG51bGxwdHIpIGZpbmFsOwogICAgIHZvaWQgc3RvcChFcnJvclN0cmluZyYpIGZpbmFsOwog
ICAgIHZvaWQgc2V0QXV0b0NhcHR1cmVFbmFibGVkKEVycm9yU3RyaW5nJiwgYm9vbCkgZmluYWw7
CiAgICAgdm9pZCBzZXRJbnN0cnVtZW50cyhFcnJvclN0cmluZyYsIGNvbnN0IEluc3BlY3Rvcjo6
SW5zcGVjdG9yQXJyYXkmKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Q
YWdlRGVidWdnZXJBZ2VudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9QYWdlRGVidWdnZXJBZ2VudC5oCShyZXZpc2lvbiAyMDk5ODkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC02NSw3ICs2
NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBicmVha3BvaW50QWN0aW9uTG9nKEpTQzo6RXhlY1N0
YXRlJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICBJbnNwZWN0b3I6OkluamVjdGVk
U2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYsIGNvbnN0IGludCogZXhl
Y3V0aW9uQ29udGV4dElkKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldE92ZXJsYXlNZXNzYWdlKEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nKikgZmluYWw7CisgICAgdm9pZCBzZXRPdmVybGF5TWVz
c2FnZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyogY29uc3QpIGZpbmFsOwogCiAgICAgUGFn
ZSYgbV9wYWdlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCShyZXZpc2lvbiAyMDk5ODkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIEFOR0xFV2ViS2l0QnJpZGdlOjpjbGVhbnVw
Q29tcGlsZXJzCiAgICAgYnVpbHRDb21waWxlcnMgPSBmYWxzZTsKIH0KICAgICAKLXZvaWQgQU5H
TEVXZWJLaXRCcmlkZ2U6OnNldFJlc291cmNlcyhTaEJ1aWx0SW5SZXNvdXJjZXMgcmVzb3VyY2Vz
KQordm9pZCBBTkdMRVdlYktpdEJyaWRnZTo6c2V0UmVzb3VyY2VzKGNvbnN0IFNoQnVpbHRJblJl
c291cmNlcyYgcmVzb3VyY2VzKQogewogICAgIC8vIFJlc291cmNlcyBhcmUgKHBvc3NpYmx5KSBj
aGFuZ2luZyAtIGNsZWFudXAgY29tcGlsZXJzIGlmIHdlIGhhZCB0aGVtIGFscmVhZHkKICAgICBj
bGVhbnVwQ29tcGlsZXJzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9BTkdMRVdlYktpdEJyaWRnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmgJKHJldmlzaW9uIDIwOTk4OSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTYzLDggKzYzLDggQEAgcHVibGljOgogICAgIEFOR0xFV2ViS2l0QnJpZGdlKFNo
U2hhZGVyT3V0cHV0ID0gU0hfR0xTTF9DT01QQVRJQklMSVRZX09VVFBVVCwgU2hTaGFkZXJTcGVj
ID0gU0hfV0VCR0xfU1BFQyk7CiAgICAgfkFOR0xFV2ViS2l0QnJpZGdlKCk7CiAgICAgCi0gICAg
U2hCdWlsdEluUmVzb3VyY2VzIGdldFJlc291cmNlcygpIHsgcmV0dXJuIG1fcmVzb3VyY2VzOyB9
Ci0gICAgdm9pZCBzZXRSZXNvdXJjZXMoU2hCdWlsdEluUmVzb3VyY2VzKTsKKyAgICBjb25zdCBT
aEJ1aWx0SW5SZXNvdXJjZXMmIGdldFJlc291cmNlcygpIHsgcmV0dXJuIG1fcmVzb3VyY2VzOyB9
CisgICAgdm9pZCBzZXRSZXNvdXJjZXMoY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJik7CiAgICAg
CiAgICAgYm9vbCBjb21waWxlU2hhZGVyU291cmNlKGNvbnN0IGNoYXIqIHNoYWRlclNvdXJjZSwg
QU5HTEVTaGFkZXJUeXBlLCBTdHJpbmcmIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UsIFN0cmluZyYg
c2hhZGVyVmFsaWRhdGlvbkxvZywgVmVjdG9yPHN0ZDo6cGFpcjxBTkdMRVNoYWRlclN5bWJvbFR5
cGUsIHNoOjpTaGFkZXJWYXJpYWJsZT4+JiBzeW1ib2xzLCBpbnQgZXh0cmFDb21waWxlT3B0aW9u
cyA9IDApOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZU1lZGlhU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAkocmV2aXNpb24gMjA5OTg5KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1NCw3ICs1NTQsNyBAQCBib29sIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OnNlbGVjdFNldHRpbmdzCiAgICAgLy8gNi4gU2VsZWN0IG9uZSBzZXR0aW5ncyBk
aWN0aW9uYXJ5IGZyb20gY2FuZGlkYXRlcywgYW5kIHJldHVybiBpdCBhcyB0aGUgcmVzdWx0IG9m
IHRoZSBTZWxlY3RTZXR0aW5ncygpIGFsZ29yaXRobS4KICAgICAvLyAgICBUaGUgVUEgc2hvdWxk
IHVzZSB0aGUgb25lIHdpdGggdGhlIHNtYWxsZXN0IGZpdG5lc3MgZGlzdGFuY2UsIGFzIGNhbGN1
bGF0ZWQgaW4gc3RlcCAzLgogICAgIGlmICghc3RkOjppc2luZihtaW5pbXVtRGlzdGFuY2UpKSB7
Ci0gICAgICAgIHN1cHBvcnRlZENvbnN0cmFpbnRzLnJlbW92ZUFsbE1hdGNoaW5nKFsmXShzdGQ6
OnBhaXI8ZG91YmxlLCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4gcGFpcikgLT4gYm9vbCB7
CisgICAgICAgIHN1cHBvcnRlZENvbnN0cmFpbnRzLnJlbW92ZUFsbE1hdGNoaW5nKFsmXShjb25z
dCBzdGQ6OnBhaXI8ZG91YmxlLCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4mIHBhaXIpIC0+
IGJvb2wgewogICAgICAgICAgICAgcmV0dXJuIHBhaXIuZmlyc3QgPiBtaW5pbXVtRGlzdGFuY2U7
CiAgICAgICAgIH0pOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDk5ODkpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAx
Ni0xMi0xOSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGRyZXNzIHNvbWUgc3R5bGUgcHJvYmxlbXMgZm91bmQgYnkgc3RhdGljIGFuYWx5c2lzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU5NzUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdm9pZCBwYXNzaW5n
IGxhcmdlIEFOR0xFIGRhdGEgc3RydWN0dXJlcyB0aHJvdWdoIHRoZSBBTkdMRVdlYktpdEJyaWRn
ZSBtZXRob2RzLgorCisgICAgICAgICogU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oOgorCiAyMDE2
LTEyLTE4ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IEV4cG9zZSBhIHdheSBmb3IgTWluaUJyb3dzZXIgdG8gc2ltdWxhdGUgaGVhZGVyIGFuZCBmb290
ZXIgYmFubmVycwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJCYWNrRm9y
d2FyZExpc3RJdGVtLmNwcAkocmV2aXNpb24gMjA5OTg5KQorKysgU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMSwgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTMyLDEyICszMiwxMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIHVpbnQ2NF90IGhp
Z2hlc3RJdGVtSUQgPSAwOwogCi1QYXNzUmVmUHRyPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+IFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUgYmFj
a0ZvcndhcmRMaXN0SXRlbVN0YXRlLCB1aW50NjRfdCBwYWdlSUQpCitQYXNzUmVmUHRyPFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0+IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShCYWNrRm9y
d2FyZExpc3RJdGVtU3RhdGUmJiBiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUsIHVpbnQ2NF90IHBh
Z2VJRCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0o
V1RGTW92ZShiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUpLCBwYWdlSUQpKTsKIH0KIAotV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbTo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbShCYWNrRm9yd2FyZExpc3RJ
dGVtU3RhdGUgYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlLCB1aW50NjRfdCBwYWdlSUQpCitXZWJC
YWNrRm9yd2FyZExpc3RJdGVtOjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtKEJhY2tGb3J3YXJkTGlz
dEl0ZW1TdGF0ZSYmIGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSwgdWludDY0X3QgcGFnZUlEKQog
ICAgIDogbV9pdGVtU3RhdGUoV1RGTW92ZShiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUpKQogICAg
ICwgbV9wYWdlSUQocGFnZUlEKQogewpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCShyZXZpc2lvbiAyMDk5ODkpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMSwgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0gOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBl
OjpCYWNrRm9yd2FyZExpc3RJdGVtPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gY3JlYXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSwg
dWludDY0X3QgcGFnZUlEKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJCYWNrRm9yd2FyZExp
c3RJdGVtPiBjcmVhdGUoQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYsIHVpbnQ2NF90IHBhZ2VJ
RCk7CiAgICAgdmlydHVhbCB+V2ViQmFja0ZvcndhcmRMaXN0SXRlbSgpOwogCiAgICAgdWludDY0
X3QgaXRlbUlEKCkgY29uc3QgeyByZXR1cm4gbV9pdGVtU3RhdGUuaWRlbnRpZmllcjsgfQpAQCAt
NjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHVpbnQ2NF90IGhpZ2hlc3RVc2VkSXRl
bUlEKCk7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViQmFja0ZvcndhcmRMaXN0SXRlbShC
YWNrRm9yd2FyZExpc3RJdGVtU3RhdGUsIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgZXhwbGljaXQg
V2ViQmFja0ZvcndhcmRMaXN0SXRlbShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiwgdWludDY0
X3QgcGFnZUlEKTsKIAogICAgIEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSBtX2l0ZW1TdGF0ZTsK
ICAgICB1aW50NjRfdCBtX3BhZ2VJRDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297527</attachid>
            <date>2016-12-20 09:47:52 -0800</date>
            <delta_ts>2016-12-20 10:17:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165975-20161220094651.patch</filename>
            <type>text/plain</type>
            <size>36641</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA5OTg5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBA
CisyMDE2LTEyLTE5ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZHJlc3Mgc29tZSBzdHlsZSBwcm9ibGVtcyBmb3VuZCBieSBzdGF0aWMgYW5hbHlzaXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTk3NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvcnJlY3Qg
dGhlIGNvbnN0LWNvcnJlY3RuZXNzIG9mIGZ1bmN0aW9ucyB0aGF0IGFyZSBpbXBsZW1lbnRlZCB1
c2luZyBzdHJpY3RlcgorICAgICAgICBjb25zdCBkZWNsYXJhdGlvbnMuCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL3Nj
cmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yLnB5OgorICAgICAgICAoY3BwX3R5cGVfZm9yX3Vu
Y2hlY2tlZF9mb3JtYWxfaW5fcGFyYW1ldGVyKTogVXBkYXRlIHRvIG1hdGNoIGNvbnN0IGRlY2xh
cmF0aW9ucyBvZgorICAgICAgICBpbXBsZW1lbnRhdGlvbiBmaWxlcy4KKwogMjAxNi0xMi0xOCAg
U2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJBc3NlbWJseTog
SW1wbGVtZW50IHRoZSBXZWJBc3NlbWJseS5jb21waWxlIGFuZCBXZWJBc3NlbWJseS52YWxpZGF0
ZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAkocmV2aXNpb24gMjA5OTg5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMCwgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTMsIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTY3LDEyICs2NywxMiBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBz
ZXRBc3luY1N0YWNrVHJhY2VEZXB0aChFcnJvclN0cmluZyYsIGludCBkZXB0aCkgZmluYWw7CiAg
ICAgdm9pZCBzZXRCcmVha3BvaW50c0FjdGl2ZShFcnJvclN0cmluZyYsIGJvb2wgYWN0aXZlKSBm
aW5hbDsKLSAgICB2b2lkIHNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyYsIGludCBsaW5l
TnVtYmVyLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsVVJMLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFs
VVJMUmVnZXgsIGNvbnN0IGludCogb3B0aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0IEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0KiBvcHRpb25zLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dl
cjo6QnJlYWtwb2ludElkKiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4+JiBsb2NhdGlvbnMpIGZpbmFsOwor
ICAgIHZvaWQgc2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nJiwgaW50IGxpbmVOdW1iZXIs
IGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0
aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBjb25zdCBvcHRpb25hbENvbHVtbk51bWJlciwgY29u
c3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIG9wdGlvbnMsIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9u
cykgZmluYWw7CiAgICAgdm9pZCBzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgSW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIGxvY2F0aW9uLCBjb25zdCBJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdCogb3B0aW9ucywgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFr
cG9pbnRJZCosIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+
JiBhY3R1YWxMb2NhdGlvbikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVCcmVha3BvaW50KEVycm9y
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWRlbnRpZmllcikgZmluYWw7CiAgICAg
dm9pZCBjb250aW51ZVVudGlsTmV4dFJ1bkxvb3AoRXJyb3JTdHJpbmcmKSBmaW5hbDsKICAgICB2
b2lkIGNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyYsIGNvbnN0IEluc3BlY3Rvck9iamVj
dCYgbG9jYXRpb24pIGZpbmFsOwotICAgIHZvaWQgc2VhcmNoSW5Db250ZW50KEVycm9yU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9v
bCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5l
cmljVHlwZXM6OlNlYXJjaE1hdGNoPj4mKSBmaW5hbDsKKyAgICB2b2lkIHNlYXJjaEluQ29udGVu
dChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIGNvbnN0IFN0cmluZyYgcXVl
cnksIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCog
Y29uc3Qgb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+JikgZmluYWw7
CiAgICAgdm9pZCBnZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHNj
cmlwdElELCBTdHJpbmcqIHNjcmlwdFNvdXJjZSkgZmluYWw7CiAgICAgdm9pZCBnZXRGdW5jdGlv
bkRldGFpbHMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiYpIGZpbmFsOwog
ICAgIHZvaWQgcGF1c2UoRXJyb3JTdHJpbmcmKSBmaW5hbDsKQEAgLTgyLDggKzgyLDggQEAgcHVi
bGljOgogICAgIHZvaWQgc3RlcE91dChFcnJvclN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgc2V0
UGF1c2VPbkV4Y2VwdGlvbnMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhdXNlU3RhdGUp
IGZpbmFsOwogICAgIHZvaWQgc2V0UGF1c2VPbkFzc2VydGlvbnMoRXJyb3JTdHJpbmcmLCBib29s
IGVuYWJsZWQpIGZpbmFsOwotICAgIHZvaWQgZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwg
Y29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgY29uc3QgYm9vbCogaW5jbHVkZUNvbW1hbmRMaW5l
QVBJLCBjb25zdCBib29sKiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNv
bnN0IGJvb2wqIHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgY29u
c3QgYm9vbCogc2F2ZVJlc3VsdCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6
OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGJv
b2w+KiB3YXNUaHJvd24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBzYXZl
ZFJlc3VsdEluZGV4KSBmaW5hbDsKLSAgICB2b2lkIHNldE92ZXJsYXlNZXNzYWdlKEVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nKikgb3ZlcnJpZGU7CisgICAgdm9pZCBldmFsdWF0ZU9uQ2FsbEZy
YW1lKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5n
JiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBjb25zdCBib29s
KiBjb25zdCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGNvbnN0IGJvb2wqIGNvbnN0IGRvTm90UGF1
c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3QgYm9vbCogY29uc3QgcmV0dXJuQnlW
YWx1ZSwgY29uc3QgYm9vbCogY29uc3QgZ2VuZXJhdGVQcmV2aWV3LCBjb25zdCBib29sKiBjb25z
dCBzYXZlUmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8Ym9vbD4qIHdh
c1Rocm93biwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4qIHNhdmVkUmVzdWx0
SW5kZXgpIGZpbmFsOworICAgIHZvaWQgc2V0T3ZlcmxheU1lc3NhZ2UoRXJyb3JTdHJpbmcmLCBj
b25zdCBTdHJpbmcqIGNvbnN0KSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNQYXVzZWQoKSBjb25z
dDsKICAgICBib29sIGJyZWFrcG9pbnRzQWN0aXZlKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckhlYXBBZ2VudC5jcHAJKHJldmlzaW9uIDIwOTk4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LCAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgSW5zcGVjdG9ySGVhcEFnZW50OjpnZXRQcmV2aWV3
KEVycm8KICAgICBvYmplY3RQcmV2aWV3ID0gaW5qZWN0ZWRTY3JpcHQucHJldmlld1ZhbHVlKGNl
bGwpOwogfQogCi12b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6Z2V0UmVtb3RlT2JqZWN0KEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgaW50IGhlYXBPYmplY3RJZCwgY29uc3QgU3RyaW5nKiBvcHRp
b25hbE9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVt
b3RlT2JqZWN0PiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JIZWFwQWdlbnQ6OmdldFJlbW90ZU9i
amVjdChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBoZWFwT2JqZWN0SWQsIGNvbnN0IFN0
cmluZyogY29uc3Qgb3B0aW9uYWxPYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCkKIHsKICAgICAvLyBQcmV2ZW50IHRo
ZSBjZWxsIGZyb20gZ2V0dGluZyBjb2xsZWN0ZWQgYXMgd2UgbG9vayBpdCB1cC4KICAgICBWTSYg
dm0gPSBtX2Vudmlyb25tZW50LnZtKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuaAkocmV2
aXNpb24gMjA5OTg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9ySGVhcEFnZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzdGFydFRyYWNraW5nKEVycm9yU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBz
dG9wVHJhY2tpbmcoRXJyb3JTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIGdldFByZXZpZXcoRXJy
b3JTdHJpbmcmLCBpbnQgaGVhcE9iamVjdElkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRw
dXQ8U3RyaW5nPiogcmVzdWx0U3RyaW5nLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVi
dWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4mIGZ1bmN0aW9uRGV0YWlscywgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc+JiBvYmplY3RQcmV2aWV3KSBmaW5h
bDsKLSAgICB2b2lkIGdldFJlbW90ZU9iamVjdChFcnJvclN0cmluZyYsIGludCBoZWFwT2JqZWN0
SWQsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxPYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCkgZmluYWw7CisgICAgdm9p
ZCBnZXRSZW1vdGVPYmplY3QoRXJyb3JTdHJpbmcmLCBpbnQgaGVhcE9iamVjdElkLCBjb25zdCBT
dHJpbmcqIGNvbnN0IG9wdGlvbmFsT2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpIGZpbmFsOwogCiAgICAgLy8gSGVh
cE9ic2VydmVyCiAgICAgdm9pZCB3aWxsR2FyYmFnZUNvbGxlY3QoKSBvdmVycmlkZTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVB
Z2VudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCShyZXZpc2lvbiAyMDk5ODkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CkBAIC01OSwxMyArNTksMTMgQEAgcHVibGljOgogICAgIHZvaWQgZW5hYmxlKEVycm9y
U3RyaW5nJikgb3ZlcnJpZGUgeyBtX2VuYWJsZWQgPSB0cnVlOyB9CiAgICAgdm9pZCBkaXNhYmxl
KEVycm9yU3RyaW5nJikgb3ZlcnJpZGUgeyBtX2VuYWJsZWQgPSBmYWxzZTsgfQogICAgIHZvaWQg
cGFyc2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZSogcmVzdWx0LCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogbWVzc2FnZSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlJ1bnRpbWU6OkVycm9yUmFuZ2U+JikgZmluYWw7Ci0gICAgdm9pZCBldmFsdWF0ZShF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nKiBvYmpl
Y3RHcm91cCwgY29uc3QgYm9vbCogaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBjb25zdCBib29sKiBk
b05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGludCogZXhlY3V0aW9u
Q29udGV4dElkLCBjb25zdCBib29sKiByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0
ZVByZXZpZXcsIGNvbnN0IGJvb2wqIHNhdmVSZXN1bHQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRw
dXQ8aW50Piogc2F2ZWRSZXN1bHRJbmRleCkgZmluYWw7Ci0gICAgdm9pZCBjYWxsRnVuY3Rpb25P
bihFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZXhw
cmVzc2lvbiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSogb3B0aW9uYWxBcmd1bWVu
dHMsIGNvbnN0IGJvb2wqIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29u
c3QgYm9vbCogcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikgZmluYWw7Cisg
ICAgdm9pZCBldmFsdWF0ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwg
Y29uc3QgU3RyaW5nKiBjb25zdCBvYmplY3RHcm91cCwgY29uc3QgYm9vbCogY29uc3QgaW5jbHVk
ZUNvbW1hbmRMaW5lQVBJLCBjb25zdCBib29sKiBjb25zdCBkb05vdFBhdXNlT25FeGNlcHRpb25z
QW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGludCogY29uc3QgZXhlY3V0aW9uQ29udGV4dElkLCBjb25z
dCBib29sKiBjb25zdCByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBjb25zdCBnZW5lcmF0ZVBy
ZXZpZXcsIGNvbnN0IGJvb2wqIGNvbnN0IHNhdmVSZXN1bHQsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIEluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRP
dXRwdXQ8aW50Piogc2F2ZWRSZXN1bHRJbmRleCkgZmluYWw7CisgICAgdm9pZCBjYWxsRnVuY3Rp
b25PbihFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYg
ZXhwcmVzc2lvbiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSogb3B0aW9uYWxBcmd1
bWVudHMsIGNvbnN0IGJvb2wqIGNvbnN0IGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29u
c29sZSwgY29uc3QgYm9vbCogY29uc3QgcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogY29uc3Qg
Z2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVt
b3RlT2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8Ym9vbD4q
IHdhc1Rocm93bikgZmluYWw7CiAgICAgdm9pZCByZWxlYXNlT2JqZWN0KEVycm9yU3RyaW5nJiwg
Y29uc3QgRXJyb3JTdHJpbmcmIG9iamVjdElkKSBmaW5hbDsKLSAgICB2b2lkIGdldFByb3BlcnRp
ZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBib29sKiBvd25Q
cm9wZXJ0aWVzLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURl
c2NyaXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYg
aW50ZXJuYWxQcm9wZXJ0aWVzKSBmaW5hbDsKLSAgICB2b2lkIGdldERpc3BsYXlhYmxlUHJvcGVy
dGllcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIGdl
bmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiByZXN1bHQsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1l
OjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBpbnRlcm5hbFByb3BlcnRpZXMpIGZpbmFs
OwotICAgIHZvaWQgZ2V0Q29sbGVjdGlvbkVudHJpZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBjb25zdCBpbnQqIHN0YXJ0
SW5kZXgsIGNvbnN0IGludCogbnVtYmVyVG9GZXRjaCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkNvbGxlY3Rpb25FbnRyeT4+
JiBlbnRyaWVzKSBmaW5hbDsKLSAgICB2b2lkIHNhdmVSZXN1bHQoRXJyb3JTdHJpbmcmLCBjb25z
dCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgY2FsbEFyZ3VtZW50LCBjb25zdCBpbnQqIGV4
ZWN1dGlvbkNvbnRleHRJZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4qIHNh
dmVkUmVzdWx0SW5kZXgpIGZpbmFsOworICAgIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIGNvbnN0IG93blByb3BlcnRp
ZXMsIGNvbnN0IGJvb2wqIGNvbnN0IGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVz
Y3JpcHRvcj4+JiByZXN1bHQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBp
bnRlcm5hbFByb3BlcnRpZXMpIGZpbmFsOworICAgIHZvaWQgZ2V0RGlzcGxheWFibGVQcm9wZXJ0
aWVzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCogY29u
c3QgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4mIHJlc3VsdCwg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1
bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4mIGludGVybmFsUHJvcGVydGllcykg
ZmluYWw7CisgICAgdm9pZCBnZXRDb2xsZWN0aW9uRW50cmllcyhFcnJvclN0cmluZyYsIGNvbnN0
IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIGNvbnN0
IGludCogY29uc3Qgc3RhcnRJbmRleCwgY29uc3QgaW50KiBjb25zdCBudW1iZXJUb0ZldGNoLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVu
dGltZTo6Q29sbGVjdGlvbkVudHJ5Pj4mIGVudHJpZXMpIGZpbmFsOworICAgIHZvaWQgc2F2ZVJl
c3VsdChFcnJvclN0cmluZyYsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBjYWxs
QXJndW1lbnQsIGNvbnN0IGludCogY29uc3QgZXhlY3V0aW9uQ29udGV4dElkLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50Piogc2F2ZWRSZXN1bHRJbmRleCkgZmluYWw7CiAgICAg
dm9pZCByZWxlYXNlT2JqZWN0R3JvdXAoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVj
dEdyb3VwKSBmaW5hbDsKICAgICB2b2lkIGdldFJ1bnRpbWVUeXBlc0ZvclZhcmlhYmxlc0F0T2Zm
c2V0cyhFcnJvclN0cmluZyYsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkmIGxvY2F0
aW9ucywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj4+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBlbmFi
bGVUeXBlUHJvZmlsZXIoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCShyZXZpc2lvbiAyMDk5ODkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9m
aWxlckFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgSW5zcGVjdG9y
U2NyaXB0UHJvZmlsZXJBZ2VudDo6d2lsbEQKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yU2Ny
aXB0UHJvZmlsZXJBZ2VudDo6c3RhcnRUcmFja2luZyhFcnJvclN0cmluZyYsIGNvbnN0IGJvb2wq
IGluY2x1ZGVTYW1wbGVzKQordm9pZCBJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50OjpzdGFy
dFRyYWNraW5nKEVycm9yU3RyaW5nJiwgY29uc3QgYm9vbCogY29uc3QgaW5jbHVkZVNhbXBsZXMp
CiB7CiAgICAgaWYgKG1fdHJhY2tpbmcpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdl
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmgJKHJldmlzaW9uIDIwOTk4OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2Zp
bGVyQWdlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRl
OwogCiAgICAgLy8gU2NyaXB0UHJvZmlsZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKLSAgICB2
b2lkIHN0YXJ0VHJhY2tpbmcoRXJyb3JTdHJpbmcmLCBjb25zdCBib29sKiBpbmNsdWRlU2FtcGxl
cykgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydFRyYWNraW5nKEVycm9yU3RyaW5nJiwgY29uc3Qg
Ym9vbCogY29uc3QgaW5jbHVkZVNhbXBsZXMpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RvcFRyYWNr
aW5nKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHByb2dyYW1tYXRpY0NhcHR1
cmVTdGFydGVkKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3IucHkJKHJldmlz
aW9uIDIwOTk4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL2NwcF9nZW5lcmF0b3IucHkJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw3ICsxMzksNyBA
QCBjbGFzcyBDcHBHZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShf
dHlwZSwgUHJpbWl0aXZlVHlwZSk6CiAgICAgICAgICAgICBjcHBfbmFtZSA9IENwcEdlbmVyYXRv
ci5jcHBfbmFtZV9mb3JfcHJpbWl0aXZlX3R5cGUoX3R5cGUpCiAgICAgICAgICAgICBpZiBwYXJh
bWV0ZXIuaXNfb3B0aW9uYWw6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICdjb25zdCAlcyonICUg
Y3BwX25hbWUKKyAgICAgICAgICAgICAgICByZXR1cm4gJ2NvbnN0ICVzKiBjb25zdCcgJSBjcHBf
bmFtZQogICAgICAgICAgICAgZWxpZiBfdHlwZS5yYXdfbmFtZSgpIGluIFsnc3RyaW5nJ106CiAg
ICAgICAgICAgICAgICAgcmV0dXJuICdjb25zdCAlcyYnICUgY3BwX25hbWUKICAgICAgICAgICAg
IGVsc2U6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDk5OTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOSBAQAorMjAxNi0xMi0xOSAg
QnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBBZGRyZXNzIHNv
bWUgc3R5bGUgcHJvYmxlbXMgZm91bmQgYnkgc3RhdGljIGFuYWx5c2lzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU5NzUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3JyZWN0IHRoZSBjb25zdC1jb3Jy
ZWN0bmVzcyBvZiBmdW5jdGlvbnMgdGhhdCBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgc3RyaWN0ZXIK
KyAgICAgICAgY29uc3QgZGVjbGFyYXRpb25zLgorCisgICAgICAgIEF2b2lkIHBhc3NpbmcgbGFy
Z2UgQU5HTEUgZGF0YSBzdHJ1Y3R1cmVzIHRocm91Z2ggdGhlIEFOR0xFV2ViS2l0QnJpZGdlIG1l
dGhvZHMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaDogRGVjbGFy
ZSB0aGUgbWV0aG9kIG92ZXJyaWRlcyBwcm9wZXJseSB0byBtYXRjaAorICAgICAgICB0aGUgc3Ry
aWN0ZXIgY29uc3QgZGVjbGFyYXRpb25zIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBmaWxlcy4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaDogRGl0dG8uCisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oOiBEaXR0by4KKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oOiBEaXR0by4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
UGFnZURlYnVnZ2VyQWdlbnQuaDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
QU5HTEVXZWJLaXRCcmlkZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVXZWJLaXRCcmlk
Z2U6OnNldFJlc291cmNlcyk6IFBhc3MgYnkgY29uc3QgcmVmZXJlbmNlLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmg6CisgICAgICAgIChXZWJDb3JlOjpB
TkdMRVdlYktpdEJyaWRnZTo6Z2V0UmVzb3VyY2VzKTogUmV0dXJuIGEgY29uc3QgcmVmZXJlbmNl
LgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2VsZWN0U2V0dGluZ3Mp
OiBVc2UgYSBsYW1iZGEgdGhhdCB0YWtlcworICAgICAgICBhIGNvbnN0IHJlZmVyZW5jZSwgcmF0
aGVyIHRoYW4gY29weWluZyB0aGUgbWFwcyB3aGlsZSBzZWFyY2hpbmcuCisKIDIwMTYtMTItMTgg
IEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgU2lkZSBlZmZl
Y3RzIHdoaWxlIHJlc3R0aW5nIGZvcm0gZWxlbWVudHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCShyZXZpc2lvbiAyMDk5ODkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEw
Nyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldENvbXB1dGVkU3R5bGVGb3JOb2Rl
KEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4m
KSBvdmVycmlkZTsKICAgICB2b2lkIGdldElubGluZVN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcm
LCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4m
IGlubGluZVN0eWxlLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4m
IGF0dHJpYnV0ZXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUo
RXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBib29sKiBpbmNsdWRlUHNldWRvLCBjb25z
dCBib29sKiBpbmNsdWRlSW5oZXJpdGVkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiYgbWF0Y2hlZENTU1J1bGVz
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+PiYgcHNldWRvSWRNYXRjaGVzLCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpJbmhlcml0ZWRTdHls
ZUVudHJ5Pj4mIGluaGVyaXRlZEVudHJpZXMpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0TWF0Y2hl
ZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBib29sKiBjb25z
dCBpbmNsdWRlUHNldWRvLCBjb25zdCBib29sKiBjb25zdCBpbmNsdWRlSW5oZXJpdGVkLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpS
dWxlTWF0Y2g+PiYgbWF0Y2hlZENTU1J1bGVzLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+PiYsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6Oklu
aGVyaXRlZFN0eWxlRW50cnk+PiYgaW5oZXJpdGVkRW50cmllcykgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZXRBbGxTdHlsZVNoZWV0cyhFcnJvclN0cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+
PiYgc3R5bGVTaGVldEluZm9zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFN0eWxlU2hlZXQoRXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGVTaGVldEJvZHk+JiByZXN1bHQpIG92ZXJyaWRlOwogICAg
IHZvaWQgZ2V0U3R5bGVTaGVldFRleHQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHN0eWxl
U2hlZXRJZCwgU3RyaW5nKiByZXN1bHQpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgJKHJldmlzaW9uIDIwOTk4OSkKKysrIFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTUtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTEx
NiwyMSArMTE2LDIxIEBAIHB1YmxpYzoKICAgICB2b2lkIHF1ZXJ5U2VsZWN0b3IoRXJyb3JTdHJp
bmcmLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgaW50KiBlbGVtZW50SWQp
IG92ZXJyaWRlOwogICAgIHZvaWQgcXVlcnlTZWxlY3RvckFsbChFcnJvclN0cmluZyYsIGludCBu
b2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8aW50Pj4mIHJlc3VsdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXREb2N1bWVudChF
cnJvclN0cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+JiByb290
KSBvdmVycmlkZTsKLSAgICB2b2lkIHJlcXVlc3RDaGlsZE5vZGVzKEVycm9yU3RyaW5nJiwgaW50
IG5vZGVJZCwgY29uc3QgaW50KiBkZXB0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZXF1ZXN0Q2hp
bGROb2RlcyhFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IGludCogY29uc3QgZGVwdGgp
IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0QXR0cmlidXRlVmFsdWUoRXJyb3JTdHJpbmcmLCBpbnQg
ZWxlbWVudElkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpIG92ZXJy
aWRlOwotICAgIHZvaWQgc2V0QXR0cmlidXRlc0FzVGV4dChFcnJvclN0cmluZyYsIGludCBlbGVt
ZW50SWQsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nKiBuYW1lKSBvdmVycmlkZTsK
KyAgICB2b2lkIHNldEF0dHJpYnV0ZXNBc1RleHQoRXJyb3JTdHJpbmcmLCBpbnQgZWxlbWVudElk
LCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyogY29uc3QgbmFtZSkgb3ZlcnJpZGU7
CiAgICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUoRXJyb3JTdHJpbmcmLCBpbnQgZWxlbWVudElkLCBj
b25zdCBTdHJpbmcmIG5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVtb3ZlTm9kZShFcnJvclN0
cmluZyYsIGludCBub2RlSWQpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Tm9kZU5hbWUoRXJyb3JT
dHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGludCogbmV3SWQpIG92ZXJy
aWRlOwogICAgIHZvaWQgZ2V0T3V0ZXJIVE1MKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgV1RG
OjpTdHJpbmcqIG91dGVySFRNTCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRPdXRlckhUTUwoRXJy
b3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIG91dGVySFRNTCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBzZXROb2RlVmFsdWUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBT
dHJpbmcmIHZhbHVlKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEV2ZW50TGlzdGVuZXJzRm9yTm9k
ZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFdURjo6U3RyaW5nKiBvYmplY3RHcm91
cCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRPTTo6RXZlbnRMaXN0ZW5lcj4+JiBsaXN0ZW5lcnNBcnJheSkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25z
dCBXVEY6OlN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkV2ZW50TGlzdGVuZXI+PiYgbGlz
dGVuZXJzQXJyYXkpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0QWNjZXNzaWJpbGl0eVByb3BlcnRp
ZXNGb3JOb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+JiBheFByb3BlcnRpZXMpIG92ZXJy
aWRlOwogICAgIHZvaWQgcGVyZm9ybVNlYXJjaChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYg
d2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSog
bm9kZUlkcywgU3RyaW5nKiBzZWFyY2hJZCwgaW50KiByZXN1bHRDb3VudCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBnZXRTZWFyY2hSZXN1bHRzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzZWFy
Y2hJZCwgaW50IGZyb21JbmRleCwgaW50IHRvSW5kZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxpbnQ+PiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzY2FyZFNlYXJjaFJlc3Vs
dHMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHNlYXJjaElkKSBvdmVycmlkZTsKLSAgICB2
b2lkIHJlc29sdmVOb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nKiBv
YmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD4mIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZXNvbHZlTm9kZShFcnJvclN0cmlu
ZyYsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpIG92ZXJy
aWRlOwogICAgIHZvaWQgZ2V0QXR0cmlidXRlcyhFcnJvclN0cmluZyYsIGludCBub2RlSWQsIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYgcmVzdWx0KSBvdmVycmlk
ZTsKICAgICB2b2lkIHNldEluc3BlY3RNb2RlRW5hYmxlZChFcnJvclN0cmluZyYsIGJvb2wgZW5h
YmxlZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdodENvbmZpZykg
b3ZlcnJpZGU7CiAgICAgdm9pZCByZXF1ZXN0Tm9kZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgb2JqZWN0SWQsIGludCogbm9kZUlkKSBvdmVycmlkZTsKQEAgLTEzOCwxMyArMTM4LDEzIEBA
IHB1YmxpYzoKICAgICB2b2lkIHB1c2hOb2RlQnlCYWNrZW5kSWRUb0Zyb250ZW5kKEVycm9yU3Ry
aW5nJiwgQmFja2VuZE5vZGVJZCwgaW50KiBub2RlSWQpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVs
ZWFzZUJhY2tlbmROb2RlSWRzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBub2RlR3JvdXAp
IG92ZXJyaWRlOwogICAgIHZvaWQgaGlkZUhpZ2hsaWdodChFcnJvclN0cmluZyYpIG92ZXJyaWRl
OwotICAgIHZvaWQgaGlnaGxpZ2h0UmVjdChFcnJvclN0cmluZyYsIGludCB4LCBpbnQgeSwgaW50
IHdpZHRoLCBpbnQgaGVpZ2h0LCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogY29s
b3IsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBvdXRsaW5lQ29sb3IsIGNvbnN0
IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBoaWdobGlnaHRR
dWFkKEVycm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSYgcXVhZCwg
Y29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIGNvbG9yLCBjb25zdCBJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdCogb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRp
bmF0ZXMpIG92ZXJyaWRlOwotICAgIHZvaWQgaGlnaGxpZ2h0U2VsZWN0b3IoRXJyb3JTdHJpbmcm
LCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgaGlnaGxpZ2h0Q29uZmlnLCBjb25z
dCBTdHJpbmcmIHNlbGVjdG9yU3RyaW5nLCBjb25zdCBTdHJpbmcqIGZyYW1lSWQpIG92ZXJyaWRl
OwotICAgIHZvaWQgaGlnaGxpZ2h0Tm9kZShFcnJvclN0cmluZyYsIGNvbnN0IEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0JiBoaWdobGlnaHRDb25maWcsIGNvbnN0IGludCogbm9kZUlkLCBjb25z
dCBTdHJpbmcqIG9iamVjdElkKSBvdmVycmlkZTsKKyAgICB2b2lkIGhpZ2hsaWdodFJlY3QoRXJy
b3JTdHJpbmcmLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgY29uc3QgSW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIGNvbG9yLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdCogb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiBjb25zdCB1c2VQYWdlQ29vcmRpbmF0
ZXMpIG92ZXJyaWRlOworICAgIHZvaWQgaGlnaGxpZ2h0UXVhZChFcnJvclN0cmluZyYsIGNvbnN0
IEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkmIHF1YWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0KiBjb2xvciwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIG91dGxp
bmVDb2xvciwgY29uc3QgYm9vbCogY29uc3QgdXNlUGFnZUNvb3JkaW5hdGVzKSBvdmVycmlkZTsK
KyAgICB2b2lkIGhpZ2hsaWdodFNlbGVjdG9yKEVycm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3QmIGhpZ2hsaWdodENvbmZpZywgY29uc3QgU3RyaW5nJiBzZWxlY3Rv
clN0cmluZywgY29uc3QgU3RyaW5nKiBjb25zdCBmcmFtZUlkKSBvdmVycmlkZTsKKyAgICB2b2lk
IGhpZ2hsaWdodE5vZGUoRXJyb3JTdHJpbmcmLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdCYgaGlnaGxpZ2h0Q29uZmlnLCBjb25zdCBpbnQqIGNvbnN0IG5vZGVJZCwgY29uc3QgU3Ry
aW5nKiBjb25zdCBvYmplY3RJZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBoaWdobGlnaHRGcmFtZShF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3QqIGNvbG9yLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogb3V0
bGluZUNvbG9yKSBvdmVycmlkZTsKIAotICAgIHZvaWQgbW92ZVRvKEVycm9yU3RyaW5nJiwgaW50
IG5vZGVJZCwgaW50IHRhcmdldE5vZGVJZCwgY29uc3QgaW50KiBhbmNob3JOb2RlSWQsIGludCog
bmV3Tm9kZUlkKSBvdmVycmlkZTsKKyAgICB2b2lkIG1vdmVUbyhFcnJvclN0cmluZyYsIGludCBu
b2RlSWQsIGludCB0YXJnZXROb2RlSWQsIGNvbnN0IGludCogY29uc3QgYW5jaG9yTm9kZUlkLCBp
bnQqIG5ld05vZGVJZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB1bmRvKEVycm9yU3RyaW5nJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCByZWRvKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBt
YXJrVW5kb2FibGVTdGF0ZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAkocmV2aXNpb24gMjA5OTg5
KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKQEAgLTkzLDE0ICs5MywxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNhYmxlKEVy
cm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGRTY3JpcHRUb0V2YWx1YXRlT25Mb2Fk
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIFN0cmluZyogcmVzdWx0KSBvdmVy
cmlkZTsKICAgICB2b2lkIHJlbW92ZVNjcmlwdFRvRXZhbHVhdGVPbkxvYWQoRXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVsb2FkKEVy
cm9yU3RyaW5nJiwgY29uc3QgYm9vbCogb3B0aW9uYWxJZ25vcmVDYWNoZSwgY29uc3QgU3RyaW5n
KiBvcHRpb25hbFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQpIG92ZXJyaWRlOworICAgIHZvaWQgcmVs
b2FkKEVycm9yU3RyaW5nJiwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJZ25vcmVDYWNoZSwg
Y29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQpIG92ZXJy
aWRlOwogICAgIHZvaWQgbmF2aWdhdGUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRDb29raWVzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkNvb2tpZT4+
JiBjb29raWVzKSBvdmVycmlkZTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZShFcnJvclN0cmluZyYs
IGNvbnN0IFN0cmluZyYgY29va2llTmFtZSwgY29uc3QgU3RyaW5nJiB1cmwpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZ2V0UmVzb3VyY2VUcmVlKEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiYpIG92ZXJyaWRlOwogICAgIHZvaWQg
Z2V0UmVzb3VyY2VDb250ZW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBj
b25zdCBTdHJpbmcmIHVybCwgU3RyaW5nKiBjb250ZW50LCBib29sKiBiYXNlNjRFbmNvZGVkKSBv
dmVycmlkZTsKLSAgICB2b2lkIHNlYXJjaEluUmVzb3VyY2UoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBj
b25zdCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNS
ZWdleCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFJlcXVlc3RJZCwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNo
TWF0Y2g+PiYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJp
bmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBib29sKiBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29s
KiBpc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mKSBvdmVycmlkZTsKKyAgICB2b2lkIHNlYXJj
aEluUmVzb3VyY2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25h
bENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgY29uc3Qg
U3RyaW5nKiBjb25zdCBvcHRpb25hbFJlcXVlc3RJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+
PiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBib29sKiBjb25zdCBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29s
KiBjb25zdCBpc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVj
dG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mKSBvdmVycmlkZTsKICAgICB2b2lk
IHNldFNob3dQYWludFJlY3RzKEVycm9yU3RyaW5nJiwgYm9vbCBzaG93KSBvdmVycmlkZTsKICAg
ICB2b2lkIHNldEVtdWxhdGVkTWVkaWEoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKICAgICB2b2lkIGdldENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUoRXJyb3JTdHJpbmcm
LCBib29sKiBvdXRfcGFyYW0pIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCShyZXZpc2lvbiAyMDk5ODkpCisr
KyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAqIENvcHlyaWdodCAoQykgMjAxNCBVbml2ZXJz
aXR5IG9mIFdhc2hpbmd0b24uCi0qIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICoKICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTk4
LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVy
KikgZmluYWw7CiAgICAgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3I6OkRpc2Nvbm5lY3RSZWFzb24pIGZpbmFsOwogCi0gICAgdm9pZCBzdGFydChFcnJvclN0cmlu
ZyYsIGNvbnN0IGludCogbWF4Q2FsbFN0YWNrRGVwdGggPSBudWxscHRyKSBmaW5hbDsKKyAgICB2
b2lkIHN0YXJ0KEVycm9yU3RyaW5nJiwgY29uc3QgaW50KiBjb25zdCBtYXhDYWxsU3RhY2tEZXB0
aCA9IG51bGxwdHIpIGZpbmFsOwogICAgIHZvaWQgc3RvcChFcnJvclN0cmluZyYpIGZpbmFsOwog
ICAgIHZvaWQgc2V0QXV0b0NhcHR1cmVFbmFibGVkKEVycm9yU3RyaW5nJiwgYm9vbCkgZmluYWw7
CiAgICAgdm9pZCBzZXRJbnN0cnVtZW50cyhFcnJvclN0cmluZyYsIGNvbnN0IEluc3BlY3Rvcjo6
SW5zcGVjdG9yQXJyYXkmKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Q
YWdlRGVidWdnZXJBZ2VudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9QYWdlRGVidWdnZXJBZ2VudC5oCShyZXZpc2lvbiAyMDk5ODkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC02NSw3ICs2
NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBicmVha3BvaW50QWN0aW9uTG9nKEpTQzo6RXhlY1N0
YXRlJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICBJbnNwZWN0b3I6OkluamVjdGVk
U2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYsIGNvbnN0IGludCogZXhl
Y3V0aW9uQ29udGV4dElkKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldE92ZXJsYXlNZXNzYWdlKEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nKikgZmluYWw7CisgICAgdm9pZCBzZXRPdmVybGF5TWVz
c2FnZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyogY29uc3QpIGZpbmFsOwogCiAgICAgUGFn
ZSYgbV9wYWdlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCShyZXZpc2lvbiAyMDk5ODkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIEFOR0xFV2ViS2l0QnJpZGdlOjpjbGVhbnVw
Q29tcGlsZXJzCiAgICAgYnVpbHRDb21waWxlcnMgPSBmYWxzZTsKIH0KICAgICAKLXZvaWQgQU5H
TEVXZWJLaXRCcmlkZ2U6OnNldFJlc291cmNlcyhTaEJ1aWx0SW5SZXNvdXJjZXMgcmVzb3VyY2Vz
KQordm9pZCBBTkdMRVdlYktpdEJyaWRnZTo6c2V0UmVzb3VyY2VzKGNvbnN0IFNoQnVpbHRJblJl
c291cmNlcyYgcmVzb3VyY2VzKQogewogICAgIC8vIFJlc291cmNlcyBhcmUgKHBvc3NpYmx5KSBj
aGFuZ2luZyAtIGNsZWFudXAgY29tcGlsZXJzIGlmIHdlIGhhZCB0aGVtIGFscmVhZHkKICAgICBj
bGVhbnVwQ29tcGlsZXJzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9BTkdMRVdlYktpdEJyaWRnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmgJKHJldmlzaW9uIDIwOTk4OSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTYzLDggKzYzLDggQEAgcHVibGljOgogICAgIEFOR0xFV2ViS2l0QnJpZGdlKFNo
U2hhZGVyT3V0cHV0ID0gU0hfR0xTTF9DT01QQVRJQklMSVRZX09VVFBVVCwgU2hTaGFkZXJTcGVj
ID0gU0hfV0VCR0xfU1BFQyk7CiAgICAgfkFOR0xFV2ViS2l0QnJpZGdlKCk7CiAgICAgCi0gICAg
U2hCdWlsdEluUmVzb3VyY2VzIGdldFJlc291cmNlcygpIHsgcmV0dXJuIG1fcmVzb3VyY2VzOyB9
Ci0gICAgdm9pZCBzZXRSZXNvdXJjZXMoU2hCdWlsdEluUmVzb3VyY2VzKTsKKyAgICBjb25zdCBT
aEJ1aWx0SW5SZXNvdXJjZXMmIGdldFJlc291cmNlcygpIHsgcmV0dXJuIG1fcmVzb3VyY2VzOyB9
CisgICAgdm9pZCBzZXRSZXNvdXJjZXMoY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJik7CiAgICAg
CiAgICAgYm9vbCBjb21waWxlU2hhZGVyU291cmNlKGNvbnN0IGNoYXIqIHNoYWRlclNvdXJjZSwg
QU5HTEVTaGFkZXJUeXBlLCBTdHJpbmcmIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UsIFN0cmluZyYg
c2hhZGVyVmFsaWRhdGlvbkxvZywgVmVjdG9yPHN0ZDo6cGFpcjxBTkdMRVNoYWRlclN5bWJvbFR5
cGUsIHNoOjpTaGFkZXJWYXJpYWJsZT4+JiBzeW1ib2xzLCBpbnQgZXh0cmFDb21waWxlT3B0aW9u
cyA9IDApOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZU1lZGlhU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAkocmV2aXNpb24gMjA5OTg5KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1NCw3ICs1NTQsNyBAQCBib29sIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OnNlbGVjdFNldHRpbmdzCiAgICAgLy8gNi4gU2VsZWN0IG9uZSBzZXR0aW5ncyBk
aWN0aW9uYXJ5IGZyb20gY2FuZGlkYXRlcywgYW5kIHJldHVybiBpdCBhcyB0aGUgcmVzdWx0IG9m
IHRoZSBTZWxlY3RTZXR0aW5ncygpIGFsZ29yaXRobS4KICAgICAvLyAgICBUaGUgVUEgc2hvdWxk
IHVzZSB0aGUgb25lIHdpdGggdGhlIHNtYWxsZXN0IGZpdG5lc3MgZGlzdGFuY2UsIGFzIGNhbGN1
bGF0ZWQgaW4gc3RlcCAzLgogICAgIGlmICghc3RkOjppc2luZihtaW5pbXVtRGlzdGFuY2UpKSB7
Ci0gICAgICAgIHN1cHBvcnRlZENvbnN0cmFpbnRzLnJlbW92ZUFsbE1hdGNoaW5nKFsmXShzdGQ6
OnBhaXI8ZG91YmxlLCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4gcGFpcikgLT4gYm9vbCB7
CisgICAgICAgIHN1cHBvcnRlZENvbnN0cmFpbnRzLnJlbW92ZUFsbE1hdGNoaW5nKFsmXShjb25z
dCBzdGQ6OnBhaXI8ZG91YmxlLCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4mIHBhaXIpIC0+
IGJvb2wgewogICAgICAgICAgICAgcmV0dXJuIHBhaXIuZmlyc3QgPiBtaW5pbXVtRGlzdGFuY2U7
CiAgICAgICAgIH0pOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDk5ODkpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAx
Ni0xMi0xOSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGRyZXNzIHNvbWUgc3R5bGUgcHJvYmxlbXMgZm91bmQgYnkgc3RhdGljIGFuYWx5c2lzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU5NzUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdm9pZCBwYXNzaW5n
IGxhcmdlIEFOR0xFIGRhdGEgc3RydWN0dXJlcyB0aHJvdWdoIHRoZSBBTkdMRVdlYktpdEJyaWRn
ZSBtZXRob2RzLgorCisgICAgICAgICogU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oOgorCiAyMDE2
LTEyLTE4ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IEV4cG9zZSBhIHdheSBmb3IgTWluaUJyb3dzZXIgdG8gc2ltdWxhdGUgaGVhZGVyIGFuZCBmb290
ZXIgYmFubmVycwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJCYWNrRm9y
d2FyZExpc3RJdGVtLmNwcAkocmV2aXNpb24gMjA5OTg5KQorKysgU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMSwgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTMyLDEyICszMiwxMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIHVpbnQ2NF90IGhp
Z2hlc3RJdGVtSUQgPSAwOwogCi1QYXNzUmVmUHRyPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+IFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUgYmFj
a0ZvcndhcmRMaXN0SXRlbVN0YXRlLCB1aW50NjRfdCBwYWdlSUQpCitSZWY8V2ViQmFja0Zvcndh
cmRMaXN0SXRlbT4gV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKEJhY2tGb3J3YXJkTGlz
dEl0ZW1TdGF0ZSYmIGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSwgdWludDY0X3QgcGFnZUlEKQog
ewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQmFja0ZvcndhcmRMaXN0SXRlbShXVEZNb3Zl
KGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSksIHBhZ2VJRCkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oV1RGTW92ZShiYWNrRm9yd2FyZExpc3RJdGVt
U3RhdGUpLCBwYWdlSUQpKTsKIH0KIAotV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6V2ViQmFja0Zv
cndhcmRMaXN0SXRlbShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUgYmFja0ZvcndhcmRMaXN0SXRl
bVN0YXRlLCB1aW50NjRfdCBwYWdlSUQpCitXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmIGJhY2tGb3J3YXJkTGlz
dEl0ZW1TdGF0ZSwgdWludDY0X3QgcGFnZUlEKQogICAgIDogbV9pdGVtU3RhdGUoV1RGTW92ZShi
YWNrRm9yd2FyZExpc3RJdGVtU3RhdGUpKQogICAgICwgbV9wYWdlSUQocGFnZUlEKQogewpJbmRl
eDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCShy
ZXZpc2lvbiAyMDk5ODkpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQmFja0ZvcndhcmRM
aXN0SXRlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAtMjAxMSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0gOiBwdWJsaWMgQVBJ
OjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCYWNrRm9yd2FyZExpc3RJdGVtPiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gY3Jl
YXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSwgdWludDY0X3QgcGFnZUlEKTsKKyAgICBzdGF0
aWMgUmVmPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+IGNyZWF0ZShCYWNrRm9yd2FyZExpc3RJdGVt
U3RhdGUmJiwgdWludDY0X3QgcGFnZUlEKTsKICAgICB2aXJ0dWFsIH5XZWJCYWNrRm9yd2FyZExp
c3RJdGVtKCk7CiAKICAgICB1aW50NjRfdCBpdGVtSUQoKSBjb25zdCB7IHJldHVybiBtX2l0ZW1T
dGF0ZS5pZGVudGlmaWVyOyB9CkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
dWludDY0X3QgaGlnaGVzdFVzZWRJdGVtSUQoKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSwgdWludDY0X3Qg
cGFnZUlEKTsKKyAgICBleHBsaWNpdCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKEJhY2tGb3J3YXJk
TGlzdEl0ZW1TdGF0ZSYmLCB1aW50NjRfdCBwYWdlSUQpOwogCiAgICAgQmFja0ZvcndhcmRMaXN0
SXRlbVN0YXRlIG1faXRlbVN0YXRlOwogICAgIHVpbnQ2NF90IG1fcGFnZUlEOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297532</attachid>
            <date>2016-12-20 10:17:55 -0800</date>
            <delta_ts>2016-12-20 15:33:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165975-20161220101655.patch</filename>
            <type>text/plain</type>
            <size>45046</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA5OTg5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBA
CisyMDE2LTEyLTE5ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZHJlc3Mgc29tZSBzdHlsZSBwcm9ibGVtcyBmb3VuZCBieSBzdGF0aWMgYW5hbHlzaXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTk3NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvcnJlY3Qg
dGhlIGNvbnN0LWNvcnJlY3RuZXNzIG9mIGZ1bmN0aW9ucyB0aGF0IGFyZSBpbXBsZW1lbnRlZCB1
c2luZyBzdHJpY3RlcgorICAgICAgICBjb25zdCBkZWNsYXJhdGlvbnMuCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL3Nj
cmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yLnB5OgorICAgICAgICAoY3BwX3R5cGVfZm9yX3Vu
Y2hlY2tlZF9mb3JtYWxfaW5fcGFyYW1ldGVyKTogVXBkYXRlIHRvIG1hdGNoIGNvbnN0IGRlY2xh
cmF0aW9ucyBvZgorICAgICAgICBpbXBsZW1lbnRhdGlvbiBmaWxlcy4KKyAgICAgICAgKiBpbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwt
cmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQ6CisgICAgICAgIFJlYmFzZWxpbmVkIHJlc3Vs
dHMgZm9yICJjb25zdCBQdHIqIGNvbnN0IiBzeW50YXguCisKIDIwMTYtMTItMTggIFNhYW0gQmFy
YXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQXNzZW1ibHk6IEltcGxlbWVu
dCB0aGUgV2ViQXNzZW1ibHkuY29tcGlsZSBhbmQgV2ViQXNzZW1ibHkudmFsaWRhdGUKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgJKHJldmlzaW9uIDIwOTk4OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAsIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEwLCAyMDEzLCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC02NywxMiArNjcsMTIgQEAgcHVibGljOgog
ICAgIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgc2V0QXN5bmNT
dGFja1RyYWNlRGVwdGgoRXJyb3JTdHJpbmcmLCBpbnQgZGVwdGgpIGZpbmFsOwogICAgIHZvaWQg
c2V0QnJlYWtwb2ludHNBY3RpdmUoRXJyb3JTdHJpbmcmLCBib29sIGFjdGl2ZSkgZmluYWw7Ci0g
ICAgdm9pZCBzZXRCcmVha3BvaW50QnlVcmwoRXJyb3JTdHJpbmcmLCBpbnQgbGluZU51bWJlciwg
Y29uc3QgU3RyaW5nKiBvcHRpb25hbFVSTCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFVSTFJlZ2V4
LCBjb25zdCBpbnQqIG9wdGlvbmFsQ29sdW1uTnVtYmVyLCBjb25zdCBJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdCogb3B0aW9ucywgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFr
cG9pbnRJZCosIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+PiYgbG9jYXRpb25zKSBmaW5hbDsKKyAgICB2b2lk
IHNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyYsIGludCBsaW5lTnVtYmVyLCBjb25zdCBT
dHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJM
UmVnZXgsIGNvbnN0IGludCogY29uc3Qgb3B0aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0IEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBvcHRpb25zLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1
Z2dlcjo6QnJlYWtwb2ludElkKiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4+JiBsb2NhdGlvbnMpIGZpbmFs
OwogICAgIHZvaWQgc2V0QnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0JiBsb2NhdGlvbiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3QqIG9wdGlvbnMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQq
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPiYgYWN0dWFs
TG9jYXRpb24pIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlQnJlYWtwb2ludChFcnJvclN0cmluZyYs
IGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgY29u
dGludWVVbnRpbE5leHRSdW5Mb29wKEVycm9yU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBjb250
aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcmLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIGxvY2F0
aW9uKSBmaW5hbDsKLSAgICB2b2lkIHNlYXJjaEluQ29udGVudChFcnJvclN0cmluZyYsIGNvbnN0
IFN0cmluZyYgc2NyaXB0SUQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIG9wdGlv
bmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVz
OjpTZWFyY2hNYXRjaD4+JikgZmluYWw7CisgICAgdm9pZCBzZWFyY2hJbkNvbnRlbnQoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIHNjcmlwdElELCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25z
dCBib29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9w
dGlvbmFsSXNSZWdleCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYpIGZpbmFsOwogICAgIHZv
aWQgZ2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwg
U3RyaW5nKiBzY3JpcHRTb3VyY2UpIGZpbmFsOwogICAgIHZvaWQgZ2V0RnVuY3Rpb25EZXRhaWxz
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4mKSBmaW5hbDsKICAgICB2b2lk
IHBhdXNlKEVycm9yU3RyaW5nJikgZmluYWw7CkBAIC04Miw4ICs4Miw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHN0ZXBPdXQoRXJyb3JTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHNldFBhdXNlT25F
eGNlcHRpb25zKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXVzZVN0YXRlKSBmaW5hbDsK
ICAgICB2b2lkIHNldFBhdXNlT25Bc3NlcnRpb25zKEVycm9yU3RyaW5nJiwgYm9vbCBlbmFibGVk
KSBmaW5hbDsKLSAgICB2b2lkIGV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0
cmluZyogb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgY29u
c3QgYm9vbCogZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBib29s
KiByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIGNvbnN0IGJvb2wq
IHNhdmVSZXN1bHQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVP
YmplY3Q+JiByZXN1bHQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxib29sPiogd2Fz
VGhyb3duLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50Piogc2F2ZWRSZXN1bHRJ
bmRleCkgZmluYWw7Ci0gICAgdm9pZCBzZXRPdmVybGF5TWVzc2FnZShFcnJvclN0cmluZyYsIGNv
bnN0IFN0cmluZyopIG92ZXJyaWRlOworICAgIHZvaWQgZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJv
clN0cmluZyYsIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVz
c2lvbiwgY29uc3QgU3RyaW5nKiBjb25zdCBvYmplY3RHcm91cCwgY29uc3QgYm9vbCogY29uc3Qg
aW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBjb25zdCBib29sKiBjb25zdCBkb05vdFBhdXNlT25FeGNl
cHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGJvb2wqIGNvbnN0IHJldHVybkJ5VmFsdWUsIGNv
bnN0IGJvb2wqIGNvbnN0IGdlbmVyYXRlUHJldmlldywgY29uc3QgYm9vbCogY29uc3Qgc2F2ZVJl
c3VsdCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4m
IHJlc3VsdCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24s
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBzYXZlZFJlc3VsdEluZGV4KSBm
aW5hbDsKKyAgICB2b2lkIHNldE92ZXJsYXlNZXNzYWdlKEVycm9yU3RyaW5nJiwgY29uc3QgU3Ry
aW5nKiBjb25zdCkgb3ZlcnJpZGU7CiAKICAgICBib29sIGlzUGF1c2VkKCkgY29uc3Q7CiAgICAg
Ym9vbCBicmVha3BvaW50c0FjdGl2ZSgpIGNvbnN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdl
bnQuY3BwCShyZXZpc2lvbiAyMDk5ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSwgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4
NSw3ICsyODUsNyBAQCB2b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6Z2V0UHJldmlldyhFcnJvCiAg
ICAgb2JqZWN0UHJldmlldyA9IGluamVjdGVkU2NyaXB0LnByZXZpZXdWYWx1ZShjZWxsKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JIZWFwQWdlbnQ6OmdldFJlbW90ZU9iamVjdChFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGludCBoZWFwT2JqZWN0SWQsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxPYmpl
Y3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVj
dD4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9ySGVhcEFnZW50OjpnZXRSZW1vdGVPYmplY3QoRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgaGVhcE9iamVjdElkLCBjb25zdCBTdHJpbmcqIGNv
bnN0IG9wdGlvbmFsT2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpCiB7CiAgICAgLy8gUHJldmVudCB0aGUgY2VsbCBm
cm9tIGdldHRpbmcgY29sbGVjdGVkIGFzIHdlIGxvb2sgaXQgdXAuCiAgICAgVk0mIHZtID0gbV9l
bnZpcm9ubWVudC52bSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmgJKHJldmlzaW9uIDIw
OTk4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckhlYXBBZ2VudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHZv
aWQgc3RhcnRUcmFja2luZyhFcnJvclN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgc3RvcFRyYWNr
aW5nKEVycm9yU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBnZXRQcmV2aWV3KEVycm9yU3RyaW5n
JiwgaW50IGhlYXBPYmplY3RJZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmlu
Zz4qIHJlc3VsdFN0cmluZywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpG
dW5jdGlvbkRldGFpbHM+JiBmdW5jdGlvbkRldGFpbHMsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpSdW50aW1lOjpPYmplY3RQcmV2aWV3PiYgb2JqZWN0UHJldmlldykgZmluYWw7Ci0gICAg
dm9pZCBnZXRSZW1vdGVPYmplY3QoRXJyb3JTdHJpbmcmLCBpbnQgaGVhcE9iamVjdElkLCBjb25z
dCBTdHJpbmcqIG9wdGlvbmFsT2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpIGZpbmFsOworICAgIHZvaWQgZ2V0UmVt
b3RlT2JqZWN0KEVycm9yU3RyaW5nJiwgaW50IGhlYXBPYmplY3RJZCwgY29uc3QgU3RyaW5nKiBj
b25zdCBvcHRpb25hbE9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0KSBmaW5hbDsKIAogICAgIC8vIEhlYXBPYnNlcnZl
cgogICAgIHZvaWQgd2lsbEdhcmJhZ2VDb2xsZWN0KCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JSdW50aW1lQWdlbnQuaAkocmV2aXNpb24gMjA5OTg5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAx
NS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApA
QCAtNTksMTMgKzU5LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYp
IG92ZXJyaWRlIHsgbV9lbmFibGVkID0gdHJ1ZTsgfQogICAgIHZvaWQgZGlzYWJsZShFcnJvclN0
cmluZyYpIG92ZXJyaWRlIHsgbV9lbmFibGVkID0gZmFsc2U7IH0KICAgICB2b2lkIHBhcnNlKEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBJbnNwZWN0b3I6OlByb3RvY29s
OjpSdW50aW1lOjpTeW50YXhFcnJvclR5cGUqIHJlc3VsdCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6
T3B0T3V0cHV0PFN0cmluZz4qIG1lc3NhZ2UsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpS
dW50aW1lOjpFcnJvclJhbmdlPiYpIGZpbmFsOwotICAgIHZvaWQgZXZhbHVhdGUoRXJyb3JTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAs
IGNvbnN0IGJvb2wqIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgY29uc3QgYm9vbCogZG9Ob3RQYXVz
ZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJ
ZCwgY29uc3QgYm9vbCogcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3
LCBjb25zdCBib29sKiBzYXZlUmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRw
dXQ8Ym9vbD4qIHdhc1Rocm93biwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4q
IHNhdmVkUmVzdWx0SW5kZXgpIGZpbmFsOwotICAgIHZvaWQgY2FsbEZ1bmN0aW9uT24oRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24s
IGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkqIG9wdGlvbmFsQXJndW1lbnRzLCBjb25z
dCBib29sKiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGJvb2wq
IHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVjdG9y
OjpQcm90b2NvbDo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pIGZpbmFsOworICAgIHZvaWQg
ZXZhbHVhdGUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0
cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGNvbnN0IGluY2x1ZGVDb21tYW5k
TGluZUFQSSwgY29uc3QgYm9vbCogY29uc3QgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVD
b25zb2xlLCBjb25zdCBpbnQqIGNvbnN0IGV4ZWN1dGlvbkNvbnRleHRJZCwgY29uc3QgYm9vbCog
Y29uc3QgcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogY29uc3QgZ2VuZXJhdGVQcmV2aWV3LCBj
b25zdCBib29sKiBjb25zdCBzYXZlUmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRP
dXRwdXQ8Ym9vbD4qIHdhc1Rocm93biwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGlu
dD4qIHNhdmVkUmVzdWx0SW5kZXgpIGZpbmFsOworICAgIHZvaWQgY2FsbEZ1bmN0aW9uT24oRXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Np
b24sIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkqIG9wdGlvbmFsQXJndW1lbnRzLCBj
b25zdCBib29sKiBjb25zdCBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNv
bnN0IGJvb2wqIGNvbnN0IHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGNvbnN0IGdlbmVyYXRl
UHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVj
dD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJv
d24pIGZpbmFsOwogICAgIHZvaWQgcmVsZWFzZU9iamVjdChFcnJvclN0cmluZyYsIGNvbnN0IEVy
cm9yU3RyaW5nJiBvYmplY3RJZCkgZmluYWw7Ci0gICAgdm9pZCBnZXRQcm9wZXJ0aWVzKEVycm9y
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCogb3duUHJvcGVydGll
cywgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9y
Pj4mIHJlc3VsdCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4mIGludGVybmFs
UHJvcGVydGllcykgZmluYWw7Ci0gICAgdm9pZCBnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMoRXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBib29sKiBnZW5lcmF0ZVBy
ZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6SW50ZXJu
YWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgaW50ZXJuYWxQcm9wZXJ0aWVzKSBmaW5hbDsKLSAgICB2
b2lkIGdldENvbGxlY3Rpb25FbnRyaWVzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmpl
Y3RJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgY29uc3QgaW50KiBzdGFydEluZGV4LCBj
b25zdCBpbnQqIG51bWJlclRvRmV0Y2gsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpDb2xsZWN0aW9uRW50cnk+PiYgZW50cmll
cykgZmluYWw7Ci0gICAgdm9pZCBzYXZlUmVzdWx0KEVycm9yU3RyaW5nJiwgY29uc3QgSW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3QmIGNhbGxBcmd1bWVudCwgY29uc3QgaW50KiBleGVjdXRpb25D
b250ZXh0SWQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBzYXZlZFJlc3Vs
dEluZGV4KSBmaW5hbDsKKyAgICB2b2lkIGdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBib29sKiBjb25zdCBvd25Qcm9wZXJ0aWVzLCBjb25z
dCBib29sKiBjb25zdCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+
PiYgcmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgaW50ZXJuYWxQ
cm9wZXJ0aWVzKSBmaW5hbDsKKyAgICB2b2lkIGdldERpc3BsYXlhYmxlUHJvcGVydGllcyhFcnJv
clN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIGNvbnN0IGdlbmVy
YXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiByZXN1bHQsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpJ
bnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBpbnRlcm5hbFByb3BlcnRpZXMpIGZpbmFsOwor
ICAgIHZvaWQgZ2V0Q29sbGVjdGlvbkVudHJpZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IG9iamVjdElkLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBjb25zdCBpbnQqIGNv
bnN0IHN0YXJ0SW5kZXgsIGNvbnN0IGludCogY29uc3QgbnVtYmVyVG9GZXRjaCwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkNv
bGxlY3Rpb25FbnRyeT4+JiBlbnRyaWVzKSBmaW5hbDsKKyAgICB2b2lkIHNhdmVSZXN1bHQoRXJy
b3JTdHJpbmcmLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgY2FsbEFyZ3VtZW50
LCBjb25zdCBpbnQqIGNvbnN0IGV4ZWN1dGlvbkNvbnRleHRJZCwgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6T3B0T3V0cHV0PGludD4qIHNhdmVkUmVzdWx0SW5kZXgpIGZpbmFsOwogICAgIHZvaWQgcmVs
ZWFzZU9iamVjdEdyb3VwKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCkg
ZmluYWw7CiAgICAgdm9pZCBnZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNldHMoRXJy
b3JTdHJpbmcmLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5JiBsb2NhdGlvbnMsIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50
aW1lOjpUeXBlRGVzY3JpcHRpb24+PiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZW5hYmxlVHlwZVBy
b2ZpbGVyKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcAkocmV2aXNpb24gMjA5OTg5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2Vu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNjYsNyArNjYsNyBAQCB2b2lkIEluc3BlY3RvclNjcmlwdFBy
b2ZpbGVyQWdlbnQ6OndpbGxECiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvclNjcmlwdFByb2Zp
bGVyQWdlbnQ6OnN0YXJ0VHJhY2tpbmcoRXJyb3JTdHJpbmcmLCBjb25zdCBib29sKiBpbmNsdWRl
U2FtcGxlcykKK3ZvaWQgSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudDo6c3RhcnRUcmFja2lu
ZyhFcnJvclN0cmluZyYsIGNvbnN0IGJvb2wqIGNvbnN0IGluY2x1ZGVTYW1wbGVzKQogewogICAg
IGlmIChtX3RyYWNraW5nKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5oCShyZXZpc2lvbiAyMDk5ODkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsRGVz
dHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAg
IC8vIFNjcmlwdFByb2ZpbGVyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyCi0gICAgdm9pZCBzdGFy
dFRyYWNraW5nKEVycm9yU3RyaW5nJiwgY29uc3QgYm9vbCogaW5jbHVkZVNhbXBsZXMpIG92ZXJy
aWRlOworICAgIHZvaWQgc3RhcnRUcmFja2luZyhFcnJvclN0cmluZyYsIGNvbnN0IGJvb2wqIGNv
bnN0IGluY2x1ZGVTYW1wbGVzKSBvdmVycmlkZTsKICAgICB2b2lkIHN0b3BUcmFja2luZyhFcnJv
clN0cmluZyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBwcm9ncmFtbWF0aWNDYXB0dXJlU3RhcnRl
ZCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vY3BwX2dlbmVyYXRvci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yLnB5CShyZXZpc2lvbiAyMDk5
ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9j
cHBfZ2VuZXJhdG9yLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNyArMTM5LDcgQEAgY2xhc3Mg
Q3BwR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UoX3R5cGUsIFBy
aW1pdGl2ZVR5cGUpOgogICAgICAgICAgICAgY3BwX25hbWUgPSBDcHBHZW5lcmF0b3IuY3BwX25h
bWVfZm9yX3ByaW1pdGl2ZV90eXBlKF90eXBlKQogICAgICAgICAgICAgaWYgcGFyYW1ldGVyLmlz
X29wdGlvbmFsOgotICAgICAgICAgICAgICAgIHJldHVybiAnY29uc3QgJXMqJyAlIGNwcF9uYW1l
CisgICAgICAgICAgICAgICAgcmV0dXJuICdjb25zdCAlcyogY29uc3QnICUgY3BwX25hbWUKICAg
ICAgICAgICAgIGVsaWYgX3R5cGUucmF3X25hbWUoKSBpbiBbJ3N0cmluZyddOgogICAgICAgICAg
ICAgICAgIHJldHVybiAnY29uc3QgJXMmJyAlIGNwcF9uYW1lCiAgICAgICAgICAgICBlbHNlOgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJl
c3VsdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJh
bWV0ZXJzLmpzb24tcmVzdWx0CShyZXZpc2lvbiAyMDk5ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRp
b25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CSh3b3JraW5nIGNvcHkpCkBA
IC04OSw3ICs4OSw3IEBAIHByaXZhdGU6CiBjbGFzcyBBbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVyIDogcHVibGljIEFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5BbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKCkgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSWQs
IGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkqIGluX2NvbHVtbk5hbWVzLCBjb25zdCBT
dHJpbmcqIGluX25vdGVzLCBjb25zdCBkb3VibGUqIGluX3RpbWVzdGFtcCwgY29uc3QgSW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3QqIGluX3ZhbHVlcywgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0
b3JWYWx1ZSogaW5fcGF5bG9hZCwgY29uc3QgaW50KiBpbl9kYXRhYmFzZUlkLCBjb25zdCBJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdCogaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyogaW5fc2Ny
ZWVuQ29sb3IsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkqIGluX2FsdGVybmF0ZUNv
bG9ycywgY29uc3QgU3RyaW5nKiBpbl9wcmludENvbG9yKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rv
cjo6SW5zcGVjdG9yQXJyYXkqIGluX2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcqIGNvbnN0IGlu
X25vdGVzLCBjb25zdCBkb3VibGUqIGNvbnN0IGluX3RpbWVzdGFtcCwgY29uc3QgSW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3QqIGluX3ZhbHVlcywgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JW
YWx1ZSogY29uc3QgaW5fcGF5bG9hZCwgY29uc3QgaW50KiBjb25zdCBpbl9kYXRhYmFzZUlkLCBj
b25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmlu
ZyogY29uc3QgaW5fc2NyZWVuQ29sb3IsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkq
IGluX2FsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nKiBjb25zdCBpbl9wcmludENvbG9yKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNh
bGxJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSYgaW5fY29sdW1uTmFtZXMsIGNv
bnN0IFN0cmluZyYgaW5fbm90ZXMsIGRvdWJsZSBpbl90aW1lc3RhbXAsIGNvbnN0IEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0JiBpbl92YWx1ZXMsIEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUg
aW5fcGF5bG9hZCwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0JiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nJiBpbl9zY3JlZW5Db2xvciwgY29uc3Qg
SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSYgaW5fYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJp
bmcmIGluX3ByaW50Q29sb3IpID0gMDsKIH07CiAKQEAgLTE1Miw3ICsxNTIsNyBAQCBwdWJsaWM6
CiAgICAgICAgIFllbGxvdyA9IDUsCiAgICAgICAgIEJsYWNrID0gNiwKICAgICB9OyAvLyBlbnVt
IGNsYXNzIFByaW50Q29sb3IKLSAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZUFsbE9wdGlvbmFsUGFy
YW1ldGVycyhFcnJvclN0cmluZyYsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkqIG9w
dF9pbl9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nKiBvcHRfaW5fbm90ZXMsIGNvbnN0IGRvdWJs
ZSogb3B0X2luX3RpbWVzdGFtcCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIG9w
dF9pbl92YWx1ZXMsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIG9wdF9pbl9wYXls
b2FkLCBjb25zdCBpbnQqIG9wdF9pbl9kYXRhYmFzZUlkLCBjb25zdCBJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdCogb3B0X2luX3NxbEVycm9yLCBjb25zdCBTdHJpbmcqIG9wdF9pbl9zY3JlZW5D
b2xvciwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSogb3B0X2luX2FsdGVybmF0ZUNv
bG9ycywgY29uc3QgU3RyaW5nKiBvcHRfaW5fcHJpbnRDb2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiBvcHRfb3V0X2NvbHVtbk5hbWVzLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogb3B0X291dF9ub3RlcywgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4qIG9wdF9vdXRfdGltZXN0YW1wLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBvcHRfb3V0
X3ZhbHVlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVj
dG9yVmFsdWU+KiBvcHRfb3V0X3BheWxvYWQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1
dDxpbnQ+KiBvcHRfb3V0X2RhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpE
YXRhYmFzZTo6RXJyb3I+JiBvcHRfb3V0X3NxbEVycm9yLCBJbnNwZWN0b3I6OlByb3RvY29sOjpE
YXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogb3B0X291dF9zY3JlZW5Db2xvciwgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiBvcHRfb3V0X2FsdGVybmF0ZUNv
bG9ycywgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3IqIG9wdF9v
dXRfcHJpbnRDb2xvcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlQWxsT3B0aW9uYWxQ
YXJhbWV0ZXJzKEVycm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSog
b3B0X2luX2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdF9pbl9ub3RlcywgY29u
c3QgZG91YmxlKiBjb25zdCBvcHRfaW5fdGltZXN0YW1wLCBjb25zdCBJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdCogb3B0X2luX3ZhbHVlcywgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1
ZSogY29uc3Qgb3B0X2luX3BheWxvYWQsIGNvbnN0IGludCogY29uc3Qgb3B0X2luX2RhdGFiYXNl
SWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBvcHRfaW5fc3FsRXJyb3IsIGNv
bnN0IFN0cmluZyogY29uc3Qgb3B0X2luX3NjcmVlbkNvbG9yLCBjb25zdCBJbnNwZWN0b3I6Oklu
c3BlY3RvckFycmF5KiBvcHRfaW5fYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcqIGNvbnN0
IG9wdF9pbl9wcmludENvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3Ry
aW5nPj4mIG9wdF9vdXRfY29sdW1uTmFtZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1
dDxTdHJpbmc+KiBvcHRfb3V0X25vdGVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8
ZG91YmxlPiogb3B0X291dF90aW1lc3RhbXAsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1
dDxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG9wdF9vdXRfdmFsdWVzLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4qIG9wdF9vdXRf
cGF5bG9hZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4qIG9wdF9vdXRfZGF0
YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4mIG9w
dF9vdXRfc3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29s
b3JzKiBvcHRfb3V0X3NjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0
YWJhc2U6OkNvbG9yTGlzdD4mIG9wdF9vdXRfYWx0ZXJuYXRlQ29sb3JzLCBEYXRhYmFzZUJhY2tl
bmREaXNwYXRjaGVySGFuZGxlcjo6UHJpbnRDb2xvciogb3B0X291dF9wcmludENvbG9yKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhFcnJvclN0cmlu
ZyYsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkmIGluX2NvbHVtbk5hbWVzLCBjb25z
dCBTdHJpbmcmIGluX25vdGVzLCBkb3VibGUgaW5fdGltZXN0YW1wLCBjb25zdCBJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdCYgaW5fdmFsdWVzLCBJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlIGlu
X3BheWxvYWQsIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdCYgaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgaW5fc2NyZWVuQ29sb3IsIGNvbnN0IElu
c3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkmIGluX2FsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5n
JiBpbl9wcmludENvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5n
Pj4mIG91dF9jb2x1bW5OYW1lcywgU3RyaW5nKiBvdXRfbm90ZXMsIGRvdWJsZSogb3V0X3RpbWVz
dGFtcCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIG91dF92YWx1ZXMsIEluc3BlY3Rvcjo6
SW5zcGVjdG9yVmFsdWUqIG91dF9wYXlsb2FkLCBpbnQqIG91dF9kYXRhYmFzZUlkLCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYgb3V0X3NxbEVycm9yLCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogb3V0X3NjcmVlbkNvbG9y
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mIG91dF9h
bHRlcm5hdGVDb2xvcnMsIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENv
bG9yKiBvdXRfcHJpbnRDb2xvcikgPSAwOwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkRhdGFi
YXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKCk7CkBAIC03NjMsNyArNzYzLDcgQEAgbmFtZXNw
YWNlIEluc3BlY3RvciB7CiBjbGFzcyBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlciBmaW5hbCA6IHB1YmxpYyBBbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyIHsK
IHB1YmxpYzoKICAgICBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcihpZDxU
ZXN0UHJvdG9jb2xEYXRhYmFzZURvbWFpbkhhbmRsZXI+IGhhbmRsZXIpIHsgbV9kZWxlZ2F0ZSA9
IGhhbmRsZXI7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVy
cyhsb25nIHJlcXVlc3RJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSogaW5fY29s
dW1uTmFtZXMsIGNvbnN0IFN0cmluZyogaW5fbm90ZXMsIGNvbnN0IGRvdWJsZSogaW5fdGltZXN0
YW1wLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogaW5fdmFsdWVzLCBjb25zdCBJ
bnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiBpbl9wYXlsb2FkLCBjb25zdCBpbnQqIGluX2RhdGFi
YXNlSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBpbl9zcWxFcnJvciwgY29u
c3QgU3RyaW5nKiBpbl9zY3JlZW5Db2xvciwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJh
eSogaW5fYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcqIGluX3ByaW50Q29sb3IpIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcg
cmVxdWVzdElkLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5KiBpbl9jb2x1bW5OYW1l
cywgY29uc3QgU3RyaW5nKiBjb25zdCBpbl9ub3RlcywgY29uc3QgZG91YmxlKiBjb25zdCBpbl90
aW1lc3RhbXAsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBpbl92YWx1ZXMsIGNv
bnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIGNvbnN0IGluX3BheWxvYWQsIGNvbnN0IGlu
dCogY29uc3QgaW5fZGF0YWJhc2VJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Qq
IGluX3NxbEVycm9yLCBjb25zdCBTdHJpbmcqIGNvbnN0IGluX3NjcmVlbkNvbG9yLCBjb25zdCBJ
bnNwZWN0b3I6Okluc3BlY3RvckFycmF5KiBpbl9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmlu
ZyogY29uc3QgaW5fcHJpbnRDb2xvcikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1
dGVOb09wdGlvbmFsUGFyYW1ldGVycyhsb25nIHJlcXVlc3RJZCwgY29uc3QgSW5zcGVjdG9yOjpJ
bnNwZWN0b3JBcnJheSYgaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyYgaW5fbm90ZXMsIGRv
dWJsZSBpbl90aW1lc3RhbXAsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBpbl92
YWx1ZXMsIEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUgaW5fcGF5bG9hZCwgaW50IGluX2RhdGFi
YXNlSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBpbl9zcWxFcnJvciwgY29u
c3QgU3RyaW5nJiBpbl9zY3JlZW5Db2xvciwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJh
eSYgaW5fYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIGluX3ByaW50Q29sb3IpIG92ZXJy
aWRlOwogcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8aWQ8VGVzdFByb3RvY29sRGF0YWJhc2VEb21h
aW5IYW5kbGVyPj4gbV9kZWxlZ2F0ZTsKQEAgLTk0Miw3ICs5NDIsNyBAQCBfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLXZv
aWQgT2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVBbGxPcHRp
b25hbFBhcmFtZXRlcnMobG9uZyByZXF1ZXN0SWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9y
QXJyYXkqIGluX2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcqIGluX25vdGVzLCBjb25zdCBkb3Vi
bGUqIGluX3RpbWVzdGFtcCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIGluX3Zh
bHVlcywgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogaW5fcGF5bG9hZCwgY29uc3Qg
aW50KiBpbl9kYXRhYmFzZUlkLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogaW5f
c3FsRXJyb3IsIGNvbnN0IFN0cmluZyogaW5fc2NyZWVuQ29sb3IsIGNvbnN0IEluc3BlY3Rvcjo6
SW5zcGVjdG9yQXJyYXkqIGluX2FsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nKiBpbl9wcmlu
dENvbG9yKQordm9pZCBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhl
Y3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhsb25nIHJlcXVlc3RJZCwgY29uc3QgSW5zcGVjdG9y
OjpJbnNwZWN0b3JBcnJheSogaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyogY29uc3QgaW5f
bm90ZXMsIGNvbnN0IGRvdWJsZSogY29uc3QgaW5fdGltZXN0YW1wLCBjb25zdCBJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdCogaW5fdmFsdWVzLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvclZh
bHVlKiBjb25zdCBpbl9wYXlsb2FkLCBjb25zdCBpbnQqIGNvbnN0IGluX2RhdGFiYXNlSWQsIGNv
bnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5n
KiBjb25zdCBpbl9zY3JlZW5Db2xvciwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSog
aW5fYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcqIGNvbnN0IGluX3ByaW50Q29sb3IpCiB7
CiAgICAgaWQgZXJyb3JDYWxsYmFjayA9IF4oTlNTdHJpbmcgKmVycm9yKSB7CiAgICAgICAgIGJh
Y2tlbmREaXNwYXRjaGVyKCktPnJlcG9ydFByb3RvY29sRXJyb3IocmVxdWVzdElkLCBCYWNrZW5k
RGlzcGF0Y2hlcjo6U2VydmVyRXJyb3IsIGVycm9yKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDIwOTk5MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDI5IEBACisyMDE2LTEyLTE5ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZHJlc3Mgc29tZSBzdHlsZSBwcm9ibGVtcyBmb3VuZCBieSBzdGF0
aWMgYW5hbHlzaXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NTk3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENvcnJlY3QgdGhlIGNvbnN0LWNvcnJlY3RuZXNzIG9mIGZ1bmN0aW9ucyB0aGF0IGFyZSBp
bXBsZW1lbnRlZCB1c2luZyBzdHJpY3RlcgorICAgICAgICBjb25zdCBkZWNsYXJhdGlvbnMuCisK
KyAgICAgICAgQXZvaWQgcGFzc2luZyBsYXJnZSBBTkdMRSBkYXRhIHN0cnVjdHVyZXMgdGhyb3Vn
aCB0aGUgQU5HTEVXZWJLaXRCcmlkZ2UgbWV0aG9kcy4KKworICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JDU1NBZ2VudC5oOiBEZWNsYXJlIHRoZSBtZXRob2Qgb3ZlcnJpZGVzIHByb3Blcmx5
IHRvIG1hdGNoCisgICAgICAgIHRoZSBzdHJpY3RlciBjb25zdCBkZWNsYXJhdGlvbnMgaW4gdGhl
IGltcGxlbWVudGF0aW9uIGZpbGVzLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5oOiBEaXR0by4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50Lmg6
IERpdHRvLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50Lmg6IERp
dHRvLgorICAgICAgICAqIGluc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5oOiBEaXR0by4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBTkdMRVdlYktpdEJyaWRnZTo6c2V0UmVzb3VyY2VzKTogUGFzcyBieSBjb25z
dCByZWZlcmVuY2UuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlk
Z2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFV2ViS2l0QnJpZGdlOjpnZXRSZXNvdXJjZXMp
OiBSZXR1cm4gYSBjb25zdCByZWZlcmVuY2UuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlOjpzZWxlY3RTZXR0aW5ncyk6IFVzZSBhIGxhbWJkYSB0aGF0IHRha2VzCisgICAg
ICAgIGEgY29uc3QgcmVmZXJlbmNlLCByYXRoZXIgdGhhbiBjb3B5aW5nIHRoZSBtYXBzIHdoaWxl
IHNlYXJjaGluZy4KKwogMjAxNi0xMi0xOCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxl
LmNvbT4KIAogICAgICAgICBTaWRlIGVmZmVjdHMgd2hpbGUgcmVzdHRpbmcgZm9ybSBlbGVtZW50
cwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgJ
KHJldmlzaW9uIDIwOTk4OSkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
U1NBZ2VudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTA3LDcgKzEwNyw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgZ2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpD
U1NDb21wdXRlZFN0eWxlUHJvcGVydHk+PiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0SW5saW5l
U3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiYgaW5saW5lU3R5bGUsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiYgYXR0cmlidXRlcykgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0
IGJvb2wqIGluY2x1ZGVQc2V1ZG8sIGNvbnN0IGJvb2wqIGluY2x1ZGVJbmhlcml0ZWQsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1
bGVNYXRjaD4+JiBtYXRjaGVkQ1NTUnVsZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz4+JiBwc2V1ZG9J
ZE1hdGNoZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk+PiYgaW5oZXJpdGVkRW50cmllcykgb3Zl
cnJpZGU7CisgICAgdm9pZCBnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyYsIGlu
dCBub2RlSWQsIGNvbnN0IGJvb2wqIGNvbnN0IGluY2x1ZGVQc2V1ZG8sIGNvbnN0IGJvb2wqIGNv
bnN0IGluY2x1ZGVJbmhlcml0ZWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+JiBtYXRjaGVkQ1NTUnVsZXMsIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OlBzZXVkb0lkTWF0Y2hlcz4+JiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4+JiBpbmhlcml0ZWRF
bnRyaWVzKSBvdmVycmlkZTsKICAgICB2b2lkIGdldEFsbFN0eWxlU2hlZXRzKEVycm9yU3RyaW5n
JiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4+JiBzdHlsZVNoZWV0SW5mb3MpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZ2V0U3R5bGVTaGVldChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgc3R5bGVT
aGVldElkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZVNoZWV0Qm9k
eT4mIHJlc3VsdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBTdHJpbmcqIHJlc3VsdCkgb3ZlcnJp
ZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQu
aAkocmV2aXNpb24gMjA5OTg5KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA5LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOSwgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dApAQCAtMTE2LDIxICsxMTYsMjEgQEAgcHVibGljOgogICAgIHZv
aWQgcXVlcnlTZWxlY3RvcihFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYg
c2VsZWN0b3JzLCBpbnQqIGVsZW1lbnRJZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBxdWVyeVNlbGVj
dG9yQWxsKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+PiYgcmVzdWx0KSBvdmVycmlk
ZTsKICAgICB2b2lkIGdldERvY3VtZW50KEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRPTTo6Tm9kZT4mIHJvb3QpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVxdWVzdENo
aWxkTm9kZXMoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBpbnQqIGRlcHRoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHJlcXVlc3RDaGlsZE5vZGVzKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJ
ZCwgY29uc3QgaW50KiBjb25zdCBkZXB0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRBdHRyaWJ1
dGVWYWx1ZShFcnJvclN0cmluZyYsIGludCBlbGVtZW50SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRBdHRyaWJ1dGVzQXNU
ZXh0KEVycm9yU3RyaW5nJiwgaW50IGVsZW1lbnRJZCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25z
dCBTdHJpbmcqIG5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0QXR0cmlidXRlc0FzVGV4dChF
cnJvclN0cmluZyYsIGludCBlbGVtZW50SWQsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3Ry
aW5nKiBjb25zdCBuYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIHJlbW92ZUF0dHJpYnV0ZShFcnJv
clN0cmluZyYsIGludCBlbGVtZW50SWQsIGNvbnN0IFN0cmluZyYgbmFtZSkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCByZW1vdmVOb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBzZXROb2RlTmFtZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgaW50KiBuZXdJZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRPdXRlckhUTUwoRXJy
b3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBXVEY6OlN0cmluZyogb3V0ZXJIVE1MKSBvdmVycmlkZTsK
ICAgICB2b2lkIHNldE91dGVySFRNTChFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFN0
cmluZyYgb3V0ZXJIVE1MKSBvdmVycmlkZTsKICAgICB2b2lkIHNldE5vZGVWYWx1ZShFcnJvclN0
cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgdmFsdWUpIG92ZXJyaWRlOwotICAgIHZv
aWQgZ2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29u
c3QgV1RGOjpTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPj4mIGxpc3RlbmVy
c0FycmF5KSBvdmVycmlkZTsKKyAgICB2b2lkIGdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShFcnJv
clN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFdURjo6U3RyaW5nKiBjb25zdCBvYmplY3RHcm91
cCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRPTTo6RXZlbnRMaXN0ZW5lcj4+JiBsaXN0ZW5lcnNBcnJheSkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZXRBY2Nlc3NpYmlsaXR5UHJvcGVydGllc0Zvck5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9k
ZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVy
dGllcz4mIGF4UHJvcGVydGllcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBwZXJmb3JtU2VhcmNoKEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5LCBjb25zdCBJ
bnNwZWN0b3I6Okluc3BlY3RvckFycmF5KiBub2RlSWRzLCBTdHJpbmcqIHNlYXJjaElkLCBpbnQq
IHJlc3VsdENvdW50KSBvdmVycmlkZTsKICAgICB2b2lkIGdldFNlYXJjaFJlc3VsdHMoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIHNlYXJjaElkLCBpbnQgZnJvbUluZGV4LCBpbnQgdG9JbmRl
eCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD4+Jikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaXNjYXJkU2VhcmNoUmVzdWx0cyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYg
c2VhcmNoSWQpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVzb2x2ZU5vZGUoRXJyb3JTdHJpbmcmLCBp
bnQgbm9kZUlkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0KSBvdmVycmlkZTsKKyAgICB2
b2lkIHJlc29sdmVOb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nKiBj
b25zdCBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJl
bW90ZU9iamVjdD4mIHJlc3VsdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRBdHRyaWJ1dGVzKEVy
cm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PFN0cmluZz4+JiByZXN1bHQpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0SW5zcGVjdE1vZGVFbmFi
bGVkKEVycm9yU3RyaW5nJiwgYm9vbCBlbmFibGVkLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdCogaGlnaGxpZ2h0Q29uZmlnKSBvdmVycmlkZTsKICAgICB2b2lkIHJlcXVlc3ROb2Rl
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgaW50KiBub2RlSWQpIG92ZXJy
aWRlOwpAQCAtMTM4LDEzICsxMzgsMTMgQEAgcHVibGljOgogICAgIHZvaWQgcHVzaE5vZGVCeUJh
Y2tlbmRJZFRvRnJvbnRlbmQoRXJyb3JTdHJpbmcmLCBCYWNrZW5kTm9kZUlkLCBpbnQqIG5vZGVJ
ZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWxlYXNlQmFja2VuZE5vZGVJZHMoRXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIG5vZGVHcm91cCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBoaWRlSGlnaGxp
Z2h0KEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBoaWdobGlnaHRSZWN0KEVycm9y
U3RyaW5nJiwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNvbnN0IEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBjb2xvciwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3QqIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGhpZ2hsaWdodFF1YWQoRXJyb3JTdHJpbmcmLCBjb25zdCBJbnNwZWN0
b3I6Okluc3BlY3RvckFycmF5JiBxdWFkLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dCogY29sb3IsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBvdXRsaW5lQ29sb3Is
IGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBoaWdo
bGlnaHRTZWxlY3RvcihFcnJvclN0cmluZyYsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0JiBoaWdobGlnaHRDb25maWcsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JTdHJpbmcsIGNvbnN0
IFN0cmluZyogZnJhbWVJZCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBoaWdobGlnaHROb2RlKEVycm9y
U3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIGhpZ2hsaWdodENvbmZp
ZywgY29uc3QgaW50KiBub2RlSWQsIGNvbnN0IFN0cmluZyogb2JqZWN0SWQpIG92ZXJyaWRlOwor
ICAgIHZvaWQgaGlnaGxpZ2h0UmVjdChFcnJvclN0cmluZyYsIGludCB4LCBpbnQgeSwgaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0LCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogY29sb3Is
IGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJv
b2wqIGNvbnN0IHVzZVBhZ2VDb29yZGluYXRlcykgb3ZlcnJpZGU7CisgICAgdm9pZCBoaWdobGln
aHRRdWFkKEVycm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSYgcXVh
ZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIGNvbG9yLCBjb25zdCBJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdCogb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiBjb25zdCB1c2VQ
YWdlQ29vcmRpbmF0ZXMpIG92ZXJyaWRlOworICAgIHZvaWQgaGlnaGxpZ2h0U2VsZWN0b3IoRXJy
b3JTdHJpbmcmLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgaGlnaGxpZ2h0Q29u
ZmlnLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yU3RyaW5nLCBjb25zdCBTdHJpbmcqIGNvbnN0IGZy
YW1lSWQpIG92ZXJyaWRlOworICAgIHZvaWQgaGlnaGxpZ2h0Tm9kZShFcnJvclN0cmluZyYsIGNv
bnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBoaWdobGlnaHRDb25maWcsIGNvbnN0IGlu
dCogY29uc3Qgbm9kZUlkLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9iamVjdElkKSBvdmVycmlkZTsK
ICAgICB2b2lkIGhpZ2hsaWdodEZyYW1lKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBmcmFt
ZUlkLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogY29sb3IsIGNvbnN0IEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBvdXRsaW5lQ29sb3IpIG92ZXJyaWRlOwogCi0gICAgdm9p
ZCBtb3ZlVG8oRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBpbnQgdGFyZ2V0Tm9kZUlkLCBjb25z
dCBpbnQqIGFuY2hvck5vZGVJZCwgaW50KiBuZXdOb2RlSWQpIG92ZXJyaWRlOworICAgIHZvaWQg
bW92ZVRvKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgaW50IHRhcmdldE5vZGVJZCwgY29uc3Qg
aW50KiBjb25zdCBhbmNob3JOb2RlSWQsIGludCogbmV3Tm9kZUlkKSBvdmVycmlkZTsKICAgICB2
b2lkIHVuZG8oRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlZG8oRXJyb3JTdHJp
bmcmKSBvdmVycmlkZTsKICAgICB2b2lkIG1hcmtVbmRvYWJsZVN0YXRlKEVycm9yU3RyaW5nJikg
b3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFn
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBh
Z2VBZ2VudC5oCShyZXZpc2lvbiAyMDk5ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUGFnZUFnZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtOTMsMTQgKzkzLDE0IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lk
IGFkZFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHNv
dXJjZSwgU3RyaW5nKiByZXN1bHQpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVtb3ZlU2NyaXB0VG9F
dmFsdWF0ZU9uTG9hZChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCByZWxvYWQoRXJyb3JTdHJpbmcmLCBjb25zdCBib29sKiBvcHRpb25h
bElnbm9yZUNhY2hlLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsU2NyaXB0VG9FdmFsdWF0ZU9uTG9h
ZCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZWxvYWQoRXJyb3JTdHJpbmcmLCBjb25zdCBib29sKiBj
b25zdCBvcHRpb25hbElnbm9yZUNhY2hlLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsU2Ny
aXB0VG9FdmFsdWF0ZU9uTG9hZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBuYXZpZ2F0ZShFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsKSBvdmVycmlkZTsKICAgICB2b2lkIGdldENvb2tpZXMo
RXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UGFnZTo6Q29va2llPj4mIGNvb2tpZXMpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGVsZXRlQ29va2llKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lLCBjb25z
dCBTdHJpbmcmIHVybCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRSZXNvdXJjZVRyZWUoRXJyb3JT
dHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWVSZXNvdXJjZVRy
ZWU+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRSZXNvdXJjZUNvbnRlbnQoRXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBTdHJpbmcqIGNvbnRl
bnQsIGJvb2wqIGJhc2U2NEVuY29kZWQpIG92ZXJyaWRlOwotICAgIHZvaWQgc2VhcmNoSW5SZXNv
dXJjZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2
ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsUmVx
dWVzdElkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBz
ZWFyY2hJblJlc291cmNlcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IGJvb2wq
IGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGlzUmVnZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiYp
IG92ZXJyaWRlOworICAgIHZvaWQgc2VhcmNoSW5SZXNvdXJjZShFcnJvclN0cmluZyYsIGNvbnN0
IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcXVlcnks
IGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogY29u
c3Qgb3B0aW9uYWxJc1JlZ2V4LCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsUmVxdWVzdElk
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZWFyY2hJ
blJlc291cmNlcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IGJvb2wqIGNvbnN0
IGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IGlzUmVnZXgsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1
bHQ+PiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0U2hvd1BhaW50UmVjdHMoRXJyb3JTdHJpbmcm
LCBib29sIHNob3cpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0RW11bGF0ZWRNZWRpYShFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0Q29tcG9zaXRpbmdC
b3JkZXJzVmlzaWJsZShFcnJvclN0cmluZyYsIGJvb2wqIG91dF9wYXJhbSkgb3ZlcnJpZGU7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFn
ZW50LmgJKHJldmlzaW9uIDIwOTk4OSkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JUaW1lbGluZUFnZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgog
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICog
Q29weXJpZ2h0IChDKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4KLSogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKgogKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQpAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIElu
c3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBmaW5hbDsKICAgICB2b2lkIHdpbGxEZXN0cm95
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikgZmluYWw7CiAK
LSAgICB2b2lkIHN0YXJ0KEVycm9yU3RyaW5nJiwgY29uc3QgaW50KiBtYXhDYWxsU3RhY2tEZXB0
aCA9IG51bGxwdHIpIGZpbmFsOworICAgIHZvaWQgc3RhcnQoRXJyb3JTdHJpbmcmLCBjb25zdCBp
bnQqIGNvbnN0IG1heENhbGxTdGFja0RlcHRoID0gbnVsbHB0cikgZmluYWw7CiAgICAgdm9pZCBz
dG9wKEVycm9yU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBzZXRBdXRvQ2FwdHVyZUVuYWJsZWQo
RXJyb3JTdHJpbmcmLCBib29sKSBmaW5hbDsKICAgICB2b2lkIHNldEluc3RydW1lbnRzKEVycm9y
U3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSYpIGZpbmFsOwpJbmRleDog
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmgJKHJldmlzaW9u
IDIwOTk4OSkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGJyZWFr
cG9pbnRBY3Rpb25Mb2coSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsK
IAogICAgIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVy
cm9yU3RyaW5nJiwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQpIG92ZXJyaWRlOwotICAg
IHZvaWQgc2V0T3ZlcmxheU1lc3NhZ2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcqKSBmaW5h
bDsKKyAgICB2b2lkIHNldE92ZXJsYXlNZXNzYWdlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5n
KiBjb25zdCkgZmluYWw7CiAKICAgICBQYWdlJiBtX3BhZ2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAJ
KHJldmlzaW9uIDIwOTk4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FO
R0xFV2ViS2l0QnJpZGdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEwLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQg
QU5HTEVXZWJLaXRCcmlkZ2U6OmNsZWFudXBDb21waWxlcnMKICAgICBidWlsdENvbXBpbGVycyA9
IGZhbHNlOwogfQogICAgIAotdm9pZCBBTkdMRVdlYktpdEJyaWRnZTo6c2V0UmVzb3VyY2VzKFNo
QnVpbHRJblJlc291cmNlcyByZXNvdXJjZXMpCit2b2lkIEFOR0xFV2ViS2l0QnJpZGdlOjpzZXRS
ZXNvdXJjZXMoY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMpCiB7CiAgICAgLy8g
UmVzb3VyY2VzIGFyZSAocG9zc2libHkpIGNoYW5naW5nIC0gY2xlYW51cCBjb21waWxlcnMgaWYg
d2UgaGFkIHRoZW0gYWxyZWFkeQogICAgIGNsZWFudXBDb21waWxlcnMoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2Uu
aAkocmV2aXNpb24gMjA5OTg5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
QU5HTEVXZWJLaXRCcmlkZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEwLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjMsOCArNjMsOCBAQCBwdWJsaWM6
CiAgICAgQU5HTEVXZWJLaXRCcmlkZ2UoU2hTaGFkZXJPdXRwdXQgPSBTSF9HTFNMX0NPTVBBVElC
SUxJVFlfT1VUUFVULCBTaFNoYWRlclNwZWMgPSBTSF9XRUJHTF9TUEVDKTsKICAgICB+QU5HTEVX
ZWJLaXRCcmlkZ2UoKTsKICAgICAKLSAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgZ2V0UmVzb3VyY2Vz
KCkgeyByZXR1cm4gbV9yZXNvdXJjZXM7IH0KLSAgICB2b2lkIHNldFJlc291cmNlcyhTaEJ1aWx0
SW5SZXNvdXJjZXMpOworICAgIGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgZ2V0UmVzb3VyY2Vz
KCkgeyByZXR1cm4gbV9yZXNvdXJjZXM7IH0KKyAgICB2b2lkIHNldFJlc291cmNlcyhjb25zdCBT
aEJ1aWx0SW5SZXNvdXJjZXMmKTsKICAgICAKICAgICBib29sIGNvbXBpbGVTaGFkZXJTb3VyY2Uo
Y29uc3QgY2hhciogc2hhZGVyU291cmNlLCBBTkdMRVNoYWRlclR5cGUsIFN0cmluZyYgdHJhbnNs
YXRlZFNoYWRlclNvdXJjZSwgU3RyaW5nJiBzaGFkZXJWYWxpZGF0aW9uTG9nLCBWZWN0b3I8c3Rk
OjpwYWlyPEFOR0xFU2hhZGVyU3ltYm9sVHlwZSwgc2g6OlNoYWRlclZhcmlhYmxlPj4mIHN5bWJv
bHMsIGludCBleHRyYUNvbXBpbGVPcHRpb25zID0gMCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3Vy
Y2UuY3BwCShyZXZpc2lvbiAyMDk5ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTU0LDcg
KzU1NCw3IEBAIGJvb2wgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2VsZWN0U2V0dGluZ3MKICAgICAv
LyA2LiBTZWxlY3Qgb25lIHNldHRpbmdzIGRpY3Rpb25hcnkgZnJvbSBjYW5kaWRhdGVzLCBhbmQg
cmV0dXJuIGl0IGFzIHRoZSByZXN1bHQgb2YgdGhlIFNlbGVjdFNldHRpbmdzKCkgYWxnb3JpdGht
LgogICAgIC8vICAgIFRoZSBVQSBzaG91bGQgdXNlIHRoZSBvbmUgd2l0aCB0aGUgc21hbGxlc3Qg
Zml0bmVzcyBkaXN0YW5jZSwgYXMgY2FsY3VsYXRlZCBpbiBzdGVwIDMuCiAgICAgaWYgKCFzdGQ6
OmlzaW5mKG1pbmltdW1EaXN0YW5jZSkpIHsKLSAgICAgICAgc3VwcG9ydGVkQ29uc3RyYWludHMu
cmVtb3ZlQWxsTWF0Y2hpbmcoWyZdKHN0ZDo6cGFpcjxkb3VibGUsIE1lZGlhVHJhY2tDb25zdHJh
aW50U2V0TWFwPiBwYWlyKSAtPiBib29sIHsKKyAgICAgICAgc3VwcG9ydGVkQ29uc3RyYWludHMu
cmVtb3ZlQWxsTWF0Y2hpbmcoWyZdKGNvbnN0IHN0ZDo6cGFpcjxkb3VibGUsIE1lZGlhVHJhY2tD
b25zdHJhaW50U2V0TWFwPiYgcGFpcikgLT4gYm9vbCB7CiAgICAgICAgICAgICByZXR1cm4gcGFp
ci5maXJzdCA+IG1pbmltdW1EaXN0YW5jZTsKICAgICAgICAgfSk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDIwOTk4OSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE2LTEyLTE5ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdo
YW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZHJlc3Mgc29tZSBzdHlsZSBwcm9ibGVtcyBmb3Vu
ZCBieSBzdGF0aWMgYW5hbHlzaXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2NTk3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEF2b2lkIHBhc3NpbmcgbGFyZ2UgQU5HTEUgZGF0YSBzdHJ1Y3R1cmVzIHRo
cm91Z2ggdGhlIEFOR0xFV2ViS2l0QnJpZGdlIG1ldGhvZHMuCisKKyAgICAgICAgKiBTaGFyZWQv
V2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3
YXJkTGlzdEl0ZW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlz
dEl0ZW06OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0pOgorICAgICAgICAqIFNoYXJlZC9XZWJCYWNr
Rm9yd2FyZExpc3RJdGVtLmg6CisKIDIwMTYtMTItMTggIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZy
YXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgRXhwb3NlIGEgd2F5IGZvciBNaW5pQnJvd3NlciB0
byBzaW11bGF0ZSBoZWFkZXIgYW5kIGZvb3RlciBiYW5uZXJzCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCShyZXZpc2lvbiAyMDk5
ODkpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEw
LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMC0yMDExLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMTIgKzMyLDEyIEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBzdGF0aWMgdWludDY0X3QgaGlnaGVzdEl0ZW1JRCA9IDA7CiAKLVBhc3NSZWZQdHI8
V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKEJh
Y2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSBiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUsIHVpbnQ2NF90
IHBhZ2VJRCkKK1JlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtOjpjcmVhdGUoQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYgYmFja0ZvcndhcmRMaXN0SXRl
bVN0YXRlLCB1aW50NjRfdCBwYWdlSUQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJC
YWNrRm9yd2FyZExpc3RJdGVtKFdURk1vdmUoYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlKSwgcGFn
ZUlEKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQmFja0ZvcndhcmRMaXN0SXRlbShX
VEZNb3ZlKGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSksIHBhZ2VJRCkpOwogfQogCi1XZWJCYWNr
Rm9yd2FyZExpc3RJdGVtOjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtKEJhY2tGb3J3YXJkTGlzdEl0
ZW1TdGF0ZSBiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUsIHVpbnQ2NF90IHBhZ2VJRCkKK1dlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW06OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0
SXRlbVN0YXRlJiYgYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlLCB1aW50NjRfdCBwYWdlSUQpCiAg
ICAgOiBtX2l0ZW1TdGF0ZShXVEZNb3ZlKGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSkpCiAgICAg
LCBtX3BhZ2VJRChwYWdlSUQpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgJKHJldmlzaW9uIDIwOTk4OSkKKysrIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDExLCAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQmFja0Zv
cndhcmRMaXN0SXRlbSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6
OkJhY2tGb3J3YXJkTGlzdEl0ZW0+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBjcmVhdGUoQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlLCB1
aW50NjRfdCBwYWdlSUQpOworICAgIHN0YXRpYyBSZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4g
Y3JlYXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmLCB1aW50NjRfdCBwYWdlSUQpOwogICAg
IHZpcnR1YWwgfldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oKTsKIAogICAgIHVpbnQ2NF90IGl0ZW1J
RCgpIGNvbnN0IHsgcmV0dXJuIG1faXRlbVN0YXRlLmlkZW50aWZpZXI7IH0KQEAgLTY3LDcgKzY3
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB1aW50NjRfdCBoaWdoZXN0VXNlZEl0ZW1JRCgpOwog
CiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oQmFja0Zvcndh
cmRMaXN0SXRlbVN0YXRlLCB1aW50NjRfdCBwYWdlSUQpOworICAgIGV4cGxpY2l0IFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYsIHVpbnQ2NF90IHBhZ2VJ
RCk7CiAKICAgICBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUgbV9pdGVtU3RhdGU7CiAgICAgdWlu
dDY0X3QgbV9wYWdlSUQ7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>