<?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>187225</bug_id>
          
          <creation_ts>2018-06-30 17:04:01 -0700</creation_ts>
          <short_desc>[macOS] Text replacements that end with symbols are expanded immediately</short_desc>
          <delta_ts>2018-07-01 18:22:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>rniwa</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1438228</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-06-30 17:04:01 -0700</bug_when>
    <thetext>&lt;rdar://problem/41112433&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1438231</commentid>
    <comment_count>1</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-06-30 17:12:11 -0700</bug_when>
    <thetext>To reproduce:

- Go to System Preferences &gt; Keyboard &gt; Text.
- Add a text replacement from &quot;yt?&quot; to &quot;you there?&quot;.
- In Safari (or any other WebKit-based app), focus an editable area.
- Type &quot;yt?&quot;, and don&apos;t press space or enter.

Expected: The editable area should contain &quot;yt?&quot;. Subsequently inserting a space or newline should then replace &quot;yt?&quot; with &quot;you there?&quot;.

Observed: Autocorrection kicks in and changes &quot;yt?&quot; to &quot;you there?&quot; immediately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1438232</commentid>
    <comment_count>2</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-06-30 17:12:47 -0700</bug_when>
    <thetext>This also reproduces on shipping macOS, but only if grammar checking is enabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1438250</commentid>
    <comment_count>3</comment_count>
      <attachid>344029</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-06-30 18:36:44 -0700</bug_when>
    <thetext>Created attachment 344029
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1438256</commentid>
    <comment_count>4</comment_count>
      <attachid>344033</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-06-30 18:52:50 -0700</bug_when>
    <thetext>Created attachment 344033
Fix macOS build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1438262</commentid>
    <comment_count>5</comment_count>
      <attachid>344035</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-06-30 19:33:34 -0700</bug_when>
    <thetext>Created attachment 344035
Fix the iOS build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1438270</commentid>
    <comment_count>6</comment_count>
      <attachid>344039</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-06-30 20:45:50 -0700</bug_when>
    <thetext>Created attachment 344039
Win and 32-bit Mac build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1438273</commentid>
    <comment_count>7</comment_count>
      <attachid>344041</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-06-30 21:20:50 -0700</bug_when>
    <thetext>Created attachment 344041
More 32-bit build fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1438274</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-06-30 21:23:31 -0700</bug_when>
    <thetext>Attachment 344041 did not pass style-queue:


ERROR: Tools/TestRunnerShared/cocoa/LayoutTestSpellChecker.mm:160:  Should not have spaces around = in property synthesis.  [whitespace/property] [4]
Total errors found: 1 in 23 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>1438275</commentid>
    <comment_count>9</comment_count>
      <attachid>344042</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-06-30 21:26:41 -0700</bug_when>
    <thetext>Created attachment 344042
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1438346</commentid>
    <comment_count>10</comment_count>
      <attachid>344042</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-07-01 14:40:33 -0700</bug_when>
    <thetext>Comment on attachment 344042
Patch

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

&gt; Source/WebCore/editing/Editor.h:296
&gt; +    void markAllMisspellingsAndBadGrammarInRanges(TextCheckingTypeMask, Range* spellingRange, Range* automaticReplacementRange, Range* grammarRange);

Why are these Range* instead of Range&amp; or const Range&amp;? Can all three be null?

&gt; Source/WebCore/editing/TextCheckingHelper.h:82
&gt; +    mutable int m_checkingStart { -1 };
&gt; +    mutable int m_checkingEnd { -1 };
&gt; +    mutable int m_checkingLength { -1 };
&gt; +    mutable int m_automaticReplacementStart { -1 };
&gt; +    mutable int m_automaticReplacementLength { -1 };

At some point we should consider using std::optional here instead of a magic number of -1.

&gt; Tools/TestRunnerShared/cocoa/LayoutTestSpellChecker.h:35
&gt; +@interface LayoutTestTextCheckingResult : NSTextCheckingResult {

I think this class should be private and not mentioned in the header. The data structures could just hold NSTextCheckingResult; no need to remember that our special type was used once the object is created.

&gt; Tools/TestRunnerShared/cocoa/LayoutTestSpellChecker.h:51
&gt; ++ (instancetype)installIfNecessary;

Seems slightly unnecessarily wordy. Such methods often have simpler names like &quot;checker&quot;, with the &quot;set this up so I can use it&quot; part treated as implicit.

&gt; Tools/TestRunnerShared/cocoa/LayoutTestSpellChecker.mm:36
&gt; +typedef void (^TextCheckingCompletionHandler)(NSInteger sequenceNumber, NSArray&lt;NSTextCheckingResult *&gt; *results, NSOrthography *orthography, NSInteger wordCount);

New code should typically use &quot;using&quot; instead of &quot;typedef&quot;.

&gt; Tools/TestRunnerShared/cocoa/LayoutTestSpellChecker.mm:38
&gt; +static NeverDestroyed&lt;RetainPtr&lt;LayoutTestSpellChecker&gt;&gt; globalSpellChecker;

Typically it’s overkill to use NeverDestroyed&lt;RetainPtr&gt;. Instead we just do a leakRef when initializing the global or just skip the adoptNS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1438351</commentid>
    <comment_count>11</comment_count>
      <attachid>344042</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-07-01 15:30:27 -0700</bug_when>
    <thetext>Comment on attachment 344042
Patch

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

&gt;&gt; Source/WebCore/editing/Editor.h:296
&gt;&gt; +    void markAllMisspellingsAndBadGrammarInRanges(TextCheckingTypeMask, Range* spellingRange, Range* automaticReplacementRange, Range* grammarRange);
&gt; 
&gt; Why are these Range* instead of Range&amp; or const Range&amp;? Can all three be null?

It does look like all three may be null (at least one call site passes a null grammarRange, and additionally, there&apos;s logic in markAllMisspellingsAndBadGrammarInRanges to bail when !spellingRange).

I think the modern idiom for this would be to make these three ranges RefPtr&lt;Range&gt;&amp;&amp; instead — I can do this in a followup (along with refactoring the cached offsets in TextCheckingParagraph to be `std::optional`s).

&gt;&gt; Source/WebCore/editing/TextCheckingHelper.h:82
&gt;&gt; +    mutable int m_automaticReplacementLength { -1 };
&gt; 
&gt; At some point we should consider using std::optional here instead of a magic number of -1.

Definitely agree! I&apos;ll do this in a followup.

&gt;&gt; Tools/TestRunnerShared/cocoa/LayoutTestSpellChecker.h:35
&gt;&gt; +@interface LayoutTestTextCheckingResult : NSTextCheckingResult {
&gt; 
&gt; I think this class should be private and not mentioned in the header. The data structures could just hold NSTextCheckingResult; no need to remember that our special type was used once the object is created.

Good catch — moved to the implementation file.

&gt;&gt; Tools/TestRunnerShared/cocoa/LayoutTestSpellChecker.h:51
&gt;&gt; ++ (instancetype)installIfNecessary;
&gt; 
&gt; Seems slightly unnecessarily wordy. Such methods often have simpler names like &quot;checker&quot;, with the &quot;set this up so I can use it&quot; part treated as implicit.

Ok! Renamed to &quot;checker&quot;.

&gt;&gt; Tools/TestRunnerShared/cocoa/LayoutTestSpellChecker.mm:36
&gt;&gt; +typedef void (^TextCheckingCompletionHandler)(NSInteger sequenceNumber, NSArray&lt;NSTextCheckingResult *&gt; *results, NSOrthography *orthography, NSInteger wordCount);
&gt; 
&gt; New code should typically use &quot;using&quot; instead of &quot;typedef&quot;.

Ah, I just realized that I don&apos;t actually need this typedef, so I just removed this.

&gt;&gt; Tools/TestRunnerShared/cocoa/LayoutTestSpellChecker.mm:38
&gt;&gt; +static NeverDestroyed&lt;RetainPtr&lt;LayoutTestSpellChecker&gt;&gt; globalSpellChecker;
&gt; 
&gt; Typically it’s overkill to use NeverDestroyed&lt;RetainPtr&gt;. Instead we just do a leakRef when initializing the global or just skip the adoptNS.

Got it — removed the NeverDestroyed&lt;&gt; and adoptNS() here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1438362</commentid>
    <comment_count>12</comment_count>
      <attachid>344064</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-07-01 16:59:35 -0700</bug_when>
    <thetext>Created attachment 344064
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1438363</commentid>
    <comment_count>13</comment_count>
      <attachid>344065</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-07-01 17:08:54 -0700</bug_when>
    <thetext>Created attachment 344065
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1438367</commentid>
    <comment_count>14</comment_count>
      <attachid>344065</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-01 17:47:55 -0700</bug_when>
    <thetext>Comment on attachment 344065
Patch for landing

Clearing flags on attachment: 344065

Committed r233412: &lt;https://trac.webkit.org/changeset/233412&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344029</attachid>
            <date>2018-06-30 18:36:44 -0700</date>
            <delta_ts>2018-06-30 18:52:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187225-20180630183644.patch</filename>
            <type>text/plain</type>
            <size>70550</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzNDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWUyMjM5NDVhN2ZiNzU1
NWFiY2M5MmQ3MzhjNGEyZmJiM2E3MTdlMS4uNzliODJhNzMyYjFjMDkyMTRjYjE3ZGE0ZTYwNjkx
YjI2YzI0NDRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDE4LTA2LTMwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gVGV4
dCByZXBsYWNlbWVudHMgdGhhdCBlbmQgd2l0aCBzeW1ib2xzIGFyZSBleHBhbmRlZCBpbW1lZGlh
dGVseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3
MjI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MTExMjQzMz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBzaGlwcGluZyBTYWZhcmksIGVuYWJs
aW5nIGdyYW1tYXIgY29ycmVjdGlvbiBjYXVzZXMgdGV4dCBzaG9ydGN1dHMgdGhhdCBlbmQgd2l0
aCBzeW1ib2xzIG9yIHB1bmN0dWF0aW9uIG1hcmtzCisgICAgICAgIHRvIGltbWVkaWF0ZWx5IHRy
aWdnZXIgd2hlbiB0eXBpbmc7IG5vcm1hbGx5LCB3aGVuIGdyYW1tYXIgY29ycmVjdGlvbiBpcyBv
ZmYsIHRoaXMgaXMgb25seSB0cmlnZ2VyZWQgYWZ0ZXIgdGhlCisgICAgICAgIHVzZXIgaGFzIGFk
ZGl0aW9uYWxseSBpbnNlcnRlZCBhIHB1bmN0dWF0aW9uIG1hcmsgb3Igd2hpdGVzcGFjZSBjaGFy
YWN0ZXIgYWZ0ZXIgdGhlIHJlcGxhY2VkIHRleHQuCisKKyAgICAgICAgVGhpcyBidWcgaGFwcGVu
cyBiZWNhdXNlIGVuYWJsaW5nIGdyYW1tYXIgY2hlY2tpbmcgY2F1c2VzIHRoZSBzcGVsbCBjaGVj
a2luZyByYW5nZSB0byBleHBhbmQgdG8gdGhlIHJhbmdlIG9mIHRoZQorICAgICAgICBmdWxsIHNl
bnRlbmNlLCBzbyBhbnkgdGV4dCBjaGVja2luZyByZXN1bHRzIHRoYXQgcmVwbGFjZSBhbiBleGlz
dGluZyByYW5nZSBhcmUgdHJpZ2dlcmVkIGFzIGxvbmcgYXMgdGhleSBlbmQKKyAgICAgICAgYW55
d2hlcmUgaW4gdGhlIHNlbnRlbmNlLiBJbiBjb250cmFzdCwgd2hlbiBncmFtbWFyIGNoZWNraW5n
IGlzIGRpc2FibGVkLCB0aGUgc3BlbGwgY2hlY2tpbmcgcmFuZ2UgaXMgbGltaXRlZCB0bworICAg
ICAgICB0aGUgbmVhcmVzdCBhZGphY2VudCB3b3JkLCB3aGljaCBwcmV2ZW50cyB0ZXh0IHJlcGxh
Y2VtZW50IGZyb20gb2NjdXJyaW5nIGVsc2V3aGVyZSBpbiB0aGUgc2VudGVuY2UuCisKKyAgICAg
ICAgSG93ZXZlciwgYWZ0ZXIgcjIzMjUzMCwgd2Ugbm93IGFsd2F5cyBleHBhbmQgdGhlIHNwZWxs
IGNoZWNraW5nIHJhbmdlIHRvIHRoZSBleHRlbnQgb2YgdGhlIHNlbnRlbmNlIHdoZW4gYSB3b3Jk
CisgICAgICAgIGlzIHR5cGVkIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBncmFtbWFyIGNoZWNraW5n
IGlzIGVuYWJsZWQsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIGlzc3VlIGRlc2NyaWJlZCBhYm92ZSBu
b3cKKyAgICAgICAgaGFwcGVucyBldmVyeXdoZXJlLiBUbyBmaXggdGhpcyByZWNlbnQgcmVncmVz
c2lvbiBhbmQgdGhlIGV4aXN0aW5nIGJ1Zywgd2U6CisKKyAgICAgICAgLSAgIEF1Z21lbnQgb3Vy
IHNwZWxsY2hlY2tpbmcgY29kZXBhdGhzIHRvIGluY2x1ZGUgYSBuZXcgYXV0b21hdGljIHRleHQg
cmVwbGFjZW1lbnQgcmFuZ2UsIGFsb25nc2lkZQorICAgICAgICAgICAgc3BlbGxjaGVja2luZyBh
bmQgcGFyYWdyYXBoIHJhbmdlcy4KKyAgICAgICAgLSAgIExldCB0aGlzIGF1dG9tYXRpYyB0ZXh0
IHJlcGxhY2VtZW50IHJhbmdlIGJlIHRoZSByYW5nZSBvZiB0aGUgYWRqYWNlbnQgd29yZCBpbiB0
aGUgY2FzZSB3aGVyZSB0aGUgdXNlciBoYXMKKyAgICAgICAgICAgIGZpbmlzaGVkIHR5cGluZyBh
IHdvcmQuCisgICAgICAgIC0gICBXaGVuIG1hcmtpbmcgYW5kIHJlcGxhY2luZyB0ZXh0IGNoZWNr
aW5nIHJlc3VsdHMsIGNvbnN1bHQgdGhpcyBuZXcgYXV0b21hdGljIHRleHQgcmVwbGFjZW1lbnQg
aW5zdGVhZCBvZiB0aGUKKyAgICAgICAgICAgIHNwZWxsY2hlY2tpbmcgcmFuZ2UuCisKKyAgICAg
ICAgVGhpcyBrZWVwcyB0aGUgYmVoYXZpb3IgZ3JhbW1hciBhbmQgc2VudGVuY2UgcmV0cm8gY29y
cmVjdGlvbiByZXN1bHRzIGludGFjdCwgd2hpbGUgbGltaXRpbmcgdGhlIHNjb3BlIGluIHdoaWNo
CisgICAgICAgIHRleHQgcmVwbGFjZW1lbnQgcmVzdWx0cyBhcmUgYXBwbGllZC4KKworICAgICAg
ICBUZXN0OiBlZGl0aW5nL3NwZWxsaW5nL3RleHQtcmVwbGFjZW1lbnQtYWZ0ZXItdHlwaW5nLXRv
LXdvcmQuaHRtbAorCisgICAgICAgICogZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnRpbWVy
RmlyZWQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6cmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZCk6CisKKyAgICAgICAg
UGFzcyBpbiB0aGUgYWRqYWNlbnQgd29yZCByYW5nZSBmb3IgdGhlIGBhdXRvbWF0aWNSZXBsYWNl
bWVudFJhbmdlYCwgaW5zdGVhZCBvZiB0aGUgc3BlbGwgY2hlY2tpbmcgcmFuZ2UgKHdoaWNoCisg
ICAgICAgIG1heSBiZSBleHRlbmRlZCB0byB0aGUgZnVsbCByYW5nZSBvZiB0aGUgc2VudGVuY2Up
LgorCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRH
cmFtbWFySW5SYW5nZXMpOgorCisgICAgICAgIEFkZCBhbiBgYXV0b21hdGljUmVwbGFjZW1lbnRS
YW5nZWAgYXJndW1lbnQgdG8gbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdl
cywgYW5kIGFkanVzdCBjYWxsIHNpdGVzCisgICAgICAgIHRvIHBhc3MgaW4gYSByYW5nZSAoZ2Vu
ZXJhbGx5IHRoZSBzYW1lIGFzIHRoZSBzcGVsbCBjaGVja2luZyByYW5nZSwgYnV0IGluIHRoZSBj
YXNlIHdoZXJlIGEgd29yZCBoYXMgYmVlbiB0eXBlZCwKKyAgICAgICAgdGhpcyBpcyBhIG5hcnJv
d2VyIHJhbmdlKS4KKworICAgICAgICAoV2ViQ29yZTo6Y29ycmVjdFNwZWxsY2hlY2tpbmdQcmVz
ZXJ2aW5nVGV4dENoZWNraW5nUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
bWFya0FuZFJlcGxhY2VGb3IpOgorCisgICAgICAgIFdoZW4gcmVwbGFjaW5nIHRleHQsIG9ubHkg
YWxsb3cgdGV4dCByZXBsYWNlbWVudCBpbiB0aGUgYXV0b21hdGljIHJlcGxhY2VtZW50IHJhbmdl
IHJhdGhlciB0aGFuIHRoZSBzcGVsbAorICAgICAgICBjaGVja2luZyByYW5nZS4KKworICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcik6CisgICAg
ICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsQ2hlY2tlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrUmVxdWVzdDo6U3BlbGxDaGVja1JlcXVl
c3QpOgorCisgICAgICAgIEFkZCBhIG5ldyB2ZXJzaW9uIG9mIHRoaXMgY29uc3RydWN0b3IgdGhh
dCB0YWtlcyBhIHNpbmdsZSBSYW5nZSByZXByZXNlbnRpbmcgYm90aCB0aGUgc3BlbGxjaGVja2lu
ZyByYW5nZSBhbmQKKyAgICAgICAgdGhlIGF1dG9tYXRpYyB0ZXh0IHJlcGxhY2VtZW50IHJhbmdl
LCBmb3IgY29udmVuaWVuY2UuCisKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tSZXF1ZXN0
OjpjcmVhdGUpOgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxDaGVja2VyLmg6CisKKyAgICAgICAg
QWRkIHBsdW1iaW5nIGZvciB0aGUgYXV0b21hdGljIHJlcGxhY2VtZW50IHJhbmdlLgorCisgICAg
ICAgIChXZWJDb3JlOjpTcGVsbENoZWNrUmVxdWVzdDo6YXV0b21hdGljUmVwbGFjZW1lbnRSYW5n
ZSBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwOgorCisg
ICAgICAgIEFkZCBwbHVtYmluZyBmb3IgdGhlIGF1dG9tYXRpYyByZXBsYWNlbWVudCByYW5nZSwg
YW5kIG5ldyBoZWxwZXJzIHRvIGxvY2F0ZSB0aGUgcmFuZ2UgYXMgb2Zmc2V0cyB3aXRoaW4gdGhl
CisgICAgICAgIHRleHQgY2hlY2tpbmcgcGFyYWdyYXBoIHJhbmdlLgorCisgICAgICAgIChXZWJD
b3JlOjpUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OlRleHRDaGVja2luZ1BhcmFncmFwaCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmF1dG9tYXRpY1JlcGxhY2VtZW50
U3RhcnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nUGFyYWdyYXBoOjph
dXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9UZXh0
Q2hlY2tpbmdIZWxwZXIuaDoKKwogMjAxOC0wNi0zMCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtMRkNdIERvIG5vdCBhZGQgdGhlIGNvbnRhaW5pbmcgYmxvY2sn
cyBvZmZzZXQgd2hpbGUgY29tcHV0aW5nIHRoZSBvdXQtb2YtZmxvdyBzdGF0aWMgcG9zaXRpb24u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyLmNwcAppbmRleCBkNDUzZjY0NDBhZDQ2ZWJlMzBhMGNiYTllYWUyMjI3NDFhNWFiZjQyLi5h
OTQ2ZjUxMzZjNGFmMjVmMGEwNjJhOWE2YTM1NDkzZjVlN2M0NmRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKQEAgLTI4
Myw3ICsyODMsOCBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnRpbWVyRmlyZWQo
KQogICAgICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQoc2VsZWN0aW9uLnN0YXJ0KCksIHNlbGVj
dGlvbi5hZmZpbml0eSgpKTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHAgPSBzdGFydE9mV29y
ZChzdGFydCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpOwogICAgICAgICBWaXNpYmxlU2VsZWN0aW9u
IGFkamFjZW50V29yZHMgPSBWaXNpYmxlU2VsZWN0aW9uKHAsIHN0YXJ0KTsKLSAgICAgICAgbV9m
cmFtZS5lZGl0b3IoKS5tYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRl
eHRDaGVja2luZ1R5cGVTcGVsbGluZyB8IFRleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCB8IFRl
eHRDaGVja2luZ1R5cGVTaG93Q29ycmVjdGlvblBhbmVsLCBhZGphY2VudFdvcmRzLnRvTm9ybWFs
aXplZFJhbmdlKCkuZ2V0KCksIDApOworICAgICAgICBhdXRvIGFkamFjZW50V29yZFJhbmdlID0g
YWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6ZWRSYW5nZSgpOworICAgICAgICBtX2ZyYW1lLmVkaXRv
cigpLm1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5n
VHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50IHwgVGV4dENoZWNraW5n
VHlwZVNob3dDb3JyZWN0aW9uUGFuZWwsIGFkamFjZW50V29yZFJhbmdlLmdldCgpLCBhZGphY2Vu
dFdvcmRSYW5nZS5nZXQoKSwgbnVsbHB0cik7CiAgICAgfQogICAgICAgICBicmVhazsKICAgICBj
YXNlIEFsdGVybmF0aXZlVGV4dFR5cGVSZXZlcnNpb246IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAppbmRleCAwYzcxNjMyODUzNDBhYTUxNDQ0MzJlYTYyNjQwNTgzMjA5YzY4MGQ3Li5iYzMy
ZTFmNzU0N2Q1ODU0ZWJlYzUyMmZjMDA3ZmVjMDBmNDczOWE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCkBAIC02NjcsNyArNjY3LDcgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VTZWxlY3Rp
b25XaXRoRnJhZ21lbnQoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIGJvb2wgc2VsZWMKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgYXV0byByYW5nZVRvQ2hlY2sgPSBSYW5nZTo6Y3JlYXRlKGRv
Y3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk5vZGUobm9kZVRvQ2hlY2spLCBsYXN0UG9zaXRpb25J
bk5vZGUobm9kZVRvQ2hlY2spKTsKLSAgICBpZiAoYXV0byByZXF1ZXN0ID0gU3BlbGxDaGVja1Jl
cXVlc3Q6OmNyZWF0ZShyZXNvbHZlVGV4dENoZWNraW5nVHlwZU1hc2soKm5vZGVUb0NoZWNrLCBU
ZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgfCBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hciksIFRleHRD
aGVja2luZ1Byb2Nlc3NCYXRjaCwgcmFuZ2VUb0NoZWNrLmNvcHlSZWYoKSwgcmFuZ2VUb0NoZWNr
LmNvcHlSZWYoKSkpCisgICAgaWYgKGF1dG8gcmVxdWVzdCA9IFNwZWxsQ2hlY2tSZXF1ZXN0Ojpj
cmVhdGUocmVzb2x2ZVRleHRDaGVja2luZ1R5cGVNYXNrKCpub2RlVG9DaGVjaywgVGV4dENoZWNr
aW5nVHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZUdyYW1tYXIpLCBUZXh0Q2hlY2tpbmdQ
cm9jZXNzQmF0Y2gsIHJhbmdlVG9DaGVjay5jb3B5UmVmKCksIHJhbmdlVG9DaGVjay5jb3B5UmVm
KCksIHJhbmdlVG9DaGVjay5jb3B5UmVmKCkpKQogICAgICAgICBtX3NwZWxsQ2hlY2tlci0+cmVx
dWVzdENoZWNraW5nRm9yKHJlcXVlc3QucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKQEAgLTIzNDIs
NyArMjM0Miw4IEBAIHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1dv
cmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uICZ3b3JkU3RhcnQsCiAgICAgICAgIHJldHVybjsKIAog
ICAgIFZpc2libGVTZWxlY3Rpb24gYWRqYWNlbnRXb3JkcyA9IFZpc2libGVTZWxlY3Rpb24oc3Rh
cnRPZldvcmQod29yZFN0YXJ0LCBMZWZ0V29yZElmT25Cb3VuZGFyeSksIGVuZE9mV29yZCh3b3Jk
U3RhcnQsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSkpOwotICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NB
bmRCYWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgYWRqYWNlbnRXb3Jkcy50
b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBhZGphY2VudFdvcmRzLnRvTm9ybWFsaXplZFJhbmdl
KCkuZ2V0KCkpOworICAgIGF1dG8gYWRqYWNlbnRXb3JkUmFuZ2UgPSBhZGphY2VudFdvcmRzLnRv
Tm9ybWFsaXplZFJhbmdlKCk7CisgICAgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJ
blJhbmdlcyh0ZXh0Q2hlY2tpbmdPcHRpb25zLCBhZGphY2VudFdvcmRSYW5nZS5nZXQoKSwgYWRq
YWNlbnRXb3JkUmFuZ2UuZ2V0KCksIG51bGxwdHIpOwogI2Vsc2UKICNpZiAhVVNFKEFVVE9NQVRJ
Q19URVhUX1JFUExBQ0VNRU5UKQogICAgIFVOVVNFRF9QQVJBTShkb1JlcGxhY2VtZW50KTsKQEAg
LTI0MTcsMTMgKzI0MTgsMTcgQEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5
cGluZ1RvV29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24gJndvcmRTdGFydCwKICAgICAgICAgaWYg
KCFzcGVsbENoZWNraW5nUmFuZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgYXV0
byBhZGphY2VudFdvcmRSYW5nZSA9IFZpc2libGVTZWxlY3Rpb24oc3RhcnRPZldvcmQod29yZFN0
YXJ0LCBMZWZ0V29yZElmT25Cb3VuZGFyeSksIGVuZE9mV29yZCh3b3JkU3RhcnQsIFJpZ2h0V29y
ZElmT25Cb3VuZGFyeSkpLnRvTm9ybWFsaXplZFJhbmdlKCk7CisgICAgICAgIGlmICghYWRqYWNl
bnRXb3JkUmFuZ2UpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgLy8gVGhlIHNwZWxs
aW5nIGFuZCBncmFtbWFyIG1hcmtlcnMgaW4gdGhlc2UgcmFuZ2VzIGFyZSByZWNvbXB1dGVkLiBU
aGlzIGlzIGJlY2F1c2UgdHlwaW5nIGEgd29yZCBtYXkKICAgICAgICAgLy8gY2F1c2UgYW55IG90
aGVyIHBhcnQgb2YgdGhlIGN1cnJlbnQgc2VudGVuY2UgdG8gbG9zZSBvciBnYWluIHNwZWxsaW5n
IGNvcnJlY3Rpb24gbWFya2VycywgZHVlIHRvCiAgICAgICAgIC8vIHNlbnRlbmNlIHJldHJvIGNv
cnJlY3Rpb24uIEFzIHN1Y2gsIHdlIGV4cGFuZCB0aGUgc3BlbGwgY2hlY2tpbmcgcmFuZ2UgdG8g
ZW5jb21wYXNzIGFzIG11Y2ggb2YgdGhlCiAgICAgICAgIC8vIGZ1bGwgc2VudGVuY2UgYXMgd2Ug
Y2FuLCByZXNwZWN0aW5nIGJvdW5kYXJpZXMgd2hlcmUgc3BlbGxjaGVja2luZyBpcyBkaXNhYmxl
ZC4KICAgICAgICAgZnVsbFNlbnRlbmNlUmFuZ2UtPm93bmVyRG9jdW1lbnQoKS5tYXJrZXJzKCku
cmVtb3ZlTWFya2VycyhmdWxsU2VudGVuY2VSYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6Okdy
YW1tYXIpOwogICAgICAgICBzcGVsbENoZWNraW5nUmFuZ2UtPm93bmVyRG9jdW1lbnQoKS5tYXJr
ZXJzKCkucmVtb3ZlTWFya2VycyhzcGVsbENoZWNraW5nUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFy
a2VyOjpTcGVsbGluZyk7Ci0gICAgICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFy
SW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgc3BlbGxDaGVja2luZ1JhbmdlLmdldCgpLCBm
dWxsU2VudGVuY2VSYW5nZS5nZXQoKSk7CisgICAgICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRC
YWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgc3BlbGxDaGVja2luZ1Jhbmdl
LmdldCgpLCBhZGphY2VudFdvcmRSYW5nZS5nZXQoKSwgZnVsbFNlbnRlbmNlUmFuZ2UuZ2V0KCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNTQ3LDcgKzI1NTIsNyBAQCB2b2lkIEVk
aXRvcjo6bWFya0JhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQog
I2VuZGlmCiB9CiAKLXZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1h
ckluUmFuZ2VzKFRleHRDaGVja2luZ1R5cGVNYXNrIHRleHRDaGVja2luZ09wdGlvbnMsIFJhbmdl
KiBzcGVsbGluZ1JhbmdlLCBSYW5nZSogZ3JhbW1hclJhbmdlKQordm9pZCBFZGl0b3I6Om1hcmtB
bGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nVHlwZU1hc2sg
dGV4dENoZWNraW5nT3B0aW9ucywgUmFuZ2UqIHNwZWxsaW5nUmFuZ2UsIFJhbmdlKiBhdXRvbWF0
aWNSZXBsYWNlbWVudFJhbmdlLCBSYW5nZSogZ3JhbW1hclJhbmdlKQogewogICAgIEFTU0VSVCh1
bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKCkpOwogCkBAIC0yNTc5LDcgKzI1ODQsOCBAQCB2b2lk
IEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hl
Y2tpbmdUeXBlTWFzayB0ZXh0QwogCiAgICAgLy8gSW4gYXN5bmNocm9ub3VzIG1vZGUsIHdlIGlu
dGVudGlvbmFsbHkgY2hlY2sgcGFyYWdyYXBoLXdpZGUgc2VudGVuY2UuCiAgICAgY29uc3QgYXV0
byByZXNvbHZlZE9wdGlvbnMgPSByZXNvbHZlVGV4dENoZWNraW5nVHlwZU1hc2soZWRpdGFibGVO
b2RlLCB0ZXh0Q2hlY2tpbmdPcHRpb25zKTsKLSAgICBhdXRvIHJlcXVlc3QgPSBTcGVsbENoZWNr
UmVxdWVzdDo6Y3JlYXRlKHJlc29sdmVkT3B0aW9ucywgVGV4dENoZWNraW5nUHJvY2Vzc0luY3Jl
bWVudGFsLCBhc3luY2hyb25vdXMgPyBwYXJhZ3JhcGhSYW5nZS5nZXQoKSA6IHJhbmdlVG9DaGVj
aywgcGFyYWdyYXBoUmFuZ2UuY29weVJlZigpKTsKKyAgICBhdXRvJiB0ZXh0UmVwbGFjZW1lbnRS
YW5nZSA9IGF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UgPyAqYXV0b21hdGljUmVwbGFjZW1lbnRS
YW5nZSA6IHJhbmdlVG9DaGVjazsKKyAgICBhdXRvIHJlcXVlc3QgPSBTcGVsbENoZWNrUmVxdWVz
dDo6Y3JlYXRlKHJlc29sdmVkT3B0aW9ucywgVGV4dENoZWNraW5nUHJvY2Vzc0luY3JlbWVudGFs
LCBhc3luY2hyb25vdXMgPyBwYXJhZ3JhcGhSYW5nZS5nZXQoKSA6IHJhbmdlVG9DaGVjaywgdGV4
dFJlcGxhY2VtZW50UmFuZ2UsIHBhcmFncmFwaFJhbmdlLmNvcHlSZWYoKSk7CiAgICAgaWYgKCFy
ZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAKQEAgLTI2MjcsNyArMjYzMyw4IEBAIHN0YXRpYyB2
b2lkIGNvcnJlY3RTcGVsbGNoZWNraW5nUHJlc2VydmluZ1RleHRDaGVja2luZ1BhcmFncmFwaChU
ZXh0Q2hlY2tpbmdQYXJhCiAKICAgICBSZWZQdHI8UmFuZ2U+IG5ld1BhcmFncmFwaFJhbmdlID0g
VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCgmc2NvcGUsIHBhcmFncmFw
aExvY2F0aW9uLCBwYXJhZ3JhcGhMZW5ndGggKyByZXBsYWNlbWVudC5sZW5ndGgoKSAtIHJlc3Vs
dExlbmd0aCk7CiAKLSAgICBwYXJhZ3JhcGggPSBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoVGV4dEl0
ZXJhdG9yOjpzdWJyYW5nZSgqbmV3UGFyYWdyYXBoUmFuZ2UsIHJlc3VsdExvY2F0aW9uLCByZXBs
YWNlbWVudC5sZW5ndGgoKSksIG5ld1BhcmFncmFwaFJhbmdlLmdldCgpKTsKKyAgICBhdXRvIHNw
ZWxsQ2hlY2tpbmdSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKm5ld1BhcmFncmFwaFJh
bmdlLCByZXN1bHRMb2NhdGlvbiwgcmVwbGFjZW1lbnQubGVuZ3RoKCkpOworICAgIHBhcmFncmFw
aCA9IFRleHRDaGVja2luZ1BhcmFncmFwaChzcGVsbENoZWNraW5nUmFuZ2UuY29weVJlZigpLCBz
cGVsbENoZWNraW5nUmFuZ2UuY29weVJlZigpLCBuZXdQYXJhZ3JhcGhSYW5nZS5nZXQoKSk7CiB9
CiAKIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCkBA
IC0yNjM1LDcgKzI2NDIsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3Qg
U3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQogICAgIFJlZjxGcmFt
ZT4gcHJvdGVjdGlvbihtX2ZyYW1lKTsKIAogICAgIFRleHRDaGVja2luZ1R5cGVNYXNrIHRleHRD
aGVja2luZ09wdGlvbnMgPSByZXF1ZXN0LmRhdGEoKS5tYXNrKCk7Ci0gICAgVGV4dENoZWNraW5n
UGFyYWdyYXBoIHBhcmFncmFwaChyZXF1ZXN0LmNoZWNraW5nUmFuZ2UoKSwgJnJlcXVlc3QucGFy
YWdyYXBoUmFuZ2UoKSk7CisgICAgVGV4dENoZWNraW5nUGFyYWdyYXBoIHBhcmFncmFwaChyZXF1
ZXN0LmNoZWNraW5nUmFuZ2UoKSwgcmVxdWVzdC5hdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlKCks
ICZyZXF1ZXN0LnBhcmFncmFwaFJhbmdlKCkpOwogCiAgICAgY29uc3QgYm9vbCBzaG91bGRNYXJr
U3BlbGxpbmcgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zICYgVGV4dENoZWNraW5nVHlwZVNwZWxsaW5n
OwogICAgIGNvbnN0IGJvb2wgc2hvdWxkTWFya0dyYW1tYXIgPSB0ZXh0Q2hlY2tpbmdPcHRpb25z
ICYgVGV4dENoZWNraW5nVHlwZUdyYW1tYXI7CkBAIC0yNjc1LDYgKzI2ODIsNyBAQCB2b2lkIEVk
aXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFZlY3RvcjxUZQogICAgICAgICBjb25zdCBpbnQgcmVzdWx0TG9jYXRpb24gPSByZXN1
bHRzW2ldLmxvY2F0aW9uICsgb2Zmc2V0RHVlVG9SZXBsYWNlbWVudDsKICAgICAgICAgY29uc3Qg
aW50IHJlc3VsdExlbmd0aCA9IHJlc3VsdHNbaV0ubGVuZ3RoOwogICAgICAgICBjb25zdCBpbnQg
cmVzdWx0RW5kTG9jYXRpb24gPSByZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aDsKKyAgICAg
ICAgY29uc3QgaW50IGF1dG9tYXRpY1JlcGxhY2VtZW50RW5kTG9jYXRpb24gPSBwYXJhZ3JhcGgu
YXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpICsgcGFyYWdyYXBoLmF1dG9tYXRpY1JlcGxhY2Vt
ZW50TGVuZ3RoKCkgKyBvZmZzZXREdWVUb1JlcGxhY2VtZW50OwogICAgICAgICBjb25zdCBTdHJp
bmcmIHJlcGxhY2VtZW50ID0gcmVzdWx0c1tpXS5yZXBsYWNlbWVudDsKICAgICAgICAgY29uc3Qg
Ym9vbCByZXN1bHRFbmRzQXRBbWJpZ3VvdXNCb3VuZGFyeSA9IHVzZUFtYmlndW91c0JvdW5kYXJ5
T2Zmc2V0ICYmIHNlbGVjdGlvbk9mZnNldCAtIDEgPD0gcmVzdWx0RW5kTG9jYXRpb247CiAKQEAg
LTI2OTksMTIgKzI3MDcsMTIgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNvbnN0
IFNwZWxsQ2hlY2tSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8VGUKICAgICAgICAgICAg
ICAgICAgICAgYmFkR3JhbW1hclJhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCkubWFy
a2VycygpLmFkZE1hcmtlcihiYWRHcmFtbWFyUmFuZ2UucHRyKCksIERvY3VtZW50TWFya2VyOjpH
cmFtbWFyLCBkZXRhaWwudXNlckRlc2NyaXB0aW9uKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAocmVzdWx0RW5kTG9jYXRpb24gPD0gc3BlbGxp
bmdSYW5nZUVuZE9mZnNldCAmJiByZXN1bHRFbmRMb2NhdGlvbiA+PSBwYXJhZ3JhcGguY2hlY2tp
bmdTdGFydCgpCisgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0RW5kTG9jYXRpb24gPD0gYXV0b21h
dGljUmVwbGFjZW1lbnRFbmRMb2NhdGlvbiAmJiByZXN1bHRFbmRMb2NhdGlvbiA+PSBwYXJhZ3Jh
cGguYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpCiAgICAgICAgICAgICAmJiBpc0F1dG9tYXRp
Y1RleHRSZXBsYWNlbWVudFR5cGUocmVzdWx0VHlwZSkpIHsKLSAgICAgICAgICAgIC8vIEluIHRo
aXMgY2FzZSB0aGUgcmVzdWx0IHJhbmdlIGp1c3QgaGFzIHRvIHRvdWNoIHRoZSBzcGVsbGluZyBy
YW5nZSwgc28gd2UgY2FuIGhhbmRsZSByZXBsYWNpbmcgbm9uLXdvcmQgdGV4dCBzdWNoIGFzIHB1
bmN0dWF0aW9uLgorICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIHRoZSByZXN1bHQgcmFuZ2Ug
anVzdCBoYXMgdG8gdG91Y2ggdGhlIGF1dG9tYXRpYyByZXBsYWNlbWVudCByYW5nZSwgc28gd2Ug
Y2FuIGhhbmRsZSByZXBsYWNpbmcgbm9uLXdvcmQgdGV4dCBzdWNoIGFzIHB1bmN0dWF0aW9uLgog
ICAgICAgICAgICAgQVNTRVJUKHJlc3VsdExlbmd0aCA+IDAgJiYgcmVzdWx0TG9jYXRpb24gPj0g
MCk7CiAKLSAgICAgICAgICAgIGlmIChzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsICYmIChyZXN1
bHRFbmRMb2NhdGlvbiA8IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQKKyAgICAgICAgICAgIGlmIChz
aG91bGRTaG93Q29ycmVjdGlvblBhbmVsICYmIChyZXN1bHRFbmRMb2NhdGlvbiA8IGF1dG9tYXRp
Y1JlcGxhY2VtZW50RW5kTG9jYXRpb24KICAgICAgICAgICAgICAgICB8fCAhKHJlc3VsdFR5cGUg
JiAoVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50IHwgVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rp
b24pKSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTI3MjgsNyArMjczNiw3IEBA
IHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgVmVjdG9yPFRlCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgICAgIGlmIChzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKHJlc3VsdEVuZExvY2F0aW9uID09IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQpIHsKKyAg
ICAgICAgICAgICAgICBpZiAocmVzdWx0RW5kTG9jYXRpb24gPT0gYXV0b21hdGljUmVwbGFjZW1l
bnRFbmRMb2NhdGlvbikgewogICAgICAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IHNob3cgdGhl
IGNvcnJlY3Rpb24gcGFuZWwgb24gdGhlIGxhc3Qgd29yZC4KICAgICAgICAgICAgICAgICAgICAg
bV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5zaG93KHJhbmdlVG9SZXBsYWNlLCByZXBsYWNl
bWVudCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjgyOSw3ICsyODM3LDggQEAg
dm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mIHNwZWxsaW5nU2VsZWMKICAgICAgICAgVGV4dENoZWNraW5nVHlwZU1hc2sgdGV4
dENoZWNraW5nT3B0aW9ucyA9IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZzsKICAgICAgICAgaWYg
KG1hcmtHcmFtbWFyICYmIGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKQogICAgICAgICAgICAg
dGV4dENoZWNraW5nT3B0aW9ucyB8PSBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsKLSAgICAgICAg
bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyh0ZXh0Q2hlY2tpbmdPcHRp
b25zLCBzcGVsbGluZ1NlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBncmFtbWFy
U2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOworICAgICAgICBhdXRvIHNwZWxs
Q2hlY2tpbmdSYW5nZSA9IHNwZWxsaW5nU2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7Cisg
ICAgICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNr
aW5nT3B0aW9ucywgc3BlbGxDaGVja2luZ1JhbmdlLmdldCgpLCBzcGVsbENoZWNraW5nUmFuZ2Uu
Z2V0KCksIGdyYW1tYXJTZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IGUxNDE0M2Zl
Y2U5MTEwN2E2NTJmZmU4ZmM1MThmMmM3MjVmYTljZDcuLmI0YTAxMGZiNGU3MzIwYTJlYmQ3NDY1
M2JjNzRlOTQ5NzEwMjc0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtMjkzLDcgKzI5
Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzT3ZlcndyaXRlTW9kZUVuYWJsZWQoKSBjb25zdCB7
IHJldHVybiBtX292ZXJ3cml0ZU1vZGVFbmFibGVkOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB0b2dnbGVPdmVyd3JpdGVNb2RlRW5hYmxlZCgpOwogCi0gICAgdm9pZCBtYXJrQWxsTWlzc3Bl
bGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ1R5cGVNYXNrLCBSYW5nZSog
c3BlbGxpbmdSYW5nZSwgUmFuZ2UqIGdyYW1tYXJSYW5nZSk7CisgICAgdm9pZCBtYXJrQWxsTWlz
c3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ1R5cGVNYXNrLCBSYW5n
ZSogc3BlbGxpbmdSYW5nZSwgUmFuZ2UqIGF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UsIFJhbmdl
KiBncmFtbWFyUmFuZ2UpOwogI2lmIFBMQVRGT1JNKElPUykKICAgICBOT19SRVRVUk5fRFVFX1RP
X0FTU0VSVAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxs
Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKaW5k
ZXggYTViNjE2ZDI0OGUxMWM4NjQyNzk1MjYzZDg5Y2M0MGIxM2E5Y2ZmOS4uYzA1NGM1YWRlNTQw
OTA0MjIzYjkwOTNjMTQwYTM1ODY2Njc5NjFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3Bl
bGxDaGVja2VyLmNwcApAQCAtNDAsOCArNDAsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVNwZWxsQ2hlY2tSZXF1ZXN0OjpTcGVsbENoZWNrUmVxdWVzdChSZWY8UmFuZ2U+JiYgY2hlY2tp
bmdSYW5nZSwgUmVmPFJhbmdlPiYmIHBhcmFncmFwaFJhbmdlLCBjb25zdCBTdHJpbmcmIHRleHQs
IFRleHRDaGVja2luZ1R5cGVNYXNrIG1hc2ssIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHByb2Nl
c3NUeXBlKQorU3BlbGxDaGVja1JlcXVlc3Q6OlNwZWxsQ2hlY2tSZXF1ZXN0KFJlZjxSYW5nZT4m
JiBjaGVja2luZ1JhbmdlLCBSZWY8UmFuZ2U+JiYgYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSwg
UmVmPFJhbmdlPiYmIHBhcmFncmFwaFJhbmdlLCBjb25zdCBTdHJpbmcmIHRleHQsIFRleHRDaGVj
a2luZ1R5cGVNYXNrIG1hc2ssIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHByb2Nlc3NUeXBlKQog
ICAgIDogbV9jaGVja2luZ1JhbmdlKFdURk1vdmUoY2hlY2tpbmdSYW5nZSkpCisgICAgLCBtX2F1
dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UoV1RGTW92ZShhdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdl
KSkKICAgICAsIG1fcGFyYWdyYXBoUmFuZ2UoV1RGTW92ZShwYXJhZ3JhcGhSYW5nZSkpCiAgICAg
LCBtX3Jvb3RFZGl0YWJsZUVsZW1lbnQobV9jaGVja2luZ1JhbmdlLT5zdGFydENvbnRhaW5lcigp
LnJvb3RFZGl0YWJsZUVsZW1lbnQoKSkKICAgICAsIG1fcmVxdWVzdERhdGEodW5yZXF1ZXN0ZWRU
ZXh0Q2hlY2tpbmdTZXF1ZW5jZSwgdGV4dCwgbWFzaywgcHJvY2Vzc1R5cGUpCkBAIC01MCwxMyAr
NTEsMTMgQEAgU3BlbGxDaGVja1JlcXVlc3Q6OlNwZWxsQ2hlY2tSZXF1ZXN0KFJlZjxSYW5nZT4m
JiBjaGVja2luZ1JhbmdlLCBSZWY8UmFuZ2U+JiYgcGEKIAogU3BlbGxDaGVja1JlcXVlc3Q6On5T
cGVsbENoZWNrUmVxdWVzdCgpID0gZGVmYXVsdDsKIAotUmVmUHRyPFNwZWxsQ2hlY2tSZXF1ZXN0
PiBTcGVsbENoZWNrUmVxdWVzdDo6Y3JlYXRlKFRleHRDaGVja2luZ1R5cGVNYXNrIHRleHRDaGVj
a2luZ09wdGlvbnMsIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHByb2Nlc3NUeXBlLCBSZWY8UmFu
Z2U+JiYgY2hlY2tpbmdSYW5nZSwgUmVmPFJhbmdlPiYmIHBhcmFncmFwaFJhbmdlKQorUmVmUHRy
PFNwZWxsQ2hlY2tSZXF1ZXN0PiBTcGVsbENoZWNrUmVxdWVzdDo6Y3JlYXRlKFRleHRDaGVja2lu
Z1R5cGVNYXNrIHRleHRDaGVja2luZ09wdGlvbnMsIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHBy
b2Nlc3NUeXBlLCBSZWY8UmFuZ2U+JiYgY2hlY2tpbmdSYW5nZSwgUmVmPFJhbmdlPiYmIGF1dG9t
YXRpY1JlcGxhY2VtZW50UmFuZ2UsIFJlZjxSYW5nZT4mJiBwYXJhZ3JhcGhSYW5nZSkKIHsKICAg
ICBTdHJpbmcgdGV4dCA9IGNoZWNraW5nUmFuZ2UtPnRleHQoKTsKICAgICBpZiAoIXRleHQubGVu
Z3RoKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3BlbGxDaGVja1JlcXVlc3QoV1RGTW92ZShjaGVja2luZ1JhbmdlKSwgV1RGTW92ZShwYXJh
Z3JhcGhSYW5nZSksIHRleHQsIHRleHRDaGVja2luZ09wdGlvbnMsIHByb2Nlc3NUeXBlKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3BlbGxDaGVja1JlcXVlc3QoV1RGTW92ZShjaGVja2lu
Z1JhbmdlKSwgV1RGTW92ZShhdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlKSwgV1RGTW92ZShwYXJh
Z3JhcGhSYW5nZSksIHRleHQsIHRleHRDaGVja2luZ09wdGlvbnMsIHByb2Nlc3NUeXBlKSk7CiB9
CiAKIGNvbnN0IFRleHRDaGVja2luZ1JlcXVlc3REYXRhJiBTcGVsbENoZWNrUmVxdWVzdDo6ZGF0
YSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tl
ci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaAppbmRleCBhMjNjMThj
YzBmMTVmY2E1MjYwNWU0MWE3NzE4ODk4NjBkODQ2YTAzLi4wNTk0NTM2NmNjOTgxNDQwMWNkODgy
ZjBjMWQ3MGU1MjYyMDdjOGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nw
ZWxsQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmgK
QEAgLTQ0LDExICs0NCwxMiBAQCBjbGFzcyBTcGVsbENoZWNrZXI7CiAKIGNsYXNzIFNwZWxsQ2hl
Y2tSZXF1ZXN0IDogcHVibGljIFRleHRDaGVja2luZ1JlcXVlc3QgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWZQdHI8U3BlbGxDaGVja1JlcXVlc3Q+IGNyZWF0ZShUZXh0Q2hlY2tpbmdUeXBlTWFz
aywgVGV4dENoZWNraW5nUHJvY2Vzc1R5cGUsIFJlZjxSYW5nZT4mJiBjaGVja2luZ1JhbmdlLCBS
ZWY8UmFuZ2U+JiYgcGFyYWdyYXBoUmFuZ2UpOworICAgIHN0YXRpYyBSZWZQdHI8U3BlbGxDaGVj
a1JlcXVlc3Q+IGNyZWF0ZShUZXh0Q2hlY2tpbmdUeXBlTWFzaywgVGV4dENoZWNraW5nUHJvY2Vz
c1R5cGUsIFJlZjxSYW5nZT4mJiBjaGVja2luZ1JhbmdlLCBSZWY8UmFuZ2U+JiYgYXV0b21hdGlj
UmVwbGFjZW1lbnRSYW5nZSwgUmVmPFJhbmdlPiYmIHBhcmFncmFwaFJhbmdlKTsKICAgICB2aXJ0
dWFsIH5TcGVsbENoZWNrUmVxdWVzdCgpOwogCiAgICAgUmFuZ2UmIGNoZWNraW5nUmFuZ2UoKSBj
b25zdCB7IHJldHVybiBtX2NoZWNraW5nUmFuZ2UuZ2V0KCk7IH0KICAgICBSYW5nZSYgcGFyYWdy
YXBoUmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhcmFncmFwaFJhbmdlLmdldCgpOyB9CisgICAg
UmFuZ2UmIGF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX2F1dG9t
YXRpY1JlcGxhY2VtZW50UmFuZ2UuZ2V0KCk7IH0KICAgICBFbGVtZW50KiByb290RWRpdGFibGVF
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9yb290RWRpdGFibGVFbGVtZW50LmdldCgpOyB9CiAK
ICAgICB2b2lkIHNldENoZWNrZXJBbmRTZXF1ZW5jZShTcGVsbENoZWNrZXIqLCBpbnQgc2VxdWVu
Y2UpOwpAQCAtNjAsMTAgKzYxLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENhbmNlbCgpIG92
ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIFNwZWxsQ2hlY2tSZXF1ZXN0KFJlZjxSYW5nZT4mJiBj
aGVja2luZ1JhbmdlLCBSZWY8UmFuZ2U+JiYgcGFyYWdyYXBoUmFuZ2UsIGNvbnN0IFN0cmluZyYs
IFRleHRDaGVja2luZ1R5cGVNYXNrLCBUZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSk7CisgICAgU3Bl
bGxDaGVja1JlcXVlc3QoUmVmPFJhbmdlPiYmIGNoZWNraW5nUmFuZ2UsIFJlZjxSYW5nZT4mJiBh
dXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlLCBSZWY8UmFuZ2U+JiYgcGFyYWdyYXBoUmFuZ2UsIGNv
bnN0IFN0cmluZyYsIFRleHRDaGVja2luZ1R5cGVNYXNrLCBUZXh0Q2hlY2tpbmdQcm9jZXNzVHlw
ZSk7CiAKICAgICBTcGVsbENoZWNrZXIqIG1fY2hlY2tlciB7IG51bGxwdHIgfTsKICAgICBSZWY8
UmFuZ2U+IG1fY2hlY2tpbmdSYW5nZTsKKyAgICBSZWY8UmFuZ2U+IG1fYXV0b21hdGljUmVwbGFj
ZW1lbnRSYW5nZTsKICAgICBSZWY8UmFuZ2U+IG1fcGFyYWdyYXBoUmFuZ2U7CiAgICAgUmVmUHRy
PEVsZW1lbnQ+IG1fcm9vdEVkaXRhYmxlRWxlbWVudDsKICAgICBUZXh0Q2hlY2tpbmdSZXF1ZXN0
RGF0YSBtX3JlcXVlc3REYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tp
bmdIZWxwZXIuY3BwCmluZGV4IGVkOWJlZTQ5Y2E3MjJmM2Y4NjhhNGE1OTI1YjhjOTk3NGUzMGZj
OTIuLjcyNWQwMzNlZDZiOWIwN2ViZTk5ZTJiYTMyZjgzNDFlN2FlZWMyMjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKQEAgLTExNywxMiArMTE3
LDE2IEBAIHN0YXRpYyBSZWY8UmFuZ2U+IGV4cGFuZFRvUGFyYWdyYXBoQm91bmRhcnkoUmFuZ2Um
IHJhbmdlKQogICAgIHJldHVybiBwYXJhZ3JhcGhSYW5nZTsKIH0KIAotVGV4dENoZWNraW5nUGFy
YWdyYXBoOjpUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoUmVmPFJhbmdlPiYmIGNoZWNraW5nUmFuZ2Us
IFJhbmdlKiBwYXJhZ3JhcGhSYW5nZSkKK1RleHRDaGVja2luZ1BhcmFncmFwaDo6VGV4dENoZWNr
aW5nUGFyYWdyYXBoKFJlZjxSYW5nZT4mJiBjaGVja2luZ0FuZEF1dG9tYXRpY1JlcGxhY2VtZW50
UmFuZ2UpCisgICAgOiBtX2NoZWNraW5nUmFuZ2UoY2hlY2tpbmdBbmRBdXRvbWF0aWNSZXBsYWNl
bWVudFJhbmdlLmNvcHlSZWYoKSkKKyAgICAsIG1fYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZShj
aGVja2luZ0FuZEF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UuY29weVJlZigpKQoreworfQorCitU
ZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OlRleHRDaGVja2luZ1BhcmFncmFwaChSZWY8UmFuZ2U+JiYg
Y2hlY2tpbmdSYW5nZSwgUmVmPFJhbmdlPiYmIGF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UsIFJl
ZlB0cjxSYW5nZT4mJiBwYXJhZ3JhcGhSYW5nZSkKICAgICA6IG1fY2hlY2tpbmdSYW5nZShXVEZN
b3ZlKGNoZWNraW5nUmFuZ2UpKQotICAgICwgbV9wYXJhZ3JhcGhSYW5nZShwYXJhZ3JhcGhSYW5n
ZSkKLSAgICAsIG1fY2hlY2tpbmdTdGFydCgtMSkKLSAgICAsIG1fY2hlY2tpbmdFbmQoLTEpCi0g
ICAgLCBtX2NoZWNraW5nTGVuZ3RoKC0xKQorICAgICwgbV9hdXRvbWF0aWNSZXBsYWNlbWVudFJh
bmdlKFdURk1vdmUoYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSkpCisgICAgLCBtX3BhcmFncmFw
aFJhbmdlKFdURk1vdmUocGFyYWdyYXBoUmFuZ2UpKQogewogfQogCkBAIC0yMTEsNiArMjE1LDI2
IEBAIGludCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmNoZWNraW5nTGVuZ3RoKCkgY29uc3QKICAg
ICByZXR1cm4gbV9jaGVja2luZ0xlbmd0aDsKIH0KIAoraW50IFRleHRDaGVja2luZ1BhcmFncmFw
aDo6YXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpIGNvbnN0Cit7CisgICAgaWYgKG1fYXV0b21h
dGljUmVwbGFjZW1lbnRTdGFydCAhPSAtMSkKKyAgICAgICAgcmV0dXJuIG1fYXV0b21hdGljUmVw
bGFjZW1lbnRTdGFydDsKKworICAgIGF1dG8gc3RhcnRPZmZzZXRSYW5nZSA9IFJhbmdlOjpjcmVh
dGUocGFyYWdyYXBoUmFuZ2UoKS5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIHBhcmFncmFw
aFJhbmdlKCkuc3RhcnRQb3NpdGlvbigpLCBtX2F1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UtPnN0
YXJ0UG9zaXRpb24oKSk7CisgICAgbV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0ID0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFydE9mZnNldFJhbmdlLnB0cigpKTsKKyAgICByZXR1cm4g
bV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0OworfQorCitpbnQgVGV4dENoZWNraW5nUGFyYWdy
YXBoOjphdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCgpIGNvbnN0Cit7CisgICAgaWYgKG1fYXV0
b21hdGljUmVwbGFjZW1lbnRMZW5ndGggIT0gLTEpCisgICAgICAgIHJldHVybiBtX2F1dG9tYXRp
Y1JlcGxhY2VtZW50TGVuZ3RoOworCisgICAgYXV0byBlbmRPZmZzZXRSYW5nZSA9IFJhbmdlOjpj
cmVhdGUocGFyYWdyYXBoUmFuZ2UoKS5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIHBhcmFn
cmFwaFJhbmdlKCkuc3RhcnRQb3NpdGlvbigpLCBtX2F1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2Ut
PmVuZFBvc2l0aW9uKCkpOworICAgIG1fYXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGggPSBUZXh0
SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZE9mZnNldFJhbmdlLnB0cigpKSAtIGF1dG9tYXRpY1Jl
cGxhY2VtZW50U3RhcnQoKTsKKyAgICByZXR1cm4gbV9hdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0
aDsKK30KKwogVGV4dENoZWNraW5nSGVscGVyOjpUZXh0Q2hlY2tpbmdIZWxwZXIoRWRpdG9yQ2xp
ZW50JiBjbGllbnQsIFJhbmdlJiByYW5nZSkKICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAs
IG1fcmFuZ2UocmFuZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRD
aGVja2luZ0hlbHBlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxw
ZXIuaAppbmRleCA2YjBmNDNmY2Y3NGFlYWU3MTU2Y2E5MjQ5ODYzYWQ3MmMwNTRkZDdlLi5iYzc5
YmFkNzA2NGU1MzhmZjExNWQyMDM0NjhmYmFiOWE2NGNjZTEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmgKQEAgLTMzLDcgKzMzLDggQEAgc3RydWN0IFRl
eHRDaGVja2luZ1Jlc3VsdDsKIAogY2xhc3MgVGV4dENoZWNraW5nUGFyYWdyYXBoIHsKIHB1Ymxp
YzoKLSAgICBleHBsaWNpdCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoUmVmPFJhbmdlPiYmIGNoZWNr
aW5nUmFuZ2UsIFJhbmdlKiBwYXJhZ3JhcGhSYW5nZSA9IG51bGxwdHIpOworICAgIGV4cGxpY2l0
IFRleHRDaGVja2luZ1BhcmFncmFwaChSZWY8UmFuZ2U+JiYgY2hlY2tpbmdBbmRBdXRvbWF0aWNS
ZXBsYWNlbWVudFJhbmdlKTsKKyAgICBleHBsaWNpdCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoUmVm
PFJhbmdlPiYmIGNoZWNraW5nUmFuZ2UsIFJlZjxSYW5nZT4mJiBhdXRvbWF0aWNSZXBsYWNlbWVu
dFJhbmdlLCBSZWZQdHI8UmFuZ2U+JiYgcGFyYWdyYXBoUmFuZ2UpOwogCiAgICAgaW50IHJhbmdl
TGVuZ3RoKCkgY29uc3Q7CiAgICAgUmVmPFJhbmdlPiBzdWJyYW5nZShpbnQgY2hhcmFjdGVyT2Zm
c2V0LCBpbnQgY2hhcmFjdGVyQ291bnQpIGNvbnN0OwpAQCAtNTUsNiArNTYsMTEgQEAgcHVibGlj
OgogICAgIGludCBjaGVja2luZ0xlbmd0aCgpIGNvbnN0OwogICAgIFN0cmluZyBjaGVja2luZ1N1
YnN0cmluZygpIGNvbnN0IHsgcmV0dXJuIHRleHRTdWJzdHJpbmcoY2hlY2tpbmdTdGFydCgpLCBj
aGVja2luZ0xlbmd0aCgpKTsgfQogCisgICAgLy8gRGV0ZXJtaW5lcyB0aGUgcmFuZ2UgaW4gd2hp
Y2ggd2UgYWxsb3cgYXV0b21hdGljIHRleHQgcmVwbGFjZW1lbnQuIElmIGFuIGF1dG9tYXRpYyBy
ZXBsYWNlbWVudCByYW5nZSBpcyBub3QgcGFzc2VkIHRvIHRoZQorICAgIC8vIHRleHQgY2hlY2tp
bmcgcGFyYWdyYXBoLCB0aGlzIGRlZmF1bHRzIHRvIHRoZSBzcGVsbCBjaGVja2luZyByYW5nZS4K
KyAgICBpbnQgYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpIGNvbnN0OworICAgIGludCBhdXRv
bWF0aWNSZXBsYWNlbWVudExlbmd0aCgpIGNvbnN0OworCiAgICAgYm9vbCBjaGVja2luZ1Jhbmdl
TWF0Y2hlcyhpbnQgbG9jYXRpb24sIGludCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJuIGxvY2F0aW9u
ID09IGNoZWNraW5nU3RhcnQoKSAmJiBsZW5ndGggPT0gY2hlY2tpbmdMZW5ndGgoKTsgfQogICAg
IGJvb2wgaXNDaGVja2luZ1JhbmdlQ292ZXJlZEJ5KGludCBsb2NhdGlvbiwgaW50IGxlbmd0aCkg
Y29uc3QgeyByZXR1cm4gbG9jYXRpb24gPD0gY2hlY2tpbmdTdGFydCgpICYmIGxvY2F0aW9uICsg
bGVuZ3RoID49IGNoZWNraW5nU3RhcnQoKSArIGNoZWNraW5nTGVuZ3RoKCk7IH0KICAgICBib29s
IGNoZWNraW5nUmFuZ2VDb3ZlcnMoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKSBjb25zdCB7IHJl
dHVybiBsb2NhdGlvbiA8IGNoZWNraW5nRW5kKCkgJiYgbG9jYXRpb24gKyBsZW5ndGggPiBjaGVj
a2luZ1N0YXJ0KCk7IH0KQEAgLTY1LDEyICs3MSwxNSBAQCBwcml2YXRlOgogICAgIFJhbmdlJiBv
ZmZzZXRBc1JhbmdlKCkgY29uc3Q7CiAKICAgICBSZWY8UmFuZ2U+IG1fY2hlY2tpbmdSYW5nZTsK
KyAgICBSZWY8UmFuZ2U+IG1fYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZTsKICAgICBtdXRhYmxl
IFJlZlB0cjxSYW5nZT4gbV9wYXJhZ3JhcGhSYW5nZTsKICAgICBtdXRhYmxlIFJlZlB0cjxSYW5n
ZT4gbV9vZmZzZXRBc1JhbmdlOwogICAgIG11dGFibGUgU3RyaW5nIG1fdGV4dDsKLSAgICBtdXRh
YmxlIGludCBtX2NoZWNraW5nU3RhcnQ7Ci0gICAgbXV0YWJsZSBpbnQgbV9jaGVja2luZ0VuZDsK
LSAgICBtdXRhYmxlIGludCBtX2NoZWNraW5nTGVuZ3RoOworICAgIG11dGFibGUgaW50IG1fY2hl
Y2tpbmdTdGFydCB7IC0xIH07CisgICAgbXV0YWJsZSBpbnQgbV9jaGVja2luZ0VuZCB7IC0xIH07
CisgICAgbXV0YWJsZSBpbnQgbV9jaGVja2luZ0xlbmd0aCB7IC0xIH07CisgICAgbXV0YWJsZSBp
bnQgbV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0IHsgLTEgfTsKKyAgICBtdXRhYmxlIGludCBt
X2F1dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3RoIHsgLTEgfTsKIH07CiAKIGNsYXNzIFRleHRDaGVj
a2luZ0hlbHBlciB7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggYzk2MWE3NjVjNDY2NWQ2MDZkMTY2MjVjOWU0YjdjOGQyNjI0MDBkMy4uMzJkNmQ1
ZTkwYjQ1YzUwMjdkZGE4ZmU1MGIyMzU2MDNkOWM4NzU2NiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDE4LTA2LTMw
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNP
U10gVGV4dCByZXBsYWNlbWVudHMgdGhhdCBlbmQgd2l0aCBzeW1ib2xzIGFyZSBleHBhbmRlZCBp
bW1lZGlhdGVseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg3MjI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MTExMjQzMz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIHRlc3Rpbmcgc3VwcG9y
dCBmb3IgbW9ja2luZyBOU1NwZWxsQ2hlY2tlcidzIHRleHQgY2hlY2tpbmcgcmVzdWx0cy4gU2Vl
IGJlbG93IGZvciBtb3JlIGRldGFpbHMsIGFuZCB0aGUgbmV3CisgICAgICAgIGxheW91dCB0ZXN0
IGZvciBhbiBleGFtcGxlIG9mIGl0cyB1c2FnZS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChzZXRTcGVsbENoZWNrZXJUZXh0
UmVwbGFjZW1lbnRzQ2FsbGJhY2spOgorCisgICAgICAgIEFkZCBiaW5kaW5ncyBzdXBwb3J0IGlu
IFRlc3RSdW5uZXIgdG8gc3BlY2lmeSBhIHNldCBvZiB0ZXh0IHJlcGxhY2VtZW50IG1hcHBpbmdz
LiBFYWNoIGVudHJ5IGluIHRoZSBkaWN0aW9uYXJ5CisgICAgICAgIG1hcHMgYSBzdHJpbmcgcmVw
cmVzZW50aW5nIGFuIGlucHV0IHRvIHRoZSBOU1NwZWxsQ2hlY2tlciB0byBzb21lIGluZm9ybWF0
aW9uIGRlc2NyaWJpbmcgdGhlIHNwZWxsIGNoZWNraW5nCisgICAgICAgIHJlc3VsdCB0aGF0IExh
eW91dFRlc3RTcGVsbENoZWNrZXIgd2lsbCByZXR1cm4uCisKKyAgICAgICAgKFRlc3RSdW5uZXI6
OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5o
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAg
ICAgKHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZyk6CisKKyAgICAg
ICAgUmVzdG9yZSB0aGUgb3JpZ2luYWwgc2hhcmVkIE5TU3BlbGxjaGVja2VyIGJlZm9yZSB0cmFu
c2l0aW9uaW5nIHRvIHRoZSBuZXh0IGxheW91dCB0ZXN0LCBpZiBuZWVkZWQuCisKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW06IFJlbW92
ZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW06CisgICAg
ICAgIChUZXN0UnVubmVyOjpzZXRTcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZCk6CisgICAgICAg
IChUZXN0UnVubmVyOjpzZXRTcGVsbENoZWNrZXJUZXh0UmVwbGFjZW1lbnRzKToKKworICAgICAg
ICBUaGVzZSB0ZXN0UnVubmVyIG1ldGhvZHMgZW5zdXJlIHRoYXQgYC1bTlNTcGVsbENoZWNrZXIg
c2hhcmVkU3BlbGxDaGVja2VyXWAgaXMgc3dpenpsZWQgdG8gcmV0dXJuIG91ciBtb2NrCisgICAg
ICAgIExheW91dFRlc3RTcGVsbENoZWNrZXIgaW5zdGFuY2UgYmVmb3JlIGNhbGxpbmcgaW50byBp
dC4KKworICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hl
Y2tlci5oOiBSZW5hbWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJU
cmVlU3BlbGxDaGVja2VyLmguCisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlv
dXRUZXN0U3BlbGxDaGVja2VyLm1tOiBBZGRlZC4KKworICAgICAgICBNb3ZlZCBEdW1wUmVuZGVy
VHJlZVNwZWxsQ2hlY2tlciB0byBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLCBhbmQgbWFkZSBpdCBj
b21waWxlIGZvciBib3RoIFdlYktpdFRlc3RSdW5uZXIKKyAgICAgICAgKG1vZGVybiBXZWJLaXQp
IGFuZCBEdW1wUmVuZGVyVHJlZSAobGVnYWN5IFdlYktpdCkgYnkgcHV0dGluZyBpdCBpbiBUZXN0
UnVubmVyU2hhcmVkLgorCisgICAgICAgIChleGlzdGluZ0dsb2JhbExheW91dFRlc3RTcGVsbENo
ZWNrZXIpOgorICAgICAgICAoZW5zdXJlR2xvYmFsTGF5b3V0VGVzdFNwZWxsQ2hlY2tlcik6Cisg
ICAgICAgIChzdHJpbmdGb3JDb3JyZWN0aW9uUmVzcG9uc2UpOgorICAgICAgICAobnNUZXh0Q2hl
Y2tpbmdUeXBlKToKKyAgICAgICAgKC1bTGF5b3V0VGVzdFRleHRDaGVja2luZ1Jlc3VsdCBpbml0
V2l0aFR5cGU6cmFuZ2U6cmVwbGFjZW1lbnQ6XSk6CisgICAgICAgICgtW0xheW91dFRlc3RUZXh0
Q2hlY2tpbmdSZXN1bHQgcmFuZ2VdKToKKyAgICAgICAgKC1bTGF5b3V0VGVzdFRleHRDaGVja2lu
Z1Jlc3VsdCByZXN1bHRUeXBlXSk6CisgICAgICAgICgtW0xheW91dFRlc3RUZXh0Q2hlY2tpbmdS
ZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddKToKKyAgICAgICAgKC1bTGF5b3V0VGVzdFRleHRDaGVj
a2luZ1Jlc3VsdCBkZXNjcmlwdGlvbl0pOgorCisgICAgICAgIExheW91dFRlc3RUZXh0Q2hlY2tp
bmdSZXN1bHQgcmVwcmVzZW50cyBhIGZha2UgTlNUZXh0Q2hlY2tpbmdSZXN1bHQgY29udGFpbmlu
ZyBzcGVsbCBjaGVja2luZyByZXN1bHRzIHN1cHBsaWVkCisgICAgICAgIGJ5IHRoZSBsYXlvdXQg
dGVzdC4KKworICAgICAgICAoK1tMYXlvdXRUZXN0U3BlbGxDaGVja2VyIGluc3RhbGxJZk5lY2Vz
c2FyeV0pOgorICAgICAgICAoK1tMYXlvdXRUZXN0U3BlbGxDaGVja2VyIHVuaW5zdGFsbEFuZFJl
c2V0XSk6CisKKyAgICAgICAgSGVscGVyIG1ldGhvZHMgdG8gYmVnaW4gYW5kIGVuZCBzd2l6emxp
bmcgdGhlIHNoYXJlZCBOU1NwZWxsQ2hlY2tlci4KKworICAgICAgICAoLVtMYXlvdXRUZXN0U3Bl
bGxDaGVja2VyIHJlc2V0XSk6CisKKyAgICAgICAgUmVzZXRzIHRoZSBzdGF0ZSBvZiB0aGUgTGF5
b3V0VGVzdFNwZWxsQ2hlY2tlciAodGhpcyBlbnRhaWxzIGNsZWFyaW5nIHRoZSBmYWtlIHJlcGxh
Y2VtZW50cyBkaWN0aW9uYXJ5IGFuZAorICAgICAgICB0dXJuaW5nIG9mZiBsb2dnaW5nIGZvciBy
ZWNvcmRlZCBzcGVsbGNoZWNraW5nIHJlc3BvbnNlcykuCisKKyAgICAgICAgKC1bTGF5b3V0VGVz
dFNwZWxsQ2hlY2tlciByZXBsYWNlbWVudHNdKToKKyAgICAgICAgKC1bTGF5b3V0VGVzdFNwZWxs
Q2hlY2tlciBzZXRSZXBsYWNlbWVudHM6XSk6CisgICAgICAgICgtW0xheW91dFRlc3RTcGVsbENo
ZWNrZXIgc2V0UmVwbGFjZW1lbnRzRnJvbUpTT2JqZWN0OmluQ29udGV4dDpdKToKKworICAgICAg
ICBIZWxwZXIgbWV0aG9kIHRvIHRha2UgYSBgSlNPYmplY3RSZWZgIHN1cHBsaWVkIGJ5IHRoZSB0
ZXN0IHJ1bm5lciBhbmQgdHJhbnNmb3JtIGl0IGludG8gYSBtYXAgb2Ygc3BlbGwgY2hlY2tpbmcK
KyAgICAgICAgc3RyaW5nIGlucHV0cyB0byBMYXlvdXRUZXN0VGV4dENoZWNraW5nUmVzdWx0cy4K
KworICAgICAgICAoLVtMYXlvdXRUZXN0U3BlbGxDaGVja2VyIGNoZWNrU3RyaW5nOnJhbmdlOnR5
cGVzOm9wdGlvbnM6aW5TcGVsbERvY3VtZW50V2l0aFRhZzpvcnRob2dyYXBoeTp3b3JkQ291bnQ6
XSk6CisKKyAgICAgICAgQ29uc3VsdCB0aGUgdGV4dCByZXBsYWNlbWVudCBtYXAgYW5kIGJhaWwg
ZWFybHkgaWYgYSBtYXRjaCBpcyBmb3VuZCwgYmVmb3JlIGNhbGxpbmcgaW50byByZWFsIE5TU3Bl
bGxDaGVja2VyCisgICAgICAgIGxvZ2ljIHRvIHBlcmZvcm0gc3BlbGxjaGVja2luZy4KKworICAg
ICAgICAoLVtMYXlvdXRUZXN0U3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlOnRvQ29ycmVjdGlv
bjpmb3JXb3JkOmxhbmd1YWdlOmluU3BlbGxEb2N1bWVudFdpdGhUYWc6XSk6CisKKyAgICAgICAg
UmVpbXBsZW1lbnQgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uYWxpdHkgaW4gRHVtcFJlbmRlclRyZWVT
cGVsbENoZWNrZXIgdG8gbWFrZSBgLXJlY29yZFJlc3BvbnNlOuKApmAgcHJpbnQgdG8gc3Rkb3V0
CisgICAgICAgIGJ5IG92ZXJyaWRpbmcgdGhlIG1ldGhvZCBhbmQgcHJpbnRpbmcgaWYgdGhlIGAt
c3BlbGxDaGVja2VyTG9nZ2luZ0VuYWJsZWRgIHByb3BlcnR5IGhhcyBiZWVuIHNldCB0byBZRVMu
CisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKwogMjAxOC0wNi0zMCAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0
YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0NNYWtlXSBidWlsZC13ZWJraXQgc2hvdWxk
IGJlIGFibGUgdG8gZW5hYmxlIGFkZHJlc3Mgc2FuaXRpemVyCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBkYzliOWZiOGI4NzMyMWY2NDM0ZTQ2NmY0NDBiMTdkNTY0YzhiYTYwLi4yODdk
MjZhNjdjMDg4Y2RiNjYxOGFlZTRlMTIwOWM1YjRmMDZkMTI5IDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTc3LDcgKzc3LDYgQEAKIAkJMjlDRkJBMkUxMjI3M0ExMDAwQkMzMEMwIC8q
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMjlDRkJBMkQxMjI3M0ExMDAwQkMzMEMwIC8qIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyTWFjLm1tICovOyB9OwogCQkyQ0U4OEZBMjE3MTI0RDhDMDA3MzRGQzAg
LyogSmF2YVNjcmlwdFRocmVhZGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyQ0U4OEZBMTE3MTI0Q0VFMDA3MzRGQzAgLyogSmF2YVNjcmlwdFRo
cmVhZGluZy5jcHAgKi87IH07CiAJCTJENDAzRjFCMTUwODcyMDkwMDUzNThEMiAvKiBMYXlvdXRU
ZXN0SGVscGVyLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyRDQwM0VBMjE1MDg3MTQyMDA1MzU4RDIgLyogTGF5b3V0VGVzdEhlbHBlci5tICovOyB9Owot
CQkyREEyRTNBNTFFMUJBNTQxMDBBM0JCRDAgLyogRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREEyRTNB
NDFFMUJBNTQxMDBBM0JCRDAgLyogRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW0gKi87IH07
CiAJCTMxMTE3QjNEMTVEOUE1NkEwMDE2M0JDOCAvKiBNb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlk
ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTEx
N0IzQjE1RDlBNTZBMDAxNjNCQzggLyogTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tICov
OyB9OwogCQkzMTI5NDNGOTFFNzFGMkI0MDAxRUUyQ0MgLyogSU9TTGF5b3V0VGVzdENvbW11bmlj
YXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzE0OEEwNTUxRTZGOTBGNDAwRDNCMzE2IC8qIElPU0xheW91dFRlc3RDb21tdW5pY2F0aW9uLmNw
cCAqLzsgfTsKIAkJNDQ2NENBQkUxQzIwQTA4QjAwRTVCQjU1IC8qIER1bXBSZW5kZXJUcmVlQXBw
TWFpbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0
NjRDQUJEMUMyMEEwNzAwMEU1QkI1NSAvKiBEdW1wUmVuZGVyVHJlZUFwcE1haW4ubW0gKi87IH07
CkBAIC0xNDgsNiArMTQ3LDcgQEAKIAkJQzIzRUEyMDgxQkM5RjA1MTAwQzk4MEI3IC8qIEZvbnRX
aXRoRmVhdHVyZXMub3RmIGluIENvcHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMjNFQTIwNjFCQzlFQUJBMDBDOTgwQjcgLyogRm9udFdpdGhGZWF0dXJl
cy5vdGYgKi87IH07CiAJCUMyM0VBMjA5MUJDOUYwNTEwMEM5ODBCNyAvKiBGb250V2l0aEZlYXR1
cmVzLnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzIzRUEyMDcxQkM5RUFCQTAwQzk4MEI3IC8qIEZvbnRXaXRoRmVhdHVyZXMudHRmICov
OyB9OwogCQlFMUI3ODE2NTExQUYzMUI3MDA3RTFCQzIgLyogTW9ja0dlb2xvY2F0aW9uUHJvdmlk
ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUI3
ODA4NzExQUYxNjY5MDA3RTFCQzIgLyogTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIubW0gKi87IH07
CisJCUY0QzM1NzhEMjBFODQ0NEUwMEZBMDc0OCAvKiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRDMzU3ODgy
MEU4NDQyNzAwRkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIubW0gKi87IH07CiAJCUY0
RDQyMzYxMURENTA0ODIwMDY3ODI5MCAvKiBUZXh0SW5wdXRDb250cm9sbGVySU9TLm0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEQ0MjM1RjFERDUwNDUz
MDA2NzgyOTAgLyogVGV4dElucHV0Q29udHJvbGxlcklPUy5tICovOyB9OwogLyogRW5kIFBCWEJ1
aWxkRmlsZSBzZWN0aW9uICovCiAKQEAgLTI4Miw4ICsyODIsNiBAQAogCQkyQ0U4OEZBMTE3MTI0
Q0VFMDA3MzRGQzAgLyogSmF2YVNjcmlwdFRocmVhZGluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKYXZhU2NyaXB0VGhyZWFkaW5nLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkQ0MDNFQTIxNTA4NzE0MjAwNTM1OEQyIC8qIExheW91dFRlc3RI
ZWxwZXIubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBuYW1lID0gTGF5b3V0VGVzdEhl
bHBlci5tOyBwYXRoID0gbWFjL0xheW91dFRlc3RIZWxwZXIubTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkQ0MDNGMTkxNTA4NzFGOTAwNTM1OEQyIC8qIExheW91dFRlc3RIZWxwZXIg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxl
ZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IExheW91dFRl
c3RIZWxwZXI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0JCTJEQTJFM0Ez
MUUxQkE1NDEwMEEzQkJEMCAvKiBEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5oOyBw
YXRoID0gbWFjL0R1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTJEQTJFM0E0MUUxQkE1NDEwMEEzQkJEMCAvKiBEdW1wUmVuZGVyVHJlZVNw
ZWxsQ2hlY2tlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IER1
bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLm1tOyBwYXRoID0gbWFjL0R1bXBSZW5kZXJUcmVlU3Bl
bGxDaGVja2VyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRURFMERBQTFGNTEz
MURFMDBENUY4REYgLyogQXBwS2l0VGVzdFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBcHBLaXRUZXN0
U1BJLmg7IHBhdGggPSBtYWMvQXBwS2l0VGVzdFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzMTExN0IzQTE1RDlBNTZBMDAxNjNCQzggLyogTW9ja1dlYk5vdGlmaWNhdGlvblBy
b3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1vY2tXZWJOb3RpZmlj
YXRpb25Qcm92aWRlci5oOyBwYXRoID0gbWFjL01vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTExN0IzQjE1RDlBNTZBMDAxNjNCQzgg
LyogTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBuYW1lID0gTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tOyBwYXRoID0g
bWFjL01vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTQxMiw2ICs0MTAsOCBAQAogCQlDMjNFQTIwNzFCQzlFQUJBMDBDOTgwQjcgLyog
Rm9udFdpdGhGZWF0dXJlcy50dGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBmaWxlOyBuYW1lID0gRm9udFdpdGhGZWF0dXJlcy50dGY7IHBhdGggPSBm
b250cy9Gb250V2l0aEZlYXR1cmVzLnR0Zjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTFCNzgwODUxMUFGMTY0MzAwN0UxQkMyIC8qIE1vY2tHZW9sb2NhdGlvblByb3ZpZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1vY2tHZW9sb2NhdGlvblByb3ZpZGVyLmg7
IHBhdGggPSBtYWMvTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTFCNzgwODcxMUFGMTY2OTAwN0UxQkMyIC8qIE1vY2tHZW9sb2NhdGlvblBy
b3ZpZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gTW9ja0dl
b2xvY2F0aW9uUHJvdmlkZXIubW07IHBhdGggPSBtYWMvTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0QzM1Nzg4MjBFODQ0MjcwMEZBMDc0
OCAvKiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBuYW1lID0gTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbTsgcGF0aCA9IC4uL1Rlc3RS
dW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRjRDMzU3ODkyMEU4NDQyNzAwRkEwNzQ4IC8qIExheW91dFRlc3RT
cGVsbENoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGF5b3V0VGVz
dFNwZWxsQ2hlY2tlci5oOyBwYXRoID0gLi4vVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRU
ZXN0U3BlbGxDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RDQyMzVG
MURENTA0NTMwMDY3ODI5MCAvKiBUZXh0SW5wdXRDb250cm9sbGVySU9TLm0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMub2JqYzsgbmFtZSA9IFRleHRJbnB1dENvbnRyb2xsZXJJT1MubTsgcGF0aCA9
IGlvcy9UZXh0SW5wdXRDb250cm9sbGVySU9TLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUY0RDQyMzYwMURENTA0NjkwMDY3ODI5MCAvKiBUZXh0SW5wdXRDb250cm9sbGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRJbnB1dENvbnRyb2xsZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24g
Ki8KQEAgLTY4Nyw2ICs2ODcsNyBAQAogCQkzMTQ4QTA2NTFFNkY5MEY0MDBEM0IzMTYgLyogVGVz
dFJ1bm5lclNoYXJlZCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJRjRCNkMzMTgyMEU4NDM4MjAwOEFDMjI1IC8qIGNvY29hICovLAogCQkJCTMxNDhBMDU1
MUU2RjkwRjQwMEQzQjMxNiAvKiBJT1NMYXlvdXRUZXN0Q29tbXVuaWNhdGlvbi5jcHAgKi8sCiAJ
CQkJMzE0OEEwNTYxRTZGOTBGNDAwRDNCMzE2IC8qIElPU0xheW91dFRlc3RDb21tdW5pY2F0aW9u
LmggKi8sCiAJCQkpOwpAQCAtNzc5LDggKzc4MCw2IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlB
OEI5MUFERjBDRjNCMzcyMDA4RjkxRkYgLyogRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLmggKi8s
CiAJCQkJQThCOTFBRDcwQ0YzQjMyRjAwOEY5MUZGIC8qIER1bXBSZW5kZXJUcmVlUGFzdGVib2Fy
ZC5tbSAqLywKLQkJCQkyREEyRTNBMzFFMUJBNTQxMDBBM0JCRDAgLyogRHVtcFJlbmRlclRyZWVT
cGVsbENoZWNrZXIuaCAqLywKLQkJCQkyREEyRTNBNDFFMUJBNTQxMDBBM0JCRDAgLyogRHVtcFJl
bmRlclRyZWVTcGVsbENoZWNrZXIubW0gKi8sCiAJCQkJQThCOTFBREQwQ0YzQjM3MjAwOEY5MUZG
IC8qIER1bXBSZW5kZXJUcmVlV2luZG93LmggKi8sCiAJCQkJQThCOTFBRDkwQ0YzQjMyRjAwOEY5
MUZGIC8qIER1bXBSZW5kZXJUcmVlV2luZG93Lm1tICovLAogCQkJKTsKQEAgLTgxNyw2ICs4MTYs
MTUgQEAKIAkJCW5hbWUgPSBQaXhlbER1bXA7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwog
CQl9OworCQlGNEI2QzMxODIwRTg0MzgyMDA4QUMyMjUgLyogY29jb2EgKi8gPSB7CisJCQlpc2Eg
PSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUY0QzM1Nzg5MjBFODQ0MjcwMEZBMDc0
OCAvKiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLmggKi8sCisJCQkJRjRDMzU3ODgyMEU4NDQyNzAw
RkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIubW0gKi8sCisJCQkpOworCQkJbmFtZSA9
IGNvY29hOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJRjRENDIzNUQxREQ0
Rjk5OTAwNjc4MjkwIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCkBAIC0xMDgxLDcgKzEwODksNiBAQAogCQkJCUJDQTE4QjdCMEM5QjA4RjEwMDExNDM2
OSAvKiBEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mby5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4
RDc5Q0VCMEZDMjhCMkMwMDRBQzhGRSAvKiBEdW1wUmVuZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJj
ZS5tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThCOTFBREEwQ0YzQjMyRjAwOEY5MUZGIC8qIER1bXBS
ZW5kZXJUcmVlUGFzdGVib2FyZC5tbSBpbiBTb3VyY2VzICovLAotCQkJCTJEQTJFM0E1MUUxQkE1
NDEwMEEzQkJEMCAvKiBEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUE4QjkxQURDMENGM0IzMkYwMDhGOTFGRiAvKiBEdW1wUmVuZGVyVHJlZVdpbmRvdy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUJDQTE4QjYyMEM5QjA4QzIwMDExNDM2OSAvKiBFZGl0aW5n
RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEI3MDBDOUIwOERCMDAxMTQzNjkg
LyogRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLApAQCAtMTA5Myw2ICsx
MTAwLDcgQEAKIAkJCQkyQ0U4OEZBMjE3MTI0RDhDMDA3MzRGQzAgLyogSmF2YVNjcmlwdFRocmVh
ZGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjE4RTcwNjFENkJBMDIzMDAyN0U1NDcgLyog
SlNVSVNjcmlwdENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYxOEU3MTMxRDZC
QzQzQTAwMjdFNTQ3IC8qIEpTV3JhcHBlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGNEMzNTc4
RDIwRTg0NDRFMDBGQTA3NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUUxQjc4MTY1MTFBRjMxQjcwMDdFMUJDMiAvKiBNb2NrR2VvbG9jYXRpb25Qcm92
aWRlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxMTE3QjNEMTVEOUE1NkEwMDE2M0JDOCAvKiBN
b2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEI3
MjBDOUIwOERCMDAxMTQzNjkgLyogTmF2aWdhdGlvbkNvbnRyb2xsZXIubSBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAppbmRleCBmOGFkOTUxNTE3NDBiNjZjNzQ2
OTJhZDUyZDM3NGEzMDVkYTQ0NjcxLi43ZThlYzliZDQ1YjBiNzVmNGU4ZTkyNmJhNWM3ZDYzOGU2
MjZlNDYzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcApAQCAtMTc4OCw2ICsxNzg4
LDE2IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkQ2Fs
bGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRTcGVsbENoZWNrZXJU
ZXh0UmVwbGFjZW1lbnRzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVm
IGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwg
Y29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQorewor
ICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpOworCisgICAgYXV0byogcnVubmVyID0gc3RhdGljX2Nhc3Q8VGVzdFJ1
bm5lcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgcnVubmVyLT5zZXRT
cGVsbENoZWNrZXJUZXh0UmVwbGFjZW1lbnRzKGNvbnRleHQsIEpTVmFsdWVUb09iamVjdChjb250
ZXh0LCBhcmd1bWVudHNbMF0sIG51bGxwdHIpKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIHNldE9wZW5QYW5lbEZpbGVz
Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09i
amVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJl
ZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIGlmIChhcmd1bWVu
dENvdW50ID09IDEpCkBAIC0yMjU1LDYgKzIyNjUsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBUZXN0
UnVubmVyOjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJydW5VSVNjcmlwdCIsIHJ1blVJ
U2NyaXB0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiaW1hZ2VDb3VudEluR2VuZXJhbFBh
c3RlYm9hcmQiLCBpbWFnZUNvdW50SW5HZW5lcmFsUGFzdGVib2FyZENhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CiAgICAgICAgIHsgInNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkIiwgc2V0U3BlbGxDaGVj
a2VyTG9nZ2luZ0VuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzZXRTcGVsbENo
ZWNrZXJUZXh0UmVwbGFjZW1lbnRzIiwgc2V0U3BlbGxDaGVja2VyVGV4dFJlcGxhY2VtZW50c0Nh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE9wZW5QYW5lbEZpbGVzIiwgc2V0T3BlblBh
bmVsRmlsZXNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJmb3JjZUltbWVkaWF0ZUNvbXBs
ZXRpb24iLCBmb3JjZUltbWVkaWF0ZUNvbXBsZXRpb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7IDAsIDAsIDAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5l
ci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCmluZGV4IDNlMzI4YjgyMjMy
M2ZlYzRiNGI1NGY3NzdhY2VkMjQzNDY0NmI2YzEuLmRiZjE0ZmViNjE3OGJjYWQ2Nzk2YTAxYzQ0
NTdhYjI1YmNkMjIxY2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5u
ZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgKQEAgLTM3Niw2ICsz
NzYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBkdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoKSBjb25z
dCB7IHJldHVybiBtX2R1bXBKU0NvbnNvbGVMb2dJblN0ZEVycjsgfQogCiAgICAgdm9pZCBzZXRT
cGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZChib29sKTsKKyAgICB2b2lkIHNldFNwZWxsQ2hlY2tl
clRleHRSZXBsYWNlbWVudHMoSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiByZXBsYWNlbWVudHMp
OwogCiAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBvcGVuUGFuZWxGaWxlcygp
IGNvbnN0IHsgcmV0dXJuIG1fb3BlblBhbmVsRmlsZXM7IH0KICAgICB2b2lkIHNldE9wZW5QYW5l
bEZpbGVzKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggZDY5Njc3YmQ5ZWU3M2E4OWQyZjIwNjQ1MDQ4ZGM3
MDJjOTZmNzNiOS4uMmQ1OWRhNzhiNTIxMDgwODQ1NWY2NGY5NjlhOGM2MmVlMzc5Y2RkOCAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtMzQsMTMgKzM0
LDEzIEBACiAjaW1wb3J0ICJEZWZhdWx0UG9saWN5RGVsZWdhdGUuaCIKICNpbXBvcnQgIkR1bXBS
ZW5kZXJUcmVlRHJhZ2dpbmdJbmZvLmgiCiAjaW1wb3J0ICJEdW1wUmVuZGVyVHJlZVBhc3RlYm9h
cmQuaCIKLSNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLmgiCiAjaW1wb3J0ICJE
dW1wUmVuZGVyVHJlZVdpbmRvdy5oIgogI2ltcG9ydCAiRWRpdGluZ0RlbGVnYXRlLmgiCiAjaW1w
b3J0ICJFdmVudFNlbmRpbmdDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJGcmFtZUxvYWREZWxlZ2F0
ZS5oIgogI2ltcG9ydCAiSGlzdG9yeURlbGVnYXRlLmgiCiAjaW1wb3J0ICJKYXZhU2NyaXB0VGhy
ZWFkaW5nLmgiCisjaW1wb3J0ICJMYXlvdXRUZXN0U3BlbGxDaGVja2VyLmgiCiAjaW1wb3J0ICJN
b2NrR2VvbG9jYXRpb25Qcm92aWRlci5oIgogI2ltcG9ydCAiTW9ja1dlYk5vdGlmaWNhdGlvblBy
b3ZpZGVyLmgiCiAjaW1wb3J0ICJOYXZpZ2F0aW9uQ29udHJvbGxlci5oIgpAQCAtMTg2OCw3ICsx
ODY4LDkgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVU
ZXN0aW5nKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb24KIAogICAgIFttYWluRnJhbWUgX2NsZWFy
T3BlbmVyXTsKIAotICAgIHNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKGZhbHNlKTsKKyNp
ZiBQTEFURk9STShNQUMpCisgICAgW0xheW91dFRlc3RTcGVsbENoZWNrZXIgdW5pbnN0YWxsQW5k
UmVzZXRdOworI2VuZGlmCiAKICAgICByZXNldEFjY3VtdWxhdGVkTG9ncygpOwogICAgIFdlYkNv
cmVUZXN0U3VwcG9ydDo6aW5pdGlhbGl6ZUxvZ0NoYW5uZWxzSWZOZWNlc3NhcnkoKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tl
ci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2Vy
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlM2ZkNzFjNDIxMWMwYjI3Yzc1Yzkx
ZjE2NjFmYjdjYzYxNDE4NGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlU3BlbGxDaGVj
a2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotdm9pZCBz
ZXRTcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZChib29sKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5tbSBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5tbQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYmJiNGQ5NmRlOWUyYTFhMmQ3N2NjYjM1MjhiNzMxZDFiZGYw
OWRmNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW0KKysrIC9k
ZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgi
Ci0jaW1wb3J0ICJEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5oIgotCi0jaWYgUExBVEZPUk0o
TUFDKQotCi0jaW1wb3J0IDxBcHBLaXQvTlNTcGVsbENoZWNrZXIuaD4KLSNpbXBvcnQgPHd0Zi9B
c3NlcnRpb25zLmg+Ci0jaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KLQotc3RhdGlj
IGJvb2wgc3BlbGxDaGVja2VyTG9nZ2luZ0VuYWJsZWQ7Ci1zdGF0aWMgSU1QIGFwcEtpdFJlY29y
ZFJlc3BvbnNlSU1QOwotCi1zdGF0aWMgY29uc3QgY2hhciAqc3RyaW5nRm9yQ29ycmVjdGlvblJl
c3BvbnNlKE5TQ29ycmVjdGlvblJlc3BvbnNlIGNvcnJlY3Rpb25SZXNwb25zZSkKLXsKLSAgICBz
d2l0Y2ggKGNvcnJlY3Rpb25SZXNwb25zZSkgewotICAgIGNhc2UgTlNDb3JyZWN0aW9uUmVzcG9u
c2VOb25lOgotICAgICAgICByZXR1cm4gIm5vbmUiOwotICAgIGNhc2UgTlNDb3JyZWN0aW9uUmVz
cG9uc2VBY2NlcHRlZDoKLSAgICAgICAgcmV0dXJuICJhY2NlcHRlZCI7Ci0gICAgY2FzZSBOU0Nv
cnJlY3Rpb25SZXNwb25zZVJlamVjdGVkOgotICAgICAgICByZXR1cm4gInJlamVjdGVkIjsKLSAg
ICBjYXNlIE5TQ29ycmVjdGlvblJlc3BvbnNlSWdub3JlZDoKLSAgICAgICAgcmV0dXJuICJpZ25v
cmVkIjsKLSAgICBjYXNlIE5TQ29ycmVjdGlvblJlc3BvbnNlRWRpdGVkOgotICAgICAgICByZXR1
cm4gImVkaXRlZCI7Ci0gICAgY2FzZSBOU0NvcnJlY3Rpb25SZXNwb25zZVJldmVydGVkOgotICAg
ICAgICByZXR1cm4gInJldmVydGVkIjsKLSAgICB9Ci0KLSAgICByZXR1cm4gImludmFsaWQiOwot
fQotCi1zdGF0aWMgdm9pZCBkcnRfTlNTcGVsbENoZWNrZXJfcmVjb3JkUmVzcG9uc2VUb0NvcnJl
Y3Rpb24oaWQgc2VsZiwgU0VMIF9jbWQsIE5TQ29ycmVjdGlvblJlc3BvbnNlIHJlc3BvbnNlLCBO
U1N0cmluZyAqY29ycmVjdGlvbiwgTlNTdHJpbmcgKndvcmQsIE5TU3RyaW5nICpsYW5ndWFnZSwg
TlNJbnRlZ2VyIHNwZWxsRG9jdW1lbnRUYWcpCi17Ci0gICAgaWYgKHNwZWxsQ2hlY2tlckxvZ2dp
bmdFbmFibGVkKQotICAgICAgICBwcmludGYoIk5TU3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNl
VG9Db3JyZWN0aW9uOiAlcyAtPiAlcyAocmVzcG9uc2U6ICVzKVxuIiwgW3dvcmQgVVRGOFN0cmlu
Z10sIFtjb3JyZWN0aW9uIFVURjhTdHJpbmddLCBzdHJpbmdGb3JDb3JyZWN0aW9uUmVzcG9uc2Uo
cmVzcG9uc2UpKTsKLQotICAgIHd0ZkNhbGxJTVA8dm9pZCwgTlNDb3JyZWN0aW9uUmVzcG9uc2Us
IE5TU3RyaW5nICosIE5TU3RyaW5nICosIE5TU3RyaW5nICosIE5TSW50ZWdlcj4oYXBwS2l0UmVj
b3JkUmVzcG9uc2VJTVAsIHNlbGYsIF9jbWQsIHJlc3BvbnNlLCBjb3JyZWN0aW9uLCB3b3JkLCBs
YW5ndWFnZSwgc3BlbGxEb2N1bWVudFRhZyk7Ci19Ci0KLXN0YXRpYyB2b2lkIHN3aXp6bGVOU1Nw
ZWxsQ2hlY2tlck1ldGhvZHNJZk5lZWRlZCgpCi17Ci0gICAgc3RhdGljIGJvb2wgaGFzU3dpenps
ZWQ7Ci0gICAgaWYgKGhhc1N3aXp6bGVkKQotICAgICAgICByZXR1cm47Ci0gICAgaGFzU3dpenps
ZWQgPSB0cnVlOwotCi0gICAgTWV0aG9kIHJlY29yZFJlc3BvbnNlTWV0aG9kID0gY2xhc3NfZ2V0
SW5zdGFuY2VNZXRob2Qob2JqY19nZXRDbGFzcygiTlNTcGVsbENoZWNrZXIiKSwgQHNlbGVjdG9y
KHJlY29yZFJlc3BvbnNlOnRvQ29ycmVjdGlvbjpmb3JXb3JkOmxhbmd1YWdlOmluU3BlbGxEb2N1
bWVudFdpdGhUYWc6KSk7Ci0KLSAgICBhcHBLaXRSZWNvcmRSZXNwb25zZUlNUCA9IG1ldGhvZF9z
ZXRJbXBsZW1lbnRhdGlvbihyZWNvcmRSZXNwb25zZU1ldGhvZCwgKElNUClkcnRfTlNTcGVsbENo
ZWNrZXJfcmVjb3JkUmVzcG9uc2VUb0NvcnJlY3Rpb24pOwotfQotCi12b2lkIHNldFNwZWxsQ2hl
Y2tlckxvZ2dpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKLXsKLSAgICBzd2l6emxlTlNTcGVsbENo
ZWNrZXJNZXRob2RzSWZOZWVkZWQoKTsKLQotICAgIHNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVk
ID0gZW5hYmxlZDsKLX0KLQotI2Vsc2UgLy8gUExBVEZPUk0oTUFDKQotCi12b2lkIHNldFNwZWxs
Q2hlY2tlckxvZ2dpbmdFbmFibGVkKGJvb2wpCi17Ci19Ci0KLSNlbmRpZiAvLyBQTEFURk9STShN
QUMpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5t
bSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCmluZGV4IDZlMDJm
ZjAzYTIzOTI4MTMyNGY0ZmFhMmU1ZjFhN2RjNTFmMTg2OTQuLjk2ZWZkNWViZGI1YjNkNDMyMjcz
MDc2ZDU5ZDQ2NThhODg4NTYyNWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9UZXN0UnVubmVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVu
bmVyTWFjLm1tCkBAIC0zMSw4ICszMSw4IEBACiAjaW1wb3J0ICJUZXN0UnVubmVyLmgiCiAKICNp
bXBvcnQgIkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5oIgotI2ltcG9ydCAiRHVtcFJlbmRlclRyZWVT
cGVsbENoZWNrZXIuaCIKICNpbXBvcnQgIkVkaXRpbmdEZWxlZ2F0ZS5oIgorI2ltcG9ydCAiTGF5
b3V0VGVzdFNwZWxsQ2hlY2tlci5oIgogI2ltcG9ydCAiTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIu
aCIKICNpbXBvcnQgIk1vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5oIgogI2ltcG9ydCAiUG9s
aWN5RGVsZWdhdGUuaCIKQEAgLTIxMiw3ICsyMTIsMjEgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRT
dG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQogCiB2b2lkIFRlc3RS
dW5uZXI6OnNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKLSAg
ICA6OnNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKGVuYWJsZWQpOworI2lmIFBMQVRGT1JN
KE1BQykKKyAgICBbTGF5b3V0VGVzdFNwZWxsQ2hlY2tlciBpbnN0YWxsSWZOZWNlc3NhcnldLnNw
ZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkID0gZW5hYmxlZDsKKyNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKGVuYWJsZWQpOworI2VuZGlmCit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0U3BlbGxDaGVj
a2VyVGV4dFJlcGxhY2VtZW50cyhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgcmVw
bGFjZW1lbnRzKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBbW0xheW91dFRlc3RTcGVsbENo
ZWNrZXIgaW5zdGFsbElmTmVjZXNzYXJ5XSBzZXRSZXBsYWNlbWVudHNGcm9tSlNPYmplY3Q6cmVw
bGFjZW1lbnRzIGluQ29udGV4dDpjb250ZXh0XTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJl
cGxhY2VtZW50SW5mbyk7CisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOworI2VuZGlmCiB9CiAK
IHZvaWQgVGVzdFJ1bm5lcjo6Y2xvc2VJZGxlTG9jYWxTdG9yYWdlRGF0YWJhc2VzKCkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tl
ci5oIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2Vy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uY2VmNDk2MTlhYmFiNTQzZDZhZGMwZmZkNDMwMTlmYmNmNGJjZGY4MAot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVz
dFNwZWxsQ2hlY2tlci5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuaD4KKworI2lmIFBM
QVRGT1JNKE1BQykKKworI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgorCitAaW50ZXJmYWNlIExh
eW91dFRlc3RUZXh0Q2hlY2tpbmdSZXN1bHQgOiBOU1RleHRDaGVja2luZ1Jlc3VsdAorLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoVHlwZTooTlNUZXh0Q2hlY2tpbmdUeXBlKXR5cGUgcmFuZ2U6KE5T
UmFuZ2UpcmFuZ2UgcmVwbGFjZW1lbnQ6KE5TU3RyaW5nICopcmVwbGFjZW1lbnQ7CitAZW5kCisK
K0BpbnRlcmZhY2UgTGF5b3V0VGVzdFNwZWxsQ2hlY2tlciA6IE5TU3BlbGxDaGVja2VyCisrIChp
bnN0YW5jZXR5cGUpaW5zdGFsbElmTmVjZXNzYXJ5OworKyAodm9pZCl1bmluc3RhbGxBbmRSZXNl
dDsKKworLSAodm9pZClzZXRSZXBsYWNlbWVudHNGcm9tSlNPYmplY3Q6KEpTT2JqZWN0UmVmKXJl
cGxhY2VtZW50cyBpbkNvbnRleHQ6KEpTQ29udGV4dFJlZiljb250ZXh0OworQHByb3BlcnR5IChu
b25hdG9taWMsIGNvcHkpIE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBMYXlvdXRUZXN0VGV4dENo
ZWNraW5nUmVzdWx0ICo+ICpyZXBsYWNlbWVudHM7CitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9P
TCBzcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZDsKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JN
KE1BQykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVz
dFNwZWxsQ2hlY2tlci5tbSBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVz
dFNwZWxsQ2hlY2tlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTA3YjJiYmU0ZDE2ZmMzNTFmYmViNWFjNjM4
NDFkMzgwZmEyMzcyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9j
b2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tCkBAIC0wLDAgKzEsMjUyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJMYXlvdXRUZXN0U3BlbGxDaGVja2Vy
LmgiCisKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CisjaW1wb3J0IDxv
YmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW1wb3J0IDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFBMQVRG
T1JNKE1BQykKKwordHlwZWRlZiB2b2lkICheVGV4dENoZWNraW5nQ29tcGxldGlvbkhhbmRsZXIp
KE5TSW50ZWdlciBzZXF1ZW5jZU51bWJlciwgTlNBcnJheTxOU1RleHRDaGVja2luZ1Jlc3VsdCAq
PiAqcmVzdWx0cywgTlNPcnRob2dyYXBoeSAqb3J0aG9ncmFwaHksIE5TSW50ZWdlciB3b3JkQ291
bnQpOworCitzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPExheW91dFRlc3RTcGVsbENo
ZWNrZXI+PiBnbG9iYWxTcGVsbENoZWNrZXI7CitzdGF0aWMgQk9PTCBoYXNJbnN0YWxsZWRMYXlv
dXRUZXN0U3BlbGxDaGVja2VyID0gTk87CitzdGF0aWMgSU1QIGdsb2JhbGx5U3dpenpsZWRTaGFy
ZWRTcGVsbENoZWNrZXJJbXBsZW1lbnRhdGlvbjsKK3N0YXRpYyBNZXRob2Qgb3JpZ2luYWxTaGFy
ZWRTcGVsbENoZWNrZXJNZXRob2Q7CisKK3N0YXRpYyBMYXlvdXRUZXN0U3BlbGxDaGVja2VyICpl
eGlzdGluZ0dsb2JhbExheW91dFRlc3RTcGVsbENoZWNrZXIoKQoreworICAgIHJldHVybiBnbG9i
YWxTcGVsbENoZWNrZXIuZ2V0KCkuZ2V0KCk7Cit9CisKK3N0YXRpYyBMYXlvdXRUZXN0U3BlbGxD
aGVja2VyICplbnN1cmVHbG9iYWxMYXlvdXRUZXN0U3BlbGxDaGVja2VyKCkKK3sKKyAgICBzdGF0
aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9r
ZW4sIF57CisgICAgICAgIGdsb2JhbFNwZWxsQ2hlY2tlci5nZXQoKSA9IGFkb3B0TlMoW1tMYXlv
dXRUZXN0U3BlbGxDaGVja2VyIGFsbG9jXSBpbml0XSk7CisgICAgfSk7CisgICAgcmV0dXJuIGV4
aXN0aW5nR2xvYmFsTGF5b3V0VGVzdFNwZWxsQ2hlY2tlcigpOworfQorCitzdGF0aWMgY29uc3Qg
Y2hhciAqc3RyaW5nRm9yQ29ycmVjdGlvblJlc3BvbnNlKE5TQ29ycmVjdGlvblJlc3BvbnNlIGNv
cnJlY3Rpb25SZXNwb25zZSkKK3sKKyAgICBzd2l0Y2ggKGNvcnJlY3Rpb25SZXNwb25zZSkgewor
ICAgIGNhc2UgTlNDb3JyZWN0aW9uUmVzcG9uc2VOb25lOgorICAgICAgICByZXR1cm4gIm5vbmUi
OworICAgIGNhc2UgTlNDb3JyZWN0aW9uUmVzcG9uc2VBY2NlcHRlZDoKKyAgICAgICAgcmV0dXJu
ICJhY2NlcHRlZCI7CisgICAgY2FzZSBOU0NvcnJlY3Rpb25SZXNwb25zZVJlamVjdGVkOgorICAg
ICAgICByZXR1cm4gInJlamVjdGVkIjsKKyAgICBjYXNlIE5TQ29ycmVjdGlvblJlc3BvbnNlSWdu
b3JlZDoKKyAgICAgICAgcmV0dXJuICJpZ25vcmVkIjsKKyAgICBjYXNlIE5TQ29ycmVjdGlvblJl
c3BvbnNlRWRpdGVkOgorICAgICAgICByZXR1cm4gImVkaXRlZCI7CisgICAgY2FzZSBOU0NvcnJl
Y3Rpb25SZXNwb25zZVJldmVydGVkOgorICAgICAgICByZXR1cm4gInJldmVydGVkIjsKKyAgICB9
CisgICAgcmV0dXJuICJpbnZhbGlkIjsKK30KKworc3RhdGljIE5TVGV4dENoZWNraW5nVHlwZSBu
c1RleHRDaGVja2luZ1R5cGUoSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+JiYganNUeXBlKQorewor
ICAgIGF1dG8gY2ZUeXBlID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBqc1R5cGUuZ2V0KCkpKTsKKyAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGNmVHlw
ZS5nZXQoKSwgQ0ZTVFIoIm9ydGhvZ3JhcGh5IiksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUp
ID09IGtDRkNvbXBhcmVFcXVhbFRvKQorICAgICAgICByZXR1cm4gTlNUZXh0Q2hlY2tpbmdUeXBl
T3J0aG9ncmFwaHk7CisKKyAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGNmVHlwZS5nZXQoKSwgQ0ZT
VFIoInNwZWxsaW5nIiksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUpID09IGtDRkNvbXBhcmVF
cXVhbFRvKQorICAgICAgICByZXR1cm4gTlNUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7CisKKyAg
ICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGNmVHlwZS5nZXQoKSwgQ0ZTVFIoImdyYW1tYXIiKSwga0NG
Q29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pCisgICAgICAgIHJl
dHVybiBOU1RleHRDaGVja2luZ1R5cGVHcmFtbWFyOworCisgICAgaWYgKENGU3RyaW5nQ29tcGFy
ZShjZlR5cGUuZ2V0KCksIENGU1RSKCJkYXRlIiksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUp
ID09IGtDRkNvbXBhcmVFcXVhbFRvKQorICAgICAgICByZXR1cm4gTlNUZXh0Q2hlY2tpbmdUeXBl
RGF0ZTsKKworICAgIGlmIChDRlN0cmluZ0NvbXBhcmUoY2ZUeXBlLmdldCgpLCBDRlNUUigiYWRk
cmVzcyIpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykK
KyAgICAgICAgcmV0dXJuIE5TVGV4dENoZWNraW5nVHlwZUFkZHJlc3M7CisKKyAgICBpZiAoQ0ZT
dHJpbmdDb21wYXJlKGNmVHlwZS5nZXQoKSwgQ0ZTVFIoImxpbmsiKSwga0NGQ29tcGFyZUNhc2VJ
bnNlbnNpdGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pCisgICAgICAgIHJldHVybiBOU1RleHRD
aGVja2luZ1R5cGVMaW5rOworCisgICAgaWYgKENGU3RyaW5nQ29tcGFyZShjZlR5cGUuZ2V0KCks
IENGU1RSKCJxdW90ZSIpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJl
RXF1YWxUbykKKyAgICAgICAgcmV0dXJuIE5TVGV4dENoZWNraW5nVHlwZVF1b3RlOworCisgICAg
aWYgKENGU3RyaW5nQ29tcGFyZShjZlR5cGUuZ2V0KCksIENGU1RSKCJkYXNoIiksIGtDRkNvbXBh
cmVDYXNlSW5zZW5zaXRpdmUpID09IGtDRkNvbXBhcmVFcXVhbFRvKQorICAgICAgICByZXR1cm4g
TlNUZXh0Q2hlY2tpbmdUeXBlRGFzaDsKKworICAgIGlmIChDRlN0cmluZ0NvbXBhcmUoY2ZUeXBl
LmdldCgpLCBDRlNUUigicmVwbGFjZW1lbnQiKSwga0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkg
PT0ga0NGQ29tcGFyZUVxdWFsVG8pCisgICAgICAgIHJldHVybiBOU1RleHRDaGVja2luZ1R5cGVS
ZXBsYWNlbWVudDsKKworICAgIGlmIChDRlN0cmluZ0NvbXBhcmUoY2ZUeXBlLmdldCgpLCBDRlNU
UigiY29ycmVjdGlvbiIpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJl
RXF1YWxUbykKKyAgICAgICAgcmV0dXJuIE5TVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb247CisK
KyAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGNmVHlwZS5nZXQoKSwgQ0ZTVFIoInJlZ3VsYXItZXhw
cmVzc2lvbiIpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxU
bykKKyAgICAgICAgcmV0dXJuIE5TVGV4dENoZWNraW5nVHlwZVJlZ3VsYXJFeHByZXNzaW9uOwor
CisgICAgaWYgKENGU3RyaW5nQ29tcGFyZShjZlR5cGUuZ2V0KCksIENGU1RSKCJwaG9uZS1udW1i
ZXIiKSwga0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pCisg
ICAgICAgIHJldHVybiBOU1RleHRDaGVja2luZ1R5cGVQaG9uZU51bWJlcjsKKworICAgIGlmIChD
RlN0cmluZ0NvbXBhcmUoY2ZUeXBlLmdldCgpLCBDRlNUUigidHJhbnNpdC1pbmZvcm1hdGlvbiIp
LCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKKyAgICAg
ICAgcmV0dXJuIE5TVGV4dENoZWNraW5nVHlwZVRyYW5zaXRJbmZvcm1hdGlvbjsKKworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBOU1RleHRDaGVja2luZ1R5cGVTcGVsbGlu
ZzsKK30KKworQGltcGxlbWVudGF0aW9uIExheW91dFRlc3RUZXh0Q2hlY2tpbmdSZXN1bHQgewor
ICAgIFJldGFpblB0cjxOU1N0cmluZz4gX3JlcGxhY2VtZW50OworICAgIE5TVGV4dENoZWNraW5n
VHlwZSBfdHlwZTsKKyAgICBOU1JhbmdlIF9yYW5nZTsKK30KKworLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoVHlwZTooTlNUZXh0Q2hlY2tpbmdUeXBlKXR5cGUgcmFuZ2U6KE5TUmFuZ2UpcmFuZ2Ug
cmVwbGFjZW1lbnQ6KE5TU3RyaW5nICopcmVwbGFjZW1lbnQKK3sKKyAgICBpZiAoIShzZWxmID0g
W3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF90eXBlID0gdHlwZTsK
KyAgICBfcmFuZ2UgPSByYW5nZTsKKyAgICBfcmVwbGFjZW1lbnQgPSByZXBsYWNlbWVudDsKKwor
ICAgIHJldHVybiBzZWxmOworfQorCistIChOU1JhbmdlKXJhbmdlCit7CisgICAgcmV0dXJuIF9y
YW5nZTsKK30KKworLSAoTlNUZXh0Q2hlY2tpbmdUeXBlKXJlc3VsdFR5cGUKK3sKKyAgICByZXR1
cm4gX3R5cGU7Cit9CisKKy0gKE5TU3RyaW5nICopcmVwbGFjZW1lbnRTdHJpbmcKK3sKKyAgICBy
ZXR1cm4gX3JlcGxhY2VtZW50LmdldCgpOworfQorCistIChOU1N0cmluZyAqKWRlc2NyaXB0aW9u
Cit7CisgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAICVwIHR5cGU9
JXR1IHJhbmdlPVsldHUsICV0dV0gcmVwbGFjZW1lbnQ9JyVAJz4iLCBzZWxmLmNsYXNzLCBzZWxm
LCBfdHlwZSwgX3JhbmdlLmxvY2F0aW9uLCBfcmFuZ2UubG9jYXRpb24gKyBfcmFuZ2UubGVuZ3Ro
LCBfcmVwbGFjZW1lbnQuZ2V0KCldOworfQorCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBMYXlv
dXRUZXN0U3BlbGxDaGVja2VyIHsKKyAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PE5TU3RyaW5n
ICosIExheW91dFRlc3RUZXh0Q2hlY2tpbmdSZXN1bHQgKj4+IF9yZXBsYWNlbWVudHM7Cit9CisK
KysgKGluc3RhbmNldHlwZSlpbnN0YWxsSWZOZWNlc3NhcnkKK3sKKyAgICBhdXRvICpzcGVsbENo
ZWNrZXIgPSBlbnN1cmVHbG9iYWxMYXlvdXRUZXN0U3BlbGxDaGVja2VyKCk7CisgICAgaWYgKGhh
c0luc3RhbGxlZExheW91dFRlc3RTcGVsbENoZWNrZXIpCisgICAgICAgIHJldHVybiBzcGVsbENo
ZWNrZXI7CisKKyAgICBvcmlnaW5hbFNoYXJlZFNwZWxsQ2hlY2tlck1ldGhvZCA9IGNsYXNzX2dl
dENsYXNzTWV0aG9kKG9iamNfZ2V0TWV0YUNsYXNzKCJOU1NwZWxsQ2hlY2tlciIpLCBAc2VsZWN0
b3Ioc2hhcmVkU3BlbGxDaGVja2VyKSk7CisgICAgZ2xvYmFsbHlTd2l6emxlZFNoYXJlZFNwZWxs
Q2hlY2tlckltcGxlbWVudGF0aW9uID0gbWV0aG9kX3NldEltcGxlbWVudGF0aW9uKG9yaWdpbmFs
U2hhcmVkU3BlbGxDaGVja2VyTWV0aG9kLCByZWludGVycHJldF9jYXN0PElNUD4oZW5zdXJlR2xv
YmFsTGF5b3V0VGVzdFNwZWxsQ2hlY2tlcikpOworICAgIGhhc0luc3RhbGxlZExheW91dFRlc3RT
cGVsbENoZWNrZXIgPSBZRVM7CisgICAgcmV0dXJuIHNwZWxsQ2hlY2tlcjsKK30KKworKyAodm9p
ZCl1bmluc3RhbGxBbmRSZXNldAoreworICAgIFtleGlzdGluZ0dsb2JhbExheW91dFRlc3RTcGVs
bENoZWNrZXIoKSByZXNldF07CisgICAgaWYgKCFoYXNJbnN0YWxsZWRMYXlvdXRUZXN0U3BlbGxD
aGVja2VyKQorICAgICAgICByZXR1cm47CisKKyAgICBtZXRob2Rfc2V0SW1wbGVtZW50YXRpb24o
b3JpZ2luYWxTaGFyZWRTcGVsbENoZWNrZXJNZXRob2QsIGdsb2JhbGx5U3dpenpsZWRTaGFyZWRT
cGVsbENoZWNrZXJJbXBsZW1lbnRhdGlvbik7CisgICAgaGFzSW5zdGFsbGVkTGF5b3V0VGVzdFNw
ZWxsQ2hlY2tlciA9IE5POworfQorCistICh2b2lkKXJlc2V0Cit7CisgICAgc2VsZi5yZXBsYWNl
bWVudHMgPSBuaWw7CisgICAgc2VsZi5zcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZCA9IE5POwor
fQorCistIChOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgTGF5b3V0VGVzdFRleHRDaGVja2luZ1Jl
c3VsdCAqPiAqKXJlcGxhY2VtZW50cworeworICAgIHJldHVybiBfcmVwbGFjZW1lbnRzLmdldCgp
OworfQorCistICh2b2lkKXNldFJlcGxhY2VtZW50czooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICos
IExheW91dFRlc3RUZXh0Q2hlY2tpbmdSZXN1bHQgKj4gKilyZXBsYWNlbWVudHMKK3sKKyAgICBf
cmVwbGFjZW1lbnRzID0gYWRvcHROUyhyZXBsYWNlbWVudHMuY29weSk7Cit9CisKKy0gKHZvaWQp
c2V0UmVwbGFjZW1lbnRzRnJvbUpTT2JqZWN0OihKU09iamVjdFJlZilyZXBsYWNlbWVudHMgaW5D
b250ZXh0OihKU0NvbnRleHRSZWYpY29udGV4dAoreworICAgIGF1dG8gZnJvbVByb3BlcnR5TmFt
ZSA9IGFkb3B0KEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJmcm9tIikpOworICAgIGF1
dG8gdG9Qcm9wZXJ0eU5hbWUgPSBhZG9wdChKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
dG8iKSk7CisgICAgYXV0byB0eXBlUHJvcGVydHlOYW1lID0gYWRvcHQoSlNTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoInR5cGUiKSk7CisgICAgYXV0byByZXBsYWNlbWVudFByb3BlcnR5TmFt
ZSA9IGFkb3B0KEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJyZXBsYWNlbWVudCIpKTsK
KyAgICBhdXRvIHByb3BlcnRpZXMgPSBKU09iamVjdENvcHlQcm9wZXJ0eU5hbWVzKGNvbnRleHQs
IHJlcGxhY2VtZW50cyk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGlj
dGlvbmFyeSBhbGxvY10gaW5pdF0pOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXgg
PCBKU1Byb3BlcnR5TmFtZUFycmF5R2V0Q291bnQocHJvcGVydGllcyk7ICsraW5kZXgpIHsKKyAg
ICAgICAgSlNTdHJpbmdSZWYgd29yZFRvUmVwbGFjZSA9IEpTUHJvcGVydHlOYW1lQXJyYXlHZXRO
YW1lQXRJbmRleChwcm9wZXJ0aWVzLCBpbmRleCk7CisgICAgICAgIEpTT2JqZWN0UmVmIHJlcGxh
Y2VtZW50ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIEpTT2JqZWN0R2V0UHJvcGVydHkoY29u
dGV4dCwgcmVwbGFjZW1lbnRzLCB3b3JkVG9SZXBsYWNlLCBudWxscHRyKSwgbnVsbHB0cik7Cisg
ICAgICAgIGxvbmcgZnJvbVZhbHVlID0gbHJvdW5kbChKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwg
SlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCByZXBsYWNlbWVudCwgZnJvbVByb3BlcnR5TmFt
ZS5nZXQoKSwgbnVsbHB0ciksIG51bGxwdHIpKTsKKyAgICAgICAgbG9uZyB0b1ZhbHVlID0gbHJv
dW5kbChKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0
LCByZXBsYWNlbWVudCwgdG9Qcm9wZXJ0eU5hbWUuZ2V0KCksIG51bGxwdHIpLCBudWxscHRyKSk7
CisgICAgICAgIGF1dG8gdHlwZVZhbHVlID0gYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250
ZXh0LCBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIHJlcGxhY2VtZW50LCB0eXBlUHJvcGVy
dHlOYW1lLmdldCgpLCBudWxscHRyKSwgbnVsbHB0cikpOworICAgICAgICBhdXRvIHJlcGxhY2Vt
ZW50VmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIHJlcGxhY2VtZW50LCByZXBs
YWNlbWVudFByb3BlcnR5TmFtZS5nZXQoKSwgbnVsbHB0cik7CisgICAgICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gcmVwbGFjZW1lbnRUZXh0OworICAgICAgICBpZiAoIUpTVmFsdWVJc1VuZGVm
aW5lZChjb250ZXh0LCByZXBsYWNlbWVudFZhbHVlKSkgeworICAgICAgICAgICAgYXV0byByZXBs
YWNlbWVudEpTU3RyaW5nID0gYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCByZXBs
YWNlbWVudFZhbHVlLCBudWxscHRyKSk7CisgICAgICAgICAgICByZXBsYWNlbWVudFRleHQgPSBh
ZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlcGxhY2Vt
ZW50SlNTdHJpbmcuZ2V0KCkpKTsKKyAgICAgICAgfQorICAgICAgICBhdXRvIHNwZWxsQ2hlY2tS
ZXN1bHQgPSBhZG9wdE5TKFtbTGF5b3V0VGVzdFRleHRDaGVja2luZ1Jlc3VsdCBhbGxvY10gaW5p
dFdpdGhUeXBlOm5zVGV4dENoZWNraW5nVHlwZShXVEZNb3ZlKHR5cGVWYWx1ZSkpIHJhbmdlOk5T
TWFrZVJhbmdlKGZyb21WYWx1ZSwgdG9WYWx1ZSAtIGZyb21WYWx1ZSkgcmVwbGFjZW1lbnQ6KE5T
U3RyaW5nICopcmVwbGFjZW1lbnRUZXh0LmdldCgpXSk7CisgICAgICAgIGF1dG8gY2ZXb3JkVG9S
ZXBsYWNlID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCB3b3JkVG9SZXBsYWNlKSk7CisgICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0OnNwZWxsQ2hlY2tS
ZXN1bHQuZ2V0KCkgZm9yS2V5OihOU1N0cmluZyAqKWNmV29yZFRvUmVwbGFjZS5nZXQoKV07Cisg
ICAgfQorICAgIEpTUHJvcGVydHlOYW1lQXJyYXlSZWxlYXNlKHByb3BlcnRpZXMpOworCisgICAg
X3JlcGxhY2VtZW50cyA9IFdURk1vdmUocmVzdWx0KTsKK30KKworLSAoTlNBcnJheTxOU1RleHRD
aGVja2luZ1Jlc3VsdCAqPiAqKWNoZWNrU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZ1RvQ2hlY2sg
cmFuZ2U6KE5TUmFuZ2UpcmFuZ2UgdHlwZXM6KE5TVGV4dENoZWNraW5nVHlwZXMpY2hlY2tpbmdU
eXBlcyBvcHRpb25zOihOU0RpY3Rpb25hcnk8TlNUZXh0Q2hlY2tpbmdPcHRpb25LZXksIGlkPiAq
KW9wdGlvbnMgaW5TcGVsbERvY3VtZW50V2l0aFRhZzooTlNJbnRlZ2VyKXRhZyBvcnRob2dyYXBo
eTooTlNPcnRob2dyYXBoeSAqKilvcnRob2dyYXBoeSB3b3JkQ291bnQ6KE5TSW50ZWdlciAqKXdv
cmRDb3VudAoreworICAgIGlmIChhdXRvICpyZXN1bHQgPSBbX3JlcGxhY2VtZW50cyBvYmplY3RG
b3JLZXk6c3RyaW5nVG9DaGVja10pCisgICAgICAgIHJldHVybiBAWyByZXN1bHQgXTsKKworICAg
IHJldHVybiBbc3VwZXIgY2hlY2tTdHJpbmc6c3RyaW5nVG9DaGVjayByYW5nZTpyYW5nZSB0eXBl
czpjaGVja2luZ1R5cGVzIG9wdGlvbnM6b3B0aW9ucyBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOnRh
ZyBvcnRob2dyYXBoeTpvcnRob2dyYXBoeSB3b3JkQ291bnQ6d29yZENvdW50XTsKK30KKworLSAo
dm9pZClyZWNvcmRSZXNwb25zZTooTlNDb3JyZWN0aW9uUmVzcG9uc2UpcmVzcG9uc2UgdG9Db3Jy
ZWN0aW9uOihOU1N0cmluZyAqKWNvcnJlY3Rpb24gZm9yV29yZDooTlNTdHJpbmcgKil3b3JkIGxh
bmd1YWdlOihOU1N0cmluZyAqKWxhbmd1YWdlIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6KE5TSW50
ZWdlcil0YWcKK3sKKyAgICBpZiAoX3NwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKQorICAgICAg
ICBwcmludGYoIk5TU3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlVG9Db3JyZWN0aW9uOiAlcyAt
PiAlcyAocmVzcG9uc2U6ICVzKVxuIiwgW3dvcmQgVVRGOFN0cmluZ10sIFtjb3JyZWN0aW9uIFVU
RjhTdHJpbmddLCBzdHJpbmdGb3JDb3JyZWN0aW9uUmVzcG9uc2UocmVzcG9uc2UpKTsKKworICAg
IFtzdXBlciByZWNvcmRSZXNwb25zZTpyZXNwb25zZSB0b0NvcnJlY3Rpb246Y29ycmVjdGlvbiBm
b3JXb3JkOndvcmQgbGFuZ3VhZ2U6bGFuZ3VhZ2UgaW5TcGVsbERvY3VtZW50V2l0aFRhZzp0YWdd
OworfQorCitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA4YmJhMTBkYjZhNWNkZjJmM2UyZTAzNGNjNGM0ZTk0Mzg4YWVjMDViLi4xOTQwZjViZTUz
OWE1MDI4ZWQ3NDk4OTg3YmIyMzEzMTQ2ODAzYzYwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTMzLDYgKzEzMyw3IEBACiAJCUUxMzJBQTNEMTdDRTc3NkYwMDYxMURG
MCAvKiBXZWJLaXRUZXN0UnVubmVyRXZlbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMTMyQUEzQjE3Q0U3NzZGMDA2MTFERjAgLyogV2ViS2l0VGVz
dFJ1bm5lckV2ZW50Lm1tICovOyB9OwogCQlFMUM2NDJDMzE3Q0JDQzczMDBENjZBM0MgLyogUG9z
ZUFzQ2xhc3MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMUM2NDJDMTE3Q0JDQzczMDBENjZBM0MgLyogUG9zZUFzQ2xhc3MubW0gKi87IH07CiAJCUUx
QzY0MkM2MTdDQkNENEMwMEQ2NkEzQyAvKiBXZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZC5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQzY0MkM0MTdD
QkNENEMwMEQ2NkEzQyAvKiBXZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZC5tbSAqLzsgfTsKKwkJ
RjRDMzU3OEMyMEU4NDQ0NjAwRkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEMzNTc4QTIwRTg0
NDQwMDBGQTA3NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbSAqLzsgfTsKIC8qIEVuZCBQ
QlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkg
c2VjdGlvbiAqLwpAQCAtMzcyLDYgKzM3Myw4IEBACiAJCUUxQzY0MkMyMTdDQkNDNzMwMEQ2NkEz
QyAvKiBQb3NlQXNDbGFzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3Nl
QXNDbGFzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUM2NDJDNDE3Q0JDRDRD
MDBENjZBM0MgLyogV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFDNjQyQzUxN0NCQ0Q0QzAwRDY2QTNDIC8q
IFdlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUY0QzM1NzhBMjBFODQ0NDAwMEZBMDc0OCAvKiBMYXlvdXRUZXN0U3BlbGxDaGVj
a2VyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gTGF5b3V0VGVz
dFNwZWxsQ2hlY2tlci5tbTsgcGF0aCA9IC4uL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0
VGVzdFNwZWxsQ2hlY2tlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjRDMzU3
OEIyMEU4NDQ0MDAwRkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5oOyBwYXRoID0g
Li4vVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2VyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICov
CiAKIC8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTQ3OSw2
ICs0ODIsNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwRjE4
RTcxQjFENkJDNEU2MDAyN0U1NDcgLyogQmluZGluZ3MgKi8sCisJCQkJRjRCNkMzMTYyMEU4NDM2
OTAwOEFDMjI1IC8qIGNvY29hICovLAogCQkJCTBGNzNCNTQ3MUJBNzgyRkUwMDRCM0VGNCAvKiBV
SVNjcmlwdENvbnRleHQgKi8sCiAJCQkJMzE0OEEwNTMxRTZGODVCNjAwRDNCMzE2IC8qIElPU0xh
eW91dFRlc3RDb21tdW5pY2F0aW9uLmNwcCAqLywKIAkJCQkzMTQ4QTA1NDFFNkY4NUI2MDBEM0Iz
MTYgLyogSU9TTGF5b3V0VGVzdENvbW11bmljYXRpb24uaCAqLywKQEAgLTgyMiw2ICs4MjYsMTUg
QEAKIAkJCW5hbWUgPSBTaGFyZWQ7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9Owor
CQlGNEI2QzMxNjIwRTg0MzY5MDA4QUMyMjUgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhH
cm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUY0QzM1NzhCMjBFODQ0NDAwMEZBMDc0OCAvKiBM
YXlvdXRUZXN0U3BlbGxDaGVja2VyLmggKi8sCisJCQkJRjRDMzU3OEEyMEU4NDQ0MDAwRkEwNzQ4
IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIubW0gKi8sCisJCQkpOworCQkJbmFtZSA9IGNvY29h
OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIC8qIEVuZCBQQlhHcm91cCBzZWN0
aW9uICovCiAKIC8qIEJlZ2luIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTEw
NDYsNiArMTA1OSw3IEBACiAJCQkJMzFEQThBM0QxRTcyMDVDQzAwRTFERjJGIC8qIElPU0xheW91
dFRlc3RDb21tdW5pY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzNCNTUxMUJBNzg5
NjgwMDRCM0VGNCAvKiBKU1VJU2NyaXB0Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjE4RTcxODFENkJDNDU2MDAyN0U1NDcgLyogSlNXcmFwcGVyLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUY0QzM1NzhDMjBFODQ0NDYwMEZBMDc0OCAvKiBMYXlvdXRUZXN0U3BlbGxDaGVja2Vy
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE4NTEwM0MxQjlBRTBGRTAwNzQ0QUVCIC8qIE9wdGlv
bnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE4NTEwNDAxQjlBRTEzMTAwNzQ0QUVCIC8qIFBp
eGVsRHVtcFN1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRGQTk4NDkxRDdGNzBDRjAw
QUZGMkM5IC8qIFNoYXJlZEV2ZW50U3RyZWFtc01hYy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGYwN2M4NzljYzZmNmFhZGFiNDk2YTYzNWM3MjIxYmI2ZTQwOWRmMzguLmI5ZjU2OWVhOWVkYzZh
MzRiMmRjNmExNGVkODE0MDZkZGFhMjc4MTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxOC0w
Ni0zMCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBb
bWFjT1NdIFRleHQgcmVwbGFjZW1lbnRzIHRoYXQgZW5kIHdpdGggc3ltYm9scyBhcmUgZXhwYW5k
ZWQgaW1tZWRpYXRlbHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4NzIyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDExMTI0MzM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBhIGxheW91dCB0
ZXN0IHRvIGNoZWNrIHRoYXQgaWYgYSB1c2VyIGhhcyBjb25maWd1cmVkIGEgdGV4dCByZXBsYWNl
bWVudCB0aGF0IGVuZHMgd2l0aCBwdW5jdHVhdGlvbiwgdGhlbjoKKyAgICAgICAgMS4gVHlwaW5n
IHRoYXQgdGV4dCByZXBsYWNlbWVudCB3b24ndCBpbW1lZGlhdGVseSB0cmlnZ2VyIHJlcGxhY2Vt
ZW50LgorICAgICAgICAyLiBUZXh0IHJlcGxhY2VtZW50IGlzIHRyaWdnZXJlZCBhZnRlciBwcmVz
c2luZyBlbnRlci4KKworICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvdGV4dC1yZXBsYWNlbWVu
dC1hZnRlci10eXBpbmctdG8td29yZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVk
aXRpbmcvc3BlbGxpbmcvdGV4dC1yZXBsYWNlbWVudC1hZnRlci10eXBpbmctdG8td29yZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTgtMDYtMjkgIEFu
dG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViIEFuaW1hdGlv
bnNdIE1ha2UgV1BUIHRlc3QgYXQgdGltaW5nLW1vZGVsL3RpbWVsaW5lcy9kb2N1bWVudC10aW1l
bGluZXMuaHRtbCBwYXNzIHJlbGlhYmx5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NwZWxsaW5nL3RleHQtcmVwbGFjZW1lbnQtYWZ0ZXItdHlwaW5nLXRvLXdvcmQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy90ZXh0LXJlcGxhY2VtZW50LWFmdGVy
LXR5cGluZy10by13b3JkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODNlYjEwN2JmODE2ODJl
MjJkNjJhYThmMWJlZTJhMDRjOWI5ZmYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zcGVsbGluZy90ZXh0LXJlcGxhY2VtZW50LWFmdGVyLXR5cGluZy10by13b3JkLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK0JlZm9yZSBwcmVzc2luZyBlbnRlcjoKK1BBU1Mg
ZWRpdG9yLnRleHRDb250ZW50IGlzICdZVD8nCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKK1lvdSB0aGVyZT8KKworCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3RleHQtcmVwbGFjZW1lbnQtYWZ0ZXItdHlwaW5nLXRvLXdv
cmQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvdGV4dC1yZXBsYWNlbWVudC1h
ZnRlci10eXBpbmctdG8td29yZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjOTQ5NWQ4NjYyZjA2ZmQ5ZmYx
N2MzNjA3NTJlNzQyZDMyOTJiZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NwZWxsaW5nL3RleHQtcmVwbGFjZW1lbnQtYWZ0ZXItdHlwaW5nLXRvLXdvcmQuaHRtbApA
QCAtMCwwICsxLDYzIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZWRpdGluZy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgoranNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1bmN0aW9u
IHplcm9EZWxheVRpbWVyKCkKK3sKKyAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBz
ZXRUaW1lb3V0KHJlc29sdmUsIDApKTsKK30KKworYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpCit7
CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdz
LnNldFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQodHJ1ZSk7CisgICAgICAgIGludGVybmFscy5z
ZXR0aW5ncy5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChmYWxzZSk7CisgICAg
ICAgIGludGVybmFscy5zZXRBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKHRydWUpOwor
ICAgICAgICBpbnRlcm5hbHMuc2V0QXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCh0
cnVlKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTcGVsbENoZWNrZXJUZXh0UmVwbGFjZW1lbnRz
KHsKKyAgICAgICAgICAgICJZVD8iOiB7CisgICAgICAgICAgICAgICAgInJlcGxhY2VtZW50Ijog
IllvdSB0aGVyZT8iLAorICAgICAgICAgICAgICAgICJ0eXBlIjogInJlcGxhY2VtZW50IiwKKyAg
ICAgICAgICAgICAgICAiZnJvbSI6IDAsCisgICAgICAgICAgICAgICAgInRvIjogMworICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICJZVD9cbiI6IHsKKyAgICAgICAgICAgICAgICAicmVwbGFj
ZW1lbnQiOiAiWW91IHRoZXJlPyIsCisgICAgICAgICAgICAgICAgInR5cGUiOiAicmVwbGFjZW1l
bnQiLAorICAgICAgICAgICAgICAgICJmcm9tIjogMCwKKyAgICAgICAgICAgICAgICAidG8iOiAz
CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKworICAgIGNvbnN0IGVkaXRvciA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlZGl0b3IiKTsKKyAgICBlZGl0b3IuZm9jdXMoKTsK
KyAgICBmb3IgKGNvbnN0IGNoYXJhY3RlciBvZiAiWVQ/IikKKyAgICAgICAgdHlwZUNoYXJhY3Rl
ckNvbW1hbmQoY2hhcmFjdGVyKTsKKyAgICBhd2FpdCB6ZXJvRGVsYXlUaW1lcigpOworCisgICAg
aWYgKCF3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICBkZXNjcmlwdGlvbi5pbm5lckhUTUwg
PSBgVG8gbWFudWFsbHkgdGVzdCwgYWRkIGFuIGF1dG9tYXRpYyB0ZXh0IHJlcGxhY2VtZW50IG1h
cHBpbmcgZnJvbSB0aGUgc3RyaW5nICJZVD8iIHRvCisgICAgICAgICJZb3UgdGhlcmU/IiwgYW5k
IHRoZW4gdHlwZSB0aGUgc3RyaW5nICJZVD8iLiBJdCBzaG91bGQgbm90IGJlIGltbWVkaWF0ZWx5
IGNvcnJlY3RlZCB0byAiWW91IHRoZXJlPyIuCisgICAgICAgIEhvd2V2ZXIsIGVudGVyaW5nIGEg
bmV3bGluZSBzaG91bGQgc3Vic2VxdWVudGx5IHRyaWdnZXIgYXV0b2NvcnJlY3Rpb24uYDsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGRlYnVnKCJCZWZvcmUgcHJlc3NpbmcgZW50ZXI6
Iik7CisgICAgc2hvdWxkQmUoImVkaXRvci50ZXh0Q29udGVudCIsICInWVQ/JyIpOworICAgIGlu
c2VydFBhcmFncmFwaENvbW1hbmQoKTsKKyAgICBhd2FpdCB6ZXJvRGVsYXlUaW1lcigpOworICAg
IGZpbmlzaEpTVGVzdCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0i
cnVuVGVzdCgpIj4KKyAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+CisgICAgPGRpdiBj
b250ZW50ZWRpdGFibGUgc3R5bGU9Im1hcmdpbi1ib3R0b206IDFlbTsgYm9yZGVyOiAxcHggb3Jh
bmdlIGRhc2hlZDsiIGlkPSJlZGl0b3IiPjwvZGl2PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggN2ZhYThkZDZhMmNm
MTM3NzNmNjVmMjc4MjU5YzAwNjQyYjNlZmU0ZC4uODA4ZGExMzllOWU2MDVhYzM5OTg2NWViYmM4
MDJkODg4MmI0NWNmZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RF
eHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlv
bnMKQEAgLTExMCw2ICsxMTAsOSBAQCBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW1hcmtlcnMt
aW4tb3ZlcmxhcHBpbmctbGluZXMtbGFyZ2UtZm9udC5odG1sIFsgV29udEZpeAogZmFzdC93cml0
aW5nLW1vZGUvZW5nbGlzaC1idC10ZXh0LXdpdGgtc3BlbGxpbmctbWFya2VyLmh0bWwgWyBXb250
Rml4IF0KIGZhc3Qvd3JpdGluZy1tb2RlL2VuZ2xpc2gtcmwtdGV4dC13aXRoLXNwZWxsaW5nLW1h
cmtlci5odG1sIFsgV29udEZpeCBdCiAKKyMgUmVxdWlyZXMgc3VwcG9ydCBmb3IgdGVzdGluZyB0
ZXh0IHJlcGxhY2VtZW50CitlZGl0aW5nL3NwZWxsaW5nL3RleHQtcmVwbGFjZW1lbnQtYWZ0ZXIt
dHlwaW5nLXRvLXdvcmQuaHRtbCBbIFNraXAgXQorCiAjIFVJS2l0IGRyYXdzIHNlbGVjdGlvbiBv
biBpT1MKIGZhc3Qvc2VsZWN0b3JzL2lucHV0LXdpdGgtc2VsZWN0aW9uLXBzZXVkby1lbGVtZW50
Lmh0bWwgWyBXb250Rml4IF0KIGZhc3Qvc2VsZWN0b3JzL3NlbGVjdGlvbi13aW5kb3ctaW5hY3Rp
dmUuaHRtbCBbIFdvbnRGaXggXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0
RXhwZWN0YXRpb25zCmluZGV4IDQzY2E3MTZhODRmMTQyMDQzNzZmZjEyMDFlMzMwODhmZGVmYTk2
MTMuLmIyMzRlMjA0MDAxZTY0NDQ0OTUyYTk5YmIxZGUzMTBhNTU1YTI3NzYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE4MCw2ICsxODAs
NyBAQCB3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC13
aGl0ZXNwYWNlLXNlbGVjdGlvbi5odG1sCiB3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvc3Bl
bGxpbmcvZ3JhbW1hci5odG1sCiB3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvc3BlbGxpbmcv
bWFya2Vycy5odG1sCiB3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvc3BlbGxpbmcvcmV0cm8t
Y29ycmVjdGlvbi1zcGVsbGluZy1tYXJrZXJzLmh0bWwKK3dlYmtpdC5vcmcvYi8xMDU2MTYgZWRp
dGluZy9zcGVsbGluZy90ZXh0LXJlcGxhY2VtZW50LWFmdGVyLXR5cGluZy10by13b3JkLmh0bWwK
IHdlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tYXJrZXJzLWFm
dGVyLXBhc3Rpbmctc2VudGVuY2UuaHRtbAogd2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL21h
Yy9zcGVsbGluZy9hdXRvY29ycmVjdGlvbi1kZWxldGUuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0
Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL21hYy9zcGVsbGluZy9hdXRvY29ycmVjdGlvbi1yZW1vdmlu
Zy11bmRlcmxpbmUtYWZ0ZXItcGFzdGUuaHRtbCBbIEZhaWx1cmUgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344033</attachid>
            <date>2018-06-30 18:52:50 -0700</date>
            <delta_ts>2018-06-30 19:33:33 -0700</delta_ts>
            <desc>Fix macOS build</desc>
            <filename>bug-187225-20180630185250.patch</filename>
            <type>text/plain</type>
            <size>70558</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzNDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWUyMjM5NDVhN2ZiNzU1
NWFiY2M5MmQ3MzhjNGEyZmJiM2E3MTdlMS4uNzliODJhNzMyYjFjMDkyMTRjYjE3ZGE0ZTYwNjkx
YjI2YzI0NDRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDE4LTA2LTMwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gVGV4
dCByZXBsYWNlbWVudHMgdGhhdCBlbmQgd2l0aCBzeW1ib2xzIGFyZSBleHBhbmRlZCBpbW1lZGlh
dGVseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3
MjI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MTExMjQzMz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBzaGlwcGluZyBTYWZhcmksIGVuYWJs
aW5nIGdyYW1tYXIgY29ycmVjdGlvbiBjYXVzZXMgdGV4dCBzaG9ydGN1dHMgdGhhdCBlbmQgd2l0
aCBzeW1ib2xzIG9yIHB1bmN0dWF0aW9uIG1hcmtzCisgICAgICAgIHRvIGltbWVkaWF0ZWx5IHRy
aWdnZXIgd2hlbiB0eXBpbmc7IG5vcm1hbGx5LCB3aGVuIGdyYW1tYXIgY29ycmVjdGlvbiBpcyBv
ZmYsIHRoaXMgaXMgb25seSB0cmlnZ2VyZWQgYWZ0ZXIgdGhlCisgICAgICAgIHVzZXIgaGFzIGFk
ZGl0aW9uYWxseSBpbnNlcnRlZCBhIHB1bmN0dWF0aW9uIG1hcmsgb3Igd2hpdGVzcGFjZSBjaGFy
YWN0ZXIgYWZ0ZXIgdGhlIHJlcGxhY2VkIHRleHQuCisKKyAgICAgICAgVGhpcyBidWcgaGFwcGVu
cyBiZWNhdXNlIGVuYWJsaW5nIGdyYW1tYXIgY2hlY2tpbmcgY2F1c2VzIHRoZSBzcGVsbCBjaGVj
a2luZyByYW5nZSB0byBleHBhbmQgdG8gdGhlIHJhbmdlIG9mIHRoZQorICAgICAgICBmdWxsIHNl
bnRlbmNlLCBzbyBhbnkgdGV4dCBjaGVja2luZyByZXN1bHRzIHRoYXQgcmVwbGFjZSBhbiBleGlz
dGluZyByYW5nZSBhcmUgdHJpZ2dlcmVkIGFzIGxvbmcgYXMgdGhleSBlbmQKKyAgICAgICAgYW55
d2hlcmUgaW4gdGhlIHNlbnRlbmNlLiBJbiBjb250cmFzdCwgd2hlbiBncmFtbWFyIGNoZWNraW5n
IGlzIGRpc2FibGVkLCB0aGUgc3BlbGwgY2hlY2tpbmcgcmFuZ2UgaXMgbGltaXRlZCB0bworICAg
ICAgICB0aGUgbmVhcmVzdCBhZGphY2VudCB3b3JkLCB3aGljaCBwcmV2ZW50cyB0ZXh0IHJlcGxh
Y2VtZW50IGZyb20gb2NjdXJyaW5nIGVsc2V3aGVyZSBpbiB0aGUgc2VudGVuY2UuCisKKyAgICAg
ICAgSG93ZXZlciwgYWZ0ZXIgcjIzMjUzMCwgd2Ugbm93IGFsd2F5cyBleHBhbmQgdGhlIHNwZWxs
IGNoZWNraW5nIHJhbmdlIHRvIHRoZSBleHRlbnQgb2YgdGhlIHNlbnRlbmNlIHdoZW4gYSB3b3Jk
CisgICAgICAgIGlzIHR5cGVkIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBncmFtbWFyIGNoZWNraW5n
IGlzIGVuYWJsZWQsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIGlzc3VlIGRlc2NyaWJlZCBhYm92ZSBu
b3cKKyAgICAgICAgaGFwcGVucyBldmVyeXdoZXJlLiBUbyBmaXggdGhpcyByZWNlbnQgcmVncmVz
c2lvbiBhbmQgdGhlIGV4aXN0aW5nIGJ1Zywgd2U6CisKKyAgICAgICAgLSAgIEF1Z21lbnQgb3Vy
IHNwZWxsY2hlY2tpbmcgY29kZXBhdGhzIHRvIGluY2x1ZGUgYSBuZXcgYXV0b21hdGljIHRleHQg
cmVwbGFjZW1lbnQgcmFuZ2UsIGFsb25nc2lkZQorICAgICAgICAgICAgc3BlbGxjaGVja2luZyBh
bmQgcGFyYWdyYXBoIHJhbmdlcy4KKyAgICAgICAgLSAgIExldCB0aGlzIGF1dG9tYXRpYyB0ZXh0
IHJlcGxhY2VtZW50IHJhbmdlIGJlIHRoZSByYW5nZSBvZiB0aGUgYWRqYWNlbnQgd29yZCBpbiB0
aGUgY2FzZSB3aGVyZSB0aGUgdXNlciBoYXMKKyAgICAgICAgICAgIGZpbmlzaGVkIHR5cGluZyBh
IHdvcmQuCisgICAgICAgIC0gICBXaGVuIG1hcmtpbmcgYW5kIHJlcGxhY2luZyB0ZXh0IGNoZWNr
aW5nIHJlc3VsdHMsIGNvbnN1bHQgdGhpcyBuZXcgYXV0b21hdGljIHRleHQgcmVwbGFjZW1lbnQg
aW5zdGVhZCBvZiB0aGUKKyAgICAgICAgICAgIHNwZWxsY2hlY2tpbmcgcmFuZ2UuCisKKyAgICAg
ICAgVGhpcyBrZWVwcyB0aGUgYmVoYXZpb3IgZ3JhbW1hciBhbmQgc2VudGVuY2UgcmV0cm8gY29y
cmVjdGlvbiByZXN1bHRzIGludGFjdCwgd2hpbGUgbGltaXRpbmcgdGhlIHNjb3BlIGluIHdoaWNo
CisgICAgICAgIHRleHQgcmVwbGFjZW1lbnQgcmVzdWx0cyBhcmUgYXBwbGllZC4KKworICAgICAg
ICBUZXN0OiBlZGl0aW5nL3NwZWxsaW5nL3RleHQtcmVwbGFjZW1lbnQtYWZ0ZXItdHlwaW5nLXRv
LXdvcmQuaHRtbAorCisgICAgICAgICogZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnRpbWVy
RmlyZWQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6cmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZCk6CisKKyAgICAgICAg
UGFzcyBpbiB0aGUgYWRqYWNlbnQgd29yZCByYW5nZSBmb3IgdGhlIGBhdXRvbWF0aWNSZXBsYWNl
bWVudFJhbmdlYCwgaW5zdGVhZCBvZiB0aGUgc3BlbGwgY2hlY2tpbmcgcmFuZ2UgKHdoaWNoCisg
ICAgICAgIG1heSBiZSBleHRlbmRlZCB0byB0aGUgZnVsbCByYW5nZSBvZiB0aGUgc2VudGVuY2Up
LgorCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRH
cmFtbWFySW5SYW5nZXMpOgorCisgICAgICAgIEFkZCBhbiBgYXV0b21hdGljUmVwbGFjZW1lbnRS
YW5nZWAgYXJndW1lbnQgdG8gbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdl
cywgYW5kIGFkanVzdCBjYWxsIHNpdGVzCisgICAgICAgIHRvIHBhc3MgaW4gYSByYW5nZSAoZ2Vu
ZXJhbGx5IHRoZSBzYW1lIGFzIHRoZSBzcGVsbCBjaGVja2luZyByYW5nZSwgYnV0IGluIHRoZSBj
YXNlIHdoZXJlIGEgd29yZCBoYXMgYmVlbiB0eXBlZCwKKyAgICAgICAgdGhpcyBpcyBhIG5hcnJv
d2VyIHJhbmdlKS4KKworICAgICAgICAoV2ViQ29yZTo6Y29ycmVjdFNwZWxsY2hlY2tpbmdQcmVz
ZXJ2aW5nVGV4dENoZWNraW5nUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
bWFya0FuZFJlcGxhY2VGb3IpOgorCisgICAgICAgIFdoZW4gcmVwbGFjaW5nIHRleHQsIG9ubHkg
YWxsb3cgdGV4dCByZXBsYWNlbWVudCBpbiB0aGUgYXV0b21hdGljIHJlcGxhY2VtZW50IHJhbmdl
IHJhdGhlciB0aGFuIHRoZSBzcGVsbAorICAgICAgICBjaGVja2luZyByYW5nZS4KKworICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcik6CisgICAg
ICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsQ2hlY2tlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrUmVxdWVzdDo6U3BlbGxDaGVja1JlcXVl
c3QpOgorCisgICAgICAgIEFkZCBhIG5ldyB2ZXJzaW9uIG9mIHRoaXMgY29uc3RydWN0b3IgdGhh
dCB0YWtlcyBhIHNpbmdsZSBSYW5nZSByZXByZXNlbnRpbmcgYm90aCB0aGUgc3BlbGxjaGVja2lu
ZyByYW5nZSBhbmQKKyAgICAgICAgdGhlIGF1dG9tYXRpYyB0ZXh0IHJlcGxhY2VtZW50IHJhbmdl
LCBmb3IgY29udmVuaWVuY2UuCisKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tSZXF1ZXN0
OjpjcmVhdGUpOgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxDaGVja2VyLmg6CisKKyAgICAgICAg
QWRkIHBsdW1iaW5nIGZvciB0aGUgYXV0b21hdGljIHJlcGxhY2VtZW50IHJhbmdlLgorCisgICAg
ICAgIChXZWJDb3JlOjpTcGVsbENoZWNrUmVxdWVzdDo6YXV0b21hdGljUmVwbGFjZW1lbnRSYW5n
ZSBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwOgorCisg
ICAgICAgIEFkZCBwbHVtYmluZyBmb3IgdGhlIGF1dG9tYXRpYyByZXBsYWNlbWVudCByYW5nZSwg
YW5kIG5ldyBoZWxwZXJzIHRvIGxvY2F0ZSB0aGUgcmFuZ2UgYXMgb2Zmc2V0cyB3aXRoaW4gdGhl
CisgICAgICAgIHRleHQgY2hlY2tpbmcgcGFyYWdyYXBoIHJhbmdlLgorCisgICAgICAgIChXZWJD
b3JlOjpUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OlRleHRDaGVja2luZ1BhcmFncmFwaCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmF1dG9tYXRpY1JlcGxhY2VtZW50
U3RhcnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nUGFyYWdyYXBoOjph
dXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9UZXh0
Q2hlY2tpbmdIZWxwZXIuaDoKKwogMjAxOC0wNi0zMCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtMRkNdIERvIG5vdCBhZGQgdGhlIGNvbnRhaW5pbmcgYmxvY2sn
cyBvZmZzZXQgd2hpbGUgY29tcHV0aW5nIHRoZSBvdXQtb2YtZmxvdyBzdGF0aWMgcG9zaXRpb24u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyLmNwcAppbmRleCBkNDUzZjY0NDBhZDQ2ZWJlMzBhMGNiYTllYWUyMjI3NDFhNWFiZjQyLi5h
OTQ2ZjUxMzZjNGFmMjVmMGEwNjJhOWE2YTM1NDkzZjVlN2M0NmRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKQEAgLTI4
Myw3ICsyODMsOCBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnRpbWVyRmlyZWQo
KQogICAgICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQoc2VsZWN0aW9uLnN0YXJ0KCksIHNlbGVj
dGlvbi5hZmZpbml0eSgpKTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHAgPSBzdGFydE9mV29y
ZChzdGFydCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpOwogICAgICAgICBWaXNpYmxlU2VsZWN0aW9u
IGFkamFjZW50V29yZHMgPSBWaXNpYmxlU2VsZWN0aW9uKHAsIHN0YXJ0KTsKLSAgICAgICAgbV9m
cmFtZS5lZGl0b3IoKS5tYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRl
eHRDaGVja2luZ1R5cGVTcGVsbGluZyB8IFRleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCB8IFRl
eHRDaGVja2luZ1R5cGVTaG93Q29ycmVjdGlvblBhbmVsLCBhZGphY2VudFdvcmRzLnRvTm9ybWFs
aXplZFJhbmdlKCkuZ2V0KCksIDApOworICAgICAgICBhdXRvIGFkamFjZW50V29yZFJhbmdlID0g
YWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6ZWRSYW5nZSgpOworICAgICAgICBtX2ZyYW1lLmVkaXRv
cigpLm1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5n
VHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50IHwgVGV4dENoZWNraW5n
VHlwZVNob3dDb3JyZWN0aW9uUGFuZWwsIGFkamFjZW50V29yZFJhbmdlLmdldCgpLCBhZGphY2Vu
dFdvcmRSYW5nZS5nZXQoKSwgbnVsbHB0cik7CiAgICAgfQogICAgICAgICBicmVhazsKICAgICBj
YXNlIEFsdGVybmF0aXZlVGV4dFR5cGVSZXZlcnNpb246IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAppbmRleCAwYzcxNjMyODUzNDBhYTUxNDQ0MzJlYTYyNjQwNTgzMjA5YzY4MGQ3Li5iYzMy
ZTFmNzU0N2Q1ODU0ZWJlYzUyMmZjMDA3ZmVjMDBmNDczOWE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCkBAIC02NjcsNyArNjY3LDcgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VTZWxlY3Rp
b25XaXRoRnJhZ21lbnQoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIGJvb2wgc2VsZWMKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgYXV0byByYW5nZVRvQ2hlY2sgPSBSYW5nZTo6Y3JlYXRlKGRv
Y3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk5vZGUobm9kZVRvQ2hlY2spLCBsYXN0UG9zaXRpb25J
bk5vZGUobm9kZVRvQ2hlY2spKTsKLSAgICBpZiAoYXV0byByZXF1ZXN0ID0gU3BlbGxDaGVja1Jl
cXVlc3Q6OmNyZWF0ZShyZXNvbHZlVGV4dENoZWNraW5nVHlwZU1hc2soKm5vZGVUb0NoZWNrLCBU
ZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgfCBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hciksIFRleHRD
aGVja2luZ1Byb2Nlc3NCYXRjaCwgcmFuZ2VUb0NoZWNrLmNvcHlSZWYoKSwgcmFuZ2VUb0NoZWNr
LmNvcHlSZWYoKSkpCisgICAgaWYgKGF1dG8gcmVxdWVzdCA9IFNwZWxsQ2hlY2tSZXF1ZXN0Ojpj
cmVhdGUocmVzb2x2ZVRleHRDaGVja2luZ1R5cGVNYXNrKCpub2RlVG9DaGVjaywgVGV4dENoZWNr
aW5nVHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZUdyYW1tYXIpLCBUZXh0Q2hlY2tpbmdQ
cm9jZXNzQmF0Y2gsIHJhbmdlVG9DaGVjay5jb3B5UmVmKCksIHJhbmdlVG9DaGVjay5jb3B5UmVm
KCksIHJhbmdlVG9DaGVjay5jb3B5UmVmKCkpKQogICAgICAgICBtX3NwZWxsQ2hlY2tlci0+cmVx
dWVzdENoZWNraW5nRm9yKHJlcXVlc3QucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKQEAgLTIzNDIs
NyArMjM0Miw4IEBAIHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1dv
cmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uICZ3b3JkU3RhcnQsCiAgICAgICAgIHJldHVybjsKIAog
ICAgIFZpc2libGVTZWxlY3Rpb24gYWRqYWNlbnRXb3JkcyA9IFZpc2libGVTZWxlY3Rpb24oc3Rh
cnRPZldvcmQod29yZFN0YXJ0LCBMZWZ0V29yZElmT25Cb3VuZGFyeSksIGVuZE9mV29yZCh3b3Jk
U3RhcnQsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSkpOwotICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NB
bmRCYWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgYWRqYWNlbnRXb3Jkcy50
b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBhZGphY2VudFdvcmRzLnRvTm9ybWFsaXplZFJhbmdl
KCkuZ2V0KCkpOworICAgIGF1dG8gYWRqYWNlbnRXb3JkUmFuZ2UgPSBhZGphY2VudFdvcmRzLnRv
Tm9ybWFsaXplZFJhbmdlKCk7CisgICAgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJ
blJhbmdlcyh0ZXh0Q2hlY2tpbmdPcHRpb25zLCBhZGphY2VudFdvcmRSYW5nZS5nZXQoKSwgYWRq
YWNlbnRXb3JkUmFuZ2UuZ2V0KCksIG51bGxwdHIpOwogI2Vsc2UKICNpZiAhVVNFKEFVVE9NQVRJ
Q19URVhUX1JFUExBQ0VNRU5UKQogICAgIFVOVVNFRF9QQVJBTShkb1JlcGxhY2VtZW50KTsKQEAg
LTI0MTcsMTMgKzI0MTgsMTcgQEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5
cGluZ1RvV29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24gJndvcmRTdGFydCwKICAgICAgICAgaWYg
KCFzcGVsbENoZWNraW5nUmFuZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgYXV0
byBhZGphY2VudFdvcmRSYW5nZSA9IFZpc2libGVTZWxlY3Rpb24oc3RhcnRPZldvcmQod29yZFN0
YXJ0LCBMZWZ0V29yZElmT25Cb3VuZGFyeSksIGVuZE9mV29yZCh3b3JkU3RhcnQsIFJpZ2h0V29y
ZElmT25Cb3VuZGFyeSkpLnRvTm9ybWFsaXplZFJhbmdlKCk7CisgICAgICAgIGlmICghYWRqYWNl
bnRXb3JkUmFuZ2UpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgLy8gVGhlIHNwZWxs
aW5nIGFuZCBncmFtbWFyIG1hcmtlcnMgaW4gdGhlc2UgcmFuZ2VzIGFyZSByZWNvbXB1dGVkLiBU
aGlzIGlzIGJlY2F1c2UgdHlwaW5nIGEgd29yZCBtYXkKICAgICAgICAgLy8gY2F1c2UgYW55IG90
aGVyIHBhcnQgb2YgdGhlIGN1cnJlbnQgc2VudGVuY2UgdG8gbG9zZSBvciBnYWluIHNwZWxsaW5n
IGNvcnJlY3Rpb24gbWFya2VycywgZHVlIHRvCiAgICAgICAgIC8vIHNlbnRlbmNlIHJldHJvIGNv
cnJlY3Rpb24uIEFzIHN1Y2gsIHdlIGV4cGFuZCB0aGUgc3BlbGwgY2hlY2tpbmcgcmFuZ2UgdG8g
ZW5jb21wYXNzIGFzIG11Y2ggb2YgdGhlCiAgICAgICAgIC8vIGZ1bGwgc2VudGVuY2UgYXMgd2Ug
Y2FuLCByZXNwZWN0aW5nIGJvdW5kYXJpZXMgd2hlcmUgc3BlbGxjaGVja2luZyBpcyBkaXNhYmxl
ZC4KICAgICAgICAgZnVsbFNlbnRlbmNlUmFuZ2UtPm93bmVyRG9jdW1lbnQoKS5tYXJrZXJzKCku
cmVtb3ZlTWFya2VycyhmdWxsU2VudGVuY2VSYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6Okdy
YW1tYXIpOwogICAgICAgICBzcGVsbENoZWNraW5nUmFuZ2UtPm93bmVyRG9jdW1lbnQoKS5tYXJr
ZXJzKCkucmVtb3ZlTWFya2VycyhzcGVsbENoZWNraW5nUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFy
a2VyOjpTcGVsbGluZyk7Ci0gICAgICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFy
SW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgc3BlbGxDaGVja2luZ1JhbmdlLmdldCgpLCBm
dWxsU2VudGVuY2VSYW5nZS5nZXQoKSk7CisgICAgICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRC
YWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgc3BlbGxDaGVja2luZ1Jhbmdl
LmdldCgpLCBhZGphY2VudFdvcmRSYW5nZS5nZXQoKSwgZnVsbFNlbnRlbmNlUmFuZ2UuZ2V0KCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNTQ3LDcgKzI1NTIsNyBAQCB2b2lkIEVk
aXRvcjo6bWFya0JhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQog
I2VuZGlmCiB9CiAKLXZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1h
ckluUmFuZ2VzKFRleHRDaGVja2luZ1R5cGVNYXNrIHRleHRDaGVja2luZ09wdGlvbnMsIFJhbmdl
KiBzcGVsbGluZ1JhbmdlLCBSYW5nZSogZ3JhbW1hclJhbmdlKQordm9pZCBFZGl0b3I6Om1hcmtB
bGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nVHlwZU1hc2sg
dGV4dENoZWNraW5nT3B0aW9ucywgUmFuZ2UqIHNwZWxsaW5nUmFuZ2UsIFJhbmdlKiBhdXRvbWF0
aWNSZXBsYWNlbWVudFJhbmdlLCBSYW5nZSogZ3JhbW1hclJhbmdlKQogewogICAgIEFTU0VSVCh1
bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKCkpOwogCkBAIC0yNTc5LDcgKzI1ODQsOCBAQCB2b2lk
IEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hl
Y2tpbmdUeXBlTWFzayB0ZXh0QwogCiAgICAgLy8gSW4gYXN5bmNocm9ub3VzIG1vZGUsIHdlIGlu
dGVudGlvbmFsbHkgY2hlY2sgcGFyYWdyYXBoLXdpZGUgc2VudGVuY2UuCiAgICAgY29uc3QgYXV0
byByZXNvbHZlZE9wdGlvbnMgPSByZXNvbHZlVGV4dENoZWNraW5nVHlwZU1hc2soZWRpdGFibGVO
b2RlLCB0ZXh0Q2hlY2tpbmdPcHRpb25zKTsKLSAgICBhdXRvIHJlcXVlc3QgPSBTcGVsbENoZWNr
UmVxdWVzdDo6Y3JlYXRlKHJlc29sdmVkT3B0aW9ucywgVGV4dENoZWNraW5nUHJvY2Vzc0luY3Jl
bWVudGFsLCBhc3luY2hyb25vdXMgPyBwYXJhZ3JhcGhSYW5nZS5nZXQoKSA6IHJhbmdlVG9DaGVj
aywgcGFyYWdyYXBoUmFuZ2UuY29weVJlZigpKTsKKyAgICBhdXRvJiB0ZXh0UmVwbGFjZW1lbnRS
YW5nZSA9IGF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UgPyAqYXV0b21hdGljUmVwbGFjZW1lbnRS
YW5nZSA6IHJhbmdlVG9DaGVjazsKKyAgICBhdXRvIHJlcXVlc3QgPSBTcGVsbENoZWNrUmVxdWVz
dDo6Y3JlYXRlKHJlc29sdmVkT3B0aW9ucywgVGV4dENoZWNraW5nUHJvY2Vzc0luY3JlbWVudGFs
LCBhc3luY2hyb25vdXMgPyBwYXJhZ3JhcGhSYW5nZS5nZXQoKSA6IHJhbmdlVG9DaGVjaywgdGV4
dFJlcGxhY2VtZW50UmFuZ2UsIHBhcmFncmFwaFJhbmdlLmNvcHlSZWYoKSk7CiAgICAgaWYgKCFy
ZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAKQEAgLTI2MjcsNyArMjYzMyw4IEBAIHN0YXRpYyB2
b2lkIGNvcnJlY3RTcGVsbGNoZWNraW5nUHJlc2VydmluZ1RleHRDaGVja2luZ1BhcmFncmFwaChU
ZXh0Q2hlY2tpbmdQYXJhCiAKICAgICBSZWZQdHI8UmFuZ2U+IG5ld1BhcmFncmFwaFJhbmdlID0g
VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCgmc2NvcGUsIHBhcmFncmFw
aExvY2F0aW9uLCBwYXJhZ3JhcGhMZW5ndGggKyByZXBsYWNlbWVudC5sZW5ndGgoKSAtIHJlc3Vs
dExlbmd0aCk7CiAKLSAgICBwYXJhZ3JhcGggPSBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoVGV4dEl0
ZXJhdG9yOjpzdWJyYW5nZSgqbmV3UGFyYWdyYXBoUmFuZ2UsIHJlc3VsdExvY2F0aW9uLCByZXBs
YWNlbWVudC5sZW5ndGgoKSksIG5ld1BhcmFncmFwaFJhbmdlLmdldCgpKTsKKyAgICBhdXRvIHNw
ZWxsQ2hlY2tpbmdSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKm5ld1BhcmFncmFwaFJh
bmdlLCByZXN1bHRMb2NhdGlvbiwgcmVwbGFjZW1lbnQubGVuZ3RoKCkpOworICAgIHBhcmFncmFw
aCA9IFRleHRDaGVja2luZ1BhcmFncmFwaChzcGVsbENoZWNraW5nUmFuZ2UuY29weVJlZigpLCBz
cGVsbENoZWNraW5nUmFuZ2UuY29weVJlZigpLCBuZXdQYXJhZ3JhcGhSYW5nZS5nZXQoKSk7CiB9
CiAKIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCkBA
IC0yNjM1LDcgKzI2NDIsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3Qg
U3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQogICAgIFJlZjxGcmFt
ZT4gcHJvdGVjdGlvbihtX2ZyYW1lKTsKIAogICAgIFRleHRDaGVja2luZ1R5cGVNYXNrIHRleHRD
aGVja2luZ09wdGlvbnMgPSByZXF1ZXN0LmRhdGEoKS5tYXNrKCk7Ci0gICAgVGV4dENoZWNraW5n
UGFyYWdyYXBoIHBhcmFncmFwaChyZXF1ZXN0LmNoZWNraW5nUmFuZ2UoKSwgJnJlcXVlc3QucGFy
YWdyYXBoUmFuZ2UoKSk7CisgICAgVGV4dENoZWNraW5nUGFyYWdyYXBoIHBhcmFncmFwaChyZXF1
ZXN0LmNoZWNraW5nUmFuZ2UoKSwgcmVxdWVzdC5hdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlKCks
ICZyZXF1ZXN0LnBhcmFncmFwaFJhbmdlKCkpOwogCiAgICAgY29uc3QgYm9vbCBzaG91bGRNYXJr
U3BlbGxpbmcgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zICYgVGV4dENoZWNraW5nVHlwZVNwZWxsaW5n
OwogICAgIGNvbnN0IGJvb2wgc2hvdWxkTWFya0dyYW1tYXIgPSB0ZXh0Q2hlY2tpbmdPcHRpb25z
ICYgVGV4dENoZWNraW5nVHlwZUdyYW1tYXI7CkBAIC0yNjc1LDYgKzI2ODIsNyBAQCB2b2lkIEVk
aXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFZlY3RvcjxUZQogICAgICAgICBjb25zdCBpbnQgcmVzdWx0TG9jYXRpb24gPSByZXN1
bHRzW2ldLmxvY2F0aW9uICsgb2Zmc2V0RHVlVG9SZXBsYWNlbWVudDsKICAgICAgICAgY29uc3Qg
aW50IHJlc3VsdExlbmd0aCA9IHJlc3VsdHNbaV0ubGVuZ3RoOwogICAgICAgICBjb25zdCBpbnQg
cmVzdWx0RW5kTG9jYXRpb24gPSByZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aDsKKyAgICAg
ICAgY29uc3QgaW50IGF1dG9tYXRpY1JlcGxhY2VtZW50RW5kTG9jYXRpb24gPSBwYXJhZ3JhcGgu
YXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpICsgcGFyYWdyYXBoLmF1dG9tYXRpY1JlcGxhY2Vt
ZW50TGVuZ3RoKCkgKyBvZmZzZXREdWVUb1JlcGxhY2VtZW50OwogICAgICAgICBjb25zdCBTdHJp
bmcmIHJlcGxhY2VtZW50ID0gcmVzdWx0c1tpXS5yZXBsYWNlbWVudDsKICAgICAgICAgY29uc3Qg
Ym9vbCByZXN1bHRFbmRzQXRBbWJpZ3VvdXNCb3VuZGFyeSA9IHVzZUFtYmlndW91c0JvdW5kYXJ5
T2Zmc2V0ICYmIHNlbGVjdGlvbk9mZnNldCAtIDEgPD0gcmVzdWx0RW5kTG9jYXRpb247CiAKQEAg
LTI2OTksMTIgKzI3MDcsMTIgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNvbnN0
IFNwZWxsQ2hlY2tSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8VGUKICAgICAgICAgICAg
ICAgICAgICAgYmFkR3JhbW1hclJhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCkubWFy
a2VycygpLmFkZE1hcmtlcihiYWRHcmFtbWFyUmFuZ2UucHRyKCksIERvY3VtZW50TWFya2VyOjpH
cmFtbWFyLCBkZXRhaWwudXNlckRlc2NyaXB0aW9uKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAocmVzdWx0RW5kTG9jYXRpb24gPD0gc3BlbGxp
bmdSYW5nZUVuZE9mZnNldCAmJiByZXN1bHRFbmRMb2NhdGlvbiA+PSBwYXJhZ3JhcGguY2hlY2tp
bmdTdGFydCgpCisgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0RW5kTG9jYXRpb24gPD0gYXV0b21h
dGljUmVwbGFjZW1lbnRFbmRMb2NhdGlvbiAmJiByZXN1bHRFbmRMb2NhdGlvbiA+PSBwYXJhZ3Jh
cGguYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpCiAgICAgICAgICAgICAmJiBpc0F1dG9tYXRp
Y1RleHRSZXBsYWNlbWVudFR5cGUocmVzdWx0VHlwZSkpIHsKLSAgICAgICAgICAgIC8vIEluIHRo
aXMgY2FzZSB0aGUgcmVzdWx0IHJhbmdlIGp1c3QgaGFzIHRvIHRvdWNoIHRoZSBzcGVsbGluZyBy
YW5nZSwgc28gd2UgY2FuIGhhbmRsZSByZXBsYWNpbmcgbm9uLXdvcmQgdGV4dCBzdWNoIGFzIHB1
bmN0dWF0aW9uLgorICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIHRoZSByZXN1bHQgcmFuZ2Ug
anVzdCBoYXMgdG8gdG91Y2ggdGhlIGF1dG9tYXRpYyByZXBsYWNlbWVudCByYW5nZSwgc28gd2Ug
Y2FuIGhhbmRsZSByZXBsYWNpbmcgbm9uLXdvcmQgdGV4dCBzdWNoIGFzIHB1bmN0dWF0aW9uLgog
ICAgICAgICAgICAgQVNTRVJUKHJlc3VsdExlbmd0aCA+IDAgJiYgcmVzdWx0TG9jYXRpb24gPj0g
MCk7CiAKLSAgICAgICAgICAgIGlmIChzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsICYmIChyZXN1
bHRFbmRMb2NhdGlvbiA8IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQKKyAgICAgICAgICAgIGlmIChz
aG91bGRTaG93Q29ycmVjdGlvblBhbmVsICYmIChyZXN1bHRFbmRMb2NhdGlvbiA8IGF1dG9tYXRp
Y1JlcGxhY2VtZW50RW5kTG9jYXRpb24KICAgICAgICAgICAgICAgICB8fCAhKHJlc3VsdFR5cGUg
JiAoVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50IHwgVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rp
b24pKSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTI3MjgsNyArMjczNiw3IEBA
IHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgVmVjdG9yPFRlCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgICAgIGlmIChzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKHJlc3VsdEVuZExvY2F0aW9uID09IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQpIHsKKyAg
ICAgICAgICAgICAgICBpZiAocmVzdWx0RW5kTG9jYXRpb24gPT0gYXV0b21hdGljUmVwbGFjZW1l
bnRFbmRMb2NhdGlvbikgewogICAgICAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IHNob3cgdGhl
IGNvcnJlY3Rpb24gcGFuZWwgb24gdGhlIGxhc3Qgd29yZC4KICAgICAgICAgICAgICAgICAgICAg
bV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5zaG93KHJhbmdlVG9SZXBsYWNlLCByZXBsYWNl
bWVudCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjgyOSw3ICsyODM3LDggQEAg
dm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mIHNwZWxsaW5nU2VsZWMKICAgICAgICAgVGV4dENoZWNraW5nVHlwZU1hc2sgdGV4
dENoZWNraW5nT3B0aW9ucyA9IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZzsKICAgICAgICAgaWYg
KG1hcmtHcmFtbWFyICYmIGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKQogICAgICAgICAgICAg
dGV4dENoZWNraW5nT3B0aW9ucyB8PSBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsKLSAgICAgICAg
bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyh0ZXh0Q2hlY2tpbmdPcHRp
b25zLCBzcGVsbGluZ1NlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBncmFtbWFy
U2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOworICAgICAgICBhdXRvIHNwZWxs
Q2hlY2tpbmdSYW5nZSA9IHNwZWxsaW5nU2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7Cisg
ICAgICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNr
aW5nT3B0aW9ucywgc3BlbGxDaGVja2luZ1JhbmdlLmdldCgpLCBzcGVsbENoZWNraW5nUmFuZ2Uu
Z2V0KCksIGdyYW1tYXJTZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IGUxNDE0M2Zl
Y2U5MTEwN2E2NTJmZmU4ZmM1MThmMmM3MjVmYTljZDcuLmI0YTAxMGZiNGU3MzIwYTJlYmQ3NDY1
M2JjNzRlOTQ5NzEwMjc0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtMjkzLDcgKzI5
Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzT3ZlcndyaXRlTW9kZUVuYWJsZWQoKSBjb25zdCB7
IHJldHVybiBtX292ZXJ3cml0ZU1vZGVFbmFibGVkOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB0b2dnbGVPdmVyd3JpdGVNb2RlRW5hYmxlZCgpOwogCi0gICAgdm9pZCBtYXJrQWxsTWlzc3Bl
bGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ1R5cGVNYXNrLCBSYW5nZSog
c3BlbGxpbmdSYW5nZSwgUmFuZ2UqIGdyYW1tYXJSYW5nZSk7CisgICAgdm9pZCBtYXJrQWxsTWlz
c3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ1R5cGVNYXNrLCBSYW5n
ZSogc3BlbGxpbmdSYW5nZSwgUmFuZ2UqIGF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UsIFJhbmdl
KiBncmFtbWFyUmFuZ2UpOwogI2lmIFBMQVRGT1JNKElPUykKICAgICBOT19SRVRVUk5fRFVFX1RP
X0FTU0VSVAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxs
Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKaW5k
ZXggYTViNjE2ZDI0OGUxMWM4NjQyNzk1MjYzZDg5Y2M0MGIxM2E5Y2ZmOS4uYzA1NGM1YWRlNTQw
OTA0MjIzYjkwOTNjMTQwYTM1ODY2Njc5NjFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3Bl
bGxDaGVja2VyLmNwcApAQCAtNDAsOCArNDAsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVNwZWxsQ2hlY2tSZXF1ZXN0OjpTcGVsbENoZWNrUmVxdWVzdChSZWY8UmFuZ2U+JiYgY2hlY2tp
bmdSYW5nZSwgUmVmPFJhbmdlPiYmIHBhcmFncmFwaFJhbmdlLCBjb25zdCBTdHJpbmcmIHRleHQs
IFRleHRDaGVja2luZ1R5cGVNYXNrIG1hc2ssIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHByb2Nl
c3NUeXBlKQorU3BlbGxDaGVja1JlcXVlc3Q6OlNwZWxsQ2hlY2tSZXF1ZXN0KFJlZjxSYW5nZT4m
JiBjaGVja2luZ1JhbmdlLCBSZWY8UmFuZ2U+JiYgYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSwg
UmVmPFJhbmdlPiYmIHBhcmFncmFwaFJhbmdlLCBjb25zdCBTdHJpbmcmIHRleHQsIFRleHRDaGVj
a2luZ1R5cGVNYXNrIG1hc2ssIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHByb2Nlc3NUeXBlKQog
ICAgIDogbV9jaGVja2luZ1JhbmdlKFdURk1vdmUoY2hlY2tpbmdSYW5nZSkpCisgICAgLCBtX2F1
dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UoV1RGTW92ZShhdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdl
KSkKICAgICAsIG1fcGFyYWdyYXBoUmFuZ2UoV1RGTW92ZShwYXJhZ3JhcGhSYW5nZSkpCiAgICAg
LCBtX3Jvb3RFZGl0YWJsZUVsZW1lbnQobV9jaGVja2luZ1JhbmdlLT5zdGFydENvbnRhaW5lcigp
LnJvb3RFZGl0YWJsZUVsZW1lbnQoKSkKICAgICAsIG1fcmVxdWVzdERhdGEodW5yZXF1ZXN0ZWRU
ZXh0Q2hlY2tpbmdTZXF1ZW5jZSwgdGV4dCwgbWFzaywgcHJvY2Vzc1R5cGUpCkBAIC01MCwxMyAr
NTEsMTMgQEAgU3BlbGxDaGVja1JlcXVlc3Q6OlNwZWxsQ2hlY2tSZXF1ZXN0KFJlZjxSYW5nZT4m
JiBjaGVja2luZ1JhbmdlLCBSZWY8UmFuZ2U+JiYgcGEKIAogU3BlbGxDaGVja1JlcXVlc3Q6On5T
cGVsbENoZWNrUmVxdWVzdCgpID0gZGVmYXVsdDsKIAotUmVmUHRyPFNwZWxsQ2hlY2tSZXF1ZXN0
PiBTcGVsbENoZWNrUmVxdWVzdDo6Y3JlYXRlKFRleHRDaGVja2luZ1R5cGVNYXNrIHRleHRDaGVj
a2luZ09wdGlvbnMsIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHByb2Nlc3NUeXBlLCBSZWY8UmFu
Z2U+JiYgY2hlY2tpbmdSYW5nZSwgUmVmPFJhbmdlPiYmIHBhcmFncmFwaFJhbmdlKQorUmVmUHRy
PFNwZWxsQ2hlY2tSZXF1ZXN0PiBTcGVsbENoZWNrUmVxdWVzdDo6Y3JlYXRlKFRleHRDaGVja2lu
Z1R5cGVNYXNrIHRleHRDaGVja2luZ09wdGlvbnMsIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHBy
b2Nlc3NUeXBlLCBSZWY8UmFuZ2U+JiYgY2hlY2tpbmdSYW5nZSwgUmVmPFJhbmdlPiYmIGF1dG9t
YXRpY1JlcGxhY2VtZW50UmFuZ2UsIFJlZjxSYW5nZT4mJiBwYXJhZ3JhcGhSYW5nZSkKIHsKICAg
ICBTdHJpbmcgdGV4dCA9IGNoZWNraW5nUmFuZ2UtPnRleHQoKTsKICAgICBpZiAoIXRleHQubGVu
Z3RoKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3BlbGxDaGVja1JlcXVlc3QoV1RGTW92ZShjaGVja2luZ1JhbmdlKSwgV1RGTW92ZShwYXJh
Z3JhcGhSYW5nZSksIHRleHQsIHRleHRDaGVja2luZ09wdGlvbnMsIHByb2Nlc3NUeXBlKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3BlbGxDaGVja1JlcXVlc3QoV1RGTW92ZShjaGVja2lu
Z1JhbmdlKSwgV1RGTW92ZShhdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlKSwgV1RGTW92ZShwYXJh
Z3JhcGhSYW5nZSksIHRleHQsIHRleHRDaGVja2luZ09wdGlvbnMsIHByb2Nlc3NUeXBlKSk7CiB9
CiAKIGNvbnN0IFRleHRDaGVja2luZ1JlcXVlc3REYXRhJiBTcGVsbENoZWNrUmVxdWVzdDo6ZGF0
YSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tl
ci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaAppbmRleCBhMjNjMThj
YzBmMTVmY2E1MjYwNWU0MWE3NzE4ODk4NjBkODQ2YTAzLi4wNTk0NTM2NmNjOTgxNDQwMWNkODgy
ZjBjMWQ3MGU1MjYyMDdjOGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nw
ZWxsQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmgK
QEAgLTQ0LDExICs0NCwxMiBAQCBjbGFzcyBTcGVsbENoZWNrZXI7CiAKIGNsYXNzIFNwZWxsQ2hl
Y2tSZXF1ZXN0IDogcHVibGljIFRleHRDaGVja2luZ1JlcXVlc3QgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWZQdHI8U3BlbGxDaGVja1JlcXVlc3Q+IGNyZWF0ZShUZXh0Q2hlY2tpbmdUeXBlTWFz
aywgVGV4dENoZWNraW5nUHJvY2Vzc1R5cGUsIFJlZjxSYW5nZT4mJiBjaGVja2luZ1JhbmdlLCBS
ZWY8UmFuZ2U+JiYgcGFyYWdyYXBoUmFuZ2UpOworICAgIHN0YXRpYyBSZWZQdHI8U3BlbGxDaGVj
a1JlcXVlc3Q+IGNyZWF0ZShUZXh0Q2hlY2tpbmdUeXBlTWFzaywgVGV4dENoZWNraW5nUHJvY2Vz
c1R5cGUsIFJlZjxSYW5nZT4mJiBjaGVja2luZ1JhbmdlLCBSZWY8UmFuZ2U+JiYgYXV0b21hdGlj
UmVwbGFjZW1lbnRSYW5nZSwgUmVmPFJhbmdlPiYmIHBhcmFncmFwaFJhbmdlKTsKICAgICB2aXJ0
dWFsIH5TcGVsbENoZWNrUmVxdWVzdCgpOwogCiAgICAgUmFuZ2UmIGNoZWNraW5nUmFuZ2UoKSBj
b25zdCB7IHJldHVybiBtX2NoZWNraW5nUmFuZ2UuZ2V0KCk7IH0KICAgICBSYW5nZSYgcGFyYWdy
YXBoUmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhcmFncmFwaFJhbmdlLmdldCgpOyB9CisgICAg
UmFuZ2UmIGF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX2F1dG9t
YXRpY1JlcGxhY2VtZW50UmFuZ2UuZ2V0KCk7IH0KICAgICBFbGVtZW50KiByb290RWRpdGFibGVF
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9yb290RWRpdGFibGVFbGVtZW50LmdldCgpOyB9CiAK
ICAgICB2b2lkIHNldENoZWNrZXJBbmRTZXF1ZW5jZShTcGVsbENoZWNrZXIqLCBpbnQgc2VxdWVu
Y2UpOwpAQCAtNjAsMTAgKzYxLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENhbmNlbCgpIG92
ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIFNwZWxsQ2hlY2tSZXF1ZXN0KFJlZjxSYW5nZT4mJiBj
aGVja2luZ1JhbmdlLCBSZWY8UmFuZ2U+JiYgcGFyYWdyYXBoUmFuZ2UsIGNvbnN0IFN0cmluZyYs
IFRleHRDaGVja2luZ1R5cGVNYXNrLCBUZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSk7CisgICAgU3Bl
bGxDaGVja1JlcXVlc3QoUmVmPFJhbmdlPiYmIGNoZWNraW5nUmFuZ2UsIFJlZjxSYW5nZT4mJiBh
dXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlLCBSZWY8UmFuZ2U+JiYgcGFyYWdyYXBoUmFuZ2UsIGNv
bnN0IFN0cmluZyYsIFRleHRDaGVja2luZ1R5cGVNYXNrLCBUZXh0Q2hlY2tpbmdQcm9jZXNzVHlw
ZSk7CiAKICAgICBTcGVsbENoZWNrZXIqIG1fY2hlY2tlciB7IG51bGxwdHIgfTsKICAgICBSZWY8
UmFuZ2U+IG1fY2hlY2tpbmdSYW5nZTsKKyAgICBSZWY8UmFuZ2U+IG1fYXV0b21hdGljUmVwbGFj
ZW1lbnRSYW5nZTsKICAgICBSZWY8UmFuZ2U+IG1fcGFyYWdyYXBoUmFuZ2U7CiAgICAgUmVmUHRy
PEVsZW1lbnQ+IG1fcm9vdEVkaXRhYmxlRWxlbWVudDsKICAgICBUZXh0Q2hlY2tpbmdSZXF1ZXN0
RGF0YSBtX3JlcXVlc3REYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tp
bmdIZWxwZXIuY3BwCmluZGV4IGVkOWJlZTQ5Y2E3MjJmM2Y4NjhhNGE1OTI1YjhjOTk3NGUzMGZj
OTIuLjcyNWQwMzNlZDZiOWIwN2ViZTk5ZTJiYTMyZjgzNDFlN2FlZWMyMjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKQEAgLTExNywxMiArMTE3
LDE2IEBAIHN0YXRpYyBSZWY8UmFuZ2U+IGV4cGFuZFRvUGFyYWdyYXBoQm91bmRhcnkoUmFuZ2Um
IHJhbmdlKQogICAgIHJldHVybiBwYXJhZ3JhcGhSYW5nZTsKIH0KIAotVGV4dENoZWNraW5nUGFy
YWdyYXBoOjpUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoUmVmPFJhbmdlPiYmIGNoZWNraW5nUmFuZ2Us
IFJhbmdlKiBwYXJhZ3JhcGhSYW5nZSkKK1RleHRDaGVja2luZ1BhcmFncmFwaDo6VGV4dENoZWNr
aW5nUGFyYWdyYXBoKFJlZjxSYW5nZT4mJiBjaGVja2luZ0FuZEF1dG9tYXRpY1JlcGxhY2VtZW50
UmFuZ2UpCisgICAgOiBtX2NoZWNraW5nUmFuZ2UoY2hlY2tpbmdBbmRBdXRvbWF0aWNSZXBsYWNl
bWVudFJhbmdlLmNvcHlSZWYoKSkKKyAgICAsIG1fYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZShj
aGVja2luZ0FuZEF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UuY29weVJlZigpKQoreworfQorCitU
ZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OlRleHRDaGVja2luZ1BhcmFncmFwaChSZWY8UmFuZ2U+JiYg
Y2hlY2tpbmdSYW5nZSwgUmVmPFJhbmdlPiYmIGF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UsIFJl
ZlB0cjxSYW5nZT4mJiBwYXJhZ3JhcGhSYW5nZSkKICAgICA6IG1fY2hlY2tpbmdSYW5nZShXVEZN
b3ZlKGNoZWNraW5nUmFuZ2UpKQotICAgICwgbV9wYXJhZ3JhcGhSYW5nZShwYXJhZ3JhcGhSYW5n
ZSkKLSAgICAsIG1fY2hlY2tpbmdTdGFydCgtMSkKLSAgICAsIG1fY2hlY2tpbmdFbmQoLTEpCi0g
ICAgLCBtX2NoZWNraW5nTGVuZ3RoKC0xKQorICAgICwgbV9hdXRvbWF0aWNSZXBsYWNlbWVudFJh
bmdlKFdURk1vdmUoYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSkpCisgICAgLCBtX3BhcmFncmFw
aFJhbmdlKFdURk1vdmUocGFyYWdyYXBoUmFuZ2UpKQogewogfQogCkBAIC0yMTEsNiArMjE1LDI2
IEBAIGludCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmNoZWNraW5nTGVuZ3RoKCkgY29uc3QKICAg
ICByZXR1cm4gbV9jaGVja2luZ0xlbmd0aDsKIH0KIAoraW50IFRleHRDaGVja2luZ1BhcmFncmFw
aDo6YXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpIGNvbnN0Cit7CisgICAgaWYgKG1fYXV0b21h
dGljUmVwbGFjZW1lbnRTdGFydCAhPSAtMSkKKyAgICAgICAgcmV0dXJuIG1fYXV0b21hdGljUmVw
bGFjZW1lbnRTdGFydDsKKworICAgIGF1dG8gc3RhcnRPZmZzZXRSYW5nZSA9IFJhbmdlOjpjcmVh
dGUocGFyYWdyYXBoUmFuZ2UoKS5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIHBhcmFncmFw
aFJhbmdlKCkuc3RhcnRQb3NpdGlvbigpLCBtX2F1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UtPnN0
YXJ0UG9zaXRpb24oKSk7CisgICAgbV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0ID0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFydE9mZnNldFJhbmdlLnB0cigpKTsKKyAgICByZXR1cm4g
bV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0OworfQorCitpbnQgVGV4dENoZWNraW5nUGFyYWdy
YXBoOjphdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCgpIGNvbnN0Cit7CisgICAgaWYgKG1fYXV0
b21hdGljUmVwbGFjZW1lbnRMZW5ndGggIT0gLTEpCisgICAgICAgIHJldHVybiBtX2F1dG9tYXRp
Y1JlcGxhY2VtZW50TGVuZ3RoOworCisgICAgYXV0byBlbmRPZmZzZXRSYW5nZSA9IFJhbmdlOjpj
cmVhdGUocGFyYWdyYXBoUmFuZ2UoKS5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIHBhcmFn
cmFwaFJhbmdlKCkuc3RhcnRQb3NpdGlvbigpLCBtX2F1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2Ut
PmVuZFBvc2l0aW9uKCkpOworICAgIG1fYXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGggPSBUZXh0
SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZE9mZnNldFJhbmdlLnB0cigpKSAtIGF1dG9tYXRpY1Jl
cGxhY2VtZW50U3RhcnQoKTsKKyAgICByZXR1cm4gbV9hdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0
aDsKK30KKwogVGV4dENoZWNraW5nSGVscGVyOjpUZXh0Q2hlY2tpbmdIZWxwZXIoRWRpdG9yQ2xp
ZW50JiBjbGllbnQsIFJhbmdlJiByYW5nZSkKICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAs
IG1fcmFuZ2UocmFuZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRD
aGVja2luZ0hlbHBlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxw
ZXIuaAppbmRleCA2YjBmNDNmY2Y3NGFlYWU3MTU2Y2E5MjQ5ODYzYWQ3MmMwNTRkZDdlLi5iYzc5
YmFkNzA2NGU1MzhmZjExNWQyMDM0NjhmYmFiOWE2NGNjZTEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmgKQEAgLTMzLDcgKzMzLDggQEAgc3RydWN0IFRl
eHRDaGVja2luZ1Jlc3VsdDsKIAogY2xhc3MgVGV4dENoZWNraW5nUGFyYWdyYXBoIHsKIHB1Ymxp
YzoKLSAgICBleHBsaWNpdCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoUmVmPFJhbmdlPiYmIGNoZWNr
aW5nUmFuZ2UsIFJhbmdlKiBwYXJhZ3JhcGhSYW5nZSA9IG51bGxwdHIpOworICAgIGV4cGxpY2l0
IFRleHRDaGVja2luZ1BhcmFncmFwaChSZWY8UmFuZ2U+JiYgY2hlY2tpbmdBbmRBdXRvbWF0aWNS
ZXBsYWNlbWVudFJhbmdlKTsKKyAgICBleHBsaWNpdCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoUmVm
PFJhbmdlPiYmIGNoZWNraW5nUmFuZ2UsIFJlZjxSYW5nZT4mJiBhdXRvbWF0aWNSZXBsYWNlbWVu
dFJhbmdlLCBSZWZQdHI8UmFuZ2U+JiYgcGFyYWdyYXBoUmFuZ2UpOwogCiAgICAgaW50IHJhbmdl
TGVuZ3RoKCkgY29uc3Q7CiAgICAgUmVmPFJhbmdlPiBzdWJyYW5nZShpbnQgY2hhcmFjdGVyT2Zm
c2V0LCBpbnQgY2hhcmFjdGVyQ291bnQpIGNvbnN0OwpAQCAtNTUsNiArNTYsMTEgQEAgcHVibGlj
OgogICAgIGludCBjaGVja2luZ0xlbmd0aCgpIGNvbnN0OwogICAgIFN0cmluZyBjaGVja2luZ1N1
YnN0cmluZygpIGNvbnN0IHsgcmV0dXJuIHRleHRTdWJzdHJpbmcoY2hlY2tpbmdTdGFydCgpLCBj
aGVja2luZ0xlbmd0aCgpKTsgfQogCisgICAgLy8gRGV0ZXJtaW5lcyB0aGUgcmFuZ2UgaW4gd2hp
Y2ggd2UgYWxsb3cgYXV0b21hdGljIHRleHQgcmVwbGFjZW1lbnQuIElmIGFuIGF1dG9tYXRpYyBy
ZXBsYWNlbWVudCByYW5nZSBpcyBub3QgcGFzc2VkIHRvIHRoZQorICAgIC8vIHRleHQgY2hlY2tp
bmcgcGFyYWdyYXBoLCB0aGlzIGRlZmF1bHRzIHRvIHRoZSBzcGVsbCBjaGVja2luZyByYW5nZS4K
KyAgICBpbnQgYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpIGNvbnN0OworICAgIGludCBhdXRv
bWF0aWNSZXBsYWNlbWVudExlbmd0aCgpIGNvbnN0OworCiAgICAgYm9vbCBjaGVja2luZ1Jhbmdl
TWF0Y2hlcyhpbnQgbG9jYXRpb24sIGludCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJuIGxvY2F0aW9u
ID09IGNoZWNraW5nU3RhcnQoKSAmJiBsZW5ndGggPT0gY2hlY2tpbmdMZW5ndGgoKTsgfQogICAg
IGJvb2wgaXNDaGVja2luZ1JhbmdlQ292ZXJlZEJ5KGludCBsb2NhdGlvbiwgaW50IGxlbmd0aCkg
Y29uc3QgeyByZXR1cm4gbG9jYXRpb24gPD0gY2hlY2tpbmdTdGFydCgpICYmIGxvY2F0aW9uICsg
bGVuZ3RoID49IGNoZWNraW5nU3RhcnQoKSArIGNoZWNraW5nTGVuZ3RoKCk7IH0KICAgICBib29s
IGNoZWNraW5nUmFuZ2VDb3ZlcnMoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKSBjb25zdCB7IHJl
dHVybiBsb2NhdGlvbiA8IGNoZWNraW5nRW5kKCkgJiYgbG9jYXRpb24gKyBsZW5ndGggPiBjaGVj
a2luZ1N0YXJ0KCk7IH0KQEAgLTY1LDEyICs3MSwxNSBAQCBwcml2YXRlOgogICAgIFJhbmdlJiBv
ZmZzZXRBc1JhbmdlKCkgY29uc3Q7CiAKICAgICBSZWY8UmFuZ2U+IG1fY2hlY2tpbmdSYW5nZTsK
KyAgICBSZWY8UmFuZ2U+IG1fYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZTsKICAgICBtdXRhYmxl
IFJlZlB0cjxSYW5nZT4gbV9wYXJhZ3JhcGhSYW5nZTsKICAgICBtdXRhYmxlIFJlZlB0cjxSYW5n
ZT4gbV9vZmZzZXRBc1JhbmdlOwogICAgIG11dGFibGUgU3RyaW5nIG1fdGV4dDsKLSAgICBtdXRh
YmxlIGludCBtX2NoZWNraW5nU3RhcnQ7Ci0gICAgbXV0YWJsZSBpbnQgbV9jaGVja2luZ0VuZDsK
LSAgICBtdXRhYmxlIGludCBtX2NoZWNraW5nTGVuZ3RoOworICAgIG11dGFibGUgaW50IG1fY2hl
Y2tpbmdTdGFydCB7IC0xIH07CisgICAgbXV0YWJsZSBpbnQgbV9jaGVja2luZ0VuZCB7IC0xIH07
CisgICAgbXV0YWJsZSBpbnQgbV9jaGVja2luZ0xlbmd0aCB7IC0xIH07CisgICAgbXV0YWJsZSBp
bnQgbV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0IHsgLTEgfTsKKyAgICBtdXRhYmxlIGludCBt
X2F1dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3RoIHsgLTEgfTsKIH07CiAKIGNsYXNzIFRleHRDaGVj
a2luZ0hlbHBlciB7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggYzk2MWE3NjVjNDY2NWQ2MDZkMTY2MjVjOWU0YjdjOGQyNjI0MDBkMy4uMzJkNmQ1
ZTkwYjQ1YzUwMjdkZGE4ZmU1MGIyMzU2MDNkOWM4NzU2NiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDE4LTA2LTMw
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNP
U10gVGV4dCByZXBsYWNlbWVudHMgdGhhdCBlbmQgd2l0aCBzeW1ib2xzIGFyZSBleHBhbmRlZCBp
bW1lZGlhdGVseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg3MjI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MTExMjQzMz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIHRlc3Rpbmcgc3VwcG9y
dCBmb3IgbW9ja2luZyBOU1NwZWxsQ2hlY2tlcidzIHRleHQgY2hlY2tpbmcgcmVzdWx0cy4gU2Vl
IGJlbG93IGZvciBtb3JlIGRldGFpbHMsIGFuZCB0aGUgbmV3CisgICAgICAgIGxheW91dCB0ZXN0
IGZvciBhbiBleGFtcGxlIG9mIGl0cyB1c2FnZS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChzZXRTcGVsbENoZWNrZXJUZXh0
UmVwbGFjZW1lbnRzQ2FsbGJhY2spOgorCisgICAgICAgIEFkZCBiaW5kaW5ncyBzdXBwb3J0IGlu
IFRlc3RSdW5uZXIgdG8gc3BlY2lmeSBhIHNldCBvZiB0ZXh0IHJlcGxhY2VtZW50IG1hcHBpbmdz
LiBFYWNoIGVudHJ5IGluIHRoZSBkaWN0aW9uYXJ5CisgICAgICAgIG1hcHMgYSBzdHJpbmcgcmVw
cmVzZW50aW5nIGFuIGlucHV0IHRvIHRoZSBOU1NwZWxsQ2hlY2tlciB0byBzb21lIGluZm9ybWF0
aW9uIGRlc2NyaWJpbmcgdGhlIHNwZWxsIGNoZWNraW5nCisgICAgICAgIHJlc3VsdCB0aGF0IExh
eW91dFRlc3RTcGVsbENoZWNrZXIgd2lsbCByZXR1cm4uCisKKyAgICAgICAgKFRlc3RSdW5uZXI6
OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5o
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAg
ICAgKHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZyk6CisKKyAgICAg
ICAgUmVzdG9yZSB0aGUgb3JpZ2luYWwgc2hhcmVkIE5TU3BlbGxjaGVja2VyIGJlZm9yZSB0cmFu
c2l0aW9uaW5nIHRvIHRoZSBuZXh0IGxheW91dCB0ZXN0LCBpZiBuZWVkZWQuCisKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW06IFJlbW92
ZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW06CisgICAg
ICAgIChUZXN0UnVubmVyOjpzZXRTcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZCk6CisgICAgICAg
IChUZXN0UnVubmVyOjpzZXRTcGVsbENoZWNrZXJUZXh0UmVwbGFjZW1lbnRzKToKKworICAgICAg
ICBUaGVzZSB0ZXN0UnVubmVyIG1ldGhvZHMgZW5zdXJlIHRoYXQgYC1bTlNTcGVsbENoZWNrZXIg
c2hhcmVkU3BlbGxDaGVja2VyXWAgaXMgc3dpenpsZWQgdG8gcmV0dXJuIG91ciBtb2NrCisgICAg
ICAgIExheW91dFRlc3RTcGVsbENoZWNrZXIgaW5zdGFuY2UgYmVmb3JlIGNhbGxpbmcgaW50byBp
dC4KKworICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hl
Y2tlci5oOiBSZW5hbWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJU
cmVlU3BlbGxDaGVja2VyLmguCisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlv
dXRUZXN0U3BlbGxDaGVja2VyLm1tOiBBZGRlZC4KKworICAgICAgICBNb3ZlZCBEdW1wUmVuZGVy
VHJlZVNwZWxsQ2hlY2tlciB0byBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLCBhbmQgbWFkZSBpdCBj
b21waWxlIGZvciBib3RoIFdlYktpdFRlc3RSdW5uZXIKKyAgICAgICAgKG1vZGVybiBXZWJLaXQp
IGFuZCBEdW1wUmVuZGVyVHJlZSAobGVnYWN5IFdlYktpdCkgYnkgcHV0dGluZyBpdCBpbiBUZXN0
UnVubmVyU2hhcmVkLgorCisgICAgICAgIChleGlzdGluZ0dsb2JhbExheW91dFRlc3RTcGVsbENo
ZWNrZXIpOgorICAgICAgICAoZW5zdXJlR2xvYmFsTGF5b3V0VGVzdFNwZWxsQ2hlY2tlcik6Cisg
ICAgICAgIChzdHJpbmdGb3JDb3JyZWN0aW9uUmVzcG9uc2UpOgorICAgICAgICAobnNUZXh0Q2hl
Y2tpbmdUeXBlKToKKyAgICAgICAgKC1bTGF5b3V0VGVzdFRleHRDaGVja2luZ1Jlc3VsdCBpbml0
V2l0aFR5cGU6cmFuZ2U6cmVwbGFjZW1lbnQ6XSk6CisgICAgICAgICgtW0xheW91dFRlc3RUZXh0
Q2hlY2tpbmdSZXN1bHQgcmFuZ2VdKToKKyAgICAgICAgKC1bTGF5b3V0VGVzdFRleHRDaGVja2lu
Z1Jlc3VsdCByZXN1bHRUeXBlXSk6CisgICAgICAgICgtW0xheW91dFRlc3RUZXh0Q2hlY2tpbmdS
ZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddKToKKyAgICAgICAgKC1bTGF5b3V0VGVzdFRleHRDaGVj
a2luZ1Jlc3VsdCBkZXNjcmlwdGlvbl0pOgorCisgICAgICAgIExheW91dFRlc3RUZXh0Q2hlY2tp
bmdSZXN1bHQgcmVwcmVzZW50cyBhIGZha2UgTlNUZXh0Q2hlY2tpbmdSZXN1bHQgY29udGFpbmlu
ZyBzcGVsbCBjaGVja2luZyByZXN1bHRzIHN1cHBsaWVkCisgICAgICAgIGJ5IHRoZSBsYXlvdXQg
dGVzdC4KKworICAgICAgICAoK1tMYXlvdXRUZXN0U3BlbGxDaGVja2VyIGluc3RhbGxJZk5lY2Vz
c2FyeV0pOgorICAgICAgICAoK1tMYXlvdXRUZXN0U3BlbGxDaGVja2VyIHVuaW5zdGFsbEFuZFJl
c2V0XSk6CisKKyAgICAgICAgSGVscGVyIG1ldGhvZHMgdG8gYmVnaW4gYW5kIGVuZCBzd2l6emxp
bmcgdGhlIHNoYXJlZCBOU1NwZWxsQ2hlY2tlci4KKworICAgICAgICAoLVtMYXlvdXRUZXN0U3Bl
bGxDaGVja2VyIHJlc2V0XSk6CisKKyAgICAgICAgUmVzZXRzIHRoZSBzdGF0ZSBvZiB0aGUgTGF5
b3V0VGVzdFNwZWxsQ2hlY2tlciAodGhpcyBlbnRhaWxzIGNsZWFyaW5nIHRoZSBmYWtlIHJlcGxh
Y2VtZW50cyBkaWN0aW9uYXJ5IGFuZAorICAgICAgICB0dXJuaW5nIG9mZiBsb2dnaW5nIGZvciBy
ZWNvcmRlZCBzcGVsbGNoZWNraW5nIHJlc3BvbnNlcykuCisKKyAgICAgICAgKC1bTGF5b3V0VGVz
dFNwZWxsQ2hlY2tlciByZXBsYWNlbWVudHNdKToKKyAgICAgICAgKC1bTGF5b3V0VGVzdFNwZWxs
Q2hlY2tlciBzZXRSZXBsYWNlbWVudHM6XSk6CisgICAgICAgICgtW0xheW91dFRlc3RTcGVsbENo
ZWNrZXIgc2V0UmVwbGFjZW1lbnRzRnJvbUpTT2JqZWN0OmluQ29udGV4dDpdKToKKworICAgICAg
ICBIZWxwZXIgbWV0aG9kIHRvIHRha2UgYSBgSlNPYmplY3RSZWZgIHN1cHBsaWVkIGJ5IHRoZSB0
ZXN0IHJ1bm5lciBhbmQgdHJhbnNmb3JtIGl0IGludG8gYSBtYXAgb2Ygc3BlbGwgY2hlY2tpbmcK
KyAgICAgICAgc3RyaW5nIGlucHV0cyB0byBMYXlvdXRUZXN0VGV4dENoZWNraW5nUmVzdWx0cy4K
KworICAgICAgICAoLVtMYXlvdXRUZXN0U3BlbGxDaGVja2VyIGNoZWNrU3RyaW5nOnJhbmdlOnR5
cGVzOm9wdGlvbnM6aW5TcGVsbERvY3VtZW50V2l0aFRhZzpvcnRob2dyYXBoeTp3b3JkQ291bnQ6
XSk6CisKKyAgICAgICAgQ29uc3VsdCB0aGUgdGV4dCByZXBsYWNlbWVudCBtYXAgYW5kIGJhaWwg
ZWFybHkgaWYgYSBtYXRjaCBpcyBmb3VuZCwgYmVmb3JlIGNhbGxpbmcgaW50byByZWFsIE5TU3Bl
bGxDaGVja2VyCisgICAgICAgIGxvZ2ljIHRvIHBlcmZvcm0gc3BlbGxjaGVja2luZy4KKworICAg
ICAgICAoLVtMYXlvdXRUZXN0U3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlOnRvQ29ycmVjdGlv
bjpmb3JXb3JkOmxhbmd1YWdlOmluU3BlbGxEb2N1bWVudFdpdGhUYWc6XSk6CisKKyAgICAgICAg
UmVpbXBsZW1lbnQgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uYWxpdHkgaW4gRHVtcFJlbmRlclRyZWVT
cGVsbENoZWNrZXIgdG8gbWFrZSBgLXJlY29yZFJlc3BvbnNlOuKApmAgcHJpbnQgdG8gc3Rkb3V0
CisgICAgICAgIGJ5IG92ZXJyaWRpbmcgdGhlIG1ldGhvZCBhbmQgcHJpbnRpbmcgaWYgdGhlIGAt
c3BlbGxDaGVja2VyTG9nZ2luZ0VuYWJsZWRgIHByb3BlcnR5IGhhcyBiZWVuIHNldCB0byBZRVMu
CisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKwogMjAxOC0wNi0zMCAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0
YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0NNYWtlXSBidWlsZC13ZWJraXQgc2hvdWxk
IGJlIGFibGUgdG8gZW5hYmxlIGFkZHJlc3Mgc2FuaXRpemVyCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBkYzliOWZiOGI4NzMyMWY2NDM0ZTQ2NmY0NDBiMTdkNTY0YzhiYTYwLi4yODdk
MjZhNjdjMDg4Y2RiNjYxOGFlZTRlMTIwOWM1YjRmMDZkMTI5IDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTc3LDcgKzc3LDYgQEAKIAkJMjlDRkJBMkUxMjI3M0ExMDAwQkMzMEMwIC8q
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMjlDRkJBMkQxMjI3M0ExMDAwQkMzMEMwIC8qIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyTWFjLm1tICovOyB9OwogCQkyQ0U4OEZBMjE3MTI0RDhDMDA3MzRGQzAg
LyogSmF2YVNjcmlwdFRocmVhZGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyQ0U4OEZBMTE3MTI0Q0VFMDA3MzRGQzAgLyogSmF2YVNjcmlwdFRo
cmVhZGluZy5jcHAgKi87IH07CiAJCTJENDAzRjFCMTUwODcyMDkwMDUzNThEMiAvKiBMYXlvdXRU
ZXN0SGVscGVyLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyRDQwM0VBMjE1MDg3MTQyMDA1MzU4RDIgLyogTGF5b3V0VGVzdEhlbHBlci5tICovOyB9Owot
CQkyREEyRTNBNTFFMUJBNTQxMDBBM0JCRDAgLyogRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREEyRTNB
NDFFMUJBNTQxMDBBM0JCRDAgLyogRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW0gKi87IH07
CiAJCTMxMTE3QjNEMTVEOUE1NkEwMDE2M0JDOCAvKiBNb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlk
ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTEx
N0IzQjE1RDlBNTZBMDAxNjNCQzggLyogTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tICov
OyB9OwogCQkzMTI5NDNGOTFFNzFGMkI0MDAxRUUyQ0MgLyogSU9TTGF5b3V0VGVzdENvbW11bmlj
YXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzE0OEEwNTUxRTZGOTBGNDAwRDNCMzE2IC8qIElPU0xheW91dFRlc3RDb21tdW5pY2F0aW9uLmNw
cCAqLzsgfTsKIAkJNDQ2NENBQkUxQzIwQTA4QjAwRTVCQjU1IC8qIER1bXBSZW5kZXJUcmVlQXBw
TWFpbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0
NjRDQUJEMUMyMEEwNzAwMEU1QkI1NSAvKiBEdW1wUmVuZGVyVHJlZUFwcE1haW4ubW0gKi87IH07
CkBAIC0xNDgsNiArMTQ3LDcgQEAKIAkJQzIzRUEyMDgxQkM5RjA1MTAwQzk4MEI3IC8qIEZvbnRX
aXRoRmVhdHVyZXMub3RmIGluIENvcHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMjNFQTIwNjFCQzlFQUJBMDBDOTgwQjcgLyogRm9udFdpdGhGZWF0dXJl
cy5vdGYgKi87IH07CiAJCUMyM0VBMjA5MUJDOUYwNTEwMEM5ODBCNyAvKiBGb250V2l0aEZlYXR1
cmVzLnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzIzRUEyMDcxQkM5RUFCQTAwQzk4MEI3IC8qIEZvbnRXaXRoRmVhdHVyZXMudHRmICov
OyB9OwogCQlFMUI3ODE2NTExQUYzMUI3MDA3RTFCQzIgLyogTW9ja0dlb2xvY2F0aW9uUHJvdmlk
ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUI3
ODA4NzExQUYxNjY5MDA3RTFCQzIgLyogTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIubW0gKi87IH07
CisJCUY0QzM1NzhEMjBFODQ0NEUwMEZBMDc0OCAvKiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRDMzU3ODgy
MEU4NDQyNzAwRkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIubW0gKi87IH07CiAJCUY0
RDQyMzYxMURENTA0ODIwMDY3ODI5MCAvKiBUZXh0SW5wdXRDb250cm9sbGVySU9TLm0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEQ0MjM1RjFERDUwNDUz
MDA2NzgyOTAgLyogVGV4dElucHV0Q29udHJvbGxlcklPUy5tICovOyB9OwogLyogRW5kIFBCWEJ1
aWxkRmlsZSBzZWN0aW9uICovCiAKQEAgLTI4Miw4ICsyODIsNiBAQAogCQkyQ0U4OEZBMTE3MTI0
Q0VFMDA3MzRGQzAgLyogSmF2YVNjcmlwdFRocmVhZGluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKYXZhU2NyaXB0VGhyZWFkaW5nLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkQ0MDNFQTIxNTA4NzE0MjAwNTM1OEQyIC8qIExheW91dFRlc3RI
ZWxwZXIubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBuYW1lID0gTGF5b3V0VGVzdEhl
bHBlci5tOyBwYXRoID0gbWFjL0xheW91dFRlc3RIZWxwZXIubTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkQ0MDNGMTkxNTA4NzFGOTAwNTM1OEQyIC8qIExheW91dFRlc3RIZWxwZXIg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxl
ZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IExheW91dFRl
c3RIZWxwZXI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0JCTJEQTJFM0Ez
MUUxQkE1NDEwMEEzQkJEMCAvKiBEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5oOyBw
YXRoID0gbWFjL0R1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTJEQTJFM0E0MUUxQkE1NDEwMEEzQkJEMCAvKiBEdW1wUmVuZGVyVHJlZVNw
ZWxsQ2hlY2tlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IER1
bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLm1tOyBwYXRoID0gbWFjL0R1bXBSZW5kZXJUcmVlU3Bl
bGxDaGVja2VyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRURFMERBQTFGNTEz
MURFMDBENUY4REYgLyogQXBwS2l0VGVzdFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBcHBLaXRUZXN0
U1BJLmg7IHBhdGggPSBtYWMvQXBwS2l0VGVzdFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzMTExN0IzQTE1RDlBNTZBMDAxNjNCQzggLyogTW9ja1dlYk5vdGlmaWNhdGlvblBy
b3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1vY2tXZWJOb3RpZmlj
YXRpb25Qcm92aWRlci5oOyBwYXRoID0gbWFjL01vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTExN0IzQjE1RDlBNTZBMDAxNjNCQzgg
LyogTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBuYW1lID0gTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tOyBwYXRoID0g
bWFjL01vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTQxMiw2ICs0MTAsOCBAQAogCQlDMjNFQTIwNzFCQzlFQUJBMDBDOTgwQjcgLyog
Rm9udFdpdGhGZWF0dXJlcy50dGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBmaWxlOyBuYW1lID0gRm9udFdpdGhGZWF0dXJlcy50dGY7IHBhdGggPSBm
b250cy9Gb250V2l0aEZlYXR1cmVzLnR0Zjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTFCNzgwODUxMUFGMTY0MzAwN0UxQkMyIC8qIE1vY2tHZW9sb2NhdGlvblByb3ZpZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1vY2tHZW9sb2NhdGlvblByb3ZpZGVyLmg7
IHBhdGggPSBtYWMvTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTFCNzgwODcxMUFGMTY2OTAwN0UxQkMyIC8qIE1vY2tHZW9sb2NhdGlvblBy
b3ZpZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gTW9ja0dl
b2xvY2F0aW9uUHJvdmlkZXIubW07IHBhdGggPSBtYWMvTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0QzM1Nzg4MjBFODQ0MjcwMEZBMDc0
OCAvKiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBuYW1lID0gTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbTsgcGF0aCA9IC4uL1Rlc3RS
dW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRjRDMzU3ODkyMEU4NDQyNzAwRkEwNzQ4IC8qIExheW91dFRlc3RT
cGVsbENoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGF5b3V0VGVz
dFNwZWxsQ2hlY2tlci5oOyBwYXRoID0gLi4vVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRU
ZXN0U3BlbGxDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RDQyMzVG
MURENTA0NTMwMDY3ODI5MCAvKiBUZXh0SW5wdXRDb250cm9sbGVySU9TLm0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMub2JqYzsgbmFtZSA9IFRleHRJbnB1dENvbnRyb2xsZXJJT1MubTsgcGF0aCA9
IGlvcy9UZXh0SW5wdXRDb250cm9sbGVySU9TLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUY0RDQyMzYwMURENTA0NjkwMDY3ODI5MCAvKiBUZXh0SW5wdXRDb250cm9sbGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRJbnB1dENvbnRyb2xsZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24g
Ki8KQEAgLTY4Nyw2ICs2ODcsNyBAQAogCQkzMTQ4QTA2NTFFNkY5MEY0MDBEM0IzMTYgLyogVGVz
dFJ1bm5lclNoYXJlZCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJRjRCNkMzMTgyMEU4NDM4MjAwOEFDMjI1IC8qIGNvY29hICovLAogCQkJCTMxNDhBMDU1
MUU2RjkwRjQwMEQzQjMxNiAvKiBJT1NMYXlvdXRUZXN0Q29tbXVuaWNhdGlvbi5jcHAgKi8sCiAJ
CQkJMzE0OEEwNTYxRTZGOTBGNDAwRDNCMzE2IC8qIElPU0xheW91dFRlc3RDb21tdW5pY2F0aW9u
LmggKi8sCiAJCQkpOwpAQCAtNzc5LDggKzc4MCw2IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlB
OEI5MUFERjBDRjNCMzcyMDA4RjkxRkYgLyogRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLmggKi8s
CiAJCQkJQThCOTFBRDcwQ0YzQjMyRjAwOEY5MUZGIC8qIER1bXBSZW5kZXJUcmVlUGFzdGVib2Fy
ZC5tbSAqLywKLQkJCQkyREEyRTNBMzFFMUJBNTQxMDBBM0JCRDAgLyogRHVtcFJlbmRlclRyZWVT
cGVsbENoZWNrZXIuaCAqLywKLQkJCQkyREEyRTNBNDFFMUJBNTQxMDBBM0JCRDAgLyogRHVtcFJl
bmRlclRyZWVTcGVsbENoZWNrZXIubW0gKi8sCiAJCQkJQThCOTFBREQwQ0YzQjM3MjAwOEY5MUZG
IC8qIER1bXBSZW5kZXJUcmVlV2luZG93LmggKi8sCiAJCQkJQThCOTFBRDkwQ0YzQjMyRjAwOEY5
MUZGIC8qIER1bXBSZW5kZXJUcmVlV2luZG93Lm1tICovLAogCQkJKTsKQEAgLTgxNyw2ICs4MTYs
MTUgQEAKIAkJCW5hbWUgPSBQaXhlbER1bXA7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwog
CQl9OworCQlGNEI2QzMxODIwRTg0MzgyMDA4QUMyMjUgLyogY29jb2EgKi8gPSB7CisJCQlpc2Eg
PSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUY0QzM1Nzg5MjBFODQ0MjcwMEZBMDc0
OCAvKiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLmggKi8sCisJCQkJRjRDMzU3ODgyMEU4NDQyNzAw
RkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIubW0gKi8sCisJCQkpOworCQkJbmFtZSA9
IGNvY29hOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJRjRENDIzNUQxREQ0
Rjk5OTAwNjc4MjkwIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCkBAIC0xMDgxLDcgKzEwODksNiBAQAogCQkJCUJDQTE4QjdCMEM5QjA4RjEwMDExNDM2
OSAvKiBEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mby5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4
RDc5Q0VCMEZDMjhCMkMwMDRBQzhGRSAvKiBEdW1wUmVuZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJj
ZS5tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThCOTFBREEwQ0YzQjMyRjAwOEY5MUZGIC8qIER1bXBS
ZW5kZXJUcmVlUGFzdGVib2FyZC5tbSBpbiBTb3VyY2VzICovLAotCQkJCTJEQTJFM0E1MUUxQkE1
NDEwMEEzQkJEMCAvKiBEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUE4QjkxQURDMENGM0IzMkYwMDhGOTFGRiAvKiBEdW1wUmVuZGVyVHJlZVdpbmRvdy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUJDQTE4QjYyMEM5QjA4QzIwMDExNDM2OSAvKiBFZGl0aW5n
RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEI3MDBDOUIwOERCMDAxMTQzNjkg
LyogRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLApAQCAtMTA5Myw2ICsx
MTAwLDcgQEAKIAkJCQkyQ0U4OEZBMjE3MTI0RDhDMDA3MzRGQzAgLyogSmF2YVNjcmlwdFRocmVh
ZGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjE4RTcwNjFENkJBMDIzMDAyN0U1NDcgLyog
SlNVSVNjcmlwdENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYxOEU3MTMxRDZC
QzQzQTAwMjdFNTQ3IC8qIEpTV3JhcHBlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGNEMzNTc4
RDIwRTg0NDRFMDBGQTA3NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUUxQjc4MTY1MTFBRjMxQjcwMDdFMUJDMiAvKiBNb2NrR2VvbG9jYXRpb25Qcm92
aWRlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxMTE3QjNEMTVEOUE1NkEwMDE2M0JDOCAvKiBN
b2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEI3
MjBDOUIwOERCMDAxMTQzNjkgLyogTmF2aWdhdGlvbkNvbnRyb2xsZXIubSBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAppbmRleCBmOGFkOTUxNTE3NDBiNjZjNzQ2
OTJhZDUyZDM3NGEzMDVkYTQ0NjcxLi43ZThlYzliZDQ1YjBiNzVmNGU4ZTkyNmJhNWM3ZDYzOGU2
MjZlNDYzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcApAQCAtMTc4OCw2ICsxNzg4
LDE2IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkQ2Fs
bGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRTcGVsbENoZWNrZXJU
ZXh0UmVwbGFjZW1lbnRzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVm
IGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwg
Y29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQorewor
ICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpOworCisgICAgYXV0byogcnVubmVyID0gc3RhdGljX2Nhc3Q8VGVzdFJ1
bm5lcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgcnVubmVyLT5zZXRT
cGVsbENoZWNrZXJUZXh0UmVwbGFjZW1lbnRzKGNvbnRleHQsIEpTVmFsdWVUb09iamVjdChjb250
ZXh0LCBhcmd1bWVudHNbMF0sIG51bGxwdHIpKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIHNldE9wZW5QYW5lbEZpbGVz
Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09i
amVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJl
ZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIGlmIChhcmd1bWVu
dENvdW50ID09IDEpCkBAIC0yMjU1LDYgKzIyNjUsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBUZXN0
UnVubmVyOjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJydW5VSVNjcmlwdCIsIHJ1blVJ
U2NyaXB0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiaW1hZ2VDb3VudEluR2VuZXJhbFBh
c3RlYm9hcmQiLCBpbWFnZUNvdW50SW5HZW5lcmFsUGFzdGVib2FyZENhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CiAgICAgICAgIHsgInNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkIiwgc2V0U3BlbGxDaGVj
a2VyTG9nZ2luZ0VuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzZXRTcGVsbENo
ZWNrZXJUZXh0UmVwbGFjZW1lbnRzIiwgc2V0U3BlbGxDaGVja2VyVGV4dFJlcGxhY2VtZW50c0Nh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE9wZW5QYW5lbEZpbGVzIiwgc2V0T3BlblBh
bmVsRmlsZXNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJmb3JjZUltbWVkaWF0ZUNvbXBs
ZXRpb24iLCBmb3JjZUltbWVkaWF0ZUNvbXBsZXRpb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7IDAsIDAsIDAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5l
ci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCmluZGV4IDNlMzI4YjgyMjMy
M2ZlYzRiNGI1NGY3NzdhY2VkMjQzNDY0NmI2YzEuLmRiZjE0ZmViNjE3OGJjYWQ2Nzk2YTAxYzQ0
NTdhYjI1YmNkMjIxY2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5u
ZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgKQEAgLTM3Niw2ICsz
NzYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBkdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoKSBjb25z
dCB7IHJldHVybiBtX2R1bXBKU0NvbnNvbGVMb2dJblN0ZEVycjsgfQogCiAgICAgdm9pZCBzZXRT
cGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZChib29sKTsKKyAgICB2b2lkIHNldFNwZWxsQ2hlY2tl
clRleHRSZXBsYWNlbWVudHMoSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiByZXBsYWNlbWVudHMp
OwogCiAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBvcGVuUGFuZWxGaWxlcygp
IGNvbnN0IHsgcmV0dXJuIG1fb3BlblBhbmVsRmlsZXM7IH0KICAgICB2b2lkIHNldE9wZW5QYW5l
bEZpbGVzKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggZDY5Njc3YmQ5ZWU3M2E4OWQyZjIwNjQ1MDQ4ZGM3
MDJjOTZmNzNiOS4uMmQ1OWRhNzhiNTIxMDgwODQ1NWY2NGY5NjlhOGM2MmVlMzc5Y2RkOCAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtMzQsMTMgKzM0
LDEzIEBACiAjaW1wb3J0ICJEZWZhdWx0UG9saWN5RGVsZWdhdGUuaCIKICNpbXBvcnQgIkR1bXBS
ZW5kZXJUcmVlRHJhZ2dpbmdJbmZvLmgiCiAjaW1wb3J0ICJEdW1wUmVuZGVyVHJlZVBhc3RlYm9h
cmQuaCIKLSNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLmgiCiAjaW1wb3J0ICJE
dW1wUmVuZGVyVHJlZVdpbmRvdy5oIgogI2ltcG9ydCAiRWRpdGluZ0RlbGVnYXRlLmgiCiAjaW1w
b3J0ICJFdmVudFNlbmRpbmdDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJGcmFtZUxvYWREZWxlZ2F0
ZS5oIgogI2ltcG9ydCAiSGlzdG9yeURlbGVnYXRlLmgiCiAjaW1wb3J0ICJKYXZhU2NyaXB0VGhy
ZWFkaW5nLmgiCisjaW1wb3J0ICJMYXlvdXRUZXN0U3BlbGxDaGVja2VyLmgiCiAjaW1wb3J0ICJN
b2NrR2VvbG9jYXRpb25Qcm92aWRlci5oIgogI2ltcG9ydCAiTW9ja1dlYk5vdGlmaWNhdGlvblBy
b3ZpZGVyLmgiCiAjaW1wb3J0ICJOYXZpZ2F0aW9uQ29udHJvbGxlci5oIgpAQCAtMTg2OCw3ICsx
ODY4LDkgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVU
ZXN0aW5nKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb24KIAogICAgIFttYWluRnJhbWUgX2NsZWFy
T3BlbmVyXTsKIAotICAgIHNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKGZhbHNlKTsKKyNp
ZiBQTEFURk9STShNQUMpCisgICAgW0xheW91dFRlc3RTcGVsbENoZWNrZXIgdW5pbnN0YWxsQW5k
UmVzZXRdOworI2VuZGlmCiAKICAgICByZXNldEFjY3VtdWxhdGVkTG9ncygpOwogICAgIFdlYkNv
cmVUZXN0U3VwcG9ydDo6aW5pdGlhbGl6ZUxvZ0NoYW5uZWxzSWZOZWNlc3NhcnkoKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tl
ci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2Vy
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlM2ZkNzFjNDIxMWMwYjI3Yzc1Yzkx
ZjE2NjFmYjdjYzYxNDE4NGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlU3BlbGxDaGVj
a2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotdm9pZCBz
ZXRTcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZChib29sKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5tbSBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5tbQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYmJiNGQ5NmRlOWUyYTFhMmQ3N2NjYjM1MjhiNzMxZDFiZGYw
OWRmNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW0KKysrIC9k
ZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgi
Ci0jaW1wb3J0ICJEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5oIgotCi0jaWYgUExBVEZPUk0o
TUFDKQotCi0jaW1wb3J0IDxBcHBLaXQvTlNTcGVsbENoZWNrZXIuaD4KLSNpbXBvcnQgPHd0Zi9B
c3NlcnRpb25zLmg+Ci0jaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KLQotc3RhdGlj
IGJvb2wgc3BlbGxDaGVja2VyTG9nZ2luZ0VuYWJsZWQ7Ci1zdGF0aWMgSU1QIGFwcEtpdFJlY29y
ZFJlc3BvbnNlSU1QOwotCi1zdGF0aWMgY29uc3QgY2hhciAqc3RyaW5nRm9yQ29ycmVjdGlvblJl
c3BvbnNlKE5TQ29ycmVjdGlvblJlc3BvbnNlIGNvcnJlY3Rpb25SZXNwb25zZSkKLXsKLSAgICBz
d2l0Y2ggKGNvcnJlY3Rpb25SZXNwb25zZSkgewotICAgIGNhc2UgTlNDb3JyZWN0aW9uUmVzcG9u
c2VOb25lOgotICAgICAgICByZXR1cm4gIm5vbmUiOwotICAgIGNhc2UgTlNDb3JyZWN0aW9uUmVz
cG9uc2VBY2NlcHRlZDoKLSAgICAgICAgcmV0dXJuICJhY2NlcHRlZCI7Ci0gICAgY2FzZSBOU0Nv
cnJlY3Rpb25SZXNwb25zZVJlamVjdGVkOgotICAgICAgICByZXR1cm4gInJlamVjdGVkIjsKLSAg
ICBjYXNlIE5TQ29ycmVjdGlvblJlc3BvbnNlSWdub3JlZDoKLSAgICAgICAgcmV0dXJuICJpZ25v
cmVkIjsKLSAgICBjYXNlIE5TQ29ycmVjdGlvblJlc3BvbnNlRWRpdGVkOgotICAgICAgICByZXR1
cm4gImVkaXRlZCI7Ci0gICAgY2FzZSBOU0NvcnJlY3Rpb25SZXNwb25zZVJldmVydGVkOgotICAg
ICAgICByZXR1cm4gInJldmVydGVkIjsKLSAgICB9Ci0KLSAgICByZXR1cm4gImludmFsaWQiOwot
fQotCi1zdGF0aWMgdm9pZCBkcnRfTlNTcGVsbENoZWNrZXJfcmVjb3JkUmVzcG9uc2VUb0NvcnJl
Y3Rpb24oaWQgc2VsZiwgU0VMIF9jbWQsIE5TQ29ycmVjdGlvblJlc3BvbnNlIHJlc3BvbnNlLCBO
U1N0cmluZyAqY29ycmVjdGlvbiwgTlNTdHJpbmcgKndvcmQsIE5TU3RyaW5nICpsYW5ndWFnZSwg
TlNJbnRlZ2VyIHNwZWxsRG9jdW1lbnRUYWcpCi17Ci0gICAgaWYgKHNwZWxsQ2hlY2tlckxvZ2dp
bmdFbmFibGVkKQotICAgICAgICBwcmludGYoIk5TU3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNl
VG9Db3JyZWN0aW9uOiAlcyAtPiAlcyAocmVzcG9uc2U6ICVzKVxuIiwgW3dvcmQgVVRGOFN0cmlu
Z10sIFtjb3JyZWN0aW9uIFVURjhTdHJpbmddLCBzdHJpbmdGb3JDb3JyZWN0aW9uUmVzcG9uc2Uo
cmVzcG9uc2UpKTsKLQotICAgIHd0ZkNhbGxJTVA8dm9pZCwgTlNDb3JyZWN0aW9uUmVzcG9uc2Us
IE5TU3RyaW5nICosIE5TU3RyaW5nICosIE5TU3RyaW5nICosIE5TSW50ZWdlcj4oYXBwS2l0UmVj
b3JkUmVzcG9uc2VJTVAsIHNlbGYsIF9jbWQsIHJlc3BvbnNlLCBjb3JyZWN0aW9uLCB3b3JkLCBs
YW5ndWFnZSwgc3BlbGxEb2N1bWVudFRhZyk7Ci19Ci0KLXN0YXRpYyB2b2lkIHN3aXp6bGVOU1Nw
ZWxsQ2hlY2tlck1ldGhvZHNJZk5lZWRlZCgpCi17Ci0gICAgc3RhdGljIGJvb2wgaGFzU3dpenps
ZWQ7Ci0gICAgaWYgKGhhc1N3aXp6bGVkKQotICAgICAgICByZXR1cm47Ci0gICAgaGFzU3dpenps
ZWQgPSB0cnVlOwotCi0gICAgTWV0aG9kIHJlY29yZFJlc3BvbnNlTWV0aG9kID0gY2xhc3NfZ2V0
SW5zdGFuY2VNZXRob2Qob2JqY19nZXRDbGFzcygiTlNTcGVsbENoZWNrZXIiKSwgQHNlbGVjdG9y
KHJlY29yZFJlc3BvbnNlOnRvQ29ycmVjdGlvbjpmb3JXb3JkOmxhbmd1YWdlOmluU3BlbGxEb2N1
bWVudFdpdGhUYWc6KSk7Ci0KLSAgICBhcHBLaXRSZWNvcmRSZXNwb25zZUlNUCA9IG1ldGhvZF9z
ZXRJbXBsZW1lbnRhdGlvbihyZWNvcmRSZXNwb25zZU1ldGhvZCwgKElNUClkcnRfTlNTcGVsbENo
ZWNrZXJfcmVjb3JkUmVzcG9uc2VUb0NvcnJlY3Rpb24pOwotfQotCi12b2lkIHNldFNwZWxsQ2hl
Y2tlckxvZ2dpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKLXsKLSAgICBzd2l6emxlTlNTcGVsbENo
ZWNrZXJNZXRob2RzSWZOZWVkZWQoKTsKLQotICAgIHNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVk
ID0gZW5hYmxlZDsKLX0KLQotI2Vsc2UgLy8gUExBVEZPUk0oTUFDKQotCi12b2lkIHNldFNwZWxs
Q2hlY2tlckxvZ2dpbmdFbmFibGVkKGJvb2wpCi17Ci19Ci0KLSNlbmRpZiAvLyBQTEFURk9STShN
QUMpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5t
bSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCmluZGV4IDZlMDJm
ZjAzYTIzOTI4MTMyNGY0ZmFhMmU1ZjFhN2RjNTFmMTg2OTQuLjk2ZWZkNWViZGI1YjNkNDMyMjcz
MDc2ZDU5ZDQ2NThhODg4NTYyNWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9UZXN0UnVubmVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVu
bmVyTWFjLm1tCkBAIC0zMSw4ICszMSw4IEBACiAjaW1wb3J0ICJUZXN0UnVubmVyLmgiCiAKICNp
bXBvcnQgIkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5oIgotI2ltcG9ydCAiRHVtcFJlbmRlclRyZWVT
cGVsbENoZWNrZXIuaCIKICNpbXBvcnQgIkVkaXRpbmdEZWxlZ2F0ZS5oIgorI2ltcG9ydCAiTGF5
b3V0VGVzdFNwZWxsQ2hlY2tlci5oIgogI2ltcG9ydCAiTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIu
aCIKICNpbXBvcnQgIk1vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5oIgogI2ltcG9ydCAiUG9s
aWN5RGVsZWdhdGUuaCIKQEAgLTIxMiw3ICsyMTIsMjEgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRT
dG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQogCiB2b2lkIFRlc3RS
dW5uZXI6OnNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKLSAg
ICA6OnNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKGVuYWJsZWQpOworI2lmIFBMQVRGT1JN
KE1BQykKKyAgICBbTGF5b3V0VGVzdFNwZWxsQ2hlY2tlciBpbnN0YWxsSWZOZWNlc3NhcnldLnNw
ZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkID0gZW5hYmxlZDsKKyNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKGVuYWJsZWQpOworI2VuZGlmCit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0U3BlbGxDaGVj
a2VyVGV4dFJlcGxhY2VtZW50cyhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgcmVw
bGFjZW1lbnRzKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBbW0xheW91dFRlc3RTcGVsbENo
ZWNrZXIgaW5zdGFsbElmTmVjZXNzYXJ5XSBzZXRSZXBsYWNlbWVudHNGcm9tSlNPYmplY3Q6cmVw
bGFjZW1lbnRzIGluQ29udGV4dDpjb250ZXh0XTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJl
cGxhY2VtZW50SW5mbyk7CisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOworI2VuZGlmCiB9CiAK
IHZvaWQgVGVzdFJ1bm5lcjo6Y2xvc2VJZGxlTG9jYWxTdG9yYWdlRGF0YWJhc2VzKCkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tl
ci5oIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2Vy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODBlYTliMDJiYmFjMjY1ODlkNTUyNTcyMTRiMjQ2NWJkYTcyYmE2NAot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVz
dFNwZWxsQ2hlY2tlci5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuaD4KKworI2lmIFBM
QVRGT1JNKE1BQykKKworI2ltcG9ydCA8QXBwS2l0L05TU3BlbGxDaGVja2VyLmg+CisKK0BpbnRl
cmZhY2UgTGF5b3V0VGVzdFRleHRDaGVja2luZ1Jlc3VsdCA6IE5TVGV4dENoZWNraW5nUmVzdWx0
CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhUeXBlOihOU1RleHRDaGVja2luZ1R5cGUpdHlwZSBy
YW5nZTooTlNSYW5nZSlyYW5nZSByZXBsYWNlbWVudDooTlNTdHJpbmcgKilyZXBsYWNlbWVudDsK
K0BlbmQKKworQGludGVyZmFjZSBMYXlvdXRUZXN0U3BlbGxDaGVja2VyIDogTlNTcGVsbENoZWNr
ZXIKKysgKGluc3RhbmNldHlwZSlpbnN0YWxsSWZOZWNlc3Nhcnk7CisrICh2b2lkKXVuaW5zdGFs
bEFuZFJlc2V0OworCistICh2b2lkKXNldFJlcGxhY2VtZW50c0Zyb21KU09iamVjdDooSlNPYmpl
Y3RSZWYpcmVwbGFjZW1lbnRzIGluQ29udGV4dDooSlNDb250ZXh0UmVmKWNvbnRleHQ7CitAcHJv
cGVydHkgKG5vbmF0b21pYywgY29weSkgTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIExheW91dFRl
c3RUZXh0Q2hlY2tpbmdSZXN1bHQgKj4gKnJlcGxhY2VtZW50czsKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljKSBCT09MIHNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkOworQGVuZAorCisjZW5kaWYgLy8g
UExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9M
YXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9M
YXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5MDdiMmJiZTRkMTZmYzM1MWZi
ZWI1YWM2Mzg0MWQzODBmYTIzNzIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0UnVubmVy
U2hhcmVkL2NvY29hL0xheW91dFRlc3RTcGVsbENoZWNrZXIubW0KQEAgLTAsMCArMSwyNTIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkxheW91dFRlc3RTcGVs
bENoZWNrZXIuaCIKKworI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KKyNp
bXBvcnQgPG9iamMvcnVudGltZS5oPgorI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbXBv
cnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCisj
aWYgUExBVEZPUk0oTUFDKQorCit0eXBlZGVmIHZvaWQgKF5UZXh0Q2hlY2tpbmdDb21wbGV0aW9u
SGFuZGxlcikoTlNJbnRlZ2VyIHNlcXVlbmNlTnVtYmVyLCBOU0FycmF5PE5TVGV4dENoZWNraW5n
UmVzdWx0ICo+ICpyZXN1bHRzLCBOU09ydGhvZ3JhcGh5ICpvcnRob2dyYXBoeSwgTlNJbnRlZ2Vy
IHdvcmRDb3VudCk7CisKK3N0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TGF5b3V0VGVz
dFNwZWxsQ2hlY2tlcj4+IGdsb2JhbFNwZWxsQ2hlY2tlcjsKK3N0YXRpYyBCT09MIGhhc0luc3Rh
bGxlZExheW91dFRlc3RTcGVsbENoZWNrZXIgPSBOTzsKK3N0YXRpYyBJTVAgZ2xvYmFsbHlTd2l6
emxlZFNoYXJlZFNwZWxsQ2hlY2tlckltcGxlbWVudGF0aW9uOworc3RhdGljIE1ldGhvZCBvcmln
aW5hbFNoYXJlZFNwZWxsQ2hlY2tlck1ldGhvZDsKKworc3RhdGljIExheW91dFRlc3RTcGVsbENo
ZWNrZXIgKmV4aXN0aW5nR2xvYmFsTGF5b3V0VGVzdFNwZWxsQ2hlY2tlcigpCit7CisgICAgcmV0
dXJuIGdsb2JhbFNwZWxsQ2hlY2tlci5nZXQoKS5nZXQoKTsKK30KKworc3RhdGljIExheW91dFRl
c3RTcGVsbENoZWNrZXIgKmVuc3VyZUdsb2JhbExheW91dFRlc3RTcGVsbENoZWNrZXIoKQorewor
ICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIGRpc3BhdGNoX29uY2Uo
Jm9uY2VUb2tlbiwgXnsKKyAgICAgICAgZ2xvYmFsU3BlbGxDaGVja2VyLmdldCgpID0gYWRvcHRO
UyhbW0xheW91dFRlc3RTcGVsbENoZWNrZXIgYWxsb2NdIGluaXRdKTsKKyAgICB9KTsKKyAgICBy
ZXR1cm4gZXhpc3RpbmdHbG9iYWxMYXlvdXRUZXN0U3BlbGxDaGVja2VyKCk7Cit9CisKK3N0YXRp
YyBjb25zdCBjaGFyICpzdHJpbmdGb3JDb3JyZWN0aW9uUmVzcG9uc2UoTlNDb3JyZWN0aW9uUmVz
cG9uc2UgY29ycmVjdGlvblJlc3BvbnNlKQoreworICAgIHN3aXRjaCAoY29ycmVjdGlvblJlc3Bv
bnNlKSB7CisgICAgY2FzZSBOU0NvcnJlY3Rpb25SZXNwb25zZU5vbmU6CisgICAgICAgIHJldHVy
biAibm9uZSI7CisgICAgY2FzZSBOU0NvcnJlY3Rpb25SZXNwb25zZUFjY2VwdGVkOgorICAgICAg
ICByZXR1cm4gImFjY2VwdGVkIjsKKyAgICBjYXNlIE5TQ29ycmVjdGlvblJlc3BvbnNlUmVqZWN0
ZWQ6CisgICAgICAgIHJldHVybiAicmVqZWN0ZWQiOworICAgIGNhc2UgTlNDb3JyZWN0aW9uUmVz
cG9uc2VJZ25vcmVkOgorICAgICAgICByZXR1cm4gImlnbm9yZWQiOworICAgIGNhc2UgTlNDb3Jy
ZWN0aW9uUmVzcG9uc2VFZGl0ZWQ6CisgICAgICAgIHJldHVybiAiZWRpdGVkIjsKKyAgICBjYXNl
IE5TQ29ycmVjdGlvblJlc3BvbnNlUmV2ZXJ0ZWQ6CisgICAgICAgIHJldHVybiAicmV2ZXJ0ZWQi
OworICAgIH0KKyAgICByZXR1cm4gImludmFsaWQiOworfQorCitzdGF0aWMgTlNUZXh0Q2hlY2tp
bmdUeXBlIG5zVGV4dENoZWNraW5nVHlwZShKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4mJiBqc1R5
cGUpCit7CisgICAgYXV0byBjZlR5cGUgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtD
RkFsbG9jYXRvckRlZmF1bHQsIGpzVHlwZS5nZXQoKSkpOworICAgIGlmIChDRlN0cmluZ0NvbXBh
cmUoY2ZUeXBlLmdldCgpLCBDRlNUUigib3J0aG9ncmFwaHkiKSwga0NGQ29tcGFyZUNhc2VJbnNl
bnNpdGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pCisgICAgICAgIHJldHVybiBOU1RleHRDaGVj
a2luZ1R5cGVPcnRob2dyYXBoeTsKKworICAgIGlmIChDRlN0cmluZ0NvbXBhcmUoY2ZUeXBlLmdl
dCgpLCBDRlNUUigic3BlbGxpbmciKSwga0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgPT0ga0NG
Q29tcGFyZUVxdWFsVG8pCisgICAgICAgIHJldHVybiBOU1RleHRDaGVja2luZ1R5cGVTcGVsbGlu
ZzsKKworICAgIGlmIChDRlN0cmluZ0NvbXBhcmUoY2ZUeXBlLmdldCgpLCBDRlNUUigiZ3JhbW1h
ciIpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKKyAg
ICAgICAgcmV0dXJuIE5TVGV4dENoZWNraW5nVHlwZUdyYW1tYXI7CisKKyAgICBpZiAoQ0ZTdHJp
bmdDb21wYXJlKGNmVHlwZS5nZXQoKSwgQ0ZTVFIoImRhdGUiKSwga0NGQ29tcGFyZUNhc2VJbnNl
bnNpdGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pCisgICAgICAgIHJldHVybiBOU1RleHRDaGVj
a2luZ1R5cGVEYXRlOworCisgICAgaWYgKENGU3RyaW5nQ29tcGFyZShjZlR5cGUuZ2V0KCksIENG
U1RSKCJhZGRyZXNzIiksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUpID09IGtDRkNvbXBhcmVF
cXVhbFRvKQorICAgICAgICByZXR1cm4gTlNUZXh0Q2hlY2tpbmdUeXBlQWRkcmVzczsKKworICAg
IGlmIChDRlN0cmluZ0NvbXBhcmUoY2ZUeXBlLmdldCgpLCBDRlNUUigibGluayIpLCBrQ0ZDb21w
YXJlQ2FzZUluc2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKKyAgICAgICAgcmV0dXJu
IE5TVGV4dENoZWNraW5nVHlwZUxpbms7CisKKyAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGNmVHlw
ZS5nZXQoKSwgQ0ZTVFIoInF1b3RlIiksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUpID09IGtD
RkNvbXBhcmVFcXVhbFRvKQorICAgICAgICByZXR1cm4gTlNUZXh0Q2hlY2tpbmdUeXBlUXVvdGU7
CisKKyAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGNmVHlwZS5nZXQoKSwgQ0ZTVFIoImRhc2giKSwg
a0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pCisgICAgICAg
IHJldHVybiBOU1RleHRDaGVja2luZ1R5cGVEYXNoOworCisgICAgaWYgKENGU3RyaW5nQ29tcGFy
ZShjZlR5cGUuZ2V0KCksIENGU1RSKCJyZXBsYWNlbWVudCIpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vu
c2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKKyAgICAgICAgcmV0dXJuIE5TVGV4dENoZWNr
aW5nVHlwZVJlcGxhY2VtZW50OworCisgICAgaWYgKENGU3RyaW5nQ29tcGFyZShjZlR5cGUuZ2V0
KCksIENGU1RSKCJjb3JyZWN0aW9uIiksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUpID09IGtD
RkNvbXBhcmVFcXVhbFRvKQorICAgICAgICByZXR1cm4gTlNUZXh0Q2hlY2tpbmdUeXBlQ29ycmVj
dGlvbjsKKworICAgIGlmIChDRlN0cmluZ0NvbXBhcmUoY2ZUeXBlLmdldCgpLCBDRlNUUigicmVn
dWxhci1leHByZXNzaW9uIiksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUpID09IGtDRkNvbXBh
cmVFcXVhbFRvKQorICAgICAgICByZXR1cm4gTlNUZXh0Q2hlY2tpbmdUeXBlUmVndWxhckV4cHJl
c3Npb247CisKKyAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGNmVHlwZS5nZXQoKSwgQ0ZTVFIoInBo
b25lLW51bWJlciIpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1
YWxUbykKKyAgICAgICAgcmV0dXJuIE5TVGV4dENoZWNraW5nVHlwZVBob25lTnVtYmVyOworCisg
ICAgaWYgKENGU3RyaW5nQ29tcGFyZShjZlR5cGUuZ2V0KCksIENGU1RSKCJ0cmFuc2l0LWluZm9y
bWF0aW9uIiksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUpID09IGtDRkNvbXBhcmVFcXVhbFRv
KQorICAgICAgICByZXR1cm4gTlNUZXh0Q2hlY2tpbmdUeXBlVHJhbnNpdEluZm9ybWF0aW9uOwor
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIE5TVGV4dENoZWNraW5nVHlw
ZVNwZWxsaW5nOworfQorCitAaW1wbGVtZW50YXRpb24gTGF5b3V0VGVzdFRleHRDaGVja2luZ1Jl
c3VsdCB7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfcmVwbGFjZW1lbnQ7CisgICAgTlNUZXh0
Q2hlY2tpbmdUeXBlIF90eXBlOworICAgIE5TUmFuZ2UgX3JhbmdlOworfQorCistIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhUeXBlOihOU1RleHRDaGVja2luZ1R5cGUpdHlwZSByYW5nZTooTlNSYW5n
ZSlyYW5nZSByZXBsYWNlbWVudDooTlNTdHJpbmcgKilyZXBsYWNlbWVudAoreworICAgIGlmICgh
KHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX3R5cGUg
PSB0eXBlOworICAgIF9yYW5nZSA9IHJhbmdlOworICAgIF9yZXBsYWNlbWVudCA9IHJlcGxhY2Vt
ZW50OworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKE5TUmFuZ2UpcmFuZ2UKK3sKKyAgICBy
ZXR1cm4gX3JhbmdlOworfQorCistIChOU1RleHRDaGVja2luZ1R5cGUpcmVzdWx0VHlwZQorewor
ICAgIHJldHVybiBfdHlwZTsKK30KKworLSAoTlNTdHJpbmcgKilyZXBsYWNlbWVudFN0cmluZwor
eworICAgIHJldHVybiBfcmVwbGFjZW1lbnQuZ2V0KCk7Cit9CisKKy0gKE5TU3RyaW5nICopZGVz
Y3JpcHRpb24KK3sKKyAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUAg
JXAgdHlwZT0ldHUgcmFuZ2U9WyV0dSwgJXR1XSByZXBsYWNlbWVudD0nJUAnPiIsIHNlbGYuY2xh
c3MsIHNlbGYsIF90eXBlLCBfcmFuZ2UubG9jYXRpb24sIF9yYW5nZS5sb2NhdGlvbiArIF9yYW5n
ZS5sZW5ndGgsIF9yZXBsYWNlbWVudC5nZXQoKV07Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0
aW9uIExheW91dFRlc3RTcGVsbENoZWNrZXIgeworICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk8
TlNTdHJpbmcgKiwgTGF5b3V0VGVzdFRleHRDaGVja2luZ1Jlc3VsdCAqPj4gX3JlcGxhY2VtZW50
czsKK30KKworKyAoaW5zdGFuY2V0eXBlKWluc3RhbGxJZk5lY2Vzc2FyeQoreworICAgIGF1dG8g
KnNwZWxsQ2hlY2tlciA9IGVuc3VyZUdsb2JhbExheW91dFRlc3RTcGVsbENoZWNrZXIoKTsKKyAg
ICBpZiAoaGFzSW5zdGFsbGVkTGF5b3V0VGVzdFNwZWxsQ2hlY2tlcikKKyAgICAgICAgcmV0dXJu
IHNwZWxsQ2hlY2tlcjsKKworICAgIG9yaWdpbmFsU2hhcmVkU3BlbGxDaGVja2VyTWV0aG9kID0g
Y2xhc3NfZ2V0Q2xhc3NNZXRob2Qob2JqY19nZXRNZXRhQ2xhc3MoIk5TU3BlbGxDaGVja2VyIiks
IEBzZWxlY3RvcihzaGFyZWRTcGVsbENoZWNrZXIpKTsKKyAgICBnbG9iYWxseVN3aXp6bGVkU2hh
cmVkU3BlbGxDaGVja2VySW1wbGVtZW50YXRpb24gPSBtZXRob2Rfc2V0SW1wbGVtZW50YXRpb24o
b3JpZ2luYWxTaGFyZWRTcGVsbENoZWNrZXJNZXRob2QsIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihl
bnN1cmVHbG9iYWxMYXlvdXRUZXN0U3BlbGxDaGVja2VyKSk7CisgICAgaGFzSW5zdGFsbGVkTGF5
b3V0VGVzdFNwZWxsQ2hlY2tlciA9IFlFUzsKKyAgICByZXR1cm4gc3BlbGxDaGVja2VyOworfQor
CisrICh2b2lkKXVuaW5zdGFsbEFuZFJlc2V0Cit7CisgICAgW2V4aXN0aW5nR2xvYmFsTGF5b3V0
VGVzdFNwZWxsQ2hlY2tlcigpIHJlc2V0XTsKKyAgICBpZiAoIWhhc0luc3RhbGxlZExheW91dFRl
c3RTcGVsbENoZWNrZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1ldGhvZF9zZXRJbXBsZW1l
bnRhdGlvbihvcmlnaW5hbFNoYXJlZFNwZWxsQ2hlY2tlck1ldGhvZCwgZ2xvYmFsbHlTd2l6emxl
ZFNoYXJlZFNwZWxsQ2hlY2tlckltcGxlbWVudGF0aW9uKTsKKyAgICBoYXNJbnN0YWxsZWRMYXlv
dXRUZXN0U3BlbGxDaGVja2VyID0gTk87Cit9CisKKy0gKHZvaWQpcmVzZXQKK3sKKyAgICBzZWxm
LnJlcGxhY2VtZW50cyA9IG5pbDsKKyAgICBzZWxmLnNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVk
ID0gTk87Cit9CisKKy0gKE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBMYXlvdXRUZXN0VGV4dENo
ZWNraW5nUmVzdWx0ICo+ICopcmVwbGFjZW1lbnRzCit7CisgICAgcmV0dXJuIF9yZXBsYWNlbWVu
dHMuZ2V0KCk7Cit9CisKKy0gKHZvaWQpc2V0UmVwbGFjZW1lbnRzOihOU0RpY3Rpb25hcnk8TlNT
dHJpbmcgKiwgTGF5b3V0VGVzdFRleHRDaGVja2luZ1Jlc3VsdCAqPiAqKXJlcGxhY2VtZW50cwor
eworICAgIF9yZXBsYWNlbWVudHMgPSBhZG9wdE5TKHJlcGxhY2VtZW50cy5jb3B5KTsKK30KKwor
LSAodm9pZClzZXRSZXBsYWNlbWVudHNGcm9tSlNPYmplY3Q6KEpTT2JqZWN0UmVmKXJlcGxhY2Vt
ZW50cyBpbkNvbnRleHQ6KEpTQ29udGV4dFJlZiljb250ZXh0Cit7CisgICAgYXV0byBmcm9tUHJv
cGVydHlOYW1lID0gYWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImZyb20iKSk7
CisgICAgYXV0byB0b1Byb3BlcnR5TmFtZSA9IGFkb3B0KEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJ0byIpKTsKKyAgICBhdXRvIHR5cGVQcm9wZXJ0eU5hbWUgPSBhZG9wdChKU1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygidHlwZSIpKTsKKyAgICBhdXRvIHJlcGxhY2VtZW50UHJv
cGVydHlOYW1lID0gYWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInJlcGxhY2Vt
ZW50IikpOworICAgIGF1dG8gcHJvcGVydGllcyA9IEpTT2JqZWN0Q29weVByb3BlcnR5TmFtZXMo
Y29udGV4dCwgcmVwbGFjZW1lbnRzKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMoW1tOU011
dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAw
OyBpbmRleCA8IEpTUHJvcGVydHlOYW1lQXJyYXlHZXRDb3VudChwcm9wZXJ0aWVzKTsgKytpbmRl
eCkgeworICAgICAgICBKU1N0cmluZ1JlZiB3b3JkVG9SZXBsYWNlID0gSlNQcm9wZXJ0eU5hbWVB
cnJheUdldE5hbWVBdEluZGV4KHByb3BlcnRpZXMsIGluZGV4KTsKKyAgICAgICAgSlNPYmplY3RS
ZWYgcmVwbGFjZW1lbnQgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgSlNPYmplY3RHZXRQcm9w
ZXJ0eShjb250ZXh0LCByZXBsYWNlbWVudHMsIHdvcmRUb1JlcGxhY2UsIG51bGxwdHIpLCBudWxs
cHRyKTsKKyAgICAgICAgbG9uZyBmcm9tVmFsdWUgPSBscm91bmRsKEpTVmFsdWVUb051bWJlcihj
b250ZXh0LCBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIHJlcGxhY2VtZW50LCBmcm9tUHJv
cGVydHlOYW1lLmdldCgpLCBudWxscHRyKSwgbnVsbHB0cikpOworICAgICAgICBsb25nIHRvVmFs
dWUgPSBscm91bmRsKEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBKU09iamVjdEdldFByb3BlcnR5
KGNvbnRleHQsIHJlcGxhY2VtZW50LCB0b1Byb3BlcnR5TmFtZS5nZXQoKSwgbnVsbHB0ciksIG51
bGxwdHIpKTsKKyAgICAgICAgYXV0byB0eXBlVmFsdWUgPSBhZG9wdChKU1ZhbHVlVG9TdHJpbmdD
b3B5KGNvbnRleHQsIEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgcmVwbGFjZW1lbnQsIHR5
cGVQcm9wZXJ0eU5hbWUuZ2V0KCksIG51bGxwdHIpLCBudWxscHRyKSk7CisgICAgICAgIGF1dG8g
cmVwbGFjZW1lbnRWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgcmVwbGFjZW1l
bnQsIHJlcGxhY2VtZW50UHJvcGVydHlOYW1lLmdldCgpLCBudWxscHRyKTsKKyAgICAgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiByZXBsYWNlbWVudFRleHQ7CisgICAgICAgIGlmICghSlNWYWx1
ZUlzVW5kZWZpbmVkKGNvbnRleHQsIHJlcGxhY2VtZW50VmFsdWUpKSB7CisgICAgICAgICAgICBh
dXRvIHJlcGxhY2VtZW50SlNTdHJpbmcgPSBhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRl
eHQsIHJlcGxhY2VtZW50VmFsdWUsIG51bGxwdHIpKTsKKyAgICAgICAgICAgIHJlcGxhY2VtZW50
VGV4dCA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
cmVwbGFjZW1lbnRKU1N0cmluZy5nZXQoKSkpOworICAgICAgICB9CisgICAgICAgIGF1dG8gc3Bl
bGxDaGVja1Jlc3VsdCA9IGFkb3B0TlMoW1tMYXlvdXRUZXN0VGV4dENoZWNraW5nUmVzdWx0IGFs
bG9jXSBpbml0V2l0aFR5cGU6bnNUZXh0Q2hlY2tpbmdUeXBlKFdURk1vdmUodHlwZVZhbHVlKSkg
cmFuZ2U6TlNNYWtlUmFuZ2UoZnJvbVZhbHVlLCB0b1ZhbHVlIC0gZnJvbVZhbHVlKSByZXBsYWNl
bWVudDooTlNTdHJpbmcgKilyZXBsYWNlbWVudFRleHQuZ2V0KCldKTsKKyAgICAgICAgYXV0byBj
ZldvcmRUb1JlcGxhY2UgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIHdvcmRUb1JlcGxhY2UpKTsKKyAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6c3Bl
bGxDaGVja1Jlc3VsdC5nZXQoKSBmb3JLZXk6KE5TU3RyaW5nICopY2ZXb3JkVG9SZXBsYWNlLmdl
dCgpXTsKKyAgICB9CisgICAgSlNQcm9wZXJ0eU5hbWVBcnJheVJlbGVhc2UocHJvcGVydGllcyk7
CisKKyAgICBfcmVwbGFjZW1lbnRzID0gV1RGTW92ZShyZXN1bHQpOworfQorCistIChOU0FycmF5
PE5TVGV4dENoZWNraW5nUmVzdWx0ICo+ICopY2hlY2tTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5n
VG9DaGVjayByYW5nZTooTlNSYW5nZSlyYW5nZSB0eXBlczooTlNUZXh0Q2hlY2tpbmdUeXBlcylj
aGVja2luZ1R5cGVzIG9wdGlvbnM6KE5TRGljdGlvbmFyeTxOU1RleHRDaGVja2luZ09wdGlvbktl
eSwgaWQ+ICopb3B0aW9ucyBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOihOU0ludGVnZXIpdGFnIG9y
dGhvZ3JhcGh5OihOU09ydGhvZ3JhcGh5ICoqKW9ydGhvZ3JhcGh5IHdvcmRDb3VudDooTlNJbnRl
Z2VyICopd29yZENvdW50Cit7CisgICAgaWYgKGF1dG8gKnJlc3VsdCA9IFtfcmVwbGFjZW1lbnRz
IG9iamVjdEZvcktleTpzdHJpbmdUb0NoZWNrXSkKKyAgICAgICAgcmV0dXJuIEBbIHJlc3VsdCBd
OworCisgICAgcmV0dXJuIFtzdXBlciBjaGVja1N0cmluZzpzdHJpbmdUb0NoZWNrIHJhbmdlOnJh
bmdlIHR5cGVzOmNoZWNraW5nVHlwZXMgb3B0aW9uczpvcHRpb25zIGluU3BlbGxEb2N1bWVudFdp
dGhUYWc6dGFnIG9ydGhvZ3JhcGh5Om9ydGhvZ3JhcGh5IHdvcmRDb3VudDp3b3JkQ291bnRdOwor
fQorCistICh2b2lkKXJlY29yZFJlc3BvbnNlOihOU0NvcnJlY3Rpb25SZXNwb25zZSlyZXNwb25z
ZSB0b0NvcnJlY3Rpb246KE5TU3RyaW5nICopY29ycmVjdGlvbiBmb3JXb3JkOihOU1N0cmluZyAq
KXdvcmQgbGFuZ3VhZ2U6KE5TU3RyaW5nICopbGFuZ3VhZ2UgaW5TcGVsbERvY3VtZW50V2l0aFRh
ZzooTlNJbnRlZ2VyKXRhZworeworICAgIGlmIChfc3BlbGxDaGVja2VyTG9nZ2luZ0VuYWJsZWQp
CisgICAgICAgIHByaW50ZigiTlNTcGVsbENoZWNrZXIgcmVjb3JkUmVzcG9uc2VUb0NvcnJlY3Rp
b246ICVzIC0+ICVzIChyZXNwb25zZTogJXMpXG4iLCBbd29yZCBVVEY4U3RyaW5nXSwgW2NvcnJl
Y3Rpb24gVVRGOFN0cmluZ10sIHN0cmluZ0ZvckNvcnJlY3Rpb25SZXNwb25zZShyZXNwb25zZSkp
OworCisgICAgW3N1cGVyIHJlY29yZFJlc3BvbnNlOnJlc3BvbnNlIHRvQ29ycmVjdGlvbjpjb3Jy
ZWN0aW9uIGZvcldvcmQ6d29yZCBsYW5ndWFnZTpsYW5ndWFnZSBpblNwZWxsRG9jdW1lbnRXaXRo
VGFnOnRhZ107Cit9CisKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDhiYmExMGRiNmE1Y2RmMmYzZTJlMDM0Y2M0YzRlOTQzODhhZWMwNWIuLjE5
NDBmNWJlNTM5YTUwMjhlZDc0OTg5ODdiYjIzMTMxNDY4MDNjNjAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzMsNiArMTMzLDcgQEAKIAkJRTEzMkFBM0QxN0NFNzc2
RjAwNjExREYwIC8qIFdlYktpdFRlc3RSdW5uZXJFdmVudC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMzJBQTNCMTdDRTc3NkYwMDYxMURGMCAvKiBX
ZWJLaXRUZXN0UnVubmVyRXZlbnQubW0gKi87IH07CiAJCUUxQzY0MkMzMTdDQkNDNzMwMEQ2NkEz
QyAvKiBQb3NlQXNDbGFzcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUxQzY0MkMxMTdDQkNDNzMwMEQ2NkEzQyAvKiBQb3NlQXNDbGFzcy5tbSAqLzsg
fTsKIAkJRTFDNjQyQzYxN0NCQ0Q0QzAwRDY2QTNDIC8qIFdlYktpdFRlc3RSdW5uZXJQYXN0ZWJv
YXJkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFD
NjQyQzQxN0NCQ0Q0QzAwRDY2QTNDIC8qIFdlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tICov
OyB9OworCQlGNEMzNTc4QzIwRTg0NDQ2MDBGQTA3NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tl
ci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0QzM1
NzhBMjBFODQ0NDAwMEZBMDc0OCAvKiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tICovOyB9Owog
LyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0
ZW1Qcm94eSBzZWN0aW9uICovCkBAIC0zNzIsNiArMzczLDggQEAKIAkJRTFDNjQyQzIxN0NCQ0M3
MzAwRDY2QTNDIC8qIFBvc2VBc0NsYXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBvc2VBc0NsYXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQzY0MkM0
MTdDQkNENEMwMEQ2NkEzQyAvKiBXZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYktpdFRlc3RSdW5uZXJQYXN0ZWJv
YXJkLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUM2NDJDNTE3Q0JDRDRDMDBE
NjZBM0MgLyogV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRjRDMzU3OEEyMEU4NDQ0MDAwRkEwNzQ4IC8qIExheW91dFRlc3RT
cGVsbENoZWNrZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBM
YXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tOyBwYXRoID0gLi4vVGVzdFJ1bm5lclNoYXJlZC9jb2Nv
YS9MYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGNEMzNTc4QjIwRTg0NDQwMDBGQTA3NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLmg7
IHBhdGggPSAuLi9UZXN0UnVubmVyU2hhcmVkL2NvY29hL0xheW91dFRlc3RTcGVsbENoZWNrZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNl
Y3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpA
QCAtNDc5LDYgKzQ4Miw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAog
CQkJCTBGMThFNzFCMUQ2QkM0RTYwMDI3RTU0NyAvKiBCaW5kaW5ncyAqLywKKwkJCQlGNEI2QzMx
NjIwRTg0MzY5MDA4QUMyMjUgLyogY29jb2EgKi8sCiAJCQkJMEY3M0I1NDcxQkE3ODJGRTAwNEIz
RUY0IC8qIFVJU2NyaXB0Q29udGV4dCAqLywKIAkJCQkzMTQ4QTA1MzFFNkY4NUI2MDBEM0IzMTYg
LyogSU9TTGF5b3V0VGVzdENvbW11bmljYXRpb24uY3BwICovLAogCQkJCTMxNDhBMDU0MUU2Rjg1
QjYwMEQzQjMxNiAvKiBJT1NMYXlvdXRUZXN0Q29tbXVuaWNhdGlvbi5oICovLApAQCAtODIyLDYg
KzgyNiwxNSBAQAogCQkJbmFtZSA9IFNoYXJlZDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CiAJCX07CisJCUY0QjZDMzE2MjBFODQzNjkwMDhBQzIyNSAvKiBjb2NvYSAqLyA9IHsKKwkJCWlz
YSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJRjRDMzU3OEIyMEU4NDQ0MDAwRkEw
NzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIuaCAqLywKKwkJCQlGNEMzNTc4QTIwRTg0NDQw
MDBGQTA3NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbSAqLywKKwkJCSk7CisJCQluYW1l
ID0gY29jb2E7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogLyogRW5kIFBCWEdy
b3VwIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAq
LwpAQCAtMTA0Niw2ICsxMDU5LDcgQEAKIAkJCQkzMURBOEEzRDFFNzIwNUNDMDBFMURGMkYgLyog
SU9TTGF5b3V0VGVzdENvbW11bmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3M0I1
NTExQkE3ODk2ODAwNEIzRUY0IC8qIEpTVUlTY3JpcHRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGMThFNzE4MUQ2QkM0NTYwMDI3RTU0NyAvKiBKU1dyYXBwZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJRjRDMzU3OEMyMEU4NDQ0NjAwRkEwNzQ4IC8qIExheW91dFRlc3RTcGVs
bENoZWNrZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlBMTg1MTAzQzFCOUFFMEZFMDA3NDRBRUIg
LyogT3B0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTg1MTA0MDFCOUFFMTMxMDA3NDRB
RUIgLyogUGl4ZWxEdW1wU3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyREZBOTg0OTFE
N0Y3MENGMDBBRkYyQzkgLyogU2hhcmVkRXZlbnRTdHJlYW1zTWFjLm1tIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggZjA3Yzg3OWNjNmY2YWFkYWI0OTZhNjM1YzcyMjFiYjZlNDA5ZGYzOC4uYjlmNTY5
ZWE5ZWRjNmEzNGIyZGM2YTE0ZWQ4MTQwNmRkYWEyNzgxOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBA
CisyMDE4LTA2LTMwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisg
ICAgICAgIFttYWNPU10gVGV4dCByZXBsYWNlbWVudHMgdGhhdCBlbmQgd2l0aCBzeW1ib2xzIGFy
ZSBleHBhbmRlZCBpbW1lZGlhdGVseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTg3MjI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MTExMjQzMz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGEg
bGF5b3V0IHRlc3QgdG8gY2hlY2sgdGhhdCBpZiBhIHVzZXIgaGFzIGNvbmZpZ3VyZWQgYSB0ZXh0
IHJlcGxhY2VtZW50IHRoYXQgZW5kcyB3aXRoIHB1bmN0dWF0aW9uLCB0aGVuOgorICAgICAgICAx
LiBUeXBpbmcgdGhhdCB0ZXh0IHJlcGxhY2VtZW50IHdvbid0IGltbWVkaWF0ZWx5IHRyaWdnZXIg
cmVwbGFjZW1lbnQuCisgICAgICAgIDIuIFRleHQgcmVwbGFjZW1lbnQgaXMgdHJpZ2dlcmVkIGFm
dGVyIHByZXNzaW5nIGVudGVyLgorCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy90ZXh0LXJl
cGxhY2VtZW50LWFmdGVyLXR5cGluZy10by13b3JkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZWRpdGluZy9zcGVsbGluZy90ZXh0LXJlcGxhY2VtZW50LWFmdGVyLXR5cGluZy10by13
b3JkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25z
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxOC0w
Ni0yOSAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWIg
QW5pbWF0aW9uc10gTWFrZSBXUFQgdGVzdCBhdCB0aW1pbmctbW9kZWwvdGltZWxpbmVzL2RvY3Vt
ZW50LXRpbWVsaW5lcy5odG1sIHBhc3MgcmVsaWFibHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2VkaXRpbmcvc3BlbGxpbmcvdGV4dC1yZXBsYWNlbWVudC1hZnRlci10eXBpbmctdG8td29yZC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3RleHQtcmVwbGFjZW1l
bnQtYWZ0ZXItdHlwaW5nLXRvLXdvcmQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4M2ViMTA3
YmY4MTY4MmUyMmQ2MmFhOGYxYmVlMmEwNGM5YjlmZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3RleHQtcmVwbGFjZW1lbnQtYWZ0ZXItdHlwaW5nLXRv
LXdvcmQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorQmVmb3JlIHByZXNzaW5nIGVudGVy
OgorUEFTUyBlZGl0b3IudGV4dENvbnRlbnQgaXMgJ1lUPycKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorWW91IHRoZXJlPworCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvdGV4dC1yZXBsYWNlbWVudC1hZnRlci10eXBp
bmctdG8td29yZC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy90ZXh0LXJlcGxh
Y2VtZW50LWFmdGVyLXR5cGluZy10by13b3JkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGM5NDk1ZDg2NjJm
MDZmZDlmZjE3YzM2MDc1MmU3NDJkMzI5MmJlNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2VkaXRpbmcvc3BlbGxpbmcvdGV4dC1yZXBsYWNlbWVudC1hZnRlci10eXBpbmctdG8td29y
ZC5odG1sCkBAIC0wLDAgKzEsNjMgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9l
ZGl0aW5nLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwor
ZnVuY3Rpb24gemVyb0RlbGF5VGltZXIoKQoreworICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNv
bHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMCkpOworfQorCithc3luYyBmdW5jdGlvbiBydW5U
ZXN0KCkKK3sKKyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICBpbnRlcm5hbHMu
c2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCh0cnVlKTsKKyAgICAgICAgaW50
ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGZhbHNl
KTsKKyAgICAgICAgaW50ZXJuYWxzLnNldEF1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQo
dHJ1ZSk7CisgICAgICAgIGludGVybmFscy5zZXRBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25F
bmFibGVkKHRydWUpOworICAgICAgICB0ZXN0UnVubmVyLnNldFNwZWxsQ2hlY2tlclRleHRSZXBs
YWNlbWVudHMoeworICAgICAgICAgICAgIllUPyI6IHsKKyAgICAgICAgICAgICAgICAicmVwbGFj
ZW1lbnQiOiAiWW91IHRoZXJlPyIsCisgICAgICAgICAgICAgICAgInR5cGUiOiAicmVwbGFjZW1l
bnQiLAorICAgICAgICAgICAgICAgICJmcm9tIjogMCwKKyAgICAgICAgICAgICAgICAidG8iOiAz
CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgIllUP1xuIjogeworICAgICAgICAgICAgICAg
ICJyZXBsYWNlbWVudCI6ICJZb3UgdGhlcmU/IiwKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJy
ZXBsYWNlbWVudCIsCisgICAgICAgICAgICAgICAgImZyb20iOiAwLAorICAgICAgICAgICAgICAg
ICJ0byI6IDMKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgY29uc3Qg
ZWRpdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVkaXRvciIpOworICAgIGVkaXRvci5m
b2N1cygpOworICAgIGZvciAoY29uc3QgY2hhcmFjdGVyIG9mICJZVD8iKQorICAgICAgICB0eXBl
Q2hhcmFjdGVyQ29tbWFuZChjaGFyYWN0ZXIpOworICAgIGF3YWl0IHplcm9EZWxheVRpbWVyKCk7
CisKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIGRlc2NyaXB0aW9uLmlu
bmVySFRNTCA9IGBUbyBtYW51YWxseSB0ZXN0LCBhZGQgYW4gYXV0b21hdGljIHRleHQgcmVwbGFj
ZW1lbnQgbWFwcGluZyBmcm9tIHRoZSBzdHJpbmcgIllUPyIgdG8KKyAgICAgICAgIllvdSB0aGVy
ZT8iLCBhbmQgdGhlbiB0eXBlIHRoZSBzdHJpbmcgIllUPyIuIEl0IHNob3VsZCBub3QgYmUgaW1t
ZWRpYXRlbHkgY29ycmVjdGVkIHRvICJZb3UgdGhlcmU/Ii4KKyAgICAgICAgSG93ZXZlciwgZW50
ZXJpbmcgYSBuZXdsaW5lIHNob3VsZCBzdWJzZXF1ZW50bHkgdHJpZ2dlciBhdXRvY29ycmVjdGlv
bi5gOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZGVidWcoIkJlZm9yZSBwcmVzc2lu
ZyBlbnRlcjoiKTsKKyAgICBzaG91bGRCZSgiZWRpdG9yLnRleHRDb250ZW50IiwgIidZVD8nIik7
CisgICAgaW5zZXJ0UGFyYWdyYXBoQ29tbWFuZCgpOworICAgIGF3YWl0IHplcm9EZWxheVRpbWVy
KCk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkg
b25sb2FkPSJydW5UZXN0KCkiPgorICAgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAg
ICA8ZGl2IGNvbnRlbnRlZGl0YWJsZSBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMWVtOyBib3JkZXI6
IDFweCBvcmFuZ2UgZGFzaGVkOyIgaWQ9ImVkaXRvciI+PC9kaXY+CisgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA3ZmFh
OGRkNmEyY2YxMzc3M2Y2NWYyNzgyNTljMDA2NDJiM2VmZTRkLi44MDhkYTEzOWU5ZTYwNWFjMzk5
ODY1ZWJiYzgwMmQ4ODgyYjQ1Y2ZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9p
b3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4
cGVjdGF0aW9ucwpAQCAtMTEwLDYgKzExMCw5IEBAIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmct
bWFya2Vycy1pbi1vdmVybGFwcGluZy1saW5lcy1sYXJnZS1mb250Lmh0bWwgWyBXb250Rml4CiBm
YXN0L3dyaXRpbmctbW9kZS9lbmdsaXNoLWJ0LXRleHQtd2l0aC1zcGVsbGluZy1tYXJrZXIuaHRt
bCBbIFdvbnRGaXggXQogZmFzdC93cml0aW5nLW1vZGUvZW5nbGlzaC1ybC10ZXh0LXdpdGgtc3Bl
bGxpbmctbWFya2VyLmh0bWwgWyBXb250Rml4IF0KIAorIyBSZXF1aXJlcyBzdXBwb3J0IGZvciB0
ZXN0aW5nIHRleHQgcmVwbGFjZW1lbnQKK2VkaXRpbmcvc3BlbGxpbmcvdGV4dC1yZXBsYWNlbWVu
dC1hZnRlci10eXBpbmctdG8td29yZC5odG1sIFsgU2tpcCBdCisKICMgVUlLaXQgZHJhd3Mgc2Vs
ZWN0aW9uIG9uIGlPUwogZmFzdC9zZWxlY3RvcnMvaW5wdXQtd2l0aC1zZWxlY3Rpb24tcHNldWRv
LWVsZW1lbnQuaHRtbCBbIFdvbnRGaXggXQogZmFzdC9zZWxlY3RvcnMvc2VsZWN0aW9uLXdpbmRv
dy1pbmFjdGl2ZS5odG1sIFsgV29udEZpeCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNDNjYTcxNmE4NGYxNDIwNDM3NmZmMTIwMWUzMzA4
OGZkZWZhOTYxMy4uYjIzNGUyMDQwMDFlNjQ0NDQ5NTJhOTliYjFkZTMxMGE1NTVhMjc3NiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTgw
LDYgKzE4MCw3IEBAIHdlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy13aXRoLXdoaXRlc3BhY2Utc2VsZWN0aW9uLmh0bWwKIHdlYmtpdC5vcmcvYi8xMDU2MTYgZWRp
dGluZy9zcGVsbGluZy9ncmFtbWFyLmh0bWwKIHdlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9z
cGVsbGluZy9tYXJrZXJzLmh0bWwKIHdlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9zcGVsbGlu
Zy9yZXRyby1jb3JyZWN0aW9uLXNwZWxsaW5nLW1hcmtlcnMuaHRtbAord2Via2l0Lm9yZy9iLzEw
NTYxNiBlZGl0aW5nL3NwZWxsaW5nL3RleHQtcmVwbGFjZW1lbnQtYWZ0ZXItdHlwaW5nLXRvLXdv
cmQuaHRtbAogd2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW1h
cmtlcnMtYWZ0ZXItcGFzdGluZy1zZW50ZW5jZS5odG1sCiB3ZWJraXQub3JnL2IvMTA1NjE2IGVk
aXRpbmcvbWFjL3NwZWxsaW5nL2F1dG9jb3JyZWN0aW9uLWRlbGV0ZS5odG1sIFsgRmFpbHVyZSBd
CiB3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvbWFjL3NwZWxsaW5nL2F1dG9jb3JyZWN0aW9u
LXJlbW92aW5nLXVuZGVybGluZS1hZnRlci1wYXN0ZS5odG1sIFsgRmFpbHVyZSBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344035</attachid>
            <date>2018-06-30 19:33:34 -0700</date>
            <delta_ts>2018-06-30 20:45:49 -0700</delta_ts>
            <desc>Fix the iOS build</desc>
            <filename>bug-187225-20180630193333.patch</filename>
            <type>text/plain</type>
            <size>70542</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzNDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWUyMjM5NDVhN2ZiNzU1
NWFiY2M5MmQ3MzhjNGEyZmJiM2E3MTdlMS4uNzliODJhNzMyYjFjMDkyMTRjYjE3ZGE0ZTYwNjkx
YjI2YzI0NDRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDE4LTA2LTMwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gVGV4
dCByZXBsYWNlbWVudHMgdGhhdCBlbmQgd2l0aCBzeW1ib2xzIGFyZSBleHBhbmRlZCBpbW1lZGlh
dGVseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3
MjI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MTExMjQzMz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBzaGlwcGluZyBTYWZhcmksIGVuYWJs
aW5nIGdyYW1tYXIgY29ycmVjdGlvbiBjYXVzZXMgdGV4dCBzaG9ydGN1dHMgdGhhdCBlbmQgd2l0
aCBzeW1ib2xzIG9yIHB1bmN0dWF0aW9uIG1hcmtzCisgICAgICAgIHRvIGltbWVkaWF0ZWx5IHRy
aWdnZXIgd2hlbiB0eXBpbmc7IG5vcm1hbGx5LCB3aGVuIGdyYW1tYXIgY29ycmVjdGlvbiBpcyBv
ZmYsIHRoaXMgaXMgb25seSB0cmlnZ2VyZWQgYWZ0ZXIgdGhlCisgICAgICAgIHVzZXIgaGFzIGFk
ZGl0aW9uYWxseSBpbnNlcnRlZCBhIHB1bmN0dWF0aW9uIG1hcmsgb3Igd2hpdGVzcGFjZSBjaGFy
YWN0ZXIgYWZ0ZXIgdGhlIHJlcGxhY2VkIHRleHQuCisKKyAgICAgICAgVGhpcyBidWcgaGFwcGVu
cyBiZWNhdXNlIGVuYWJsaW5nIGdyYW1tYXIgY2hlY2tpbmcgY2F1c2VzIHRoZSBzcGVsbCBjaGVj
a2luZyByYW5nZSB0byBleHBhbmQgdG8gdGhlIHJhbmdlIG9mIHRoZQorICAgICAgICBmdWxsIHNl
bnRlbmNlLCBzbyBhbnkgdGV4dCBjaGVja2luZyByZXN1bHRzIHRoYXQgcmVwbGFjZSBhbiBleGlz
dGluZyByYW5nZSBhcmUgdHJpZ2dlcmVkIGFzIGxvbmcgYXMgdGhleSBlbmQKKyAgICAgICAgYW55
d2hlcmUgaW4gdGhlIHNlbnRlbmNlLiBJbiBjb250cmFzdCwgd2hlbiBncmFtbWFyIGNoZWNraW5n
IGlzIGRpc2FibGVkLCB0aGUgc3BlbGwgY2hlY2tpbmcgcmFuZ2UgaXMgbGltaXRlZCB0bworICAg
ICAgICB0aGUgbmVhcmVzdCBhZGphY2VudCB3b3JkLCB3aGljaCBwcmV2ZW50cyB0ZXh0IHJlcGxh
Y2VtZW50IGZyb20gb2NjdXJyaW5nIGVsc2V3aGVyZSBpbiB0aGUgc2VudGVuY2UuCisKKyAgICAg
ICAgSG93ZXZlciwgYWZ0ZXIgcjIzMjUzMCwgd2Ugbm93IGFsd2F5cyBleHBhbmQgdGhlIHNwZWxs
IGNoZWNraW5nIHJhbmdlIHRvIHRoZSBleHRlbnQgb2YgdGhlIHNlbnRlbmNlIHdoZW4gYSB3b3Jk
CisgICAgICAgIGlzIHR5cGVkIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBncmFtbWFyIGNoZWNraW5n
IGlzIGVuYWJsZWQsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIGlzc3VlIGRlc2NyaWJlZCBhYm92ZSBu
b3cKKyAgICAgICAgaGFwcGVucyBldmVyeXdoZXJlLiBUbyBmaXggdGhpcyByZWNlbnQgcmVncmVz
c2lvbiBhbmQgdGhlIGV4aXN0aW5nIGJ1Zywgd2U6CisKKyAgICAgICAgLSAgIEF1Z21lbnQgb3Vy
IHNwZWxsY2hlY2tpbmcgY29kZXBhdGhzIHRvIGluY2x1ZGUgYSBuZXcgYXV0b21hdGljIHRleHQg
cmVwbGFjZW1lbnQgcmFuZ2UsIGFsb25nc2lkZQorICAgICAgICAgICAgc3BlbGxjaGVja2luZyBh
bmQgcGFyYWdyYXBoIHJhbmdlcy4KKyAgICAgICAgLSAgIExldCB0aGlzIGF1dG9tYXRpYyB0ZXh0
IHJlcGxhY2VtZW50IHJhbmdlIGJlIHRoZSByYW5nZSBvZiB0aGUgYWRqYWNlbnQgd29yZCBpbiB0
aGUgY2FzZSB3aGVyZSB0aGUgdXNlciBoYXMKKyAgICAgICAgICAgIGZpbmlzaGVkIHR5cGluZyBh
IHdvcmQuCisgICAgICAgIC0gICBXaGVuIG1hcmtpbmcgYW5kIHJlcGxhY2luZyB0ZXh0IGNoZWNr
aW5nIHJlc3VsdHMsIGNvbnN1bHQgdGhpcyBuZXcgYXV0b21hdGljIHRleHQgcmVwbGFjZW1lbnQg
aW5zdGVhZCBvZiB0aGUKKyAgICAgICAgICAgIHNwZWxsY2hlY2tpbmcgcmFuZ2UuCisKKyAgICAg
ICAgVGhpcyBrZWVwcyB0aGUgYmVoYXZpb3IgZ3JhbW1hciBhbmQgc2VudGVuY2UgcmV0cm8gY29y
cmVjdGlvbiByZXN1bHRzIGludGFjdCwgd2hpbGUgbGltaXRpbmcgdGhlIHNjb3BlIGluIHdoaWNo
CisgICAgICAgIHRleHQgcmVwbGFjZW1lbnQgcmVzdWx0cyBhcmUgYXBwbGllZC4KKworICAgICAg
ICBUZXN0OiBlZGl0aW5nL3NwZWxsaW5nL3RleHQtcmVwbGFjZW1lbnQtYWZ0ZXItdHlwaW5nLXRv
LXdvcmQuaHRtbAorCisgICAgICAgICogZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnRpbWVy
RmlyZWQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6cmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZCk6CisKKyAgICAgICAg
UGFzcyBpbiB0aGUgYWRqYWNlbnQgd29yZCByYW5nZSBmb3IgdGhlIGBhdXRvbWF0aWNSZXBsYWNl
bWVudFJhbmdlYCwgaW5zdGVhZCBvZiB0aGUgc3BlbGwgY2hlY2tpbmcgcmFuZ2UgKHdoaWNoCisg
ICAgICAgIG1heSBiZSBleHRlbmRlZCB0byB0aGUgZnVsbCByYW5nZSBvZiB0aGUgc2VudGVuY2Up
LgorCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRH
cmFtbWFySW5SYW5nZXMpOgorCisgICAgICAgIEFkZCBhbiBgYXV0b21hdGljUmVwbGFjZW1lbnRS
YW5nZWAgYXJndW1lbnQgdG8gbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdl
cywgYW5kIGFkanVzdCBjYWxsIHNpdGVzCisgICAgICAgIHRvIHBhc3MgaW4gYSByYW5nZSAoZ2Vu
ZXJhbGx5IHRoZSBzYW1lIGFzIHRoZSBzcGVsbCBjaGVja2luZyByYW5nZSwgYnV0IGluIHRoZSBj
YXNlIHdoZXJlIGEgd29yZCBoYXMgYmVlbiB0eXBlZCwKKyAgICAgICAgdGhpcyBpcyBhIG5hcnJv
d2VyIHJhbmdlKS4KKworICAgICAgICAoV2ViQ29yZTo6Y29ycmVjdFNwZWxsY2hlY2tpbmdQcmVz
ZXJ2aW5nVGV4dENoZWNraW5nUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
bWFya0FuZFJlcGxhY2VGb3IpOgorCisgICAgICAgIFdoZW4gcmVwbGFjaW5nIHRleHQsIG9ubHkg
YWxsb3cgdGV4dCByZXBsYWNlbWVudCBpbiB0aGUgYXV0b21hdGljIHJlcGxhY2VtZW50IHJhbmdl
IHJhdGhlciB0aGFuIHRoZSBzcGVsbAorICAgICAgICBjaGVja2luZyByYW5nZS4KKworICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcik6CisgICAg
ICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsQ2hlY2tlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrUmVxdWVzdDo6U3BlbGxDaGVja1JlcXVl
c3QpOgorCisgICAgICAgIEFkZCBhIG5ldyB2ZXJzaW9uIG9mIHRoaXMgY29uc3RydWN0b3IgdGhh
dCB0YWtlcyBhIHNpbmdsZSBSYW5nZSByZXByZXNlbnRpbmcgYm90aCB0aGUgc3BlbGxjaGVja2lu
ZyByYW5nZSBhbmQKKyAgICAgICAgdGhlIGF1dG9tYXRpYyB0ZXh0IHJlcGxhY2VtZW50IHJhbmdl
LCBmb3IgY29udmVuaWVuY2UuCisKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tSZXF1ZXN0
OjpjcmVhdGUpOgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxDaGVja2VyLmg6CisKKyAgICAgICAg
QWRkIHBsdW1iaW5nIGZvciB0aGUgYXV0b21hdGljIHJlcGxhY2VtZW50IHJhbmdlLgorCisgICAg
ICAgIChXZWJDb3JlOjpTcGVsbENoZWNrUmVxdWVzdDo6YXV0b21hdGljUmVwbGFjZW1lbnRSYW5n
ZSBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwOgorCisg
ICAgICAgIEFkZCBwbHVtYmluZyBmb3IgdGhlIGF1dG9tYXRpYyByZXBsYWNlbWVudCByYW5nZSwg
YW5kIG5ldyBoZWxwZXJzIHRvIGxvY2F0ZSB0aGUgcmFuZ2UgYXMgb2Zmc2V0cyB3aXRoaW4gdGhl
CisgICAgICAgIHRleHQgY2hlY2tpbmcgcGFyYWdyYXBoIHJhbmdlLgorCisgICAgICAgIChXZWJD
b3JlOjpUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OlRleHRDaGVja2luZ1BhcmFncmFwaCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmF1dG9tYXRpY1JlcGxhY2VtZW50
U3RhcnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nUGFyYWdyYXBoOjph
dXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9UZXh0
Q2hlY2tpbmdIZWxwZXIuaDoKKwogMjAxOC0wNi0zMCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtMRkNdIERvIG5vdCBhZGQgdGhlIGNvbnRhaW5pbmcgYmxvY2sn
cyBvZmZzZXQgd2hpbGUgY29tcHV0aW5nIHRoZSBvdXQtb2YtZmxvdyBzdGF0aWMgcG9zaXRpb24u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyLmNwcAppbmRleCBkNDUzZjY0NDBhZDQ2ZWJlMzBhMGNiYTllYWUyMjI3NDFhNWFiZjQyLi5h
OTQ2ZjUxMzZjNGFmMjVmMGEwNjJhOWE2YTM1NDkzZjVlN2M0NmRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKQEAgLTI4
Myw3ICsyODMsOCBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnRpbWVyRmlyZWQo
KQogICAgICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQoc2VsZWN0aW9uLnN0YXJ0KCksIHNlbGVj
dGlvbi5hZmZpbml0eSgpKTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHAgPSBzdGFydE9mV29y
ZChzdGFydCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpOwogICAgICAgICBWaXNpYmxlU2VsZWN0aW9u
IGFkamFjZW50V29yZHMgPSBWaXNpYmxlU2VsZWN0aW9uKHAsIHN0YXJ0KTsKLSAgICAgICAgbV9m
cmFtZS5lZGl0b3IoKS5tYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRl
eHRDaGVja2luZ1R5cGVTcGVsbGluZyB8IFRleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCB8IFRl
eHRDaGVja2luZ1R5cGVTaG93Q29ycmVjdGlvblBhbmVsLCBhZGphY2VudFdvcmRzLnRvTm9ybWFs
aXplZFJhbmdlKCkuZ2V0KCksIDApOworICAgICAgICBhdXRvIGFkamFjZW50V29yZFJhbmdlID0g
YWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6ZWRSYW5nZSgpOworICAgICAgICBtX2ZyYW1lLmVkaXRv
cigpLm1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5n
VHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50IHwgVGV4dENoZWNraW5n
VHlwZVNob3dDb3JyZWN0aW9uUGFuZWwsIGFkamFjZW50V29yZFJhbmdlLmdldCgpLCBhZGphY2Vu
dFdvcmRSYW5nZS5nZXQoKSwgbnVsbHB0cik7CiAgICAgfQogICAgICAgICBicmVhazsKICAgICBj
YXNlIEFsdGVybmF0aXZlVGV4dFR5cGVSZXZlcnNpb246IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAppbmRleCAwYzcxNjMyODUzNDBhYTUxNDQ0MzJlYTYyNjQwNTgzMjA5YzY4MGQ3Li5iYzMy
ZTFmNzU0N2Q1ODU0ZWJlYzUyMmZjMDA3ZmVjMDBmNDczOWE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCkBAIC02NjcsNyArNjY3LDcgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VTZWxlY3Rp
b25XaXRoRnJhZ21lbnQoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIGJvb2wgc2VsZWMKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgYXV0byByYW5nZVRvQ2hlY2sgPSBSYW5nZTo6Y3JlYXRlKGRv
Y3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk5vZGUobm9kZVRvQ2hlY2spLCBsYXN0UG9zaXRpb25J
bk5vZGUobm9kZVRvQ2hlY2spKTsKLSAgICBpZiAoYXV0byByZXF1ZXN0ID0gU3BlbGxDaGVja1Jl
cXVlc3Q6OmNyZWF0ZShyZXNvbHZlVGV4dENoZWNraW5nVHlwZU1hc2soKm5vZGVUb0NoZWNrLCBU
ZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgfCBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hciksIFRleHRD
aGVja2luZ1Byb2Nlc3NCYXRjaCwgcmFuZ2VUb0NoZWNrLmNvcHlSZWYoKSwgcmFuZ2VUb0NoZWNr
LmNvcHlSZWYoKSkpCisgICAgaWYgKGF1dG8gcmVxdWVzdCA9IFNwZWxsQ2hlY2tSZXF1ZXN0Ojpj
cmVhdGUocmVzb2x2ZVRleHRDaGVja2luZ1R5cGVNYXNrKCpub2RlVG9DaGVjaywgVGV4dENoZWNr
aW5nVHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZUdyYW1tYXIpLCBUZXh0Q2hlY2tpbmdQ
cm9jZXNzQmF0Y2gsIHJhbmdlVG9DaGVjay5jb3B5UmVmKCksIHJhbmdlVG9DaGVjay5jb3B5UmVm
KCksIHJhbmdlVG9DaGVjay5jb3B5UmVmKCkpKQogICAgICAgICBtX3NwZWxsQ2hlY2tlci0+cmVx
dWVzdENoZWNraW5nRm9yKHJlcXVlc3QucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKQEAgLTIzNDIs
NyArMjM0Miw4IEBAIHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1dv
cmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uICZ3b3JkU3RhcnQsCiAgICAgICAgIHJldHVybjsKIAog
ICAgIFZpc2libGVTZWxlY3Rpb24gYWRqYWNlbnRXb3JkcyA9IFZpc2libGVTZWxlY3Rpb24oc3Rh
cnRPZldvcmQod29yZFN0YXJ0LCBMZWZ0V29yZElmT25Cb3VuZGFyeSksIGVuZE9mV29yZCh3b3Jk
U3RhcnQsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSkpOwotICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NB
bmRCYWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgYWRqYWNlbnRXb3Jkcy50
b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBhZGphY2VudFdvcmRzLnRvTm9ybWFsaXplZFJhbmdl
KCkuZ2V0KCkpOworICAgIGF1dG8gYWRqYWNlbnRXb3JkUmFuZ2UgPSBhZGphY2VudFdvcmRzLnRv
Tm9ybWFsaXplZFJhbmdlKCk7CisgICAgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJ
blJhbmdlcyh0ZXh0Q2hlY2tpbmdPcHRpb25zLCBhZGphY2VudFdvcmRSYW5nZS5nZXQoKSwgYWRq
YWNlbnRXb3JkUmFuZ2UuZ2V0KCksIG51bGxwdHIpOwogI2Vsc2UKICNpZiAhVVNFKEFVVE9NQVRJ
Q19URVhUX1JFUExBQ0VNRU5UKQogICAgIFVOVVNFRF9QQVJBTShkb1JlcGxhY2VtZW50KTsKQEAg
LTI0MTcsMTMgKzI0MTgsMTcgQEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5
cGluZ1RvV29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24gJndvcmRTdGFydCwKICAgICAgICAgaWYg
KCFzcGVsbENoZWNraW5nUmFuZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgYXV0
byBhZGphY2VudFdvcmRSYW5nZSA9IFZpc2libGVTZWxlY3Rpb24oc3RhcnRPZldvcmQod29yZFN0
YXJ0LCBMZWZ0V29yZElmT25Cb3VuZGFyeSksIGVuZE9mV29yZCh3b3JkU3RhcnQsIFJpZ2h0V29y
ZElmT25Cb3VuZGFyeSkpLnRvTm9ybWFsaXplZFJhbmdlKCk7CisgICAgICAgIGlmICghYWRqYWNl
bnRXb3JkUmFuZ2UpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgLy8gVGhlIHNwZWxs
aW5nIGFuZCBncmFtbWFyIG1hcmtlcnMgaW4gdGhlc2UgcmFuZ2VzIGFyZSByZWNvbXB1dGVkLiBU
aGlzIGlzIGJlY2F1c2UgdHlwaW5nIGEgd29yZCBtYXkKICAgICAgICAgLy8gY2F1c2UgYW55IG90
aGVyIHBhcnQgb2YgdGhlIGN1cnJlbnQgc2VudGVuY2UgdG8gbG9zZSBvciBnYWluIHNwZWxsaW5n
IGNvcnJlY3Rpb24gbWFya2VycywgZHVlIHRvCiAgICAgICAgIC8vIHNlbnRlbmNlIHJldHJvIGNv
cnJlY3Rpb24uIEFzIHN1Y2gsIHdlIGV4cGFuZCB0aGUgc3BlbGwgY2hlY2tpbmcgcmFuZ2UgdG8g
ZW5jb21wYXNzIGFzIG11Y2ggb2YgdGhlCiAgICAgICAgIC8vIGZ1bGwgc2VudGVuY2UgYXMgd2Ug
Y2FuLCByZXNwZWN0aW5nIGJvdW5kYXJpZXMgd2hlcmUgc3BlbGxjaGVja2luZyBpcyBkaXNhYmxl
ZC4KICAgICAgICAgZnVsbFNlbnRlbmNlUmFuZ2UtPm93bmVyRG9jdW1lbnQoKS5tYXJrZXJzKCku
cmVtb3ZlTWFya2VycyhmdWxsU2VudGVuY2VSYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6Okdy
YW1tYXIpOwogICAgICAgICBzcGVsbENoZWNraW5nUmFuZ2UtPm93bmVyRG9jdW1lbnQoKS5tYXJr
ZXJzKCkucmVtb3ZlTWFya2VycyhzcGVsbENoZWNraW5nUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFy
a2VyOjpTcGVsbGluZyk7Ci0gICAgICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFy
SW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgc3BlbGxDaGVja2luZ1JhbmdlLmdldCgpLCBm
dWxsU2VudGVuY2VSYW5nZS5nZXQoKSk7CisgICAgICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRC
YWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgc3BlbGxDaGVja2luZ1Jhbmdl
LmdldCgpLCBhZGphY2VudFdvcmRSYW5nZS5nZXQoKSwgZnVsbFNlbnRlbmNlUmFuZ2UuZ2V0KCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNTQ3LDcgKzI1NTIsNyBAQCB2b2lkIEVk
aXRvcjo6bWFya0JhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQog
I2VuZGlmCiB9CiAKLXZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1h
ckluUmFuZ2VzKFRleHRDaGVja2luZ1R5cGVNYXNrIHRleHRDaGVja2luZ09wdGlvbnMsIFJhbmdl
KiBzcGVsbGluZ1JhbmdlLCBSYW5nZSogZ3JhbW1hclJhbmdlKQordm9pZCBFZGl0b3I6Om1hcmtB
bGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nVHlwZU1hc2sg
dGV4dENoZWNraW5nT3B0aW9ucywgUmFuZ2UqIHNwZWxsaW5nUmFuZ2UsIFJhbmdlKiBhdXRvbWF0
aWNSZXBsYWNlbWVudFJhbmdlLCBSYW5nZSogZ3JhbW1hclJhbmdlKQogewogICAgIEFTU0VSVCh1
bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKCkpOwogCkBAIC0yNTc5LDcgKzI1ODQsOCBAQCB2b2lk
IEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hl
Y2tpbmdUeXBlTWFzayB0ZXh0QwogCiAgICAgLy8gSW4gYXN5bmNocm9ub3VzIG1vZGUsIHdlIGlu
dGVudGlvbmFsbHkgY2hlY2sgcGFyYWdyYXBoLXdpZGUgc2VudGVuY2UuCiAgICAgY29uc3QgYXV0
byByZXNvbHZlZE9wdGlvbnMgPSByZXNvbHZlVGV4dENoZWNraW5nVHlwZU1hc2soZWRpdGFibGVO
b2RlLCB0ZXh0Q2hlY2tpbmdPcHRpb25zKTsKLSAgICBhdXRvIHJlcXVlc3QgPSBTcGVsbENoZWNr
UmVxdWVzdDo6Y3JlYXRlKHJlc29sdmVkT3B0aW9ucywgVGV4dENoZWNraW5nUHJvY2Vzc0luY3Jl
bWVudGFsLCBhc3luY2hyb25vdXMgPyBwYXJhZ3JhcGhSYW5nZS5nZXQoKSA6IHJhbmdlVG9DaGVj
aywgcGFyYWdyYXBoUmFuZ2UuY29weVJlZigpKTsKKyAgICBhdXRvJiB0ZXh0UmVwbGFjZW1lbnRS
YW5nZSA9IGF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UgPyAqYXV0b21hdGljUmVwbGFjZW1lbnRS
YW5nZSA6IHJhbmdlVG9DaGVjazsKKyAgICBhdXRvIHJlcXVlc3QgPSBTcGVsbENoZWNrUmVxdWVz
dDo6Y3JlYXRlKHJlc29sdmVkT3B0aW9ucywgVGV4dENoZWNraW5nUHJvY2Vzc0luY3JlbWVudGFs
LCBhc3luY2hyb25vdXMgPyBwYXJhZ3JhcGhSYW5nZS5nZXQoKSA6IHJhbmdlVG9DaGVjaywgdGV4
dFJlcGxhY2VtZW50UmFuZ2UsIHBhcmFncmFwaFJhbmdlLmNvcHlSZWYoKSk7CiAgICAgaWYgKCFy
ZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAKQEAgLTI2MjcsNyArMjYzMyw4IEBAIHN0YXRpYyB2
b2lkIGNvcnJlY3RTcGVsbGNoZWNraW5nUHJlc2VydmluZ1RleHRDaGVja2luZ1BhcmFncmFwaChU
ZXh0Q2hlY2tpbmdQYXJhCiAKICAgICBSZWZQdHI8UmFuZ2U+IG5ld1BhcmFncmFwaFJhbmdlID0g
VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCgmc2NvcGUsIHBhcmFncmFw
aExvY2F0aW9uLCBwYXJhZ3JhcGhMZW5ndGggKyByZXBsYWNlbWVudC5sZW5ndGgoKSAtIHJlc3Vs
dExlbmd0aCk7CiAKLSAgICBwYXJhZ3JhcGggPSBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoVGV4dEl0
ZXJhdG9yOjpzdWJyYW5nZSgqbmV3UGFyYWdyYXBoUmFuZ2UsIHJlc3VsdExvY2F0aW9uLCByZXBs
YWNlbWVudC5sZW5ndGgoKSksIG5ld1BhcmFncmFwaFJhbmdlLmdldCgpKTsKKyAgICBhdXRvIHNw
ZWxsQ2hlY2tpbmdSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKm5ld1BhcmFncmFwaFJh
bmdlLCByZXN1bHRMb2NhdGlvbiwgcmVwbGFjZW1lbnQubGVuZ3RoKCkpOworICAgIHBhcmFncmFw
aCA9IFRleHRDaGVja2luZ1BhcmFncmFwaChzcGVsbENoZWNraW5nUmFuZ2UuY29weVJlZigpLCBz
cGVsbENoZWNraW5nUmFuZ2UuY29weVJlZigpLCBuZXdQYXJhZ3JhcGhSYW5nZS5nZXQoKSk7CiB9
CiAKIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCkBA
IC0yNjM1LDcgKzI2NDIsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3Qg
U3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQogICAgIFJlZjxGcmFt
ZT4gcHJvdGVjdGlvbihtX2ZyYW1lKTsKIAogICAgIFRleHRDaGVja2luZ1R5cGVNYXNrIHRleHRD
aGVja2luZ09wdGlvbnMgPSByZXF1ZXN0LmRhdGEoKS5tYXNrKCk7Ci0gICAgVGV4dENoZWNraW5n
UGFyYWdyYXBoIHBhcmFncmFwaChyZXF1ZXN0LmNoZWNraW5nUmFuZ2UoKSwgJnJlcXVlc3QucGFy
YWdyYXBoUmFuZ2UoKSk7CisgICAgVGV4dENoZWNraW5nUGFyYWdyYXBoIHBhcmFncmFwaChyZXF1
ZXN0LmNoZWNraW5nUmFuZ2UoKSwgcmVxdWVzdC5hdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlKCks
ICZyZXF1ZXN0LnBhcmFncmFwaFJhbmdlKCkpOwogCiAgICAgY29uc3QgYm9vbCBzaG91bGRNYXJr
U3BlbGxpbmcgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zICYgVGV4dENoZWNraW5nVHlwZVNwZWxsaW5n
OwogICAgIGNvbnN0IGJvb2wgc2hvdWxkTWFya0dyYW1tYXIgPSB0ZXh0Q2hlY2tpbmdPcHRpb25z
ICYgVGV4dENoZWNraW5nVHlwZUdyYW1tYXI7CkBAIC0yNjc1LDYgKzI2ODIsNyBAQCB2b2lkIEVk
aXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFZlY3RvcjxUZQogICAgICAgICBjb25zdCBpbnQgcmVzdWx0TG9jYXRpb24gPSByZXN1
bHRzW2ldLmxvY2F0aW9uICsgb2Zmc2V0RHVlVG9SZXBsYWNlbWVudDsKICAgICAgICAgY29uc3Qg
aW50IHJlc3VsdExlbmd0aCA9IHJlc3VsdHNbaV0ubGVuZ3RoOwogICAgICAgICBjb25zdCBpbnQg
cmVzdWx0RW5kTG9jYXRpb24gPSByZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aDsKKyAgICAg
ICAgY29uc3QgaW50IGF1dG9tYXRpY1JlcGxhY2VtZW50RW5kTG9jYXRpb24gPSBwYXJhZ3JhcGgu
YXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpICsgcGFyYWdyYXBoLmF1dG9tYXRpY1JlcGxhY2Vt
ZW50TGVuZ3RoKCkgKyBvZmZzZXREdWVUb1JlcGxhY2VtZW50OwogICAgICAgICBjb25zdCBTdHJp
bmcmIHJlcGxhY2VtZW50ID0gcmVzdWx0c1tpXS5yZXBsYWNlbWVudDsKICAgICAgICAgY29uc3Qg
Ym9vbCByZXN1bHRFbmRzQXRBbWJpZ3VvdXNCb3VuZGFyeSA9IHVzZUFtYmlndW91c0JvdW5kYXJ5
T2Zmc2V0ICYmIHNlbGVjdGlvbk9mZnNldCAtIDEgPD0gcmVzdWx0RW5kTG9jYXRpb247CiAKQEAg
LTI2OTksMTIgKzI3MDcsMTIgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNvbnN0
IFNwZWxsQ2hlY2tSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8VGUKICAgICAgICAgICAg
ICAgICAgICAgYmFkR3JhbW1hclJhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCkubWFy
a2VycygpLmFkZE1hcmtlcihiYWRHcmFtbWFyUmFuZ2UucHRyKCksIERvY3VtZW50TWFya2VyOjpH
cmFtbWFyLCBkZXRhaWwudXNlckRlc2NyaXB0aW9uKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAocmVzdWx0RW5kTG9jYXRpb24gPD0gc3BlbGxp
bmdSYW5nZUVuZE9mZnNldCAmJiByZXN1bHRFbmRMb2NhdGlvbiA+PSBwYXJhZ3JhcGguY2hlY2tp
bmdTdGFydCgpCisgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0RW5kTG9jYXRpb24gPD0gYXV0b21h
dGljUmVwbGFjZW1lbnRFbmRMb2NhdGlvbiAmJiByZXN1bHRFbmRMb2NhdGlvbiA+PSBwYXJhZ3Jh
cGguYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpCiAgICAgICAgICAgICAmJiBpc0F1dG9tYXRp
Y1RleHRSZXBsYWNlbWVudFR5cGUocmVzdWx0VHlwZSkpIHsKLSAgICAgICAgICAgIC8vIEluIHRo
aXMgY2FzZSB0aGUgcmVzdWx0IHJhbmdlIGp1c3QgaGFzIHRvIHRvdWNoIHRoZSBzcGVsbGluZyBy
YW5nZSwgc28gd2UgY2FuIGhhbmRsZSByZXBsYWNpbmcgbm9uLXdvcmQgdGV4dCBzdWNoIGFzIHB1
bmN0dWF0aW9uLgorICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIHRoZSByZXN1bHQgcmFuZ2Ug
anVzdCBoYXMgdG8gdG91Y2ggdGhlIGF1dG9tYXRpYyByZXBsYWNlbWVudCByYW5nZSwgc28gd2Ug
Y2FuIGhhbmRsZSByZXBsYWNpbmcgbm9uLXdvcmQgdGV4dCBzdWNoIGFzIHB1bmN0dWF0aW9uLgog
ICAgICAgICAgICAgQVNTRVJUKHJlc3VsdExlbmd0aCA+IDAgJiYgcmVzdWx0TG9jYXRpb24gPj0g
MCk7CiAKLSAgICAgICAgICAgIGlmIChzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsICYmIChyZXN1
bHRFbmRMb2NhdGlvbiA8IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQKKyAgICAgICAgICAgIGlmIChz
aG91bGRTaG93Q29ycmVjdGlvblBhbmVsICYmIChyZXN1bHRFbmRMb2NhdGlvbiA8IGF1dG9tYXRp
Y1JlcGxhY2VtZW50RW5kTG9jYXRpb24KICAgICAgICAgICAgICAgICB8fCAhKHJlc3VsdFR5cGUg
JiAoVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50IHwgVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rp
b24pKSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTI3MjgsNyArMjczNiw3IEBA
IHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgVmVjdG9yPFRlCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgICAgIGlmIChzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKHJlc3VsdEVuZExvY2F0aW9uID09IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQpIHsKKyAg
ICAgICAgICAgICAgICBpZiAocmVzdWx0RW5kTG9jYXRpb24gPT0gYXV0b21hdGljUmVwbGFjZW1l
bnRFbmRMb2NhdGlvbikgewogICAgICAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IHNob3cgdGhl
IGNvcnJlY3Rpb24gcGFuZWwgb24gdGhlIGxhc3Qgd29yZC4KICAgICAgICAgICAgICAgICAgICAg
bV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5zaG93KHJhbmdlVG9SZXBsYWNlLCByZXBsYWNl
bWVudCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjgyOSw3ICsyODM3LDggQEAg
dm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mIHNwZWxsaW5nU2VsZWMKICAgICAgICAgVGV4dENoZWNraW5nVHlwZU1hc2sgdGV4
dENoZWNraW5nT3B0aW9ucyA9IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZzsKICAgICAgICAgaWYg
KG1hcmtHcmFtbWFyICYmIGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKQogICAgICAgICAgICAg
dGV4dENoZWNraW5nT3B0aW9ucyB8PSBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsKLSAgICAgICAg
bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyh0ZXh0Q2hlY2tpbmdPcHRp
b25zLCBzcGVsbGluZ1NlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBncmFtbWFy
U2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOworICAgICAgICBhdXRvIHNwZWxs
Q2hlY2tpbmdSYW5nZSA9IHNwZWxsaW5nU2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7Cisg
ICAgICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNr
aW5nT3B0aW9ucywgc3BlbGxDaGVja2luZ1JhbmdlLmdldCgpLCBzcGVsbENoZWNraW5nUmFuZ2Uu
Z2V0KCksIGdyYW1tYXJTZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IGUxNDE0M2Zl
Y2U5MTEwN2E2NTJmZmU4ZmM1MThmMmM3MjVmYTljZDcuLmI0YTAxMGZiNGU3MzIwYTJlYmQ3NDY1
M2JjNzRlOTQ5NzEwMjc0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtMjkzLDcgKzI5
Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzT3ZlcndyaXRlTW9kZUVuYWJsZWQoKSBjb25zdCB7
IHJldHVybiBtX292ZXJ3cml0ZU1vZGVFbmFibGVkOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB0b2dnbGVPdmVyd3JpdGVNb2RlRW5hYmxlZCgpOwogCi0gICAgdm9pZCBtYXJrQWxsTWlzc3Bl
bGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ1R5cGVNYXNrLCBSYW5nZSog
c3BlbGxpbmdSYW5nZSwgUmFuZ2UqIGdyYW1tYXJSYW5nZSk7CisgICAgdm9pZCBtYXJrQWxsTWlz
c3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ1R5cGVNYXNrLCBSYW5n
ZSogc3BlbGxpbmdSYW5nZSwgUmFuZ2UqIGF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UsIFJhbmdl
KiBncmFtbWFyUmFuZ2UpOwogI2lmIFBMQVRGT1JNKElPUykKICAgICBOT19SRVRVUk5fRFVFX1RP
X0FTU0VSVAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxs
Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKaW5k
ZXggYTViNjE2ZDI0OGUxMWM4NjQyNzk1MjYzZDg5Y2M0MGIxM2E5Y2ZmOS4uYzA1NGM1YWRlNTQw
OTA0MjIzYjkwOTNjMTQwYTM1ODY2Njc5NjFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3Bl
bGxDaGVja2VyLmNwcApAQCAtNDAsOCArNDAsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVNwZWxsQ2hlY2tSZXF1ZXN0OjpTcGVsbENoZWNrUmVxdWVzdChSZWY8UmFuZ2U+JiYgY2hlY2tp
bmdSYW5nZSwgUmVmPFJhbmdlPiYmIHBhcmFncmFwaFJhbmdlLCBjb25zdCBTdHJpbmcmIHRleHQs
IFRleHRDaGVja2luZ1R5cGVNYXNrIG1hc2ssIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHByb2Nl
c3NUeXBlKQorU3BlbGxDaGVja1JlcXVlc3Q6OlNwZWxsQ2hlY2tSZXF1ZXN0KFJlZjxSYW5nZT4m
JiBjaGVja2luZ1JhbmdlLCBSZWY8UmFuZ2U+JiYgYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSwg
UmVmPFJhbmdlPiYmIHBhcmFncmFwaFJhbmdlLCBjb25zdCBTdHJpbmcmIHRleHQsIFRleHRDaGVj
a2luZ1R5cGVNYXNrIG1hc2ssIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHByb2Nlc3NUeXBlKQog
ICAgIDogbV9jaGVja2luZ1JhbmdlKFdURk1vdmUoY2hlY2tpbmdSYW5nZSkpCisgICAgLCBtX2F1
dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UoV1RGTW92ZShhdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdl
KSkKICAgICAsIG1fcGFyYWdyYXBoUmFuZ2UoV1RGTW92ZShwYXJhZ3JhcGhSYW5nZSkpCiAgICAg
LCBtX3Jvb3RFZGl0YWJsZUVsZW1lbnQobV9jaGVja2luZ1JhbmdlLT5zdGFydENvbnRhaW5lcigp
LnJvb3RFZGl0YWJsZUVsZW1lbnQoKSkKICAgICAsIG1fcmVxdWVzdERhdGEodW5yZXF1ZXN0ZWRU
ZXh0Q2hlY2tpbmdTZXF1ZW5jZSwgdGV4dCwgbWFzaywgcHJvY2Vzc1R5cGUpCkBAIC01MCwxMyAr
NTEsMTMgQEAgU3BlbGxDaGVja1JlcXVlc3Q6OlNwZWxsQ2hlY2tSZXF1ZXN0KFJlZjxSYW5nZT4m
JiBjaGVja2luZ1JhbmdlLCBSZWY8UmFuZ2U+JiYgcGEKIAogU3BlbGxDaGVja1JlcXVlc3Q6On5T
cGVsbENoZWNrUmVxdWVzdCgpID0gZGVmYXVsdDsKIAotUmVmUHRyPFNwZWxsQ2hlY2tSZXF1ZXN0
PiBTcGVsbENoZWNrUmVxdWVzdDo6Y3JlYXRlKFRleHRDaGVja2luZ1R5cGVNYXNrIHRleHRDaGVj
a2luZ09wdGlvbnMsIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHByb2Nlc3NUeXBlLCBSZWY8UmFu
Z2U+JiYgY2hlY2tpbmdSYW5nZSwgUmVmPFJhbmdlPiYmIHBhcmFncmFwaFJhbmdlKQorUmVmUHRy
PFNwZWxsQ2hlY2tSZXF1ZXN0PiBTcGVsbENoZWNrUmVxdWVzdDo6Y3JlYXRlKFRleHRDaGVja2lu
Z1R5cGVNYXNrIHRleHRDaGVja2luZ09wdGlvbnMsIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHBy
b2Nlc3NUeXBlLCBSZWY8UmFuZ2U+JiYgY2hlY2tpbmdSYW5nZSwgUmVmPFJhbmdlPiYmIGF1dG9t
YXRpY1JlcGxhY2VtZW50UmFuZ2UsIFJlZjxSYW5nZT4mJiBwYXJhZ3JhcGhSYW5nZSkKIHsKICAg
ICBTdHJpbmcgdGV4dCA9IGNoZWNraW5nUmFuZ2UtPnRleHQoKTsKICAgICBpZiAoIXRleHQubGVu
Z3RoKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3BlbGxDaGVja1JlcXVlc3QoV1RGTW92ZShjaGVja2luZ1JhbmdlKSwgV1RGTW92ZShwYXJh
Z3JhcGhSYW5nZSksIHRleHQsIHRleHRDaGVja2luZ09wdGlvbnMsIHByb2Nlc3NUeXBlKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3BlbGxDaGVja1JlcXVlc3QoV1RGTW92ZShjaGVja2lu
Z1JhbmdlKSwgV1RGTW92ZShhdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlKSwgV1RGTW92ZShwYXJh
Z3JhcGhSYW5nZSksIHRleHQsIHRleHRDaGVja2luZ09wdGlvbnMsIHByb2Nlc3NUeXBlKSk7CiB9
CiAKIGNvbnN0IFRleHRDaGVja2luZ1JlcXVlc3REYXRhJiBTcGVsbENoZWNrUmVxdWVzdDo6ZGF0
YSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tl
ci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaAppbmRleCBhMjNjMThj
YzBmMTVmY2E1MjYwNWU0MWE3NzE4ODk4NjBkODQ2YTAzLi4wNTk0NTM2NmNjOTgxNDQwMWNkODgy
ZjBjMWQ3MGU1MjYyMDdjOGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nw
ZWxsQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmgK
QEAgLTQ0LDExICs0NCwxMiBAQCBjbGFzcyBTcGVsbENoZWNrZXI7CiAKIGNsYXNzIFNwZWxsQ2hl
Y2tSZXF1ZXN0IDogcHVibGljIFRleHRDaGVja2luZ1JlcXVlc3QgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWZQdHI8U3BlbGxDaGVja1JlcXVlc3Q+IGNyZWF0ZShUZXh0Q2hlY2tpbmdUeXBlTWFz
aywgVGV4dENoZWNraW5nUHJvY2Vzc1R5cGUsIFJlZjxSYW5nZT4mJiBjaGVja2luZ1JhbmdlLCBS
ZWY8UmFuZ2U+JiYgcGFyYWdyYXBoUmFuZ2UpOworICAgIHN0YXRpYyBSZWZQdHI8U3BlbGxDaGVj
a1JlcXVlc3Q+IGNyZWF0ZShUZXh0Q2hlY2tpbmdUeXBlTWFzaywgVGV4dENoZWNraW5nUHJvY2Vz
c1R5cGUsIFJlZjxSYW5nZT4mJiBjaGVja2luZ1JhbmdlLCBSZWY8UmFuZ2U+JiYgYXV0b21hdGlj
UmVwbGFjZW1lbnRSYW5nZSwgUmVmPFJhbmdlPiYmIHBhcmFncmFwaFJhbmdlKTsKICAgICB2aXJ0
dWFsIH5TcGVsbENoZWNrUmVxdWVzdCgpOwogCiAgICAgUmFuZ2UmIGNoZWNraW5nUmFuZ2UoKSBj
b25zdCB7IHJldHVybiBtX2NoZWNraW5nUmFuZ2UuZ2V0KCk7IH0KICAgICBSYW5nZSYgcGFyYWdy
YXBoUmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhcmFncmFwaFJhbmdlLmdldCgpOyB9CisgICAg
UmFuZ2UmIGF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX2F1dG9t
YXRpY1JlcGxhY2VtZW50UmFuZ2UuZ2V0KCk7IH0KICAgICBFbGVtZW50KiByb290RWRpdGFibGVF
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9yb290RWRpdGFibGVFbGVtZW50LmdldCgpOyB9CiAK
ICAgICB2b2lkIHNldENoZWNrZXJBbmRTZXF1ZW5jZShTcGVsbENoZWNrZXIqLCBpbnQgc2VxdWVu
Y2UpOwpAQCAtNjAsMTAgKzYxLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENhbmNlbCgpIG92
ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIFNwZWxsQ2hlY2tSZXF1ZXN0KFJlZjxSYW5nZT4mJiBj
aGVja2luZ1JhbmdlLCBSZWY8UmFuZ2U+JiYgcGFyYWdyYXBoUmFuZ2UsIGNvbnN0IFN0cmluZyYs
IFRleHRDaGVja2luZ1R5cGVNYXNrLCBUZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSk7CisgICAgU3Bl
bGxDaGVja1JlcXVlc3QoUmVmPFJhbmdlPiYmIGNoZWNraW5nUmFuZ2UsIFJlZjxSYW5nZT4mJiBh
dXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlLCBSZWY8UmFuZ2U+JiYgcGFyYWdyYXBoUmFuZ2UsIGNv
bnN0IFN0cmluZyYsIFRleHRDaGVja2luZ1R5cGVNYXNrLCBUZXh0Q2hlY2tpbmdQcm9jZXNzVHlw
ZSk7CiAKICAgICBTcGVsbENoZWNrZXIqIG1fY2hlY2tlciB7IG51bGxwdHIgfTsKICAgICBSZWY8
UmFuZ2U+IG1fY2hlY2tpbmdSYW5nZTsKKyAgICBSZWY8UmFuZ2U+IG1fYXV0b21hdGljUmVwbGFj
ZW1lbnRSYW5nZTsKICAgICBSZWY8UmFuZ2U+IG1fcGFyYWdyYXBoUmFuZ2U7CiAgICAgUmVmUHRy
PEVsZW1lbnQ+IG1fcm9vdEVkaXRhYmxlRWxlbWVudDsKICAgICBUZXh0Q2hlY2tpbmdSZXF1ZXN0
RGF0YSBtX3JlcXVlc3REYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tp
bmdIZWxwZXIuY3BwCmluZGV4IGVkOWJlZTQ5Y2E3MjJmM2Y4NjhhNGE1OTI1YjhjOTk3NGUzMGZj
OTIuLjcyNWQwMzNlZDZiOWIwN2ViZTk5ZTJiYTMyZjgzNDFlN2FlZWMyMjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKQEAgLTExNywxMiArMTE3
LDE2IEBAIHN0YXRpYyBSZWY8UmFuZ2U+IGV4cGFuZFRvUGFyYWdyYXBoQm91bmRhcnkoUmFuZ2Um
IHJhbmdlKQogICAgIHJldHVybiBwYXJhZ3JhcGhSYW5nZTsKIH0KIAotVGV4dENoZWNraW5nUGFy
YWdyYXBoOjpUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoUmVmPFJhbmdlPiYmIGNoZWNraW5nUmFuZ2Us
IFJhbmdlKiBwYXJhZ3JhcGhSYW5nZSkKK1RleHRDaGVja2luZ1BhcmFncmFwaDo6VGV4dENoZWNr
aW5nUGFyYWdyYXBoKFJlZjxSYW5nZT4mJiBjaGVja2luZ0FuZEF1dG9tYXRpY1JlcGxhY2VtZW50
UmFuZ2UpCisgICAgOiBtX2NoZWNraW5nUmFuZ2UoY2hlY2tpbmdBbmRBdXRvbWF0aWNSZXBsYWNl
bWVudFJhbmdlLmNvcHlSZWYoKSkKKyAgICAsIG1fYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZShj
aGVja2luZ0FuZEF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UuY29weVJlZigpKQoreworfQorCitU
ZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OlRleHRDaGVja2luZ1BhcmFncmFwaChSZWY8UmFuZ2U+JiYg
Y2hlY2tpbmdSYW5nZSwgUmVmPFJhbmdlPiYmIGF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UsIFJl
ZlB0cjxSYW5nZT4mJiBwYXJhZ3JhcGhSYW5nZSkKICAgICA6IG1fY2hlY2tpbmdSYW5nZShXVEZN
b3ZlKGNoZWNraW5nUmFuZ2UpKQotICAgICwgbV9wYXJhZ3JhcGhSYW5nZShwYXJhZ3JhcGhSYW5n
ZSkKLSAgICAsIG1fY2hlY2tpbmdTdGFydCgtMSkKLSAgICAsIG1fY2hlY2tpbmdFbmQoLTEpCi0g
ICAgLCBtX2NoZWNraW5nTGVuZ3RoKC0xKQorICAgICwgbV9hdXRvbWF0aWNSZXBsYWNlbWVudFJh
bmdlKFdURk1vdmUoYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSkpCisgICAgLCBtX3BhcmFncmFw
aFJhbmdlKFdURk1vdmUocGFyYWdyYXBoUmFuZ2UpKQogewogfQogCkBAIC0yMTEsNiArMjE1LDI2
IEBAIGludCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmNoZWNraW5nTGVuZ3RoKCkgY29uc3QKICAg
ICByZXR1cm4gbV9jaGVja2luZ0xlbmd0aDsKIH0KIAoraW50IFRleHRDaGVja2luZ1BhcmFncmFw
aDo6YXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpIGNvbnN0Cit7CisgICAgaWYgKG1fYXV0b21h
dGljUmVwbGFjZW1lbnRTdGFydCAhPSAtMSkKKyAgICAgICAgcmV0dXJuIG1fYXV0b21hdGljUmVw
bGFjZW1lbnRTdGFydDsKKworICAgIGF1dG8gc3RhcnRPZmZzZXRSYW5nZSA9IFJhbmdlOjpjcmVh
dGUocGFyYWdyYXBoUmFuZ2UoKS5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIHBhcmFncmFw
aFJhbmdlKCkuc3RhcnRQb3NpdGlvbigpLCBtX2F1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UtPnN0
YXJ0UG9zaXRpb24oKSk7CisgICAgbV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0ID0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFydE9mZnNldFJhbmdlLnB0cigpKTsKKyAgICByZXR1cm4g
bV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0OworfQorCitpbnQgVGV4dENoZWNraW5nUGFyYWdy
YXBoOjphdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCgpIGNvbnN0Cit7CisgICAgaWYgKG1fYXV0
b21hdGljUmVwbGFjZW1lbnRMZW5ndGggIT0gLTEpCisgICAgICAgIHJldHVybiBtX2F1dG9tYXRp
Y1JlcGxhY2VtZW50TGVuZ3RoOworCisgICAgYXV0byBlbmRPZmZzZXRSYW5nZSA9IFJhbmdlOjpj
cmVhdGUocGFyYWdyYXBoUmFuZ2UoKS5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIHBhcmFn
cmFwaFJhbmdlKCkuc3RhcnRQb3NpdGlvbigpLCBtX2F1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2Ut
PmVuZFBvc2l0aW9uKCkpOworICAgIG1fYXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGggPSBUZXh0
SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZE9mZnNldFJhbmdlLnB0cigpKSAtIGF1dG9tYXRpY1Jl
cGxhY2VtZW50U3RhcnQoKTsKKyAgICByZXR1cm4gbV9hdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0
aDsKK30KKwogVGV4dENoZWNraW5nSGVscGVyOjpUZXh0Q2hlY2tpbmdIZWxwZXIoRWRpdG9yQ2xp
ZW50JiBjbGllbnQsIFJhbmdlJiByYW5nZSkKICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAs
IG1fcmFuZ2UocmFuZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRD
aGVja2luZ0hlbHBlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxw
ZXIuaAppbmRleCA2YjBmNDNmY2Y3NGFlYWU3MTU2Y2E5MjQ5ODYzYWQ3MmMwNTRkZDdlLi5iYzc5
YmFkNzA2NGU1MzhmZjExNWQyMDM0NjhmYmFiOWE2NGNjZTEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmgKQEAgLTMzLDcgKzMzLDggQEAgc3RydWN0IFRl
eHRDaGVja2luZ1Jlc3VsdDsKIAogY2xhc3MgVGV4dENoZWNraW5nUGFyYWdyYXBoIHsKIHB1Ymxp
YzoKLSAgICBleHBsaWNpdCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoUmVmPFJhbmdlPiYmIGNoZWNr
aW5nUmFuZ2UsIFJhbmdlKiBwYXJhZ3JhcGhSYW5nZSA9IG51bGxwdHIpOworICAgIGV4cGxpY2l0
IFRleHRDaGVja2luZ1BhcmFncmFwaChSZWY8UmFuZ2U+JiYgY2hlY2tpbmdBbmRBdXRvbWF0aWNS
ZXBsYWNlbWVudFJhbmdlKTsKKyAgICBleHBsaWNpdCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoUmVm
PFJhbmdlPiYmIGNoZWNraW5nUmFuZ2UsIFJlZjxSYW5nZT4mJiBhdXRvbWF0aWNSZXBsYWNlbWVu
dFJhbmdlLCBSZWZQdHI8UmFuZ2U+JiYgcGFyYWdyYXBoUmFuZ2UpOwogCiAgICAgaW50IHJhbmdl
TGVuZ3RoKCkgY29uc3Q7CiAgICAgUmVmPFJhbmdlPiBzdWJyYW5nZShpbnQgY2hhcmFjdGVyT2Zm
c2V0LCBpbnQgY2hhcmFjdGVyQ291bnQpIGNvbnN0OwpAQCAtNTUsNiArNTYsMTEgQEAgcHVibGlj
OgogICAgIGludCBjaGVja2luZ0xlbmd0aCgpIGNvbnN0OwogICAgIFN0cmluZyBjaGVja2luZ1N1
YnN0cmluZygpIGNvbnN0IHsgcmV0dXJuIHRleHRTdWJzdHJpbmcoY2hlY2tpbmdTdGFydCgpLCBj
aGVja2luZ0xlbmd0aCgpKTsgfQogCisgICAgLy8gRGV0ZXJtaW5lcyB0aGUgcmFuZ2UgaW4gd2hp
Y2ggd2UgYWxsb3cgYXV0b21hdGljIHRleHQgcmVwbGFjZW1lbnQuIElmIGFuIGF1dG9tYXRpYyBy
ZXBsYWNlbWVudCByYW5nZSBpcyBub3QgcGFzc2VkIHRvIHRoZQorICAgIC8vIHRleHQgY2hlY2tp
bmcgcGFyYWdyYXBoLCB0aGlzIGRlZmF1bHRzIHRvIHRoZSBzcGVsbCBjaGVja2luZyByYW5nZS4K
KyAgICBpbnQgYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpIGNvbnN0OworICAgIGludCBhdXRv
bWF0aWNSZXBsYWNlbWVudExlbmd0aCgpIGNvbnN0OworCiAgICAgYm9vbCBjaGVja2luZ1Jhbmdl
TWF0Y2hlcyhpbnQgbG9jYXRpb24sIGludCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJuIGxvY2F0aW9u
ID09IGNoZWNraW5nU3RhcnQoKSAmJiBsZW5ndGggPT0gY2hlY2tpbmdMZW5ndGgoKTsgfQogICAg
IGJvb2wgaXNDaGVja2luZ1JhbmdlQ292ZXJlZEJ5KGludCBsb2NhdGlvbiwgaW50IGxlbmd0aCkg
Y29uc3QgeyByZXR1cm4gbG9jYXRpb24gPD0gY2hlY2tpbmdTdGFydCgpICYmIGxvY2F0aW9uICsg
bGVuZ3RoID49IGNoZWNraW5nU3RhcnQoKSArIGNoZWNraW5nTGVuZ3RoKCk7IH0KICAgICBib29s
IGNoZWNraW5nUmFuZ2VDb3ZlcnMoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKSBjb25zdCB7IHJl
dHVybiBsb2NhdGlvbiA8IGNoZWNraW5nRW5kKCkgJiYgbG9jYXRpb24gKyBsZW5ndGggPiBjaGVj
a2luZ1N0YXJ0KCk7IH0KQEAgLTY1LDEyICs3MSwxNSBAQCBwcml2YXRlOgogICAgIFJhbmdlJiBv
ZmZzZXRBc1JhbmdlKCkgY29uc3Q7CiAKICAgICBSZWY8UmFuZ2U+IG1fY2hlY2tpbmdSYW5nZTsK
KyAgICBSZWY8UmFuZ2U+IG1fYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZTsKICAgICBtdXRhYmxl
IFJlZlB0cjxSYW5nZT4gbV9wYXJhZ3JhcGhSYW5nZTsKICAgICBtdXRhYmxlIFJlZlB0cjxSYW5n
ZT4gbV9vZmZzZXRBc1JhbmdlOwogICAgIG11dGFibGUgU3RyaW5nIG1fdGV4dDsKLSAgICBtdXRh
YmxlIGludCBtX2NoZWNraW5nU3RhcnQ7Ci0gICAgbXV0YWJsZSBpbnQgbV9jaGVja2luZ0VuZDsK
LSAgICBtdXRhYmxlIGludCBtX2NoZWNraW5nTGVuZ3RoOworICAgIG11dGFibGUgaW50IG1fY2hl
Y2tpbmdTdGFydCB7IC0xIH07CisgICAgbXV0YWJsZSBpbnQgbV9jaGVja2luZ0VuZCB7IC0xIH07
CisgICAgbXV0YWJsZSBpbnQgbV9jaGVja2luZ0xlbmd0aCB7IC0xIH07CisgICAgbXV0YWJsZSBp
bnQgbV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0IHsgLTEgfTsKKyAgICBtdXRhYmxlIGludCBt
X2F1dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3RoIHsgLTEgfTsKIH07CiAKIGNsYXNzIFRleHRDaGVj
a2luZ0hlbHBlciB7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggYzk2MWE3NjVjNDY2NWQ2MDZkMTY2MjVjOWU0YjdjOGQyNjI0MDBkMy4uMzJkNmQ1
ZTkwYjQ1YzUwMjdkZGE4ZmU1MGIyMzU2MDNkOWM4NzU2NiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDE4LTA2LTMw
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNP
U10gVGV4dCByZXBsYWNlbWVudHMgdGhhdCBlbmQgd2l0aCBzeW1ib2xzIGFyZSBleHBhbmRlZCBp
bW1lZGlhdGVseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg3MjI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MTExMjQzMz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIHRlc3Rpbmcgc3VwcG9y
dCBmb3IgbW9ja2luZyBOU1NwZWxsQ2hlY2tlcidzIHRleHQgY2hlY2tpbmcgcmVzdWx0cy4gU2Vl
IGJlbG93IGZvciBtb3JlIGRldGFpbHMsIGFuZCB0aGUgbmV3CisgICAgICAgIGxheW91dCB0ZXN0
IGZvciBhbiBleGFtcGxlIG9mIGl0cyB1c2FnZS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChzZXRTcGVsbENoZWNrZXJUZXh0
UmVwbGFjZW1lbnRzQ2FsbGJhY2spOgorCisgICAgICAgIEFkZCBiaW5kaW5ncyBzdXBwb3J0IGlu
IFRlc3RSdW5uZXIgdG8gc3BlY2lmeSBhIHNldCBvZiB0ZXh0IHJlcGxhY2VtZW50IG1hcHBpbmdz
LiBFYWNoIGVudHJ5IGluIHRoZSBkaWN0aW9uYXJ5CisgICAgICAgIG1hcHMgYSBzdHJpbmcgcmVw
cmVzZW50aW5nIGFuIGlucHV0IHRvIHRoZSBOU1NwZWxsQ2hlY2tlciB0byBzb21lIGluZm9ybWF0
aW9uIGRlc2NyaWJpbmcgdGhlIHNwZWxsIGNoZWNraW5nCisgICAgICAgIHJlc3VsdCB0aGF0IExh
eW91dFRlc3RTcGVsbENoZWNrZXIgd2lsbCByZXR1cm4uCisKKyAgICAgICAgKFRlc3RSdW5uZXI6
OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5o
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAg
ICAgKHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZyk6CisKKyAgICAg
ICAgUmVzdG9yZSB0aGUgb3JpZ2luYWwgc2hhcmVkIE5TU3BlbGxjaGVja2VyIGJlZm9yZSB0cmFu
c2l0aW9uaW5nIHRvIHRoZSBuZXh0IGxheW91dCB0ZXN0LCBpZiBuZWVkZWQuCisKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW06IFJlbW92
ZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW06CisgICAg
ICAgIChUZXN0UnVubmVyOjpzZXRTcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZCk6CisgICAgICAg
IChUZXN0UnVubmVyOjpzZXRTcGVsbENoZWNrZXJUZXh0UmVwbGFjZW1lbnRzKToKKworICAgICAg
ICBUaGVzZSB0ZXN0UnVubmVyIG1ldGhvZHMgZW5zdXJlIHRoYXQgYC1bTlNTcGVsbENoZWNrZXIg
c2hhcmVkU3BlbGxDaGVja2VyXWAgaXMgc3dpenpsZWQgdG8gcmV0dXJuIG91ciBtb2NrCisgICAg
ICAgIExheW91dFRlc3RTcGVsbENoZWNrZXIgaW5zdGFuY2UgYmVmb3JlIGNhbGxpbmcgaW50byBp
dC4KKworICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hl
Y2tlci5oOiBSZW5hbWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJU
cmVlU3BlbGxDaGVja2VyLmguCisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlv
dXRUZXN0U3BlbGxDaGVja2VyLm1tOiBBZGRlZC4KKworICAgICAgICBNb3ZlZCBEdW1wUmVuZGVy
VHJlZVNwZWxsQ2hlY2tlciB0byBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLCBhbmQgbWFkZSBpdCBj
b21waWxlIGZvciBib3RoIFdlYktpdFRlc3RSdW5uZXIKKyAgICAgICAgKG1vZGVybiBXZWJLaXQp
IGFuZCBEdW1wUmVuZGVyVHJlZSAobGVnYWN5IFdlYktpdCkgYnkgcHV0dGluZyBpdCBpbiBUZXN0
UnVubmVyU2hhcmVkLgorCisgICAgICAgIChleGlzdGluZ0dsb2JhbExheW91dFRlc3RTcGVsbENo
ZWNrZXIpOgorICAgICAgICAoZW5zdXJlR2xvYmFsTGF5b3V0VGVzdFNwZWxsQ2hlY2tlcik6Cisg
ICAgICAgIChzdHJpbmdGb3JDb3JyZWN0aW9uUmVzcG9uc2UpOgorICAgICAgICAobnNUZXh0Q2hl
Y2tpbmdUeXBlKToKKyAgICAgICAgKC1bTGF5b3V0VGVzdFRleHRDaGVja2luZ1Jlc3VsdCBpbml0
V2l0aFR5cGU6cmFuZ2U6cmVwbGFjZW1lbnQ6XSk6CisgICAgICAgICgtW0xheW91dFRlc3RUZXh0
Q2hlY2tpbmdSZXN1bHQgcmFuZ2VdKToKKyAgICAgICAgKC1bTGF5b3V0VGVzdFRleHRDaGVja2lu
Z1Jlc3VsdCByZXN1bHRUeXBlXSk6CisgICAgICAgICgtW0xheW91dFRlc3RUZXh0Q2hlY2tpbmdS
ZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddKToKKyAgICAgICAgKC1bTGF5b3V0VGVzdFRleHRDaGVj
a2luZ1Jlc3VsdCBkZXNjcmlwdGlvbl0pOgorCisgICAgICAgIExheW91dFRlc3RUZXh0Q2hlY2tp
bmdSZXN1bHQgcmVwcmVzZW50cyBhIGZha2UgTlNUZXh0Q2hlY2tpbmdSZXN1bHQgY29udGFpbmlu
ZyBzcGVsbCBjaGVja2luZyByZXN1bHRzIHN1cHBsaWVkCisgICAgICAgIGJ5IHRoZSBsYXlvdXQg
dGVzdC4KKworICAgICAgICAoK1tMYXlvdXRUZXN0U3BlbGxDaGVja2VyIGluc3RhbGxJZk5lY2Vz
c2FyeV0pOgorICAgICAgICAoK1tMYXlvdXRUZXN0U3BlbGxDaGVja2VyIHVuaW5zdGFsbEFuZFJl
c2V0XSk6CisKKyAgICAgICAgSGVscGVyIG1ldGhvZHMgdG8gYmVnaW4gYW5kIGVuZCBzd2l6emxp
bmcgdGhlIHNoYXJlZCBOU1NwZWxsQ2hlY2tlci4KKworICAgICAgICAoLVtMYXlvdXRUZXN0U3Bl
bGxDaGVja2VyIHJlc2V0XSk6CisKKyAgICAgICAgUmVzZXRzIHRoZSBzdGF0ZSBvZiB0aGUgTGF5
b3V0VGVzdFNwZWxsQ2hlY2tlciAodGhpcyBlbnRhaWxzIGNsZWFyaW5nIHRoZSBmYWtlIHJlcGxh
Y2VtZW50cyBkaWN0aW9uYXJ5IGFuZAorICAgICAgICB0dXJuaW5nIG9mZiBsb2dnaW5nIGZvciBy
ZWNvcmRlZCBzcGVsbGNoZWNraW5nIHJlc3BvbnNlcykuCisKKyAgICAgICAgKC1bTGF5b3V0VGVz
dFNwZWxsQ2hlY2tlciByZXBsYWNlbWVudHNdKToKKyAgICAgICAgKC1bTGF5b3V0VGVzdFNwZWxs
Q2hlY2tlciBzZXRSZXBsYWNlbWVudHM6XSk6CisgICAgICAgICgtW0xheW91dFRlc3RTcGVsbENo
ZWNrZXIgc2V0UmVwbGFjZW1lbnRzRnJvbUpTT2JqZWN0OmluQ29udGV4dDpdKToKKworICAgICAg
ICBIZWxwZXIgbWV0aG9kIHRvIHRha2UgYSBgSlNPYmplY3RSZWZgIHN1cHBsaWVkIGJ5IHRoZSB0
ZXN0IHJ1bm5lciBhbmQgdHJhbnNmb3JtIGl0IGludG8gYSBtYXAgb2Ygc3BlbGwgY2hlY2tpbmcK
KyAgICAgICAgc3RyaW5nIGlucHV0cyB0byBMYXlvdXRUZXN0VGV4dENoZWNraW5nUmVzdWx0cy4K
KworICAgICAgICAoLVtMYXlvdXRUZXN0U3BlbGxDaGVja2VyIGNoZWNrU3RyaW5nOnJhbmdlOnR5
cGVzOm9wdGlvbnM6aW5TcGVsbERvY3VtZW50V2l0aFRhZzpvcnRob2dyYXBoeTp3b3JkQ291bnQ6
XSk6CisKKyAgICAgICAgQ29uc3VsdCB0aGUgdGV4dCByZXBsYWNlbWVudCBtYXAgYW5kIGJhaWwg
ZWFybHkgaWYgYSBtYXRjaCBpcyBmb3VuZCwgYmVmb3JlIGNhbGxpbmcgaW50byByZWFsIE5TU3Bl
bGxDaGVja2VyCisgICAgICAgIGxvZ2ljIHRvIHBlcmZvcm0gc3BlbGxjaGVja2luZy4KKworICAg
ICAgICAoLVtMYXlvdXRUZXN0U3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlOnRvQ29ycmVjdGlv
bjpmb3JXb3JkOmxhbmd1YWdlOmluU3BlbGxEb2N1bWVudFdpdGhUYWc6XSk6CisKKyAgICAgICAg
UmVpbXBsZW1lbnQgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uYWxpdHkgaW4gRHVtcFJlbmRlclRyZWVT
cGVsbENoZWNrZXIgdG8gbWFrZSBgLXJlY29yZFJlc3BvbnNlOuKApmAgcHJpbnQgdG8gc3Rkb3V0
CisgICAgICAgIGJ5IG92ZXJyaWRpbmcgdGhlIG1ldGhvZCBhbmQgcHJpbnRpbmcgaWYgdGhlIGAt
c3BlbGxDaGVja2VyTG9nZ2luZ0VuYWJsZWRgIHByb3BlcnR5IGhhcyBiZWVuIHNldCB0byBZRVMu
CisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKwogMjAxOC0wNi0zMCAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0
YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0NNYWtlXSBidWlsZC13ZWJraXQgc2hvdWxk
IGJlIGFibGUgdG8gZW5hYmxlIGFkZHJlc3Mgc2FuaXRpemVyCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBkYzliOWZiOGI4NzMyMWY2NDM0ZTQ2NmY0NDBiMTdkNTY0YzhiYTYwLi4yODdk
MjZhNjdjMDg4Y2RiNjYxOGFlZTRlMTIwOWM1YjRmMDZkMTI5IDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTc3LDcgKzc3LDYgQEAKIAkJMjlDRkJBMkUxMjI3M0ExMDAwQkMzMEMwIC8q
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMjlDRkJBMkQxMjI3M0ExMDAwQkMzMEMwIC8qIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyTWFjLm1tICovOyB9OwogCQkyQ0U4OEZBMjE3MTI0RDhDMDA3MzRGQzAg
LyogSmF2YVNjcmlwdFRocmVhZGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyQ0U4OEZBMTE3MTI0Q0VFMDA3MzRGQzAgLyogSmF2YVNjcmlwdFRo
cmVhZGluZy5jcHAgKi87IH07CiAJCTJENDAzRjFCMTUwODcyMDkwMDUzNThEMiAvKiBMYXlvdXRU
ZXN0SGVscGVyLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyRDQwM0VBMjE1MDg3MTQyMDA1MzU4RDIgLyogTGF5b3V0VGVzdEhlbHBlci5tICovOyB9Owot
CQkyREEyRTNBNTFFMUJBNTQxMDBBM0JCRDAgLyogRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREEyRTNB
NDFFMUJBNTQxMDBBM0JCRDAgLyogRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW0gKi87IH07
CiAJCTMxMTE3QjNEMTVEOUE1NkEwMDE2M0JDOCAvKiBNb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlk
ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTEx
N0IzQjE1RDlBNTZBMDAxNjNCQzggLyogTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tICov
OyB9OwogCQkzMTI5NDNGOTFFNzFGMkI0MDAxRUUyQ0MgLyogSU9TTGF5b3V0VGVzdENvbW11bmlj
YXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzE0OEEwNTUxRTZGOTBGNDAwRDNCMzE2IC8qIElPU0xheW91dFRlc3RDb21tdW5pY2F0aW9uLmNw
cCAqLzsgfTsKIAkJNDQ2NENBQkUxQzIwQTA4QjAwRTVCQjU1IC8qIER1bXBSZW5kZXJUcmVlQXBw
TWFpbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0
NjRDQUJEMUMyMEEwNzAwMEU1QkI1NSAvKiBEdW1wUmVuZGVyVHJlZUFwcE1haW4ubW0gKi87IH07
CkBAIC0xNDgsNiArMTQ3LDcgQEAKIAkJQzIzRUEyMDgxQkM5RjA1MTAwQzk4MEI3IC8qIEZvbnRX
aXRoRmVhdHVyZXMub3RmIGluIENvcHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMjNFQTIwNjFCQzlFQUJBMDBDOTgwQjcgLyogRm9udFdpdGhGZWF0dXJl
cy5vdGYgKi87IH07CiAJCUMyM0VBMjA5MUJDOUYwNTEwMEM5ODBCNyAvKiBGb250V2l0aEZlYXR1
cmVzLnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzIzRUEyMDcxQkM5RUFCQTAwQzk4MEI3IC8qIEZvbnRXaXRoRmVhdHVyZXMudHRmICov
OyB9OwogCQlFMUI3ODE2NTExQUYzMUI3MDA3RTFCQzIgLyogTW9ja0dlb2xvY2F0aW9uUHJvdmlk
ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUI3
ODA4NzExQUYxNjY5MDA3RTFCQzIgLyogTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIubW0gKi87IH07
CisJCUY0QzM1NzhEMjBFODQ0NEUwMEZBMDc0OCAvKiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRDMzU3ODgy
MEU4NDQyNzAwRkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIubW0gKi87IH07CiAJCUY0
RDQyMzYxMURENTA0ODIwMDY3ODI5MCAvKiBUZXh0SW5wdXRDb250cm9sbGVySU9TLm0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEQ0MjM1RjFERDUwNDUz
MDA2NzgyOTAgLyogVGV4dElucHV0Q29udHJvbGxlcklPUy5tICovOyB9OwogLyogRW5kIFBCWEJ1
aWxkRmlsZSBzZWN0aW9uICovCiAKQEAgLTI4Miw4ICsyODIsNiBAQAogCQkyQ0U4OEZBMTE3MTI0
Q0VFMDA3MzRGQzAgLyogSmF2YVNjcmlwdFRocmVhZGluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKYXZhU2NyaXB0VGhyZWFkaW5nLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkQ0MDNFQTIxNTA4NzE0MjAwNTM1OEQyIC8qIExheW91dFRlc3RI
ZWxwZXIubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBuYW1lID0gTGF5b3V0VGVzdEhl
bHBlci5tOyBwYXRoID0gbWFjL0xheW91dFRlc3RIZWxwZXIubTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkQ0MDNGMTkxNTA4NzFGOTAwNTM1OEQyIC8qIExheW91dFRlc3RIZWxwZXIg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxl
ZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IExheW91dFRl
c3RIZWxwZXI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0JCTJEQTJFM0Ez
MUUxQkE1NDEwMEEzQkJEMCAvKiBEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5oOyBw
YXRoID0gbWFjL0R1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTJEQTJFM0E0MUUxQkE1NDEwMEEzQkJEMCAvKiBEdW1wUmVuZGVyVHJlZVNw
ZWxsQ2hlY2tlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IER1
bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLm1tOyBwYXRoID0gbWFjL0R1bXBSZW5kZXJUcmVlU3Bl
bGxDaGVja2VyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRURFMERBQTFGNTEz
MURFMDBENUY4REYgLyogQXBwS2l0VGVzdFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBcHBLaXRUZXN0
U1BJLmg7IHBhdGggPSBtYWMvQXBwS2l0VGVzdFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzMTExN0IzQTE1RDlBNTZBMDAxNjNCQzggLyogTW9ja1dlYk5vdGlmaWNhdGlvblBy
b3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1vY2tXZWJOb3RpZmlj
YXRpb25Qcm92aWRlci5oOyBwYXRoID0gbWFjL01vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTExN0IzQjE1RDlBNTZBMDAxNjNCQzgg
LyogTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBuYW1lID0gTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tOyBwYXRoID0g
bWFjL01vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTQxMiw2ICs0MTAsOCBAQAogCQlDMjNFQTIwNzFCQzlFQUJBMDBDOTgwQjcgLyog
Rm9udFdpdGhGZWF0dXJlcy50dGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBmaWxlOyBuYW1lID0gRm9udFdpdGhGZWF0dXJlcy50dGY7IHBhdGggPSBm
b250cy9Gb250V2l0aEZlYXR1cmVzLnR0Zjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTFCNzgwODUxMUFGMTY0MzAwN0UxQkMyIC8qIE1vY2tHZW9sb2NhdGlvblByb3ZpZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1vY2tHZW9sb2NhdGlvblByb3ZpZGVyLmg7
IHBhdGggPSBtYWMvTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTFCNzgwODcxMUFGMTY2OTAwN0UxQkMyIC8qIE1vY2tHZW9sb2NhdGlvblBy
b3ZpZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gTW9ja0dl
b2xvY2F0aW9uUHJvdmlkZXIubW07IHBhdGggPSBtYWMvTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0QzM1Nzg4MjBFODQ0MjcwMEZBMDc0
OCAvKiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBuYW1lID0gTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbTsgcGF0aCA9IC4uL1Rlc3RS
dW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRjRDMzU3ODkyMEU4NDQyNzAwRkEwNzQ4IC8qIExheW91dFRlc3RT
cGVsbENoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGF5b3V0VGVz
dFNwZWxsQ2hlY2tlci5oOyBwYXRoID0gLi4vVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRU
ZXN0U3BlbGxDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RDQyMzVG
MURENTA0NTMwMDY3ODI5MCAvKiBUZXh0SW5wdXRDb250cm9sbGVySU9TLm0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMub2JqYzsgbmFtZSA9IFRleHRJbnB1dENvbnRyb2xsZXJJT1MubTsgcGF0aCA9
IGlvcy9UZXh0SW5wdXRDb250cm9sbGVySU9TLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUY0RDQyMzYwMURENTA0NjkwMDY3ODI5MCAvKiBUZXh0SW5wdXRDb250cm9sbGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRJbnB1dENvbnRyb2xsZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24g
Ki8KQEAgLTY4Nyw2ICs2ODcsNyBAQAogCQkzMTQ4QTA2NTFFNkY5MEY0MDBEM0IzMTYgLyogVGVz
dFJ1bm5lclNoYXJlZCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJRjRCNkMzMTgyMEU4NDM4MjAwOEFDMjI1IC8qIGNvY29hICovLAogCQkJCTMxNDhBMDU1
MUU2RjkwRjQwMEQzQjMxNiAvKiBJT1NMYXlvdXRUZXN0Q29tbXVuaWNhdGlvbi5jcHAgKi8sCiAJ
CQkJMzE0OEEwNTYxRTZGOTBGNDAwRDNCMzE2IC8qIElPU0xheW91dFRlc3RDb21tdW5pY2F0aW9u
LmggKi8sCiAJCQkpOwpAQCAtNzc5LDggKzc4MCw2IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlB
OEI5MUFERjBDRjNCMzcyMDA4RjkxRkYgLyogRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLmggKi8s
CiAJCQkJQThCOTFBRDcwQ0YzQjMyRjAwOEY5MUZGIC8qIER1bXBSZW5kZXJUcmVlUGFzdGVib2Fy
ZC5tbSAqLywKLQkJCQkyREEyRTNBMzFFMUJBNTQxMDBBM0JCRDAgLyogRHVtcFJlbmRlclRyZWVT
cGVsbENoZWNrZXIuaCAqLywKLQkJCQkyREEyRTNBNDFFMUJBNTQxMDBBM0JCRDAgLyogRHVtcFJl
bmRlclRyZWVTcGVsbENoZWNrZXIubW0gKi8sCiAJCQkJQThCOTFBREQwQ0YzQjM3MjAwOEY5MUZG
IC8qIER1bXBSZW5kZXJUcmVlV2luZG93LmggKi8sCiAJCQkJQThCOTFBRDkwQ0YzQjMyRjAwOEY5
MUZGIC8qIER1bXBSZW5kZXJUcmVlV2luZG93Lm1tICovLAogCQkJKTsKQEAgLTgxNyw2ICs4MTYs
MTUgQEAKIAkJCW5hbWUgPSBQaXhlbER1bXA7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwog
CQl9OworCQlGNEI2QzMxODIwRTg0MzgyMDA4QUMyMjUgLyogY29jb2EgKi8gPSB7CisJCQlpc2Eg
PSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUY0QzM1Nzg5MjBFODQ0MjcwMEZBMDc0
OCAvKiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLmggKi8sCisJCQkJRjRDMzU3ODgyMEU4NDQyNzAw
RkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIubW0gKi8sCisJCQkpOworCQkJbmFtZSA9
IGNvY29hOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJRjRENDIzNUQxREQ0
Rjk5OTAwNjc4MjkwIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCkBAIC0xMDgxLDcgKzEwODksNiBAQAogCQkJCUJDQTE4QjdCMEM5QjA4RjEwMDExNDM2
OSAvKiBEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mby5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4
RDc5Q0VCMEZDMjhCMkMwMDRBQzhGRSAvKiBEdW1wUmVuZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJj
ZS5tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThCOTFBREEwQ0YzQjMyRjAwOEY5MUZGIC8qIER1bXBS
ZW5kZXJUcmVlUGFzdGVib2FyZC5tbSBpbiBTb3VyY2VzICovLAotCQkJCTJEQTJFM0E1MUUxQkE1
NDEwMEEzQkJEMCAvKiBEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUE4QjkxQURDMENGM0IzMkYwMDhGOTFGRiAvKiBEdW1wUmVuZGVyVHJlZVdpbmRvdy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUJDQTE4QjYyMEM5QjA4QzIwMDExNDM2OSAvKiBFZGl0aW5n
RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEI3MDBDOUIwOERCMDAxMTQzNjkg
LyogRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLApAQCAtMTA5Myw2ICsx
MTAwLDcgQEAKIAkJCQkyQ0U4OEZBMjE3MTI0RDhDMDA3MzRGQzAgLyogSmF2YVNjcmlwdFRocmVh
ZGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjE4RTcwNjFENkJBMDIzMDAyN0U1NDcgLyog
SlNVSVNjcmlwdENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYxOEU3MTMxRDZC
QzQzQTAwMjdFNTQ3IC8qIEpTV3JhcHBlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGNEMzNTc4
RDIwRTg0NDRFMDBGQTA3NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUUxQjc4MTY1MTFBRjMxQjcwMDdFMUJDMiAvKiBNb2NrR2VvbG9jYXRpb25Qcm92
aWRlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxMTE3QjNEMTVEOUE1NkEwMDE2M0JDOCAvKiBN
b2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEI3
MjBDOUIwOERCMDAxMTQzNjkgLyogTmF2aWdhdGlvbkNvbnRyb2xsZXIubSBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAppbmRleCBmOGFkOTUxNTE3NDBiNjZjNzQ2
OTJhZDUyZDM3NGEzMDVkYTQ0NjcxLi43ZThlYzliZDQ1YjBiNzVmNGU4ZTkyNmJhNWM3ZDYzOGU2
MjZlNDYzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcApAQCAtMTc4OCw2ICsxNzg4
LDE2IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkQ2Fs
bGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRTcGVsbENoZWNrZXJU
ZXh0UmVwbGFjZW1lbnRzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVm
IGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwg
Y29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQorewor
ICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpOworCisgICAgYXV0byogcnVubmVyID0gc3RhdGljX2Nhc3Q8VGVzdFJ1
bm5lcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgcnVubmVyLT5zZXRT
cGVsbENoZWNrZXJUZXh0UmVwbGFjZW1lbnRzKGNvbnRleHQsIEpTVmFsdWVUb09iamVjdChjb250
ZXh0LCBhcmd1bWVudHNbMF0sIG51bGxwdHIpKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIHNldE9wZW5QYW5lbEZpbGVz
Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09i
amVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJl
ZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIGlmIChhcmd1bWVu
dENvdW50ID09IDEpCkBAIC0yMjU1LDYgKzIyNjUsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBUZXN0
UnVubmVyOjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJydW5VSVNjcmlwdCIsIHJ1blVJ
U2NyaXB0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiaW1hZ2VDb3VudEluR2VuZXJhbFBh
c3RlYm9hcmQiLCBpbWFnZUNvdW50SW5HZW5lcmFsUGFzdGVib2FyZENhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CiAgICAgICAgIHsgInNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkIiwgc2V0U3BlbGxDaGVj
a2VyTG9nZ2luZ0VuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzZXRTcGVsbENo
ZWNrZXJUZXh0UmVwbGFjZW1lbnRzIiwgc2V0U3BlbGxDaGVja2VyVGV4dFJlcGxhY2VtZW50c0Nh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE9wZW5QYW5lbEZpbGVzIiwgc2V0T3BlblBh
bmVsRmlsZXNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJmb3JjZUltbWVkaWF0ZUNvbXBs
ZXRpb24iLCBmb3JjZUltbWVkaWF0ZUNvbXBsZXRpb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7IDAsIDAsIDAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5l
ci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCmluZGV4IDNlMzI4YjgyMjMy
M2ZlYzRiNGI1NGY3NzdhY2VkMjQzNDY0NmI2YzEuLmRiZjE0ZmViNjE3OGJjYWQ2Nzk2YTAxYzQ0
NTdhYjI1YmNkMjIxY2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5u
ZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgKQEAgLTM3Niw2ICsz
NzYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBkdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoKSBjb25z
dCB7IHJldHVybiBtX2R1bXBKU0NvbnNvbGVMb2dJblN0ZEVycjsgfQogCiAgICAgdm9pZCBzZXRT
cGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZChib29sKTsKKyAgICB2b2lkIHNldFNwZWxsQ2hlY2tl
clRleHRSZXBsYWNlbWVudHMoSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiByZXBsYWNlbWVudHMp
OwogCiAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBvcGVuUGFuZWxGaWxlcygp
IGNvbnN0IHsgcmV0dXJuIG1fb3BlblBhbmVsRmlsZXM7IH0KICAgICB2b2lkIHNldE9wZW5QYW5l
bEZpbGVzKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggZDY5Njc3YmQ5ZWU3M2E4OWQyZjIwNjQ1MDQ4ZGM3
MDJjOTZmNzNiOS4uMmQ1OWRhNzhiNTIxMDgwODQ1NWY2NGY5NjlhOGM2MmVlMzc5Y2RkOCAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtMzQsMTMgKzM0
LDEzIEBACiAjaW1wb3J0ICJEZWZhdWx0UG9saWN5RGVsZWdhdGUuaCIKICNpbXBvcnQgIkR1bXBS
ZW5kZXJUcmVlRHJhZ2dpbmdJbmZvLmgiCiAjaW1wb3J0ICJEdW1wUmVuZGVyVHJlZVBhc3RlYm9h
cmQuaCIKLSNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLmgiCiAjaW1wb3J0ICJE
dW1wUmVuZGVyVHJlZVdpbmRvdy5oIgogI2ltcG9ydCAiRWRpdGluZ0RlbGVnYXRlLmgiCiAjaW1w
b3J0ICJFdmVudFNlbmRpbmdDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJGcmFtZUxvYWREZWxlZ2F0
ZS5oIgogI2ltcG9ydCAiSGlzdG9yeURlbGVnYXRlLmgiCiAjaW1wb3J0ICJKYXZhU2NyaXB0VGhy
ZWFkaW5nLmgiCisjaW1wb3J0ICJMYXlvdXRUZXN0U3BlbGxDaGVja2VyLmgiCiAjaW1wb3J0ICJN
b2NrR2VvbG9jYXRpb25Qcm92aWRlci5oIgogI2ltcG9ydCAiTW9ja1dlYk5vdGlmaWNhdGlvblBy
b3ZpZGVyLmgiCiAjaW1wb3J0ICJOYXZpZ2F0aW9uQ29udHJvbGxlci5oIgpAQCAtMTg2OCw3ICsx
ODY4LDkgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVU
ZXN0aW5nKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb24KIAogICAgIFttYWluRnJhbWUgX2NsZWFy
T3BlbmVyXTsKIAotICAgIHNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKGZhbHNlKTsKKyNp
ZiBQTEFURk9STShNQUMpCisgICAgW0xheW91dFRlc3RTcGVsbENoZWNrZXIgdW5pbnN0YWxsQW5k
UmVzZXRdOworI2VuZGlmCiAKICAgICByZXNldEFjY3VtdWxhdGVkTG9ncygpOwogICAgIFdlYkNv
cmVUZXN0U3VwcG9ydDo6aW5pdGlhbGl6ZUxvZ0NoYW5uZWxzSWZOZWNlc3NhcnkoKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tl
ci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2Vy
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlM2ZkNzFjNDIxMWMwYjI3Yzc1Yzkx
ZjE2NjFmYjdjYzYxNDE4NGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlU3BlbGxDaGVj
a2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotdm9pZCBz
ZXRTcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZChib29sKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5tbSBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5tbQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYmJiNGQ5NmRlOWUyYTFhMmQ3N2NjYjM1MjhiNzMxZDFiZGYw
OWRmNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW0KKysrIC9k
ZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgi
Ci0jaW1wb3J0ICJEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5oIgotCi0jaWYgUExBVEZPUk0o
TUFDKQotCi0jaW1wb3J0IDxBcHBLaXQvTlNTcGVsbENoZWNrZXIuaD4KLSNpbXBvcnQgPHd0Zi9B
c3NlcnRpb25zLmg+Ci0jaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KLQotc3RhdGlj
IGJvb2wgc3BlbGxDaGVja2VyTG9nZ2luZ0VuYWJsZWQ7Ci1zdGF0aWMgSU1QIGFwcEtpdFJlY29y
ZFJlc3BvbnNlSU1QOwotCi1zdGF0aWMgY29uc3QgY2hhciAqc3RyaW5nRm9yQ29ycmVjdGlvblJl
c3BvbnNlKE5TQ29ycmVjdGlvblJlc3BvbnNlIGNvcnJlY3Rpb25SZXNwb25zZSkKLXsKLSAgICBz
d2l0Y2ggKGNvcnJlY3Rpb25SZXNwb25zZSkgewotICAgIGNhc2UgTlNDb3JyZWN0aW9uUmVzcG9u
c2VOb25lOgotICAgICAgICByZXR1cm4gIm5vbmUiOwotICAgIGNhc2UgTlNDb3JyZWN0aW9uUmVz
cG9uc2VBY2NlcHRlZDoKLSAgICAgICAgcmV0dXJuICJhY2NlcHRlZCI7Ci0gICAgY2FzZSBOU0Nv
cnJlY3Rpb25SZXNwb25zZVJlamVjdGVkOgotICAgICAgICByZXR1cm4gInJlamVjdGVkIjsKLSAg
ICBjYXNlIE5TQ29ycmVjdGlvblJlc3BvbnNlSWdub3JlZDoKLSAgICAgICAgcmV0dXJuICJpZ25v
cmVkIjsKLSAgICBjYXNlIE5TQ29ycmVjdGlvblJlc3BvbnNlRWRpdGVkOgotICAgICAgICByZXR1
cm4gImVkaXRlZCI7Ci0gICAgY2FzZSBOU0NvcnJlY3Rpb25SZXNwb25zZVJldmVydGVkOgotICAg
ICAgICByZXR1cm4gInJldmVydGVkIjsKLSAgICB9Ci0KLSAgICByZXR1cm4gImludmFsaWQiOwot
fQotCi1zdGF0aWMgdm9pZCBkcnRfTlNTcGVsbENoZWNrZXJfcmVjb3JkUmVzcG9uc2VUb0NvcnJl
Y3Rpb24oaWQgc2VsZiwgU0VMIF9jbWQsIE5TQ29ycmVjdGlvblJlc3BvbnNlIHJlc3BvbnNlLCBO
U1N0cmluZyAqY29ycmVjdGlvbiwgTlNTdHJpbmcgKndvcmQsIE5TU3RyaW5nICpsYW5ndWFnZSwg
TlNJbnRlZ2VyIHNwZWxsRG9jdW1lbnRUYWcpCi17Ci0gICAgaWYgKHNwZWxsQ2hlY2tlckxvZ2dp
bmdFbmFibGVkKQotICAgICAgICBwcmludGYoIk5TU3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNl
VG9Db3JyZWN0aW9uOiAlcyAtPiAlcyAocmVzcG9uc2U6ICVzKVxuIiwgW3dvcmQgVVRGOFN0cmlu
Z10sIFtjb3JyZWN0aW9uIFVURjhTdHJpbmddLCBzdHJpbmdGb3JDb3JyZWN0aW9uUmVzcG9uc2Uo
cmVzcG9uc2UpKTsKLQotICAgIHd0ZkNhbGxJTVA8dm9pZCwgTlNDb3JyZWN0aW9uUmVzcG9uc2Us
IE5TU3RyaW5nICosIE5TU3RyaW5nICosIE5TU3RyaW5nICosIE5TSW50ZWdlcj4oYXBwS2l0UmVj
b3JkUmVzcG9uc2VJTVAsIHNlbGYsIF9jbWQsIHJlc3BvbnNlLCBjb3JyZWN0aW9uLCB3b3JkLCBs
YW5ndWFnZSwgc3BlbGxEb2N1bWVudFRhZyk7Ci19Ci0KLXN0YXRpYyB2b2lkIHN3aXp6bGVOU1Nw
ZWxsQ2hlY2tlck1ldGhvZHNJZk5lZWRlZCgpCi17Ci0gICAgc3RhdGljIGJvb2wgaGFzU3dpenps
ZWQ7Ci0gICAgaWYgKGhhc1N3aXp6bGVkKQotICAgICAgICByZXR1cm47Ci0gICAgaGFzU3dpenps
ZWQgPSB0cnVlOwotCi0gICAgTWV0aG9kIHJlY29yZFJlc3BvbnNlTWV0aG9kID0gY2xhc3NfZ2V0
SW5zdGFuY2VNZXRob2Qob2JqY19nZXRDbGFzcygiTlNTcGVsbENoZWNrZXIiKSwgQHNlbGVjdG9y
KHJlY29yZFJlc3BvbnNlOnRvQ29ycmVjdGlvbjpmb3JXb3JkOmxhbmd1YWdlOmluU3BlbGxEb2N1
bWVudFdpdGhUYWc6KSk7Ci0KLSAgICBhcHBLaXRSZWNvcmRSZXNwb25zZUlNUCA9IG1ldGhvZF9z
ZXRJbXBsZW1lbnRhdGlvbihyZWNvcmRSZXNwb25zZU1ldGhvZCwgKElNUClkcnRfTlNTcGVsbENo
ZWNrZXJfcmVjb3JkUmVzcG9uc2VUb0NvcnJlY3Rpb24pOwotfQotCi12b2lkIHNldFNwZWxsQ2hl
Y2tlckxvZ2dpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKLXsKLSAgICBzd2l6emxlTlNTcGVsbENo
ZWNrZXJNZXRob2RzSWZOZWVkZWQoKTsKLQotICAgIHNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVk
ID0gZW5hYmxlZDsKLX0KLQotI2Vsc2UgLy8gUExBVEZPUk0oTUFDKQotCi12b2lkIHNldFNwZWxs
Q2hlY2tlckxvZ2dpbmdFbmFibGVkKGJvb2wpCi17Ci19Ci0KLSNlbmRpZiAvLyBQTEFURk9STShN
QUMpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5t
bSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCmluZGV4IDZlMDJm
ZjAzYTIzOTI4MTMyNGY0ZmFhMmU1ZjFhN2RjNTFmMTg2OTQuLmZjMmE2ZWZmOGY0NDRiYWMxYzdh
ZGYzYjYyYmIwYzAwYTU2YzdlMTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9UZXN0UnVubmVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVu
bmVyTWFjLm1tCkBAIC0zMSw4ICszMSw4IEBACiAjaW1wb3J0ICJUZXN0UnVubmVyLmgiCiAKICNp
bXBvcnQgIkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5oIgotI2ltcG9ydCAiRHVtcFJlbmRlclRyZWVT
cGVsbENoZWNrZXIuaCIKICNpbXBvcnQgIkVkaXRpbmdEZWxlZ2F0ZS5oIgorI2ltcG9ydCAiTGF5
b3V0VGVzdFNwZWxsQ2hlY2tlci5oIgogI2ltcG9ydCAiTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIu
aCIKICNpbXBvcnQgIk1vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5oIgogI2ltcG9ydCAiUG9s
aWN5RGVsZWdhdGUuaCIKQEAgLTIxMiw3ICsyMTIsMjEgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRT
dG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQogCiB2b2lkIFRlc3RS
dW5uZXI6OnNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKLSAg
ICA6OnNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKGVuYWJsZWQpOworI2lmIFBMQVRGT1JN
KE1BQykKKyAgICBbTGF5b3V0VGVzdFNwZWxsQ2hlY2tlciBpbnN0YWxsSWZOZWNlc3NhcnldLnNw
ZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkID0gZW5hYmxlZDsKKyNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKGVuYWJsZWQpOworI2VuZGlmCit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0U3BlbGxDaGVj
a2VyVGV4dFJlcGxhY2VtZW50cyhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgcmVw
bGFjZW1lbnRzKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBbW0xheW91dFRlc3RTcGVsbENo
ZWNrZXIgaW5zdGFsbElmTmVjZXNzYXJ5XSBzZXRSZXBsYWNlbWVudHNGcm9tSlNPYmplY3Q6cmVw
bGFjZW1lbnRzIGluQ29udGV4dDpjb250ZXh0XTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJl
cGxhY2VtZW50cyk7CisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOworI2VuZGlmCiB9CiAKIHZv
aWQgVGVzdFJ1bm5lcjo6Y2xvc2VJZGxlTG9jYWxTdG9yYWdlRGF0YWJhc2VzKCkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5o
IGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2VyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODBlYTliMDJiYmFjMjY1ODlkNTUyNTcyMTRiMjQ2NWJkYTcyYmE2NAotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNw
ZWxsQ2hlY2tlci5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuaD4KKworI2lmIFBMQVRG
T1JNKE1BQykKKworI2ltcG9ydCA8QXBwS2l0L05TU3BlbGxDaGVja2VyLmg+CisKK0BpbnRlcmZh
Y2UgTGF5b3V0VGVzdFRleHRDaGVja2luZ1Jlc3VsdCA6IE5TVGV4dENoZWNraW5nUmVzdWx0Cist
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhUeXBlOihOU1RleHRDaGVja2luZ1R5cGUpdHlwZSByYW5n
ZTooTlNSYW5nZSlyYW5nZSByZXBsYWNlbWVudDooTlNTdHJpbmcgKilyZXBsYWNlbWVudDsKK0Bl
bmQKKworQGludGVyZmFjZSBMYXlvdXRUZXN0U3BlbGxDaGVja2VyIDogTlNTcGVsbENoZWNrZXIK
KysgKGluc3RhbmNldHlwZSlpbnN0YWxsSWZOZWNlc3Nhcnk7CisrICh2b2lkKXVuaW5zdGFsbEFu
ZFJlc2V0OworCistICh2b2lkKXNldFJlcGxhY2VtZW50c0Zyb21KU09iamVjdDooSlNPYmplY3RS
ZWYpcmVwbGFjZW1lbnRzIGluQ29udGV4dDooSlNDb250ZXh0UmVmKWNvbnRleHQ7CitAcHJvcGVy
dHkgKG5vbmF0b21pYywgY29weSkgTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIExheW91dFRlc3RU
ZXh0Q2hlY2tpbmdSZXN1bHQgKj4gKnJlcGxhY2VtZW50czsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
KSBCT09MIHNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkOworQGVuZAorCisjZW5kaWYgLy8gUExB
VEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlv
dXRUZXN0U3BlbGxDaGVja2VyLm1tIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlv
dXRUZXN0U3BlbGxDaGVja2VyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1OTVkNjVmOWJiNjRlZDc4MWJiY2Q4
ZjI4ZDNjYjM1MTRiNjY3ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hh
cmVkL2NvY29hL0xheW91dFRlc3RTcGVsbENoZWNrZXIubW0KQEAgLTAsMCArMSwyNTIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkxheW91dFRlc3RTcGVsbENo
ZWNrZXIuaCIKKworI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KKyNpbXBv
cnQgPG9iamMvcnVudGltZS5oPgorI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbXBvcnQg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCisjaWYg
UExBVEZPUk0oTUFDKQorCit0eXBlZGVmIHZvaWQgKF5UZXh0Q2hlY2tpbmdDb21wbGV0aW9uSGFu
ZGxlcikoTlNJbnRlZ2VyIHNlcXVlbmNlTnVtYmVyLCBOU0FycmF5PE5TVGV4dENoZWNraW5nUmVz
dWx0ICo+ICpyZXN1bHRzLCBOU09ydGhvZ3JhcGh5ICpvcnRob2dyYXBoeSwgTlNJbnRlZ2VyIHdv
cmRDb3VudCk7CisKK3N0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TGF5b3V0VGVzdFNw
ZWxsQ2hlY2tlcj4+IGdsb2JhbFNwZWxsQ2hlY2tlcjsKK3N0YXRpYyBCT09MIGhhc0luc3RhbGxl
ZExheW91dFRlc3RTcGVsbENoZWNrZXIgPSBOTzsKK3N0YXRpYyBJTVAgZ2xvYmFsbHlTd2l6emxl
ZFNoYXJlZFNwZWxsQ2hlY2tlckltcGxlbWVudGF0aW9uOworc3RhdGljIE1ldGhvZCBvcmlnaW5h
bFNoYXJlZFNwZWxsQ2hlY2tlck1ldGhvZDsKKworc3RhdGljIExheW91dFRlc3RTcGVsbENoZWNr
ZXIgKmV4aXN0aW5nR2xvYmFsTGF5b3V0VGVzdFNwZWxsQ2hlY2tlcigpCit7CisgICAgcmV0dXJu
IGdsb2JhbFNwZWxsQ2hlY2tlci5nZXQoKS5nZXQoKTsKK30KKworc3RhdGljIExheW91dFRlc3RT
cGVsbENoZWNrZXIgKmVuc3VyZUdsb2JhbExheW91dFRlc3RTcGVsbENoZWNrZXIoKQoreworICAg
IHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIGRpc3BhdGNoX29uY2UoJm9u
Y2VUb2tlbiwgXnsKKyAgICAgICAgZ2xvYmFsU3BlbGxDaGVja2VyLmdldCgpID0gYWRvcHROUyhb
W0xheW91dFRlc3RTcGVsbENoZWNrZXIgYWxsb2NdIGluaXRdKTsKKyAgICB9KTsKKyAgICByZXR1
cm4gZXhpc3RpbmdHbG9iYWxMYXlvdXRUZXN0U3BlbGxDaGVja2VyKCk7Cit9CisKK3N0YXRpYyBj
b25zdCBjaGFyICpzdHJpbmdGb3JDb3JyZWN0aW9uUmVzcG9uc2UoTlNDb3JyZWN0aW9uUmVzcG9u
c2UgY29ycmVjdGlvblJlc3BvbnNlKQoreworICAgIHN3aXRjaCAoY29ycmVjdGlvblJlc3BvbnNl
KSB7CisgICAgY2FzZSBOU0NvcnJlY3Rpb25SZXNwb25zZU5vbmU6CisgICAgICAgIHJldHVybiAi
bm9uZSI7CisgICAgY2FzZSBOU0NvcnJlY3Rpb25SZXNwb25zZUFjY2VwdGVkOgorICAgICAgICBy
ZXR1cm4gImFjY2VwdGVkIjsKKyAgICBjYXNlIE5TQ29ycmVjdGlvblJlc3BvbnNlUmVqZWN0ZWQ6
CisgICAgICAgIHJldHVybiAicmVqZWN0ZWQiOworICAgIGNhc2UgTlNDb3JyZWN0aW9uUmVzcG9u
c2VJZ25vcmVkOgorICAgICAgICByZXR1cm4gImlnbm9yZWQiOworICAgIGNhc2UgTlNDb3JyZWN0
aW9uUmVzcG9uc2VFZGl0ZWQ6CisgICAgICAgIHJldHVybiAiZWRpdGVkIjsKKyAgICBjYXNlIE5T
Q29ycmVjdGlvblJlc3BvbnNlUmV2ZXJ0ZWQ6CisgICAgICAgIHJldHVybiAicmV2ZXJ0ZWQiOwor
ICAgIH0KKyAgICByZXR1cm4gImludmFsaWQiOworfQorCitzdGF0aWMgTlNUZXh0Q2hlY2tpbmdU
eXBlIG5zVGV4dENoZWNraW5nVHlwZShKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4mJiBqc1R5cGUp
Cit7CisgICAgYXV0byBjZlR5cGUgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGpzVHlwZS5nZXQoKSkpOworICAgIGlmIChDRlN0cmluZ0NvbXBhcmUo
Y2ZUeXBlLmdldCgpLCBDRlNUUigib3J0aG9ncmFwaHkiKSwga0NGQ29tcGFyZUNhc2VJbnNlbnNp
dGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pCisgICAgICAgIHJldHVybiBOU1RleHRDaGVja2lu
Z1R5cGVPcnRob2dyYXBoeTsKKworICAgIGlmIChDRlN0cmluZ0NvbXBhcmUoY2ZUeXBlLmdldCgp
LCBDRlNUUigic3BlbGxpbmciKSwga0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgPT0ga0NGQ29t
cGFyZUVxdWFsVG8pCisgICAgICAgIHJldHVybiBOU1RleHRDaGVja2luZ1R5cGVTcGVsbGluZzsK
KworICAgIGlmIChDRlN0cmluZ0NvbXBhcmUoY2ZUeXBlLmdldCgpLCBDRlNUUigiZ3JhbW1hciIp
LCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKKyAgICAg
ICAgcmV0dXJuIE5TVGV4dENoZWNraW5nVHlwZUdyYW1tYXI7CisKKyAgICBpZiAoQ0ZTdHJpbmdD
b21wYXJlKGNmVHlwZS5nZXQoKSwgQ0ZTVFIoImRhdGUiKSwga0NGQ29tcGFyZUNhc2VJbnNlbnNp
dGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pCisgICAgICAgIHJldHVybiBOU1RleHRDaGVja2lu
Z1R5cGVEYXRlOworCisgICAgaWYgKENGU3RyaW5nQ29tcGFyZShjZlR5cGUuZ2V0KCksIENGU1RS
KCJhZGRyZXNzIiksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUpID09IGtDRkNvbXBhcmVFcXVh
bFRvKQorICAgICAgICByZXR1cm4gTlNUZXh0Q2hlY2tpbmdUeXBlQWRkcmVzczsKKworICAgIGlm
IChDRlN0cmluZ0NvbXBhcmUoY2ZUeXBlLmdldCgpLCBDRlNUUigibGluayIpLCBrQ0ZDb21wYXJl
Q2FzZUluc2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKKyAgICAgICAgcmV0dXJuIE5T
VGV4dENoZWNraW5nVHlwZUxpbms7CisKKyAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGNmVHlwZS5n
ZXQoKSwgQ0ZTVFIoInF1b3RlIiksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUpID09IGtDRkNv
bXBhcmVFcXVhbFRvKQorICAgICAgICByZXR1cm4gTlNUZXh0Q2hlY2tpbmdUeXBlUXVvdGU7CisK
KyAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGNmVHlwZS5nZXQoKSwgQ0ZTVFIoImRhc2giKSwga0NG
Q29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pCisgICAgICAgIHJl
dHVybiBOU1RleHRDaGVja2luZ1R5cGVEYXNoOworCisgICAgaWYgKENGU3RyaW5nQ29tcGFyZShj
ZlR5cGUuZ2V0KCksIENGU1RSKCJyZXBsYWNlbWVudCIpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0
aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKKyAgICAgICAgcmV0dXJuIE5TVGV4dENoZWNraW5n
VHlwZVJlcGxhY2VtZW50OworCisgICAgaWYgKENGU3RyaW5nQ29tcGFyZShjZlR5cGUuZ2V0KCks
IENGU1RSKCJjb3JyZWN0aW9uIiksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUpID09IGtDRkNv
bXBhcmVFcXVhbFRvKQorICAgICAgICByZXR1cm4gTlNUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlv
bjsKKworICAgIGlmIChDRlN0cmluZ0NvbXBhcmUoY2ZUeXBlLmdldCgpLCBDRlNUUigicmVndWxh
ci1leHByZXNzaW9uIiksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUpID09IGtDRkNvbXBhcmVF
cXVhbFRvKQorICAgICAgICByZXR1cm4gTlNUZXh0Q2hlY2tpbmdUeXBlUmVndWxhckV4cHJlc3Np
b247CisKKyAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGNmVHlwZS5nZXQoKSwgQ0ZTVFIoInBob25l
LW51bWJlciIpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxU
bykKKyAgICAgICAgcmV0dXJuIE5TVGV4dENoZWNraW5nVHlwZVBob25lTnVtYmVyOworCisgICAg
aWYgKENGU3RyaW5nQ29tcGFyZShjZlR5cGUuZ2V0KCksIENGU1RSKCJ0cmFuc2l0LWluZm9ybWF0
aW9uIiksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUpID09IGtDRkNvbXBhcmVFcXVhbFRvKQor
ICAgICAgICByZXR1cm4gTlNUZXh0Q2hlY2tpbmdUeXBlVHJhbnNpdEluZm9ybWF0aW9uOworCisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIE5TVGV4dENoZWNraW5nVHlwZVNw
ZWxsaW5nOworfQorCitAaW1wbGVtZW50YXRpb24gTGF5b3V0VGVzdFRleHRDaGVja2luZ1Jlc3Vs
dCB7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfcmVwbGFjZW1lbnQ7CisgICAgTlNUZXh0Q2hl
Y2tpbmdUeXBlIF90eXBlOworICAgIE5TUmFuZ2UgX3JhbmdlOworfQorCistIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhUeXBlOihOU1RleHRDaGVja2luZ1R5cGUpdHlwZSByYW5nZTooTlNSYW5nZSly
YW5nZSByZXBsYWNlbWVudDooTlNTdHJpbmcgKilyZXBsYWNlbWVudAoreworICAgIGlmICghKHNl
bGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX3R5cGUgPSB0
eXBlOworICAgIF9yYW5nZSA9IHJhbmdlOworICAgIF9yZXBsYWNlbWVudCA9IHJlcGxhY2VtZW50
OworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKE5TUmFuZ2UpcmFuZ2UKK3sKKyAgICByZXR1
cm4gX3JhbmdlOworfQorCistIChOU1RleHRDaGVja2luZ1R5cGUpcmVzdWx0VHlwZQoreworICAg
IHJldHVybiBfdHlwZTsKK30KKworLSAoTlNTdHJpbmcgKilyZXBsYWNlbWVudFN0cmluZworewor
ICAgIHJldHVybiBfcmVwbGFjZW1lbnQuZ2V0KCk7Cit9CisKKy0gKE5TU3RyaW5nICopZGVzY3Jp
cHRpb24KK3sKKyAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUAgJXAg
dHlwZT0ldHUgcmFuZ2U9WyV0dSwgJXR1XSByZXBsYWNlbWVudD0nJUAnPiIsIHNlbGYuY2xhc3Ms
IHNlbGYsIF90eXBlLCBfcmFuZ2UubG9jYXRpb24sIF9yYW5nZS5sb2NhdGlvbiArIF9yYW5nZS5s
ZW5ndGgsIF9yZXBsYWNlbWVudC5nZXQoKV07Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9u
IExheW91dFRlc3RTcGVsbENoZWNrZXIgeworICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk8TlNT
dHJpbmcgKiwgTGF5b3V0VGVzdFRleHRDaGVja2luZ1Jlc3VsdCAqPj4gX3JlcGxhY2VtZW50czsK
K30KKworKyAoaW5zdGFuY2V0eXBlKWluc3RhbGxJZk5lY2Vzc2FyeQoreworICAgIGF1dG8gKnNw
ZWxsQ2hlY2tlciA9IGVuc3VyZUdsb2JhbExheW91dFRlc3RTcGVsbENoZWNrZXIoKTsKKyAgICBp
ZiAoaGFzSW5zdGFsbGVkTGF5b3V0VGVzdFNwZWxsQ2hlY2tlcikKKyAgICAgICAgcmV0dXJuIHNw
ZWxsQ2hlY2tlcjsKKworICAgIG9yaWdpbmFsU2hhcmVkU3BlbGxDaGVja2VyTWV0aG9kID0gY2xh
c3NfZ2V0Q2xhc3NNZXRob2Qob2JqY19nZXRNZXRhQ2xhc3MoIk5TU3BlbGxDaGVja2VyIiksIEBz
ZWxlY3RvcihzaGFyZWRTcGVsbENoZWNrZXIpKTsKKyAgICBnbG9iYWxseVN3aXp6bGVkU2hhcmVk
U3BlbGxDaGVja2VySW1wbGVtZW50YXRpb24gPSBtZXRob2Rfc2V0SW1wbGVtZW50YXRpb24ob3Jp
Z2luYWxTaGFyZWRTcGVsbENoZWNrZXJNZXRob2QsIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihlbnN1
cmVHbG9iYWxMYXlvdXRUZXN0U3BlbGxDaGVja2VyKSk7CisgICAgaGFzSW5zdGFsbGVkTGF5b3V0
VGVzdFNwZWxsQ2hlY2tlciA9IFlFUzsKKyAgICByZXR1cm4gc3BlbGxDaGVja2VyOworfQorCisr
ICh2b2lkKXVuaW5zdGFsbEFuZFJlc2V0Cit7CisgICAgW2V4aXN0aW5nR2xvYmFsTGF5b3V0VGVz
dFNwZWxsQ2hlY2tlcigpIHJlc2V0XTsKKyAgICBpZiAoIWhhc0luc3RhbGxlZExheW91dFRlc3RT
cGVsbENoZWNrZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1ldGhvZF9zZXRJbXBsZW1lbnRh
dGlvbihvcmlnaW5hbFNoYXJlZFNwZWxsQ2hlY2tlck1ldGhvZCwgZ2xvYmFsbHlTd2l6emxlZFNo
YXJlZFNwZWxsQ2hlY2tlckltcGxlbWVudGF0aW9uKTsKKyAgICBoYXNJbnN0YWxsZWRMYXlvdXRU
ZXN0U3BlbGxDaGVja2VyID0gTk87Cit9CisKKy0gKHZvaWQpcmVzZXQKK3sKKyAgICBzZWxmLnJl
cGxhY2VtZW50cyA9IG5pbDsKKyAgICBzZWxmLnNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkID0g
Tk87Cit9CisKKy0gKE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBMYXlvdXRUZXN0VGV4dENoZWNr
aW5nUmVzdWx0ICo+ICopcmVwbGFjZW1lbnRzCit7CisgICAgcmV0dXJuIF9yZXBsYWNlbWVudHMu
Z2V0KCk7Cit9CisKKy0gKHZvaWQpc2V0UmVwbGFjZW1lbnRzOihOU0RpY3Rpb25hcnk8TlNTdHJp
bmcgKiwgTGF5b3V0VGVzdFRleHRDaGVja2luZ1Jlc3VsdCAqPiAqKXJlcGxhY2VtZW50cworewor
ICAgIF9yZXBsYWNlbWVudHMgPSBhZG9wdE5TKHJlcGxhY2VtZW50cy5jb3B5KTsKK30KKworLSAo
dm9pZClzZXRSZXBsYWNlbWVudHNGcm9tSlNPYmplY3Q6KEpTT2JqZWN0UmVmKXJlcGxhY2VtZW50
cyBpbkNvbnRleHQ6KEpTQ29udGV4dFJlZiljb250ZXh0Cit7CisgICAgYXV0byBmcm9tUHJvcGVy
dHlOYW1lID0gYWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImZyb20iKSk7Cisg
ICAgYXV0byB0b1Byb3BlcnR5TmFtZSA9IGFkb3B0KEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJ0byIpKTsKKyAgICBhdXRvIHR5cGVQcm9wZXJ0eU5hbWUgPSBhZG9wdChKU1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygidHlwZSIpKTsKKyAgICBhdXRvIHJlcGxhY2VtZW50UHJvcGVy
dHlOYW1lID0gYWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInJlcGxhY2VtZW50
IikpOworICAgIGF1dG8gcHJvcGVydGllcyA9IEpTT2JqZWN0Q29weVByb3BlcnR5TmFtZXMoY29u
dGV4dCwgcmVwbGFjZW1lbnRzKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMoW1tOU011dGFi
bGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBp
bmRleCA8IEpTUHJvcGVydHlOYW1lQXJyYXlHZXRDb3VudChwcm9wZXJ0aWVzKTsgKytpbmRleCkg
eworICAgICAgICBKU1N0cmluZ1JlZiB3b3JkVG9SZXBsYWNlID0gSlNQcm9wZXJ0eU5hbWVBcnJh
eUdldE5hbWVBdEluZGV4KHByb3BlcnRpZXMsIGluZGV4KTsKKyAgICAgICAgSlNPYmplY3RSZWYg
cmVwbGFjZW1lbnQgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgSlNPYmplY3RHZXRQcm9wZXJ0
eShjb250ZXh0LCByZXBsYWNlbWVudHMsIHdvcmRUb1JlcGxhY2UsIG51bGxwdHIpLCBudWxscHRy
KTsKKyAgICAgICAgbG9uZyBmcm9tVmFsdWUgPSBscm91bmRsKEpTVmFsdWVUb051bWJlcihjb250
ZXh0LCBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIHJlcGxhY2VtZW50LCBmcm9tUHJvcGVy
dHlOYW1lLmdldCgpLCBudWxscHRyKSwgbnVsbHB0cikpOworICAgICAgICBsb25nIHRvVmFsdWUg
PSBscm91bmRsKEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBKU09iamVjdEdldFByb3BlcnR5KGNv
bnRleHQsIHJlcGxhY2VtZW50LCB0b1Byb3BlcnR5TmFtZS5nZXQoKSwgbnVsbHB0ciksIG51bGxw
dHIpKTsKKyAgICAgICAgYXV0byB0eXBlVmFsdWUgPSBhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5
KGNvbnRleHQsIEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgcmVwbGFjZW1lbnQsIHR5cGVQ
cm9wZXJ0eU5hbWUuZ2V0KCksIG51bGxwdHIpLCBudWxscHRyKSk7CisgICAgICAgIGF1dG8gcmVw
bGFjZW1lbnRWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgcmVwbGFjZW1lbnQs
IHJlcGxhY2VtZW50UHJvcGVydHlOYW1lLmdldCgpLCBudWxscHRyKTsKKyAgICAgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiByZXBsYWNlbWVudFRleHQ7CisgICAgICAgIGlmICghSlNWYWx1ZUlz
VW5kZWZpbmVkKGNvbnRleHQsIHJlcGxhY2VtZW50VmFsdWUpKSB7CisgICAgICAgICAgICBhdXRv
IHJlcGxhY2VtZW50SlNTdHJpbmcgPSBhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQs
IHJlcGxhY2VtZW50VmFsdWUsIG51bGxwdHIpKTsKKyAgICAgICAgICAgIHJlcGxhY2VtZW50VGV4
dCA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVw
bGFjZW1lbnRKU1N0cmluZy5nZXQoKSkpOworICAgICAgICB9CisgICAgICAgIGF1dG8gc3BlbGxD
aGVja1Jlc3VsdCA9IGFkb3B0TlMoW1tMYXlvdXRUZXN0VGV4dENoZWNraW5nUmVzdWx0IGFsbG9j
XSBpbml0V2l0aFR5cGU6bnNUZXh0Q2hlY2tpbmdUeXBlKFdURk1vdmUodHlwZVZhbHVlKSkgcmFu
Z2U6TlNNYWtlUmFuZ2UoZnJvbVZhbHVlLCB0b1ZhbHVlIC0gZnJvbVZhbHVlKSByZXBsYWNlbWVu
dDooTlNTdHJpbmcgKilyZXBsYWNlbWVudFRleHQuZ2V0KCldKTsKKyAgICAgICAgYXV0byBjZldv
cmRUb1JlcGxhY2UgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIHdvcmRUb1JlcGxhY2UpKTsKKyAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6c3BlbGxD
aGVja1Jlc3VsdC5nZXQoKSBmb3JLZXk6KE5TU3RyaW5nICopY2ZXb3JkVG9SZXBsYWNlLmdldCgp
XTsKKyAgICB9CisgICAgSlNQcm9wZXJ0eU5hbWVBcnJheVJlbGVhc2UocHJvcGVydGllcyk7CisK
KyAgICBfcmVwbGFjZW1lbnRzID0gV1RGTW92ZShyZXN1bHQpOworfQorCistIChOU0FycmF5PE5T
VGV4dENoZWNraW5nUmVzdWx0ICo+ICopY2hlY2tTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nVG9D
aGVjayByYW5nZTooTlNSYW5nZSlyYW5nZSB0eXBlczooTlNUZXh0Q2hlY2tpbmdUeXBlcyljaGVj
a2luZ1R5cGVzIG9wdGlvbnM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilvcHRpb25z
IGluU3BlbGxEb2N1bWVudFdpdGhUYWc6KE5TSW50ZWdlcil0YWcgb3J0aG9ncmFwaHk6KE5TT3J0
aG9ncmFwaHkgKiopb3J0aG9ncmFwaHkgd29yZENvdW50OihOU0ludGVnZXIgKil3b3JkQ291bnQK
K3sKKyAgICBpZiAoYXV0byAqcmVzdWx0ID0gW19yZXBsYWNlbWVudHMgb2JqZWN0Rm9yS2V5OnN0
cmluZ1RvQ2hlY2tdKQorICAgICAgICByZXR1cm4gQFsgcmVzdWx0IF07CisKKyAgICByZXR1cm4g
W3N1cGVyIGNoZWNrU3RyaW5nOnN0cmluZ1RvQ2hlY2sgcmFuZ2U6cmFuZ2UgdHlwZXM6Y2hlY2tp
bmdUeXBlcyBvcHRpb25zOm9wdGlvbnMgaW5TcGVsbERvY3VtZW50V2l0aFRhZzp0YWcgb3J0aG9n
cmFwaHk6b3J0aG9ncmFwaHkgd29yZENvdW50OndvcmRDb3VudF07Cit9CisKKy0gKHZvaWQpcmVj
b3JkUmVzcG9uc2U6KE5TQ29ycmVjdGlvblJlc3BvbnNlKXJlc3BvbnNlIHRvQ29ycmVjdGlvbjoo
TlNTdHJpbmcgKiljb3JyZWN0aW9uIGZvcldvcmQ6KE5TU3RyaW5nICopd29yZCBsYW5ndWFnZToo
TlNTdHJpbmcgKilsYW5ndWFnZSBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOihOU0ludGVnZXIpdGFn
Cit7CisgICAgaWYgKF9zcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZCkKKyAgICAgICAgcHJpbnRm
KCJOU1NwZWxsQ2hlY2tlciByZWNvcmRSZXNwb25zZVRvQ29ycmVjdGlvbjogJXMgLT4gJXMgKHJl
c3BvbnNlOiAlcylcbiIsIFt3b3JkIFVURjhTdHJpbmddLCBbY29ycmVjdGlvbiBVVEY4U3RyaW5n
XSwgc3RyaW5nRm9yQ29ycmVjdGlvblJlc3BvbnNlKHJlc3BvbnNlKSk7CisKKyAgICBbc3VwZXIg
cmVjb3JkUmVzcG9uc2U6cmVzcG9uc2UgdG9Db3JyZWN0aW9uOmNvcnJlY3Rpb24gZm9yV29yZDp3
b3JkIGxhbmd1YWdlOmxhbmd1YWdlIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6dGFnXTsKK30KKwor
QGVuZAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0
VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOGJi
YTEwZGI2YTVjZGYyZjNlMmUwMzRjYzRjNGU5NDM4OGFlYzA1Yi4uMTk0MGY1YmU1MzlhNTAyOGVk
NzQ5ODk4N2JiMjMxMzE0NjgwM2M2MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTEzMyw2ICsxMzMsNyBAQAogCQlFMTMyQUEzRDE3Q0U3NzZGMDA2MTFERjAgLyogV2Vi
S2l0VGVzdFJ1bm5lckV2ZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTEzMkFBM0IxN0NFNzc2RjAwNjExREYwIC8qIFdlYktpdFRlc3RSdW5uZXJF
dmVudC5tbSAqLzsgfTsKIAkJRTFDNjQyQzMxN0NCQ0M3MzAwRDY2QTNDIC8qIFBvc2VBc0NsYXNz
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFDNjQy
QzExN0NCQ0M3MzAwRDY2QTNDIC8qIFBvc2VBc0NsYXNzLm1tICovOyB9OwogCQlFMUM2NDJDNjE3
Q0JDRDRDMDBENjZBM0MgLyogV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUM2NDJDNDE3Q0JDRDRDMDBE
NjZBM0MgLyogV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQubW0gKi87IH07CisJCUY0QzM1NzhD
MjBFODQ0NDYwMEZBMDc0OCAvKiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRDMzU3OEEyMEU4NDQ0MDAwRkEw
NzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIubW0gKi87IH07CiAvKiBFbmQgUEJYQnVpbGRG
aWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24g
Ki8KQEAgLTM3Miw2ICszNzMsOCBAQAogCQlFMUM2NDJDMjE3Q0JDQzczMDBENjZBM0MgLyogUG9z
ZUFzQ2xhc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9zZUFzQ2xhc3Mu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFDNjQyQzQxN0NCQ0Q0QzAwRDY2QTND
IC8qIFdlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQzY0MkM1MTdDQkNENEMwMEQ2NkEzQyAvKiBXZWJLaXRU
ZXN0UnVubmVyUGFzdGVib2FyZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGNEMzNTc4QTIwRTg0NDQwMDBGQTA3NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IExheW91dFRlc3RTcGVsbENo
ZWNrZXIubW07IHBhdGggPSAuLi9UZXN0UnVubmVyU2hhcmVkL2NvY29hL0xheW91dFRlc3RTcGVs
bENoZWNrZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0QzM1NzhCMjBFODQ0
NDAwMEZBMDc0OCAvKiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IExheW91dFRlc3RTcGVsbENoZWNrZXIuaDsgcGF0aCA9IC4uL1Rlc3RS
dW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBC
ZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC00NzksNiArNDgyLDcg
QEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMEYxOEU3MUIxRDZC
QzRFNjAwMjdFNTQ3IC8qIEJpbmRpbmdzICovLAorCQkJCUY0QjZDMzE2MjBFODQzNjkwMDhBQzIy
NSAvKiBjb2NvYSAqLywKIAkJCQkwRjczQjU0NzFCQTc4MkZFMDA0QjNFRjQgLyogVUlTY3JpcHRD
b250ZXh0ICovLAogCQkJCTMxNDhBMDUzMUU2Rjg1QjYwMEQzQjMxNiAvKiBJT1NMYXlvdXRUZXN0
Q29tbXVuaWNhdGlvbi5jcHAgKi8sCiAJCQkJMzE0OEEwNTQxRTZGODVCNjAwRDNCMzE2IC8qIElP
U0xheW91dFRlc3RDb21tdW5pY2F0aW9uLmggKi8sCkBAIC04MjIsNiArODI2LDE1IEBACiAJCQlu
YW1lID0gU2hhcmVkOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJRjRCNkMz
MTYyMEU4NDM2OTAwOEFDMjI1IC8qIGNvY29hICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJ
CQljaGlsZHJlbiA9ICgKKwkJCQlGNEMzNTc4QjIwRTg0NDQwMDBGQTA3NDggLyogTGF5b3V0VGVz
dFNwZWxsQ2hlY2tlci5oICovLAorCQkJCUY0QzM1NzhBMjBFODQ0NDAwMEZBMDc0OCAvKiBMYXlv
dXRUZXN0U3BlbGxDaGVja2VyLm1tICovLAorCQkJKTsKKwkJCW5hbWUgPSBjb2NvYTsKKwkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAvKiBFbmQgUEJYR3JvdXAgc2VjdGlvbiAqLwog
CiAvKiBCZWdpbiBQQlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC0xMDQ2LDYgKzEw
NTksNyBAQAogCQkJCTMxREE4QTNEMUU3MjA1Q0MwMEUxREYyRiAvKiBJT1NMYXlvdXRUZXN0Q29t
bXVuaWNhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjczQjU1MTFCQTc4OTY4MDA0QjNF
RjQgLyogSlNVSVNjcmlwdENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYxOEU3
MTgxRDZCQzQ1NjAwMjdFNTQ3IC8qIEpTV3JhcHBlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlG
NEMzNTc4QzIwRTg0NDQ2MDBGQTA3NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUExODUxMDNDMUI5QUUwRkUwMDc0NEFFQiAvKiBPcHRpb25zLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUExODUxMDQwMUI5QUUxMzEwMDc0NEFFQiAvKiBQaXhlbER1bXBT
dXBwb3J0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJERkE5ODQ5MUQ3RjcwQ0YwMEFGRjJDOSAv
KiBTaGFyZWRFdmVudFN0cmVhbXNNYWMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmMDdjODc5
Y2M2ZjZhYWRhYjQ5NmE2MzVjNzIyMWJiNmU0MDlkZjM4Li5iOWY1NjllYTllZGM2YTM0YjJkYzZh
MTRlZDgxNDA2ZGRhYTI3ODE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTgtMDYtMzAgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXSBU
ZXh0IHJlcGxhY2VtZW50cyB0aGF0IGVuZCB3aXRoIHN5bWJvbHMgYXJlIGV4cGFuZGVkIGltbWVk
aWF0ZWx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODcyMjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQxMTEyNDMzPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgYSBsYXlvdXQgdGVzdCB0byBj
aGVjayB0aGF0IGlmIGEgdXNlciBoYXMgY29uZmlndXJlZCBhIHRleHQgcmVwbGFjZW1lbnQgdGhh
dCBlbmRzIHdpdGggcHVuY3R1YXRpb24sIHRoZW46CisgICAgICAgIDEuIFR5cGluZyB0aGF0IHRl
eHQgcmVwbGFjZW1lbnQgd29uJ3QgaW1tZWRpYXRlbHkgdHJpZ2dlciByZXBsYWNlbWVudC4KKyAg
ICAgICAgMi4gVGV4dCByZXBsYWNlbWVudCBpcyB0cmlnZ2VyZWQgYWZ0ZXIgcHJlc3NpbmcgZW50
ZXIuCisKKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3RleHQtcmVwbGFjZW1lbnQtYWZ0ZXIt
dHlwaW5nLXRvLXdvcmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3Nw
ZWxsaW5nL3RleHQtcmVwbGFjZW1lbnQtYWZ0ZXItdHlwaW5nLXRvLXdvcmQuaHRtbDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxh
dGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDE4LTA2LTI5ICBBbnRvaW5lIFF1
aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYiBBbmltYXRpb25zXSBNYWtl
IFdQVCB0ZXN0IGF0IHRpbWluZy1tb2RlbC90aW1lbGluZXMvZG9jdW1lbnQtdGltZWxpbmVzLmh0
bWwgcGFzcyByZWxpYWJseQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGlu
Zy90ZXh0LXJlcGxhY2VtZW50LWFmdGVyLXR5cGluZy10by13b3JkLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvdGV4dC1yZXBsYWNlbWVudC1hZnRlci10eXBpbmct
dG8td29yZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgzZWIxMDdiZjgxNjgyZTIyZDYyYWE4
ZjFiZWUyYTA0YzliOWZmMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcv
c3BlbGxpbmcvdGV4dC1yZXBsYWNlbWVudC1hZnRlci10eXBpbmctdG8td29yZC1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw4IEBACitCZWZvcmUgcHJlc3NpbmcgZW50ZXI6CitQQVNTIGVkaXRvci50
ZXh0Q29udGVudCBpcyAnWVQ/JworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCitZb3UgdGhlcmU/CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRp
dGluZy9zcGVsbGluZy90ZXh0LXJlcGxhY2VtZW50LWFmdGVyLXR5cGluZy10by13b3JkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3RleHQtcmVwbGFjZW1lbnQtYWZ0ZXItdHlw
aW5nLXRvLXdvcmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Yzk0OTVkODY2MmYwNmZkOWZmMTdjMzYwNzUy
ZTc0MmQzMjkyYmU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVs
bGluZy90ZXh0LXJlcGxhY2VtZW50LWFmdGVyLXR5cGluZy10by13b3JkLmh0bWwKQEAgLTAsMCAr
MSw2MyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2VkaXRpbmcuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KK2pzVGVzdElzQXN5bmMgPSB0cnVlOworCitmdW5jdGlvbiB6ZXJvRGVs
YXlUaW1lcigpCit7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91
dChyZXNvbHZlLCAwKSk7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRVbmlm
aWVkVGV4dENoZWNrZXJFbmFibGVkKHRydWUpOworICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Mu
c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoZmFsc2UpOworICAgICAgICBpbnRl
cm5hbHMuc2V0QXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCh0cnVlKTsKKyAgICAgICAg
aW50ZXJuYWxzLnNldEF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQodHJ1ZSk7Cisg
ICAgICAgIHRlc3RSdW5uZXIuc2V0U3BlbGxDaGVja2VyVGV4dFJlcGxhY2VtZW50cyh7CisgICAg
ICAgICAgICAiWVQ/IjogeworICAgICAgICAgICAgICAgICJyZXBsYWNlbWVudCI6ICJZb3UgdGhl
cmU/IiwKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJyZXBsYWNlbWVudCIsCisgICAgICAgICAg
ICAgICAgImZyb20iOiAwLAorICAgICAgICAgICAgICAgICJ0byI6IDMKKyAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAiWVQ/XG4iOiB7CisgICAgICAgICAgICAgICAgInJlcGxhY2VtZW50Ijog
IllvdSB0aGVyZT8iLAorICAgICAgICAgICAgICAgICJ0eXBlIjogInJlcGxhY2VtZW50IiwKKyAg
ICAgICAgICAgICAgICAiZnJvbSI6IDAsCisgICAgICAgICAgICAgICAgInRvIjogMworICAgICAg
ICAgICAgfQorICAgICAgICB9KTsKKyAgICB9CisKKyAgICBjb25zdCBlZGl0b3IgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiZWRpdG9yIik7CisgICAgZWRpdG9yLmZvY3VzKCk7CisgICAgZm9y
IChjb25zdCBjaGFyYWN0ZXIgb2YgIllUPyIpCisgICAgICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5k
KGNoYXJhY3Rlcik7CisgICAgYXdhaXQgemVyb0RlbGF5VGltZXIoKTsKKworICAgIGlmICghd2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgZGVzY3JpcHRpb24uaW5uZXJIVE1MID0gYFRvIG1h
bnVhbGx5IHRlc3QsIGFkZCBhbiBhdXRvbWF0aWMgdGV4dCByZXBsYWNlbWVudCBtYXBwaW5nIGZy
b20gdGhlIHN0cmluZyAiWVQ/IiB0bworICAgICAgICAiWW91IHRoZXJlPyIsIGFuZCB0aGVuIHR5
cGUgdGhlIHN0cmluZyAiWVQ/Ii4gSXQgc2hvdWxkIG5vdCBiZSBpbW1lZGlhdGVseSBjb3JyZWN0
ZWQgdG8gIllvdSB0aGVyZT8iLgorICAgICAgICBIb3dldmVyLCBlbnRlcmluZyBhIG5ld2xpbmUg
c2hvdWxkIHN1YnNlcXVlbnRseSB0cmlnZ2VyIGF1dG9jb3JyZWN0aW9uLmA7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBkZWJ1ZygiQmVmb3JlIHByZXNzaW5nIGVudGVyOiIpOworICAg
IHNob3VsZEJlKCJlZGl0b3IudGV4dENvbnRlbnQiLCAiJ1lUPyciKTsKKyAgICBpbnNlcnRQYXJh
Z3JhcGhDb21tYW5kKCk7CisgICAgYXdhaXQgemVyb0RlbGF5VGltZXIoKTsKKyAgICBmaW5pc2hK
U1Rlc3QoKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InJ1blRlc3Qo
KSI+CisgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICAgIDxkaXYgY29udGVudGVk
aXRhYmxlIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAxZW07IGJvcmRlcjogMXB4IG9yYW5nZSBkYXNo
ZWQ7IiBpZD0iZWRpdG9yIj48L2Rpdj4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDdmYWE4ZGQ2YTJjZjEzNzczZjY1
ZjI3ODI1OWMwMDY0MmIzZWZlNGQuLjgwOGRhMTM5ZTllNjA1YWMzOTk4NjVlYmJjODAyZDg4ODJi
NDVjZmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRp
b25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCkBAIC0x
MTAsNiArMTEwLDkgQEAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tYXJrZXJzLWluLW92ZXJs
YXBwaW5nLWxpbmVzLWxhcmdlLWZvbnQuaHRtbCBbIFdvbnRGaXgKIGZhc3Qvd3JpdGluZy1tb2Rl
L2VuZ2xpc2gtYnQtdGV4dC13aXRoLXNwZWxsaW5nLW1hcmtlci5odG1sIFsgV29udEZpeCBdCiBm
YXN0L3dyaXRpbmctbW9kZS9lbmdsaXNoLXJsLXRleHQtd2l0aC1zcGVsbGluZy1tYXJrZXIuaHRt
bCBbIFdvbnRGaXggXQogCisjIFJlcXVpcmVzIHN1cHBvcnQgZm9yIHRlc3RpbmcgdGV4dCByZXBs
YWNlbWVudAorZWRpdGluZy9zcGVsbGluZy90ZXh0LXJlcGxhY2VtZW50LWFmdGVyLXR5cGluZy10
by13b3JkLmh0bWwgWyBTa2lwIF0KKwogIyBVSUtpdCBkcmF3cyBzZWxlY3Rpb24gb24gaU9TCiBm
YXN0L3NlbGVjdG9ycy9pbnB1dC13aXRoLXNlbGVjdGlvbi1wc2V1ZG8tZWxlbWVudC5odG1sIFsg
V29udEZpeCBdCiBmYXN0L3NlbGVjdG9ycy9zZWxlY3Rpb24td2luZG93LWluYWN0aXZlLmh0bWwg
WyBXb250Rml4IF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVz
dEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0
aW9ucwppbmRleCA0M2NhNzE2YTg0ZjE0MjA0Mzc2ZmYxMjAxZTMzMDg4ZmRlZmE5NjEzLi5iMjM0
ZTIwNDAwMWU2NDQ0NDk1MmE5OWJiMWRlMzEwYTU1NWEyNzc2IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC0xODAsNiArMTgwLDcgQEAgd2Vi
a2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtd2hpdGVzcGFj
ZS1zZWxlY3Rpb24uaHRtbAogd2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL3NwZWxsaW5nL2dy
YW1tYXIuaHRtbAogd2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL3NwZWxsaW5nL21hcmtlcnMu
aHRtbAogd2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL3NwZWxsaW5nL3JldHJvLWNvcnJlY3Rp
b24tc3BlbGxpbmctbWFya2Vycy5odG1sCit3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvc3Bl
bGxpbmcvdGV4dC1yZXBsYWNlbWVudC1hZnRlci10eXBpbmctdG8td29yZC5odG1sCiB3ZWJraXQu
b3JnL2IvMTA1NjE2IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbWFya2Vycy1hZnRlci1wYXN0
aW5nLXNlbnRlbmNlLmh0bWwKIHdlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9tYWMvc3BlbGxp
bmcvYXV0b2NvcnJlY3Rpb24tZGVsZXRlLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8x
MDU2MTYgZWRpdGluZy9tYWMvc3BlbGxpbmcvYXV0b2NvcnJlY3Rpb24tcmVtb3ZpbmctdW5kZXJs
aW5lLWFmdGVyLXBhc3RlLmh0bWwgWyBGYWlsdXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344039</attachid>
            <date>2018-06-30 20:45:50 -0700</date>
            <delta_ts>2018-06-30 21:20:49 -0700</delta_ts>
            <desc>Win and 32-bit Mac build fix</desc>
            <filename>bug-187225-20180630204549.patch</filename>
            <type>text/plain</type>
            <size>71326</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzNDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWUyMjM5NDVhN2ZiNzU1
NWFiY2M5MmQ3MzhjNGEyZmJiM2E3MTdlMS4uNzliODJhNzMyYjFjMDkyMTRjYjE3ZGE0ZTYwNjkx
YjI2YzI0NDRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDE4LTA2LTMwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gVGV4
dCByZXBsYWNlbWVudHMgdGhhdCBlbmQgd2l0aCBzeW1ib2xzIGFyZSBleHBhbmRlZCBpbW1lZGlh
dGVseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3
MjI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MTExMjQzMz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBzaGlwcGluZyBTYWZhcmksIGVuYWJs
aW5nIGdyYW1tYXIgY29ycmVjdGlvbiBjYXVzZXMgdGV4dCBzaG9ydGN1dHMgdGhhdCBlbmQgd2l0
aCBzeW1ib2xzIG9yIHB1bmN0dWF0aW9uIG1hcmtzCisgICAgICAgIHRvIGltbWVkaWF0ZWx5IHRy
aWdnZXIgd2hlbiB0eXBpbmc7IG5vcm1hbGx5LCB3aGVuIGdyYW1tYXIgY29ycmVjdGlvbiBpcyBv
ZmYsIHRoaXMgaXMgb25seSB0cmlnZ2VyZWQgYWZ0ZXIgdGhlCisgICAgICAgIHVzZXIgaGFzIGFk
ZGl0aW9uYWxseSBpbnNlcnRlZCBhIHB1bmN0dWF0aW9uIG1hcmsgb3Igd2hpdGVzcGFjZSBjaGFy
YWN0ZXIgYWZ0ZXIgdGhlIHJlcGxhY2VkIHRleHQuCisKKyAgICAgICAgVGhpcyBidWcgaGFwcGVu
cyBiZWNhdXNlIGVuYWJsaW5nIGdyYW1tYXIgY2hlY2tpbmcgY2F1c2VzIHRoZSBzcGVsbCBjaGVj
a2luZyByYW5nZSB0byBleHBhbmQgdG8gdGhlIHJhbmdlIG9mIHRoZQorICAgICAgICBmdWxsIHNl
bnRlbmNlLCBzbyBhbnkgdGV4dCBjaGVja2luZyByZXN1bHRzIHRoYXQgcmVwbGFjZSBhbiBleGlz
dGluZyByYW5nZSBhcmUgdHJpZ2dlcmVkIGFzIGxvbmcgYXMgdGhleSBlbmQKKyAgICAgICAgYW55
d2hlcmUgaW4gdGhlIHNlbnRlbmNlLiBJbiBjb250cmFzdCwgd2hlbiBncmFtbWFyIGNoZWNraW5n
IGlzIGRpc2FibGVkLCB0aGUgc3BlbGwgY2hlY2tpbmcgcmFuZ2UgaXMgbGltaXRlZCB0bworICAg
ICAgICB0aGUgbmVhcmVzdCBhZGphY2VudCB3b3JkLCB3aGljaCBwcmV2ZW50cyB0ZXh0IHJlcGxh
Y2VtZW50IGZyb20gb2NjdXJyaW5nIGVsc2V3aGVyZSBpbiB0aGUgc2VudGVuY2UuCisKKyAgICAg
ICAgSG93ZXZlciwgYWZ0ZXIgcjIzMjUzMCwgd2Ugbm93IGFsd2F5cyBleHBhbmQgdGhlIHNwZWxs
IGNoZWNraW5nIHJhbmdlIHRvIHRoZSBleHRlbnQgb2YgdGhlIHNlbnRlbmNlIHdoZW4gYSB3b3Jk
CisgICAgICAgIGlzIHR5cGVkIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBncmFtbWFyIGNoZWNraW5n
IGlzIGVuYWJsZWQsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIGlzc3VlIGRlc2NyaWJlZCBhYm92ZSBu
b3cKKyAgICAgICAgaGFwcGVucyBldmVyeXdoZXJlLiBUbyBmaXggdGhpcyByZWNlbnQgcmVncmVz
c2lvbiBhbmQgdGhlIGV4aXN0aW5nIGJ1Zywgd2U6CisKKyAgICAgICAgLSAgIEF1Z21lbnQgb3Vy
IHNwZWxsY2hlY2tpbmcgY29kZXBhdGhzIHRvIGluY2x1ZGUgYSBuZXcgYXV0b21hdGljIHRleHQg
cmVwbGFjZW1lbnQgcmFuZ2UsIGFsb25nc2lkZQorICAgICAgICAgICAgc3BlbGxjaGVja2luZyBh
bmQgcGFyYWdyYXBoIHJhbmdlcy4KKyAgICAgICAgLSAgIExldCB0aGlzIGF1dG9tYXRpYyB0ZXh0
IHJlcGxhY2VtZW50IHJhbmdlIGJlIHRoZSByYW5nZSBvZiB0aGUgYWRqYWNlbnQgd29yZCBpbiB0
aGUgY2FzZSB3aGVyZSB0aGUgdXNlciBoYXMKKyAgICAgICAgICAgIGZpbmlzaGVkIHR5cGluZyBh
IHdvcmQuCisgICAgICAgIC0gICBXaGVuIG1hcmtpbmcgYW5kIHJlcGxhY2luZyB0ZXh0IGNoZWNr
aW5nIHJlc3VsdHMsIGNvbnN1bHQgdGhpcyBuZXcgYXV0b21hdGljIHRleHQgcmVwbGFjZW1lbnQg
aW5zdGVhZCBvZiB0aGUKKyAgICAgICAgICAgIHNwZWxsY2hlY2tpbmcgcmFuZ2UuCisKKyAgICAg
ICAgVGhpcyBrZWVwcyB0aGUgYmVoYXZpb3IgZ3JhbW1hciBhbmQgc2VudGVuY2UgcmV0cm8gY29y
cmVjdGlvbiByZXN1bHRzIGludGFjdCwgd2hpbGUgbGltaXRpbmcgdGhlIHNjb3BlIGluIHdoaWNo
CisgICAgICAgIHRleHQgcmVwbGFjZW1lbnQgcmVzdWx0cyBhcmUgYXBwbGllZC4KKworICAgICAg
ICBUZXN0OiBlZGl0aW5nL3NwZWxsaW5nL3RleHQtcmVwbGFjZW1lbnQtYWZ0ZXItdHlwaW5nLXRv
LXdvcmQuaHRtbAorCisgICAgICAgICogZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnRpbWVy
RmlyZWQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6cmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZCk6CisKKyAgICAgICAg
UGFzcyBpbiB0aGUgYWRqYWNlbnQgd29yZCByYW5nZSBmb3IgdGhlIGBhdXRvbWF0aWNSZXBsYWNl
bWVudFJhbmdlYCwgaW5zdGVhZCBvZiB0aGUgc3BlbGwgY2hlY2tpbmcgcmFuZ2UgKHdoaWNoCisg
ICAgICAgIG1heSBiZSBleHRlbmRlZCB0byB0aGUgZnVsbCByYW5nZSBvZiB0aGUgc2VudGVuY2Up
LgorCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRH
cmFtbWFySW5SYW5nZXMpOgorCisgICAgICAgIEFkZCBhbiBgYXV0b21hdGljUmVwbGFjZW1lbnRS
YW5nZWAgYXJndW1lbnQgdG8gbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdl
cywgYW5kIGFkanVzdCBjYWxsIHNpdGVzCisgICAgICAgIHRvIHBhc3MgaW4gYSByYW5nZSAoZ2Vu
ZXJhbGx5IHRoZSBzYW1lIGFzIHRoZSBzcGVsbCBjaGVja2luZyByYW5nZSwgYnV0IGluIHRoZSBj
YXNlIHdoZXJlIGEgd29yZCBoYXMgYmVlbiB0eXBlZCwKKyAgICAgICAgdGhpcyBpcyBhIG5hcnJv
d2VyIHJhbmdlKS4KKworICAgICAgICAoV2ViQ29yZTo6Y29ycmVjdFNwZWxsY2hlY2tpbmdQcmVz
ZXJ2aW5nVGV4dENoZWNraW5nUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
bWFya0FuZFJlcGxhY2VGb3IpOgorCisgICAgICAgIFdoZW4gcmVwbGFjaW5nIHRleHQsIG9ubHkg
YWxsb3cgdGV4dCByZXBsYWNlbWVudCBpbiB0aGUgYXV0b21hdGljIHJlcGxhY2VtZW50IHJhbmdl
IHJhdGhlciB0aGFuIHRoZSBzcGVsbAorICAgICAgICBjaGVja2luZyByYW5nZS4KKworICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcik6CisgICAg
ICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsQ2hlY2tlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrUmVxdWVzdDo6U3BlbGxDaGVja1JlcXVl
c3QpOgorCisgICAgICAgIEFkZCBhIG5ldyB2ZXJzaW9uIG9mIHRoaXMgY29uc3RydWN0b3IgdGhh
dCB0YWtlcyBhIHNpbmdsZSBSYW5nZSByZXByZXNlbnRpbmcgYm90aCB0aGUgc3BlbGxjaGVja2lu
ZyByYW5nZSBhbmQKKyAgICAgICAgdGhlIGF1dG9tYXRpYyB0ZXh0IHJlcGxhY2VtZW50IHJhbmdl
LCBmb3IgY29udmVuaWVuY2UuCisKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tSZXF1ZXN0
OjpjcmVhdGUpOgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxDaGVja2VyLmg6CisKKyAgICAgICAg
QWRkIHBsdW1iaW5nIGZvciB0aGUgYXV0b21hdGljIHJlcGxhY2VtZW50IHJhbmdlLgorCisgICAg
ICAgIChXZWJDb3JlOjpTcGVsbENoZWNrUmVxdWVzdDo6YXV0b21hdGljUmVwbGFjZW1lbnRSYW5n
ZSBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwOgorCisg
ICAgICAgIEFkZCBwbHVtYmluZyBmb3IgdGhlIGF1dG9tYXRpYyByZXBsYWNlbWVudCByYW5nZSwg
YW5kIG5ldyBoZWxwZXJzIHRvIGxvY2F0ZSB0aGUgcmFuZ2UgYXMgb2Zmc2V0cyB3aXRoaW4gdGhl
CisgICAgICAgIHRleHQgY2hlY2tpbmcgcGFyYWdyYXBoIHJhbmdlLgorCisgICAgICAgIChXZWJD
b3JlOjpUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OlRleHRDaGVja2luZ1BhcmFncmFwaCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmF1dG9tYXRpY1JlcGxhY2VtZW50
U3RhcnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nUGFyYWdyYXBoOjph
dXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9UZXh0
Q2hlY2tpbmdIZWxwZXIuaDoKKwogMjAxOC0wNi0zMCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtMRkNdIERvIG5vdCBhZGQgdGhlIGNvbnRhaW5pbmcgYmxvY2sn
cyBvZmZzZXQgd2hpbGUgY29tcHV0aW5nIHRoZSBvdXQtb2YtZmxvdyBzdGF0aWMgcG9zaXRpb24u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyLmNwcAppbmRleCBkNDUzZjY0NDBhZDQ2ZWJlMzBhMGNiYTllYWUyMjI3NDFhNWFiZjQyLi5h
OTQ2ZjUxMzZjNGFmMjVmMGEwNjJhOWE2YTM1NDkzZjVlN2M0NmRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKQEAgLTI4
Myw3ICsyODMsOCBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnRpbWVyRmlyZWQo
KQogICAgICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQoc2VsZWN0aW9uLnN0YXJ0KCksIHNlbGVj
dGlvbi5hZmZpbml0eSgpKTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHAgPSBzdGFydE9mV29y
ZChzdGFydCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpOwogICAgICAgICBWaXNpYmxlU2VsZWN0aW9u
IGFkamFjZW50V29yZHMgPSBWaXNpYmxlU2VsZWN0aW9uKHAsIHN0YXJ0KTsKLSAgICAgICAgbV9m
cmFtZS5lZGl0b3IoKS5tYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRl
eHRDaGVja2luZ1R5cGVTcGVsbGluZyB8IFRleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCB8IFRl
eHRDaGVja2luZ1R5cGVTaG93Q29ycmVjdGlvblBhbmVsLCBhZGphY2VudFdvcmRzLnRvTm9ybWFs
aXplZFJhbmdlKCkuZ2V0KCksIDApOworICAgICAgICBhdXRvIGFkamFjZW50V29yZFJhbmdlID0g
YWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6ZWRSYW5nZSgpOworICAgICAgICBtX2ZyYW1lLmVkaXRv
cigpLm1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5n
VHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50IHwgVGV4dENoZWNraW5n
VHlwZVNob3dDb3JyZWN0aW9uUGFuZWwsIGFkamFjZW50V29yZFJhbmdlLmdldCgpLCBhZGphY2Vu
dFdvcmRSYW5nZS5nZXQoKSwgbnVsbHB0cik7CiAgICAgfQogICAgICAgICBicmVhazsKICAgICBj
YXNlIEFsdGVybmF0aXZlVGV4dFR5cGVSZXZlcnNpb246IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAppbmRleCAwYzcxNjMyODUzNDBhYTUxNDQ0MzJlYTYyNjQwNTgzMjA5YzY4MGQ3Li5iYzMy
ZTFmNzU0N2Q1ODU0ZWJlYzUyMmZjMDA3ZmVjMDBmNDczOWE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCkBAIC02NjcsNyArNjY3LDcgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VTZWxlY3Rp
b25XaXRoRnJhZ21lbnQoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIGJvb2wgc2VsZWMKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgYXV0byByYW5nZVRvQ2hlY2sgPSBSYW5nZTo6Y3JlYXRlKGRv
Y3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk5vZGUobm9kZVRvQ2hlY2spLCBsYXN0UG9zaXRpb25J
bk5vZGUobm9kZVRvQ2hlY2spKTsKLSAgICBpZiAoYXV0byByZXF1ZXN0ID0gU3BlbGxDaGVja1Jl
cXVlc3Q6OmNyZWF0ZShyZXNvbHZlVGV4dENoZWNraW5nVHlwZU1hc2soKm5vZGVUb0NoZWNrLCBU
ZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgfCBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hciksIFRleHRD
aGVja2luZ1Byb2Nlc3NCYXRjaCwgcmFuZ2VUb0NoZWNrLmNvcHlSZWYoKSwgcmFuZ2VUb0NoZWNr
LmNvcHlSZWYoKSkpCisgICAgaWYgKGF1dG8gcmVxdWVzdCA9IFNwZWxsQ2hlY2tSZXF1ZXN0Ojpj
cmVhdGUocmVzb2x2ZVRleHRDaGVja2luZ1R5cGVNYXNrKCpub2RlVG9DaGVjaywgVGV4dENoZWNr
aW5nVHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZUdyYW1tYXIpLCBUZXh0Q2hlY2tpbmdQ
cm9jZXNzQmF0Y2gsIHJhbmdlVG9DaGVjay5jb3B5UmVmKCksIHJhbmdlVG9DaGVjay5jb3B5UmVm
KCksIHJhbmdlVG9DaGVjay5jb3B5UmVmKCkpKQogICAgICAgICBtX3NwZWxsQ2hlY2tlci0+cmVx
dWVzdENoZWNraW5nRm9yKHJlcXVlc3QucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKQEAgLTIzNDIs
NyArMjM0Miw4IEBAIHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1dv
cmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uICZ3b3JkU3RhcnQsCiAgICAgICAgIHJldHVybjsKIAog
ICAgIFZpc2libGVTZWxlY3Rpb24gYWRqYWNlbnRXb3JkcyA9IFZpc2libGVTZWxlY3Rpb24oc3Rh
cnRPZldvcmQod29yZFN0YXJ0LCBMZWZ0V29yZElmT25Cb3VuZGFyeSksIGVuZE9mV29yZCh3b3Jk
U3RhcnQsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSkpOwotICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NB
bmRCYWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgYWRqYWNlbnRXb3Jkcy50
b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBhZGphY2VudFdvcmRzLnRvTm9ybWFsaXplZFJhbmdl
KCkuZ2V0KCkpOworICAgIGF1dG8gYWRqYWNlbnRXb3JkUmFuZ2UgPSBhZGphY2VudFdvcmRzLnRv
Tm9ybWFsaXplZFJhbmdlKCk7CisgICAgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJ
blJhbmdlcyh0ZXh0Q2hlY2tpbmdPcHRpb25zLCBhZGphY2VudFdvcmRSYW5nZS5nZXQoKSwgYWRq
YWNlbnRXb3JkUmFuZ2UuZ2V0KCksIG51bGxwdHIpOwogI2Vsc2UKICNpZiAhVVNFKEFVVE9NQVRJ
Q19URVhUX1JFUExBQ0VNRU5UKQogICAgIFVOVVNFRF9QQVJBTShkb1JlcGxhY2VtZW50KTsKQEAg
LTI0MTcsMTMgKzI0MTgsMTcgQEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5
cGluZ1RvV29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24gJndvcmRTdGFydCwKICAgICAgICAgaWYg
KCFzcGVsbENoZWNraW5nUmFuZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgYXV0
byBhZGphY2VudFdvcmRSYW5nZSA9IFZpc2libGVTZWxlY3Rpb24oc3RhcnRPZldvcmQod29yZFN0
YXJ0LCBMZWZ0V29yZElmT25Cb3VuZGFyeSksIGVuZE9mV29yZCh3b3JkU3RhcnQsIFJpZ2h0V29y
ZElmT25Cb3VuZGFyeSkpLnRvTm9ybWFsaXplZFJhbmdlKCk7CisgICAgICAgIGlmICghYWRqYWNl
bnRXb3JkUmFuZ2UpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgLy8gVGhlIHNwZWxs
aW5nIGFuZCBncmFtbWFyIG1hcmtlcnMgaW4gdGhlc2UgcmFuZ2VzIGFyZSByZWNvbXB1dGVkLiBU
aGlzIGlzIGJlY2F1c2UgdHlwaW5nIGEgd29yZCBtYXkKICAgICAgICAgLy8gY2F1c2UgYW55IG90
aGVyIHBhcnQgb2YgdGhlIGN1cnJlbnQgc2VudGVuY2UgdG8gbG9zZSBvciBnYWluIHNwZWxsaW5n
IGNvcnJlY3Rpb24gbWFya2VycywgZHVlIHRvCiAgICAgICAgIC8vIHNlbnRlbmNlIHJldHJvIGNv
cnJlY3Rpb24uIEFzIHN1Y2gsIHdlIGV4cGFuZCB0aGUgc3BlbGwgY2hlY2tpbmcgcmFuZ2UgdG8g
ZW5jb21wYXNzIGFzIG11Y2ggb2YgdGhlCiAgICAgICAgIC8vIGZ1bGwgc2VudGVuY2UgYXMgd2Ug
Y2FuLCByZXNwZWN0aW5nIGJvdW5kYXJpZXMgd2hlcmUgc3BlbGxjaGVja2luZyBpcyBkaXNhYmxl
ZC4KICAgICAgICAgZnVsbFNlbnRlbmNlUmFuZ2UtPm93bmVyRG9jdW1lbnQoKS5tYXJrZXJzKCku
cmVtb3ZlTWFya2VycyhmdWxsU2VudGVuY2VSYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6Okdy
YW1tYXIpOwogICAgICAgICBzcGVsbENoZWNraW5nUmFuZ2UtPm93bmVyRG9jdW1lbnQoKS5tYXJr
ZXJzKCkucmVtb3ZlTWFya2VycyhzcGVsbENoZWNraW5nUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFy
a2VyOjpTcGVsbGluZyk7Ci0gICAgICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFy
SW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgc3BlbGxDaGVja2luZ1JhbmdlLmdldCgpLCBm
dWxsU2VudGVuY2VSYW5nZS5nZXQoKSk7CisgICAgICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRC
YWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgc3BlbGxDaGVja2luZ1Jhbmdl
LmdldCgpLCBhZGphY2VudFdvcmRSYW5nZS5nZXQoKSwgZnVsbFNlbnRlbmNlUmFuZ2UuZ2V0KCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNTQ3LDcgKzI1NTIsNyBAQCB2b2lkIEVk
aXRvcjo6bWFya0JhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQog
I2VuZGlmCiB9CiAKLXZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1h
ckluUmFuZ2VzKFRleHRDaGVja2luZ1R5cGVNYXNrIHRleHRDaGVja2luZ09wdGlvbnMsIFJhbmdl
KiBzcGVsbGluZ1JhbmdlLCBSYW5nZSogZ3JhbW1hclJhbmdlKQordm9pZCBFZGl0b3I6Om1hcmtB
bGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nVHlwZU1hc2sg
dGV4dENoZWNraW5nT3B0aW9ucywgUmFuZ2UqIHNwZWxsaW5nUmFuZ2UsIFJhbmdlKiBhdXRvbWF0
aWNSZXBsYWNlbWVudFJhbmdlLCBSYW5nZSogZ3JhbW1hclJhbmdlKQogewogICAgIEFTU0VSVCh1
bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKCkpOwogCkBAIC0yNTc5LDcgKzI1ODQsOCBAQCB2b2lk
IEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hl
Y2tpbmdUeXBlTWFzayB0ZXh0QwogCiAgICAgLy8gSW4gYXN5bmNocm9ub3VzIG1vZGUsIHdlIGlu
dGVudGlvbmFsbHkgY2hlY2sgcGFyYWdyYXBoLXdpZGUgc2VudGVuY2UuCiAgICAgY29uc3QgYXV0
byByZXNvbHZlZE9wdGlvbnMgPSByZXNvbHZlVGV4dENoZWNraW5nVHlwZU1hc2soZWRpdGFibGVO
b2RlLCB0ZXh0Q2hlY2tpbmdPcHRpb25zKTsKLSAgICBhdXRvIHJlcXVlc3QgPSBTcGVsbENoZWNr
UmVxdWVzdDo6Y3JlYXRlKHJlc29sdmVkT3B0aW9ucywgVGV4dENoZWNraW5nUHJvY2Vzc0luY3Jl
bWVudGFsLCBhc3luY2hyb25vdXMgPyBwYXJhZ3JhcGhSYW5nZS5nZXQoKSA6IHJhbmdlVG9DaGVj
aywgcGFyYWdyYXBoUmFuZ2UuY29weVJlZigpKTsKKyAgICBhdXRvJiB0ZXh0UmVwbGFjZW1lbnRS
YW5nZSA9IGF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UgPyAqYXV0b21hdGljUmVwbGFjZW1lbnRS
YW5nZSA6IHJhbmdlVG9DaGVjazsKKyAgICBhdXRvIHJlcXVlc3QgPSBTcGVsbENoZWNrUmVxdWVz
dDo6Y3JlYXRlKHJlc29sdmVkT3B0aW9ucywgVGV4dENoZWNraW5nUHJvY2Vzc0luY3JlbWVudGFs
LCBhc3luY2hyb25vdXMgPyBwYXJhZ3JhcGhSYW5nZS5nZXQoKSA6IHJhbmdlVG9DaGVjaywgdGV4
dFJlcGxhY2VtZW50UmFuZ2UsIHBhcmFncmFwaFJhbmdlLmNvcHlSZWYoKSk7CiAgICAgaWYgKCFy
ZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAKQEAgLTI2MjcsNyArMjYzMyw4IEBAIHN0YXRpYyB2
b2lkIGNvcnJlY3RTcGVsbGNoZWNraW5nUHJlc2VydmluZ1RleHRDaGVja2luZ1BhcmFncmFwaChU
ZXh0Q2hlY2tpbmdQYXJhCiAKICAgICBSZWZQdHI8UmFuZ2U+IG5ld1BhcmFncmFwaFJhbmdlID0g
VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCgmc2NvcGUsIHBhcmFncmFw
aExvY2F0aW9uLCBwYXJhZ3JhcGhMZW5ndGggKyByZXBsYWNlbWVudC5sZW5ndGgoKSAtIHJlc3Vs
dExlbmd0aCk7CiAKLSAgICBwYXJhZ3JhcGggPSBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoVGV4dEl0
ZXJhdG9yOjpzdWJyYW5nZSgqbmV3UGFyYWdyYXBoUmFuZ2UsIHJlc3VsdExvY2F0aW9uLCByZXBs
YWNlbWVudC5sZW5ndGgoKSksIG5ld1BhcmFncmFwaFJhbmdlLmdldCgpKTsKKyAgICBhdXRvIHNw
ZWxsQ2hlY2tpbmdSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKm5ld1BhcmFncmFwaFJh
bmdlLCByZXN1bHRMb2NhdGlvbiwgcmVwbGFjZW1lbnQubGVuZ3RoKCkpOworICAgIHBhcmFncmFw
aCA9IFRleHRDaGVja2luZ1BhcmFncmFwaChzcGVsbENoZWNraW5nUmFuZ2UuY29weVJlZigpLCBz
cGVsbENoZWNraW5nUmFuZ2UuY29weVJlZigpLCBuZXdQYXJhZ3JhcGhSYW5nZS5nZXQoKSk7CiB9
CiAKIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCkBA
IC0yNjM1LDcgKzI2NDIsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3Qg
U3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQogICAgIFJlZjxGcmFt
ZT4gcHJvdGVjdGlvbihtX2ZyYW1lKTsKIAogICAgIFRleHRDaGVja2luZ1R5cGVNYXNrIHRleHRD
aGVja2luZ09wdGlvbnMgPSByZXF1ZXN0LmRhdGEoKS5tYXNrKCk7Ci0gICAgVGV4dENoZWNraW5n
UGFyYWdyYXBoIHBhcmFncmFwaChyZXF1ZXN0LmNoZWNraW5nUmFuZ2UoKSwgJnJlcXVlc3QucGFy
YWdyYXBoUmFuZ2UoKSk7CisgICAgVGV4dENoZWNraW5nUGFyYWdyYXBoIHBhcmFncmFwaChyZXF1
ZXN0LmNoZWNraW5nUmFuZ2UoKSwgcmVxdWVzdC5hdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlKCks
ICZyZXF1ZXN0LnBhcmFncmFwaFJhbmdlKCkpOwogCiAgICAgY29uc3QgYm9vbCBzaG91bGRNYXJr
U3BlbGxpbmcgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zICYgVGV4dENoZWNraW5nVHlwZVNwZWxsaW5n
OwogICAgIGNvbnN0IGJvb2wgc2hvdWxkTWFya0dyYW1tYXIgPSB0ZXh0Q2hlY2tpbmdPcHRpb25z
ICYgVGV4dENoZWNraW5nVHlwZUdyYW1tYXI7CkBAIC0yNjc1LDYgKzI2ODIsNyBAQCB2b2lkIEVk
aXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFZlY3RvcjxUZQogICAgICAgICBjb25zdCBpbnQgcmVzdWx0TG9jYXRpb24gPSByZXN1
bHRzW2ldLmxvY2F0aW9uICsgb2Zmc2V0RHVlVG9SZXBsYWNlbWVudDsKICAgICAgICAgY29uc3Qg
aW50IHJlc3VsdExlbmd0aCA9IHJlc3VsdHNbaV0ubGVuZ3RoOwogICAgICAgICBjb25zdCBpbnQg
cmVzdWx0RW5kTG9jYXRpb24gPSByZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aDsKKyAgICAg
ICAgY29uc3QgaW50IGF1dG9tYXRpY1JlcGxhY2VtZW50RW5kTG9jYXRpb24gPSBwYXJhZ3JhcGgu
YXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpICsgcGFyYWdyYXBoLmF1dG9tYXRpY1JlcGxhY2Vt
ZW50TGVuZ3RoKCkgKyBvZmZzZXREdWVUb1JlcGxhY2VtZW50OwogICAgICAgICBjb25zdCBTdHJp
bmcmIHJlcGxhY2VtZW50ID0gcmVzdWx0c1tpXS5yZXBsYWNlbWVudDsKICAgICAgICAgY29uc3Qg
Ym9vbCByZXN1bHRFbmRzQXRBbWJpZ3VvdXNCb3VuZGFyeSA9IHVzZUFtYmlndW91c0JvdW5kYXJ5
T2Zmc2V0ICYmIHNlbGVjdGlvbk9mZnNldCAtIDEgPD0gcmVzdWx0RW5kTG9jYXRpb247CiAKQEAg
LTI2OTksMTIgKzI3MDcsMTIgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNvbnN0
IFNwZWxsQ2hlY2tSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8VGUKICAgICAgICAgICAg
ICAgICAgICAgYmFkR3JhbW1hclJhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCkubWFy
a2VycygpLmFkZE1hcmtlcihiYWRHcmFtbWFyUmFuZ2UucHRyKCksIERvY3VtZW50TWFya2VyOjpH
cmFtbWFyLCBkZXRhaWwudXNlckRlc2NyaXB0aW9uKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAocmVzdWx0RW5kTG9jYXRpb24gPD0gc3BlbGxp
bmdSYW5nZUVuZE9mZnNldCAmJiByZXN1bHRFbmRMb2NhdGlvbiA+PSBwYXJhZ3JhcGguY2hlY2tp
bmdTdGFydCgpCisgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0RW5kTG9jYXRpb24gPD0gYXV0b21h
dGljUmVwbGFjZW1lbnRFbmRMb2NhdGlvbiAmJiByZXN1bHRFbmRMb2NhdGlvbiA+PSBwYXJhZ3Jh
cGguYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpCiAgICAgICAgICAgICAmJiBpc0F1dG9tYXRp
Y1RleHRSZXBsYWNlbWVudFR5cGUocmVzdWx0VHlwZSkpIHsKLSAgICAgICAgICAgIC8vIEluIHRo
aXMgY2FzZSB0aGUgcmVzdWx0IHJhbmdlIGp1c3QgaGFzIHRvIHRvdWNoIHRoZSBzcGVsbGluZyBy
YW5nZSwgc28gd2UgY2FuIGhhbmRsZSByZXBsYWNpbmcgbm9uLXdvcmQgdGV4dCBzdWNoIGFzIHB1
bmN0dWF0aW9uLgorICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIHRoZSByZXN1bHQgcmFuZ2Ug
anVzdCBoYXMgdG8gdG91Y2ggdGhlIGF1dG9tYXRpYyByZXBsYWNlbWVudCByYW5nZSwgc28gd2Ug
Y2FuIGhhbmRsZSByZXBsYWNpbmcgbm9uLXdvcmQgdGV4dCBzdWNoIGFzIHB1bmN0dWF0aW9uLgog
ICAgICAgICAgICAgQVNTRVJUKHJlc3VsdExlbmd0aCA+IDAgJiYgcmVzdWx0TG9jYXRpb24gPj0g
MCk7CiAKLSAgICAgICAgICAgIGlmIChzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsICYmIChyZXN1
bHRFbmRMb2NhdGlvbiA8IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQKKyAgICAgICAgICAgIGlmIChz
aG91bGRTaG93Q29ycmVjdGlvblBhbmVsICYmIChyZXN1bHRFbmRMb2NhdGlvbiA8IGF1dG9tYXRp
Y1JlcGxhY2VtZW50RW5kTG9jYXRpb24KICAgICAgICAgICAgICAgICB8fCAhKHJlc3VsdFR5cGUg
JiAoVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50IHwgVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rp
b24pKSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTI3MjgsNyArMjczNiw3IEBA
IHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgVmVjdG9yPFRlCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgICAgIGlmIChzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKHJlc3VsdEVuZExvY2F0aW9uID09IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQpIHsKKyAg
ICAgICAgICAgICAgICBpZiAocmVzdWx0RW5kTG9jYXRpb24gPT0gYXV0b21hdGljUmVwbGFjZW1l
bnRFbmRMb2NhdGlvbikgewogICAgICAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IHNob3cgdGhl
IGNvcnJlY3Rpb24gcGFuZWwgb24gdGhlIGxhc3Qgd29yZC4KICAgICAgICAgICAgICAgICAgICAg
bV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5zaG93KHJhbmdlVG9SZXBsYWNlLCByZXBsYWNl
bWVudCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjgyOSw3ICsyODM3LDggQEAg
dm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mIHNwZWxsaW5nU2VsZWMKICAgICAgICAgVGV4dENoZWNraW5nVHlwZU1hc2sgdGV4
dENoZWNraW5nT3B0aW9ucyA9IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZzsKICAgICAgICAgaWYg
KG1hcmtHcmFtbWFyICYmIGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKQogICAgICAgICAgICAg
dGV4dENoZWNraW5nT3B0aW9ucyB8PSBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsKLSAgICAgICAg
bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyh0ZXh0Q2hlY2tpbmdPcHRp
b25zLCBzcGVsbGluZ1NlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBncmFtbWFy
U2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOworICAgICAgICBhdXRvIHNwZWxs
Q2hlY2tpbmdSYW5nZSA9IHNwZWxsaW5nU2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7Cisg
ICAgICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNr
aW5nT3B0aW9ucywgc3BlbGxDaGVja2luZ1JhbmdlLmdldCgpLCBzcGVsbENoZWNraW5nUmFuZ2Uu
Z2V0KCksIGdyYW1tYXJTZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IGUxNDE0M2Zl
Y2U5MTEwN2E2NTJmZmU4ZmM1MThmMmM3MjVmYTljZDcuLmI0YTAxMGZiNGU3MzIwYTJlYmQ3NDY1
M2JjNzRlOTQ5NzEwMjc0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtMjkzLDcgKzI5
Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzT3ZlcndyaXRlTW9kZUVuYWJsZWQoKSBjb25zdCB7
IHJldHVybiBtX292ZXJ3cml0ZU1vZGVFbmFibGVkOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB0b2dnbGVPdmVyd3JpdGVNb2RlRW5hYmxlZCgpOwogCi0gICAgdm9pZCBtYXJrQWxsTWlzc3Bl
bGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ1R5cGVNYXNrLCBSYW5nZSog
c3BlbGxpbmdSYW5nZSwgUmFuZ2UqIGdyYW1tYXJSYW5nZSk7CisgICAgdm9pZCBtYXJrQWxsTWlz
c3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ1R5cGVNYXNrLCBSYW5n
ZSogc3BlbGxpbmdSYW5nZSwgUmFuZ2UqIGF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UsIFJhbmdl
KiBncmFtbWFyUmFuZ2UpOwogI2lmIFBMQVRGT1JNKElPUykKICAgICBOT19SRVRVUk5fRFVFX1RP
X0FTU0VSVAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxs
Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKaW5k
ZXggYTViNjE2ZDI0OGUxMWM4NjQyNzk1MjYzZDg5Y2M0MGIxM2E5Y2ZmOS4uYzA1NGM1YWRlNTQw
OTA0MjIzYjkwOTNjMTQwYTM1ODY2Njc5NjFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3Bl
bGxDaGVja2VyLmNwcApAQCAtNDAsOCArNDAsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVNwZWxsQ2hlY2tSZXF1ZXN0OjpTcGVsbENoZWNrUmVxdWVzdChSZWY8UmFuZ2U+JiYgY2hlY2tp
bmdSYW5nZSwgUmVmPFJhbmdlPiYmIHBhcmFncmFwaFJhbmdlLCBjb25zdCBTdHJpbmcmIHRleHQs
IFRleHRDaGVja2luZ1R5cGVNYXNrIG1hc2ssIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHByb2Nl
c3NUeXBlKQorU3BlbGxDaGVja1JlcXVlc3Q6OlNwZWxsQ2hlY2tSZXF1ZXN0KFJlZjxSYW5nZT4m
JiBjaGVja2luZ1JhbmdlLCBSZWY8UmFuZ2U+JiYgYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSwg
UmVmPFJhbmdlPiYmIHBhcmFncmFwaFJhbmdlLCBjb25zdCBTdHJpbmcmIHRleHQsIFRleHRDaGVj
a2luZ1R5cGVNYXNrIG1hc2ssIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHByb2Nlc3NUeXBlKQog
ICAgIDogbV9jaGVja2luZ1JhbmdlKFdURk1vdmUoY2hlY2tpbmdSYW5nZSkpCisgICAgLCBtX2F1
dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UoV1RGTW92ZShhdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdl
KSkKICAgICAsIG1fcGFyYWdyYXBoUmFuZ2UoV1RGTW92ZShwYXJhZ3JhcGhSYW5nZSkpCiAgICAg
LCBtX3Jvb3RFZGl0YWJsZUVsZW1lbnQobV9jaGVja2luZ1JhbmdlLT5zdGFydENvbnRhaW5lcigp
LnJvb3RFZGl0YWJsZUVsZW1lbnQoKSkKICAgICAsIG1fcmVxdWVzdERhdGEodW5yZXF1ZXN0ZWRU
ZXh0Q2hlY2tpbmdTZXF1ZW5jZSwgdGV4dCwgbWFzaywgcHJvY2Vzc1R5cGUpCkBAIC01MCwxMyAr
NTEsMTMgQEAgU3BlbGxDaGVja1JlcXVlc3Q6OlNwZWxsQ2hlY2tSZXF1ZXN0KFJlZjxSYW5nZT4m
JiBjaGVja2luZ1JhbmdlLCBSZWY8UmFuZ2U+JiYgcGEKIAogU3BlbGxDaGVja1JlcXVlc3Q6On5T
cGVsbENoZWNrUmVxdWVzdCgpID0gZGVmYXVsdDsKIAotUmVmUHRyPFNwZWxsQ2hlY2tSZXF1ZXN0
PiBTcGVsbENoZWNrUmVxdWVzdDo6Y3JlYXRlKFRleHRDaGVja2luZ1R5cGVNYXNrIHRleHRDaGVj
a2luZ09wdGlvbnMsIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHByb2Nlc3NUeXBlLCBSZWY8UmFu
Z2U+JiYgY2hlY2tpbmdSYW5nZSwgUmVmPFJhbmdlPiYmIHBhcmFncmFwaFJhbmdlKQorUmVmUHRy
PFNwZWxsQ2hlY2tSZXF1ZXN0PiBTcGVsbENoZWNrUmVxdWVzdDo6Y3JlYXRlKFRleHRDaGVja2lu
Z1R5cGVNYXNrIHRleHRDaGVja2luZ09wdGlvbnMsIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHBy
b2Nlc3NUeXBlLCBSZWY8UmFuZ2U+JiYgY2hlY2tpbmdSYW5nZSwgUmVmPFJhbmdlPiYmIGF1dG9t
YXRpY1JlcGxhY2VtZW50UmFuZ2UsIFJlZjxSYW5nZT4mJiBwYXJhZ3JhcGhSYW5nZSkKIHsKICAg
ICBTdHJpbmcgdGV4dCA9IGNoZWNraW5nUmFuZ2UtPnRleHQoKTsKICAgICBpZiAoIXRleHQubGVu
Z3RoKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3BlbGxDaGVja1JlcXVlc3QoV1RGTW92ZShjaGVja2luZ1JhbmdlKSwgV1RGTW92ZShwYXJh
Z3JhcGhSYW5nZSksIHRleHQsIHRleHRDaGVja2luZ09wdGlvbnMsIHByb2Nlc3NUeXBlKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3BlbGxDaGVja1JlcXVlc3QoV1RGTW92ZShjaGVja2lu
Z1JhbmdlKSwgV1RGTW92ZShhdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlKSwgV1RGTW92ZShwYXJh
Z3JhcGhSYW5nZSksIHRleHQsIHRleHRDaGVja2luZ09wdGlvbnMsIHByb2Nlc3NUeXBlKSk7CiB9
CiAKIGNvbnN0IFRleHRDaGVja2luZ1JlcXVlc3REYXRhJiBTcGVsbENoZWNrUmVxdWVzdDo6ZGF0
YSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tl
ci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaAppbmRleCBhMjNjMThj
YzBmMTVmY2E1MjYwNWU0MWE3NzE4ODk4NjBkODQ2YTAzLi4wNTk0NTM2NmNjOTgxNDQwMWNkODgy
ZjBjMWQ3MGU1MjYyMDdjOGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nw
ZWxsQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmgK
QEAgLTQ0LDExICs0NCwxMiBAQCBjbGFzcyBTcGVsbENoZWNrZXI7CiAKIGNsYXNzIFNwZWxsQ2hl
Y2tSZXF1ZXN0IDogcHVibGljIFRleHRDaGVja2luZ1JlcXVlc3QgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWZQdHI8U3BlbGxDaGVja1JlcXVlc3Q+IGNyZWF0ZShUZXh0Q2hlY2tpbmdUeXBlTWFz
aywgVGV4dENoZWNraW5nUHJvY2Vzc1R5cGUsIFJlZjxSYW5nZT4mJiBjaGVja2luZ1JhbmdlLCBS
ZWY8UmFuZ2U+JiYgcGFyYWdyYXBoUmFuZ2UpOworICAgIHN0YXRpYyBSZWZQdHI8U3BlbGxDaGVj
a1JlcXVlc3Q+IGNyZWF0ZShUZXh0Q2hlY2tpbmdUeXBlTWFzaywgVGV4dENoZWNraW5nUHJvY2Vz
c1R5cGUsIFJlZjxSYW5nZT4mJiBjaGVja2luZ1JhbmdlLCBSZWY8UmFuZ2U+JiYgYXV0b21hdGlj
UmVwbGFjZW1lbnRSYW5nZSwgUmVmPFJhbmdlPiYmIHBhcmFncmFwaFJhbmdlKTsKICAgICB2aXJ0
dWFsIH5TcGVsbENoZWNrUmVxdWVzdCgpOwogCiAgICAgUmFuZ2UmIGNoZWNraW5nUmFuZ2UoKSBj
b25zdCB7IHJldHVybiBtX2NoZWNraW5nUmFuZ2UuZ2V0KCk7IH0KICAgICBSYW5nZSYgcGFyYWdy
YXBoUmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhcmFncmFwaFJhbmdlLmdldCgpOyB9CisgICAg
UmFuZ2UmIGF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX2F1dG9t
YXRpY1JlcGxhY2VtZW50UmFuZ2UuZ2V0KCk7IH0KICAgICBFbGVtZW50KiByb290RWRpdGFibGVF
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9yb290RWRpdGFibGVFbGVtZW50LmdldCgpOyB9CiAK
ICAgICB2b2lkIHNldENoZWNrZXJBbmRTZXF1ZW5jZShTcGVsbENoZWNrZXIqLCBpbnQgc2VxdWVu
Y2UpOwpAQCAtNjAsMTAgKzYxLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENhbmNlbCgpIG92
ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIFNwZWxsQ2hlY2tSZXF1ZXN0KFJlZjxSYW5nZT4mJiBj
aGVja2luZ1JhbmdlLCBSZWY8UmFuZ2U+JiYgcGFyYWdyYXBoUmFuZ2UsIGNvbnN0IFN0cmluZyYs
IFRleHRDaGVja2luZ1R5cGVNYXNrLCBUZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSk7CisgICAgU3Bl
bGxDaGVja1JlcXVlc3QoUmVmPFJhbmdlPiYmIGNoZWNraW5nUmFuZ2UsIFJlZjxSYW5nZT4mJiBh
dXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlLCBSZWY8UmFuZ2U+JiYgcGFyYWdyYXBoUmFuZ2UsIGNv
bnN0IFN0cmluZyYsIFRleHRDaGVja2luZ1R5cGVNYXNrLCBUZXh0Q2hlY2tpbmdQcm9jZXNzVHlw
ZSk7CiAKICAgICBTcGVsbENoZWNrZXIqIG1fY2hlY2tlciB7IG51bGxwdHIgfTsKICAgICBSZWY8
UmFuZ2U+IG1fY2hlY2tpbmdSYW5nZTsKKyAgICBSZWY8UmFuZ2U+IG1fYXV0b21hdGljUmVwbGFj
ZW1lbnRSYW5nZTsKICAgICBSZWY8UmFuZ2U+IG1fcGFyYWdyYXBoUmFuZ2U7CiAgICAgUmVmUHRy
PEVsZW1lbnQ+IG1fcm9vdEVkaXRhYmxlRWxlbWVudDsKICAgICBUZXh0Q2hlY2tpbmdSZXF1ZXN0
RGF0YSBtX3JlcXVlc3REYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tp
bmdIZWxwZXIuY3BwCmluZGV4IGVkOWJlZTQ5Y2E3MjJmM2Y4NjhhNGE1OTI1YjhjOTk3NGUzMGZj
OTIuLjcyNWQwMzNlZDZiOWIwN2ViZTk5ZTJiYTMyZjgzNDFlN2FlZWMyMjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKQEAgLTExNywxMiArMTE3
LDE2IEBAIHN0YXRpYyBSZWY8UmFuZ2U+IGV4cGFuZFRvUGFyYWdyYXBoQm91bmRhcnkoUmFuZ2Um
IHJhbmdlKQogICAgIHJldHVybiBwYXJhZ3JhcGhSYW5nZTsKIH0KIAotVGV4dENoZWNraW5nUGFy
YWdyYXBoOjpUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoUmVmPFJhbmdlPiYmIGNoZWNraW5nUmFuZ2Us
IFJhbmdlKiBwYXJhZ3JhcGhSYW5nZSkKK1RleHRDaGVja2luZ1BhcmFncmFwaDo6VGV4dENoZWNr
aW5nUGFyYWdyYXBoKFJlZjxSYW5nZT4mJiBjaGVja2luZ0FuZEF1dG9tYXRpY1JlcGxhY2VtZW50
UmFuZ2UpCisgICAgOiBtX2NoZWNraW5nUmFuZ2UoY2hlY2tpbmdBbmRBdXRvbWF0aWNSZXBsYWNl
bWVudFJhbmdlLmNvcHlSZWYoKSkKKyAgICAsIG1fYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZShj
aGVja2luZ0FuZEF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UuY29weVJlZigpKQoreworfQorCitU
ZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OlRleHRDaGVja2luZ1BhcmFncmFwaChSZWY8UmFuZ2U+JiYg
Y2hlY2tpbmdSYW5nZSwgUmVmPFJhbmdlPiYmIGF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UsIFJl
ZlB0cjxSYW5nZT4mJiBwYXJhZ3JhcGhSYW5nZSkKICAgICA6IG1fY2hlY2tpbmdSYW5nZShXVEZN
b3ZlKGNoZWNraW5nUmFuZ2UpKQotICAgICwgbV9wYXJhZ3JhcGhSYW5nZShwYXJhZ3JhcGhSYW5n
ZSkKLSAgICAsIG1fY2hlY2tpbmdTdGFydCgtMSkKLSAgICAsIG1fY2hlY2tpbmdFbmQoLTEpCi0g
ICAgLCBtX2NoZWNraW5nTGVuZ3RoKC0xKQorICAgICwgbV9hdXRvbWF0aWNSZXBsYWNlbWVudFJh
bmdlKFdURk1vdmUoYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSkpCisgICAgLCBtX3BhcmFncmFw
aFJhbmdlKFdURk1vdmUocGFyYWdyYXBoUmFuZ2UpKQogewogfQogCkBAIC0yMTEsNiArMjE1LDI2
IEBAIGludCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmNoZWNraW5nTGVuZ3RoKCkgY29uc3QKICAg
ICByZXR1cm4gbV9jaGVja2luZ0xlbmd0aDsKIH0KIAoraW50IFRleHRDaGVja2luZ1BhcmFncmFw
aDo6YXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpIGNvbnN0Cit7CisgICAgaWYgKG1fYXV0b21h
dGljUmVwbGFjZW1lbnRTdGFydCAhPSAtMSkKKyAgICAgICAgcmV0dXJuIG1fYXV0b21hdGljUmVw
bGFjZW1lbnRTdGFydDsKKworICAgIGF1dG8gc3RhcnRPZmZzZXRSYW5nZSA9IFJhbmdlOjpjcmVh
dGUocGFyYWdyYXBoUmFuZ2UoKS5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIHBhcmFncmFw
aFJhbmdlKCkuc3RhcnRQb3NpdGlvbigpLCBtX2F1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UtPnN0
YXJ0UG9zaXRpb24oKSk7CisgICAgbV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0ID0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFydE9mZnNldFJhbmdlLnB0cigpKTsKKyAgICByZXR1cm4g
bV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0OworfQorCitpbnQgVGV4dENoZWNraW5nUGFyYWdy
YXBoOjphdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCgpIGNvbnN0Cit7CisgICAgaWYgKG1fYXV0
b21hdGljUmVwbGFjZW1lbnRMZW5ndGggIT0gLTEpCisgICAgICAgIHJldHVybiBtX2F1dG9tYXRp
Y1JlcGxhY2VtZW50TGVuZ3RoOworCisgICAgYXV0byBlbmRPZmZzZXRSYW5nZSA9IFJhbmdlOjpj
cmVhdGUocGFyYWdyYXBoUmFuZ2UoKS5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIHBhcmFn
cmFwaFJhbmdlKCkuc3RhcnRQb3NpdGlvbigpLCBtX2F1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2Ut
PmVuZFBvc2l0aW9uKCkpOworICAgIG1fYXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGggPSBUZXh0
SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZE9mZnNldFJhbmdlLnB0cigpKSAtIGF1dG9tYXRpY1Jl
cGxhY2VtZW50U3RhcnQoKTsKKyAgICByZXR1cm4gbV9hdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0
aDsKK30KKwogVGV4dENoZWNraW5nSGVscGVyOjpUZXh0Q2hlY2tpbmdIZWxwZXIoRWRpdG9yQ2xp
ZW50JiBjbGllbnQsIFJhbmdlJiByYW5nZSkKICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAs
IG1fcmFuZ2UocmFuZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRD
aGVja2luZ0hlbHBlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxw
ZXIuaAppbmRleCA2YjBmNDNmY2Y3NGFlYWU3MTU2Y2E5MjQ5ODYzYWQ3MmMwNTRkZDdlLi5iYzc5
YmFkNzA2NGU1MzhmZjExNWQyMDM0NjhmYmFiOWE2NGNjZTEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmgKQEAgLTMzLDcgKzMzLDggQEAgc3RydWN0IFRl
eHRDaGVja2luZ1Jlc3VsdDsKIAogY2xhc3MgVGV4dENoZWNraW5nUGFyYWdyYXBoIHsKIHB1Ymxp
YzoKLSAgICBleHBsaWNpdCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoUmVmPFJhbmdlPiYmIGNoZWNr
aW5nUmFuZ2UsIFJhbmdlKiBwYXJhZ3JhcGhSYW5nZSA9IG51bGxwdHIpOworICAgIGV4cGxpY2l0
IFRleHRDaGVja2luZ1BhcmFncmFwaChSZWY8UmFuZ2U+JiYgY2hlY2tpbmdBbmRBdXRvbWF0aWNS
ZXBsYWNlbWVudFJhbmdlKTsKKyAgICBleHBsaWNpdCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoUmVm
PFJhbmdlPiYmIGNoZWNraW5nUmFuZ2UsIFJlZjxSYW5nZT4mJiBhdXRvbWF0aWNSZXBsYWNlbWVu
dFJhbmdlLCBSZWZQdHI8UmFuZ2U+JiYgcGFyYWdyYXBoUmFuZ2UpOwogCiAgICAgaW50IHJhbmdl
TGVuZ3RoKCkgY29uc3Q7CiAgICAgUmVmPFJhbmdlPiBzdWJyYW5nZShpbnQgY2hhcmFjdGVyT2Zm
c2V0LCBpbnQgY2hhcmFjdGVyQ291bnQpIGNvbnN0OwpAQCAtNTUsNiArNTYsMTEgQEAgcHVibGlj
OgogICAgIGludCBjaGVja2luZ0xlbmd0aCgpIGNvbnN0OwogICAgIFN0cmluZyBjaGVja2luZ1N1
YnN0cmluZygpIGNvbnN0IHsgcmV0dXJuIHRleHRTdWJzdHJpbmcoY2hlY2tpbmdTdGFydCgpLCBj
aGVja2luZ0xlbmd0aCgpKTsgfQogCisgICAgLy8gRGV0ZXJtaW5lcyB0aGUgcmFuZ2UgaW4gd2hp
Y2ggd2UgYWxsb3cgYXV0b21hdGljIHRleHQgcmVwbGFjZW1lbnQuIElmIGFuIGF1dG9tYXRpYyBy
ZXBsYWNlbWVudCByYW5nZSBpcyBub3QgcGFzc2VkIHRvIHRoZQorICAgIC8vIHRleHQgY2hlY2tp
bmcgcGFyYWdyYXBoLCB0aGlzIGRlZmF1bHRzIHRvIHRoZSBzcGVsbCBjaGVja2luZyByYW5nZS4K
KyAgICBpbnQgYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpIGNvbnN0OworICAgIGludCBhdXRv
bWF0aWNSZXBsYWNlbWVudExlbmd0aCgpIGNvbnN0OworCiAgICAgYm9vbCBjaGVja2luZ1Jhbmdl
TWF0Y2hlcyhpbnQgbG9jYXRpb24sIGludCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJuIGxvY2F0aW9u
ID09IGNoZWNraW5nU3RhcnQoKSAmJiBsZW5ndGggPT0gY2hlY2tpbmdMZW5ndGgoKTsgfQogICAg
IGJvb2wgaXNDaGVja2luZ1JhbmdlQ292ZXJlZEJ5KGludCBsb2NhdGlvbiwgaW50IGxlbmd0aCkg
Y29uc3QgeyByZXR1cm4gbG9jYXRpb24gPD0gY2hlY2tpbmdTdGFydCgpICYmIGxvY2F0aW9uICsg
bGVuZ3RoID49IGNoZWNraW5nU3RhcnQoKSArIGNoZWNraW5nTGVuZ3RoKCk7IH0KICAgICBib29s
IGNoZWNraW5nUmFuZ2VDb3ZlcnMoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKSBjb25zdCB7IHJl
dHVybiBsb2NhdGlvbiA8IGNoZWNraW5nRW5kKCkgJiYgbG9jYXRpb24gKyBsZW5ndGggPiBjaGVj
a2luZ1N0YXJ0KCk7IH0KQEAgLTY1LDEyICs3MSwxNSBAQCBwcml2YXRlOgogICAgIFJhbmdlJiBv
ZmZzZXRBc1JhbmdlKCkgY29uc3Q7CiAKICAgICBSZWY8UmFuZ2U+IG1fY2hlY2tpbmdSYW5nZTsK
KyAgICBSZWY8UmFuZ2U+IG1fYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZTsKICAgICBtdXRhYmxl
IFJlZlB0cjxSYW5nZT4gbV9wYXJhZ3JhcGhSYW5nZTsKICAgICBtdXRhYmxlIFJlZlB0cjxSYW5n
ZT4gbV9vZmZzZXRBc1JhbmdlOwogICAgIG11dGFibGUgU3RyaW5nIG1fdGV4dDsKLSAgICBtdXRh
YmxlIGludCBtX2NoZWNraW5nU3RhcnQ7Ci0gICAgbXV0YWJsZSBpbnQgbV9jaGVja2luZ0VuZDsK
LSAgICBtdXRhYmxlIGludCBtX2NoZWNraW5nTGVuZ3RoOworICAgIG11dGFibGUgaW50IG1fY2hl
Y2tpbmdTdGFydCB7IC0xIH07CisgICAgbXV0YWJsZSBpbnQgbV9jaGVja2luZ0VuZCB7IC0xIH07
CisgICAgbXV0YWJsZSBpbnQgbV9jaGVja2luZ0xlbmd0aCB7IC0xIH07CisgICAgbXV0YWJsZSBp
bnQgbV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0IHsgLTEgfTsKKyAgICBtdXRhYmxlIGludCBt
X2F1dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3RoIHsgLTEgfTsKIH07CiAKIGNsYXNzIFRleHRDaGVj
a2luZ0hlbHBlciB7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggYzk2MWE3NjVjNDY2NWQ2MDZkMTY2MjVjOWU0YjdjOGQyNjI0MDBkMy4uMjkyNGRk
Njg4MmYwYTY4MDIyNDdmMmQ2NmU0YzcxMDI1MzliODAwMSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDE4LTA2LTMw
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNP
U10gVGV4dCByZXBsYWNlbWVudHMgdGhhdCBlbmQgd2l0aCBzeW1ib2xzIGFyZSBleHBhbmRlZCBp
bW1lZGlhdGVseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg3MjI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MTExMjQzMz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIHRlc3Rpbmcgc3VwcG9y
dCBmb3IgbW9ja2luZyBOU1NwZWxsQ2hlY2tlcidzIHRleHQgY2hlY2tpbmcgcmVzdWx0cy4gU2Vl
IGJlbG93IGZvciBtb3JlIGRldGFpbHMsIGFuZCB0aGUgbmV3CisgICAgICAgIGxheW91dCB0ZXN0
IGZvciBhbiBleGFtcGxlIG9mIGl0cyB1c2FnZS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChzZXRTcGVsbENoZWNrZXJUZXh0
UmVwbGFjZW1lbnRzQ2FsbGJhY2spOgorCisgICAgICAgIEFkZCBiaW5kaW5ncyBzdXBwb3J0IGlu
IFRlc3RSdW5uZXIgdG8gc3BlY2lmeSBhIHNldCBvZiB0ZXh0IHJlcGxhY2VtZW50IG1hcHBpbmdz
LiBFYWNoIGVudHJ5IGluIHRoZSBkaWN0aW9uYXJ5CisgICAgICAgIG1hcHMgYSBzdHJpbmcgcmVw
cmVzZW50aW5nIGFuIGlucHV0IHRvIHRoZSBOU1NwZWxsQ2hlY2tlciB0byBzb21lIGluZm9ybWF0
aW9uIGRlc2NyaWJpbmcgdGhlIHNwZWxsIGNoZWNraW5nCisgICAgICAgIHJlc3VsdCB0aGF0IExh
eW91dFRlc3RTcGVsbENoZWNrZXIgd2lsbCByZXR1cm4uCisKKyAgICAgICAgKFRlc3RSdW5uZXI6
OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5o
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAg
ICAgKHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZyk6CisKKyAgICAg
ICAgUmVzdG9yZSB0aGUgb3JpZ2luYWwgc2hhcmVkIE5TU3BlbGxjaGVja2VyIGJlZm9yZSB0cmFu
c2l0aW9uaW5nIHRvIHRoZSBuZXh0IGxheW91dCB0ZXN0LCBpZiBuZWVkZWQuCisKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW06IFJlbW92
ZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW06CisgICAg
ICAgIChUZXN0UnVubmVyOjpzZXRTcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZCk6CisgICAgICAg
IChUZXN0UnVubmVyOjpzZXRTcGVsbENoZWNrZXJUZXh0UmVwbGFjZW1lbnRzKToKKworICAgICAg
ICBUaGVzZSB0ZXN0UnVubmVyIG1ldGhvZHMgZW5zdXJlIHRoYXQgYC1bTlNTcGVsbENoZWNrZXIg
c2hhcmVkU3BlbGxDaGVja2VyXWAgaXMgc3dpenpsZWQgdG8gcmV0dXJuIG91ciBtb2NrCisgICAg
ICAgIExheW91dFRlc3RTcGVsbENoZWNrZXIgaW5zdGFuY2UgYmVmb3JlIGNhbGxpbmcgaW50byBp
dC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcDoKKyAg
ICAgICAgKFRlc3RSdW5uZXI6OnNldFNwZWxsQ2hlY2tlclRleHRSZXBsYWNlbWVudHMpOgorICAg
ICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5oOiBS
ZW5hbWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlU3BlbGxD
aGVja2VyLmguCisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3Bl
bGxDaGVja2VyLm1tOiBBZGRlZC4KKworICAgICAgICBNb3ZlZCBEdW1wUmVuZGVyVHJlZVNwZWxs
Q2hlY2tlciB0byBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLCBhbmQgbWFkZSBpdCBjb21waWxlIGZv
ciBib3RoIFdlYktpdFRlc3RSdW5uZXIKKyAgICAgICAgKG1vZGVybiBXZWJLaXQpIGFuZCBEdW1w
UmVuZGVyVHJlZSAobGVnYWN5IFdlYktpdCkgYnkgcHV0dGluZyBpdCBpbiBUZXN0UnVubmVyU2hh
cmVkLgorCisgICAgICAgIChleGlzdGluZ0dsb2JhbExheW91dFRlc3RTcGVsbENoZWNrZXIpOgor
ICAgICAgICAoZW5zdXJlR2xvYmFsTGF5b3V0VGVzdFNwZWxsQ2hlY2tlcik6CisgICAgICAgIChz
dHJpbmdGb3JDb3JyZWN0aW9uUmVzcG9uc2UpOgorICAgICAgICAobnNUZXh0Q2hlY2tpbmdUeXBl
KToKKyAgICAgICAgKC1bTGF5b3V0VGVzdFRleHRDaGVja2luZ1Jlc3VsdCBpbml0V2l0aFR5cGU6
cmFuZ2U6cmVwbGFjZW1lbnQ6XSk6CisgICAgICAgICgtW0xheW91dFRlc3RUZXh0Q2hlY2tpbmdS
ZXN1bHQgcmFuZ2VdKToKKyAgICAgICAgKC1bTGF5b3V0VGVzdFRleHRDaGVja2luZ1Jlc3VsdCBy
ZXN1bHRUeXBlXSk6CisgICAgICAgICgtW0xheW91dFRlc3RUZXh0Q2hlY2tpbmdSZXN1bHQgcmVw
bGFjZW1lbnRTdHJpbmddKToKKyAgICAgICAgKC1bTGF5b3V0VGVzdFRleHRDaGVja2luZ1Jlc3Vs
dCBkZXNjcmlwdGlvbl0pOgorCisgICAgICAgIExheW91dFRlc3RUZXh0Q2hlY2tpbmdSZXN1bHQg
cmVwcmVzZW50cyBhIGZha2UgTlNUZXh0Q2hlY2tpbmdSZXN1bHQgY29udGFpbmluZyBzcGVsbCBj
aGVja2luZyByZXN1bHRzIHN1cHBsaWVkCisgICAgICAgIGJ5IHRoZSBsYXlvdXQgdGVzdC4KKwor
ICAgICAgICAoK1tMYXlvdXRUZXN0U3BlbGxDaGVja2VyIGluc3RhbGxJZk5lY2Vzc2FyeV0pOgor
ICAgICAgICAoK1tMYXlvdXRUZXN0U3BlbGxDaGVja2VyIHVuaW5zdGFsbEFuZFJlc2V0XSk6CisK
KyAgICAgICAgSGVscGVyIG1ldGhvZHMgdG8gYmVnaW4gYW5kIGVuZCBzd2l6emxpbmcgdGhlIHNo
YXJlZCBOU1NwZWxsQ2hlY2tlci4KKworICAgICAgICAoLVtMYXlvdXRUZXN0U3BlbGxDaGVja2Vy
IHJlc2V0XSk6CisKKyAgICAgICAgUmVzZXRzIHRoZSBzdGF0ZSBvZiB0aGUgTGF5b3V0VGVzdFNw
ZWxsQ2hlY2tlciAodGhpcyBlbnRhaWxzIGNsZWFyaW5nIHRoZSBmYWtlIHJlcGxhY2VtZW50cyBk
aWN0aW9uYXJ5IGFuZAorICAgICAgICB0dXJuaW5nIG9mZiBsb2dnaW5nIGZvciByZWNvcmRlZCBz
cGVsbGNoZWNraW5nIHJlc3BvbnNlcykuCisKKyAgICAgICAgKC1bTGF5b3V0VGVzdFNwZWxsQ2hl
Y2tlciByZXBsYWNlbWVudHNdKToKKyAgICAgICAgKC1bTGF5b3V0VGVzdFNwZWxsQ2hlY2tlciBz
ZXRSZXBsYWNlbWVudHM6XSk6CisgICAgICAgICgtW0xheW91dFRlc3RTcGVsbENoZWNrZXIgc2V0
UmVwbGFjZW1lbnRzRnJvbUpTT2JqZWN0OmluQ29udGV4dDpdKToKKworICAgICAgICBIZWxwZXIg
bWV0aG9kIHRvIHRha2UgYSBgSlNPYmplY3RSZWZgIHN1cHBsaWVkIGJ5IHRoZSB0ZXN0IHJ1bm5l
ciBhbmQgdHJhbnNmb3JtIGl0IGludG8gYSBtYXAgb2Ygc3BlbGwgY2hlY2tpbmcKKyAgICAgICAg
c3RyaW5nIGlucHV0cyB0byBMYXlvdXRUZXN0VGV4dENoZWNraW5nUmVzdWx0cy4KKworICAgICAg
ICAoLVtMYXlvdXRUZXN0U3BlbGxDaGVja2VyIGNoZWNrU3RyaW5nOnJhbmdlOnR5cGVzOm9wdGlv
bnM6aW5TcGVsbERvY3VtZW50V2l0aFRhZzpvcnRob2dyYXBoeTp3b3JkQ291bnQ6XSk6CisKKyAg
ICAgICAgQ29uc3VsdCB0aGUgdGV4dCByZXBsYWNlbWVudCBtYXAgYW5kIGJhaWwgZWFybHkgaWYg
YSBtYXRjaCBpcyBmb3VuZCwgYmVmb3JlIGNhbGxpbmcgaW50byByZWFsIE5TU3BlbGxDaGVja2Vy
CisgICAgICAgIGxvZ2ljIHRvIHBlcmZvcm0gc3BlbGxjaGVja2luZy4KKworICAgICAgICAoLVtM
YXlvdXRUZXN0U3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlOnRvQ29ycmVjdGlvbjpmb3JXb3Jk
Omxhbmd1YWdlOmluU3BlbGxEb2N1bWVudFdpdGhUYWc6XSk6CisKKyAgICAgICAgUmVpbXBsZW1l
bnQgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uYWxpdHkgaW4gRHVtcFJlbmRlclRyZWVTcGVsbENoZWNr
ZXIgdG8gbWFrZSBgLXJlY29yZFJlc3BvbnNlOuKApmAgcHJpbnQgdG8gc3Rkb3V0CisgICAgICAg
IGJ5IG92ZXJyaWRpbmcgdGhlIG1ldGhvZCBhbmQgcHJpbnRpbmcgaWYgdGhlIGAtc3BlbGxDaGVj
a2VyTG9nZ2luZ0VuYWJsZWRgIHByb3BlcnR5IGhhcyBiZWVuIHNldCB0byBZRVMuCisKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKwogMjAxOC0wNi0zMCAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGln
YWxpYS5jb20+CiAKICAgICAgICAgW0NNYWtlXSBidWlsZC13ZWJraXQgc2hvdWxkIGJlIGFibGUg
dG8gZW5hYmxlIGFkZHJlc3Mgc2FuaXRpemVyCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBkYzliOWZiOGI4NzMyMWY2NDM0ZTQ2NmY0NDBiMTdkNTY0YzhiYTYwLi4yODdkMjZhNjdjMDg4
Y2RiNjYxOGFlZTRlMTIwOWM1YjRmMDZkMTI5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTc3LDcgKzc3LDYgQEAKIAkJMjlDRkJBMkUxMjI3M0ExMDAwQkMzMEMwIC8qIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjlDRkJBMkQxMjI3M0ExMDAwQkMzMEMwIC8qIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyTWFjLm1tICovOyB9OwogCQkyQ0U4OEZBMjE3MTI0RDhDMDA3MzRGQzAgLyogSmF2YVNj
cmlwdFRocmVhZGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyQ0U4OEZBMTE3MTI0Q0VFMDA3MzRGQzAgLyogSmF2YVNjcmlwdFRocmVhZGluZy5j
cHAgKi87IH07CiAJCTJENDAzRjFCMTUwODcyMDkwMDUzNThEMiAvKiBMYXlvdXRUZXN0SGVscGVy
Lm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDQwM0VB
MjE1MDg3MTQyMDA1MzU4RDIgLyogTGF5b3V0VGVzdEhlbHBlci5tICovOyB9OwotCQkyREEyRTNB
NTFFMUJBNTQxMDBBM0JCRDAgLyogRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREEyRTNBNDFFMUJBNTQx
MDBBM0JCRDAgLyogRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW0gKi87IH07CiAJCTMxMTE3
QjNEMTVEOUE1NkEwMDE2M0JDOCAvKiBNb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTExN0IzQjE1RDlB
NTZBMDAxNjNCQzggLyogTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tICovOyB9OwogCQkz
MTI5NDNGOTFFNzFGMkI0MDAxRUUyQ0MgLyogSU9TTGF5b3V0VGVzdENvbW11bmljYXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE0OEEwNTUx
RTZGOTBGNDAwRDNCMzE2IC8qIElPU0xheW91dFRlc3RDb21tdW5pY2F0aW9uLmNwcCAqLzsgfTsK
IAkJNDQ2NENBQkUxQzIwQTA4QjAwRTVCQjU1IC8qIER1bXBSZW5kZXJUcmVlQXBwTWFpbi5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NjRDQUJEMUMy
MEEwNzAwMEU1QkI1NSAvKiBEdW1wUmVuZGVyVHJlZUFwcE1haW4ubW0gKi87IH07CkBAIC0xNDgs
NiArMTQ3LDcgQEAKIAkJQzIzRUEyMDgxQkM5RjA1MTAwQzk4MEI3IC8qIEZvbnRXaXRoRmVhdHVy
ZXMub3RmIGluIENvcHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDMjNFQTIwNjFCQzlFQUJBMDBDOTgwQjcgLyogRm9udFdpdGhGZWF0dXJlcy5vdGYgKi87
IH07CiAJCUMyM0VBMjA5MUJDOUYwNTEwMEM5ODBCNyAvKiBGb250V2l0aEZlYXR1cmVzLnR0ZiBp
biBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzIz
RUEyMDcxQkM5RUFCQTAwQzk4MEI3IC8qIEZvbnRXaXRoRmVhdHVyZXMudHRmICovOyB9OwogCQlF
MUI3ODE2NTExQUYzMUI3MDA3RTFCQzIgLyogTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUI3ODA4NzExQUYx
NjY5MDA3RTFCQzIgLyogTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIubW0gKi87IH07CisJCUY0QzM1
NzhEMjBFODQ0NEUwMEZBMDc0OCAvKiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRDMzU3ODgyMEU4NDQyNzAw
RkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIubW0gKi87IH07CiAJCUY0RDQyMzYxMURE
NTA0ODIwMDY3ODI5MCAvKiBUZXh0SW5wdXRDb250cm9sbGVySU9TLm0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEQ0MjM1RjFERDUwNDUzMDA2NzgyOTAg
LyogVGV4dElucHV0Q29udHJvbGxlcklPUy5tICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBz
ZWN0aW9uICovCiAKQEAgLTI4Miw4ICsyODIsNiBAQAogCQkyQ0U4OEZBMTE3MTI0Q0VFMDA3MzRG
QzAgLyogSmF2YVNjcmlwdFRocmVhZGluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKYXZhU2NyaXB0VGhyZWFkaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMkQ0MDNFQTIxNTA4NzE0MjAwNTM1OEQyIC8qIExheW91dFRlc3RIZWxwZXIubSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBuYW1lID0gTGF5b3V0VGVzdEhlbHBlci5tOyBw
YXRoID0gbWFjL0xheW91dFRlc3RIZWxwZXIubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkQ0MDNGMTkxNTA4NzFGOTAwNTM1OEQyIC8qIExheW91dFRlc3RIZWxwZXIgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8u
ZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IExheW91dFRlc3RIZWxwZXI7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0JCTJEQTJFM0EzMUUxQkE1NDEw
MEEzQkJEMCAvKiBEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5oOyBwYXRoID0gbWFj
L0R1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTJEQTJFM0E0MUUxQkE1NDEwMEEzQkJEMCAvKiBEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tl
ci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IER1bXBSZW5kZXJU
cmVlU3BlbGxDaGVja2VyLm1tOyBwYXRoID0gbWFjL0R1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2Vy
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRURFMERBQTFGNTEzMURFMDBENUY4
REYgLyogQXBwS2l0VGVzdFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBcHBLaXRUZXN0U1BJLmg7IHBh
dGggPSBtYWMvQXBwS2l0VGVzdFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
MTExN0IzQTE1RDlBNTZBMDAxNjNCQzggLyogTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1vY2tXZWJOb3RpZmljYXRpb25Qcm92
aWRlci5oOyBwYXRoID0gbWFjL01vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzMTExN0IzQjE1RDlBNTZBMDAxNjNCQzggLyogTW9ja1dl
Yk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBuYW1lID0gTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tOyBwYXRoID0gbWFjL01vY2tX
ZWJOb3RpZmljYXRpb25Qcm92aWRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTQxMiw2ICs0MTAsOCBAQAogCQlDMjNFQTIwNzFCQzlFQUJBMDBDOTgwQjcgLyogRm9udFdpdGhG
ZWF0dXJlcy50dGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBmaWxlOyBuYW1lID0gRm9udFdpdGhGZWF0dXJlcy50dGY7IHBhdGggPSBmb250cy9Gb250
V2l0aEZlYXR1cmVzLnR0Zjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFCNzgwODUx
MUFGMTY0MzAwN0UxQkMyIC8qIE1vY2tHZW9sb2NhdGlvblByb3ZpZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1vY2tHZW9sb2NhdGlvblByb3ZpZGVyLmg7IHBhdGggPSBt
YWMvTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTFCNzgwODcxMUFGMTY2OTAwN0UxQkMyIC8qIE1vY2tHZW9sb2NhdGlvblByb3ZpZGVyLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gTW9ja0dlb2xvY2F0aW9u
UHJvdmlkZXIubW07IHBhdGggPSBtYWMvTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0QzM1Nzg4MjBFODQ0MjcwMEZBMDc0OCAvKiBMYXlv
dXRUZXN0U3BlbGxDaGVja2VyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbTsgcGF0aCA9IC4uL1Rlc3RSdW5uZXJTaGFy
ZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRjRDMzU3ODkyMEU4NDQyNzAwRkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNr
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGF5b3V0VGVzdFNwZWxsQ2hl
Y2tlci5oOyBwYXRoID0gLi4vVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxD
aGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RDQyMzVGMURENTA0NTMw
MDY3ODI5MCAvKiBUZXh0SW5wdXRDb250cm9sbGVySU9TLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMub2JqYzsgbmFtZSA9IFRleHRJbnB1dENvbnRyb2xsZXJJT1MubTsgcGF0aCA9IGlvcy9UZXh0
SW5wdXRDb250cm9sbGVySU9TLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RDQy
MzYwMURENTA0NjkwMDY3ODI5MCAvKiBUZXh0SW5wdXRDb250cm9sbGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRJbnB1dENvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KQEAgLTY4
Nyw2ICs2ODcsNyBAQAogCQkzMTQ4QTA2NTFFNkY5MEY0MDBEM0IzMTYgLyogVGVzdFJ1bm5lclNo
YXJlZCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRjRC
NkMzMTgyMEU4NDM4MjAwOEFDMjI1IC8qIGNvY29hICovLAogCQkJCTMxNDhBMDU1MUU2RjkwRjQw
MEQzQjMxNiAvKiBJT1NMYXlvdXRUZXN0Q29tbXVuaWNhdGlvbi5jcHAgKi8sCiAJCQkJMzE0OEEw
NTYxRTZGOTBGNDAwRDNCMzE2IC8qIElPU0xheW91dFRlc3RDb21tdW5pY2F0aW9uLmggKi8sCiAJ
CQkpOwpAQCAtNzc5LDggKzc4MCw2IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlBOEI5MUFERjBD
RjNCMzcyMDA4RjkxRkYgLyogRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLmggKi8sCiAJCQkJQThC
OTFBRDcwQ0YzQjMyRjAwOEY5MUZGIC8qIER1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tbSAqLywK
LQkJCQkyREEyRTNBMzFFMUJBNTQxMDBBM0JCRDAgLyogRHVtcFJlbmRlclRyZWVTcGVsbENoZWNr
ZXIuaCAqLywKLQkJCQkyREEyRTNBNDFFMUJBNTQxMDBBM0JCRDAgLyogRHVtcFJlbmRlclRyZWVT
cGVsbENoZWNrZXIubW0gKi8sCiAJCQkJQThCOTFBREQwQ0YzQjM3MjAwOEY5MUZGIC8qIER1bXBS
ZW5kZXJUcmVlV2luZG93LmggKi8sCiAJCQkJQThCOTFBRDkwQ0YzQjMyRjAwOEY5MUZGIC8qIER1
bXBSZW5kZXJUcmVlV2luZG93Lm1tICovLAogCQkJKTsKQEAgLTgxNyw2ICs4MTYsMTUgQEAKIAkJ
CW5hbWUgPSBQaXhlbER1bXA7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlG
NEI2QzMxODIwRTg0MzgyMDA4QUMyMjUgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91
cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUY0QzM1Nzg5MjBFODQ0MjcwMEZBMDc0OCAvKiBMYXlv
dXRUZXN0U3BlbGxDaGVja2VyLmggKi8sCisJCQkJRjRDMzU3ODgyMEU4NDQyNzAwRkEwNzQ4IC8q
IExheW91dFRlc3RTcGVsbENoZWNrZXIubW0gKi8sCisJCQkpOworCQkJbmFtZSA9IGNvY29hOwor
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJRjRENDIzNUQxREQ0Rjk5OTAwNjc4
MjkwIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBA
IC0xMDgxLDcgKzEwODksNiBAQAogCQkJCUJDQTE4QjdCMEM5QjA4RjEwMDExNDM2OSAvKiBEdW1w
UmVuZGVyVHJlZURyYWdnaW5nSW5mby5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4RDc5Q0VCMEZD
MjhCMkMwMDRBQzhGRSAvKiBEdW1wUmVuZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJjZS5tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQThCOTFBREEwQ0YzQjMyRjAwOEY5MUZGIC8qIER1bXBSZW5kZXJUcmVl
UGFzdGVib2FyZC5tbSBpbiBTb3VyY2VzICovLAotCQkJCTJEQTJFM0E1MUUxQkE1NDEwMEEzQkJE
MCAvKiBEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4
QjkxQURDMENGM0IzMkYwMDhGOTFGRiAvKiBEdW1wUmVuZGVyVHJlZVdpbmRvdy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDQTE4QjYyMEM5QjA4QzIwMDExNDM2OSAvKiBFZGl0aW5nRGVsZWdhdGUu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEI3MDBDOUIwOERCMDAxMTQzNjkgLyogRXZlbnRT
ZW5kaW5nQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLApAQCAtMTA5Myw2ICsxMTAwLDcgQEAK
IAkJCQkyQ0U4OEZBMjE3MTI0RDhDMDA3MzRGQzAgLyogSmF2YVNjcmlwdFRocmVhZGluZy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjE4RTcwNjFENkJBMDIzMDAyN0U1NDcgLyogSlNVSVNjcmlw
dENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYxOEU3MTMxRDZCQzQzQTAwMjdF
NTQ3IC8qIEpTV3JhcHBlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGNEMzNTc4RDIwRTg0NDRF
MDBGQTA3NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUUxQjc4MTY1MTFBRjMxQjcwMDdFMUJDMiAvKiBNb2NrR2VvbG9jYXRpb25Qcm92aWRlci5tbSBp
biBTb3VyY2VzICovLAogCQkJCTMxMTE3QjNEMTVEOUE1NkEwMDE2M0JDOCAvKiBNb2NrV2ViTm90
aWZpY2F0aW9uUHJvdmlkZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEI3MjBDOUIwOERC
MDAxMTQzNjkgLyogTmF2aWdhdGlvbkNvbnRyb2xsZXIubSBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9UZXN0UnVubmVyLmNwcAppbmRleCBmOGFkOTUxNTE3NDBiNjZjNzQ2OTJhZDUyZDM3
NGEzMDVkYTQ0NjcxLi43ZThlYzliZDQ1YjBiNzVmNGU4ZTkyNmJhNWM3ZDYzOGU2MjZlNDYzIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcApAQCAtMTc4OCw2ICsxNzg4LDE2IEBAIHN0
YXRpYyBKU1ZhbHVlUmVmIHNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkQ2FsbGJhY2soSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRTcGVsbENoZWNrZXJUZXh0UmVwbGFj
ZW1lbnRzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9u
LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNW
YWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmIChh
cmd1bWVudENvdW50IDwgMSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpOworCisgICAgYXV0byogcnVubmVyID0gc3RhdGljX2Nhc3Q8VGVzdFJ1bm5lcio+KEpT
T2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgcnVubmVyLT5zZXRTcGVsbENoZWNr
ZXJUZXh0UmVwbGFjZW1lbnRzKGNvbnRleHQsIEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBhcmd1
bWVudHNbMF0sIG51bGxwdHIpKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29u
dGV4dCk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIHNldE9wZW5QYW5lbEZpbGVzQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVu
dHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIGlmIChhcmd1bWVudENvdW50ID09
IDEpCkBAIC0yMjU1LDYgKzIyNjUsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBUZXN0UnVubmVyOjpz
dGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJydW5VSVNjcmlwdCIsIHJ1blVJU2NyaXB0Q2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiaW1hZ2VDb3VudEluR2VuZXJhbFBhc3RlYm9hcmQi
LCBpbWFnZUNvdW50SW5HZW5lcmFsUGFzdGVib2FyZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgInNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkIiwgc2V0U3BlbGxDaGVja2VyTG9nZ2lu
Z0VuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzZXRTcGVsbENoZWNrZXJUZXh0
UmVwbGFjZW1lbnRzIiwgc2V0U3BlbGxDaGVja2VyVGV4dFJlcGxhY2VtZW50c0NhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCiAgICAgICAgIHsgInNldE9wZW5QYW5lbEZpbGVzIiwgc2V0T3BlblBhbmVsRmlsZXND
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJmb3JjZUltbWVkaWF0ZUNvbXBsZXRpb24iLCBm
b3JjZUltbWVkaWF0ZUNvbXBsZXRpb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7IDAsIDAs
IDAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCmluZGV4IDNlMzI4YjgyMjMyM2ZlYzRiNGI1
NGY3NzdhY2VkMjQzNDY0NmI2YzEuLmRiZjE0ZmViNjE3OGJjYWQ2Nzk2YTAxYzQ0NTdhYjI1YmNk
MjIxY2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgKQEAgLTM3Niw2ICszNzYsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBkdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoKSBjb25zdCB7IHJldHVy
biBtX2R1bXBKU0NvbnNvbGVMb2dJblN0ZEVycjsgfQogCiAgICAgdm9pZCBzZXRTcGVsbENoZWNr
ZXJMb2dnaW5nRW5hYmxlZChib29sKTsKKyAgICB2b2lkIHNldFNwZWxsQ2hlY2tlclRleHRSZXBs
YWNlbWVudHMoSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiByZXBsYWNlbWVudHMpOwogCiAgICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBvcGVuUGFuZWxGaWxlcygpIGNvbnN0IHsg
cmV0dXJuIG1fb3BlblBhbmVsRmlsZXM7IH0KICAgICB2b2lkIHNldE9wZW5QYW5lbEZpbGVzKEpT
Q29udGV4dFJlZiwgSlNWYWx1ZVJlZik7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJl
bmRlclRyZWUubW0KaW5kZXggZDY5Njc3YmQ5ZWU3M2E4OWQyZjIwNjQ1MDQ4ZGM3MDJjOTZmNzNi
OS4uMmQ1OWRhNzhiNTIxMDgwODQ1NWY2NGY5NjlhOGM2MmVlMzc5Y2RkOCAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtMzQsMTMgKzM0LDEzIEBACiAj
aW1wb3J0ICJEZWZhdWx0UG9saWN5RGVsZWdhdGUuaCIKICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVl
RHJhZ2dpbmdJbmZvLmgiCiAjaW1wb3J0ICJEdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQuaCIKLSNp
bXBvcnQgIkR1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLmgiCiAjaW1wb3J0ICJEdW1wUmVuZGVy
VHJlZVdpbmRvdy5oIgogI2ltcG9ydCAiRWRpdGluZ0RlbGVnYXRlLmgiCiAjaW1wb3J0ICJFdmVu
dFNlbmRpbmdDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJGcmFtZUxvYWREZWxlZ2F0ZS5oIgogI2lt
cG9ydCAiSGlzdG9yeURlbGVnYXRlLmgiCiAjaW1wb3J0ICJKYXZhU2NyaXB0VGhyZWFkaW5nLmgi
CisjaW1wb3J0ICJMYXlvdXRUZXN0U3BlbGxDaGVja2VyLmgiCiAjaW1wb3J0ICJNb2NrR2VvbG9j
YXRpb25Qcm92aWRlci5oIgogI2ltcG9ydCAiTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmgi
CiAjaW1wb3J0ICJOYXZpZ2F0aW9uQ29udHJvbGxlci5oIgpAQCAtMTg2OCw3ICsxODY4LDkgQEAg
c3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKGNv
bnN0IFRlc3RPcHRpb25zJiBvcHRpb24KIAogICAgIFttYWluRnJhbWUgX2NsZWFyT3BlbmVyXTsK
IAotICAgIHNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKGZhbHNlKTsKKyNpZiBQTEFURk9S
TShNQUMpCisgICAgW0xheW91dFRlc3RTcGVsbENoZWNrZXIgdW5pbnN0YWxsQW5kUmVzZXRdOwor
I2VuZGlmCiAKICAgICByZXNldEFjY3VtdWxhdGVkTG9ncygpOwogICAgIFdlYkNvcmVUZXN0U3Vw
cG9ydDo6aW5pdGlhbGl6ZUxvZ0NoYW5uZWxzSWZOZWNlc3NhcnkoKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5oIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlM2ZkNzFjNDIxMWMwYjI3Yzc1YzkxZjE2NjFmYjdj
YzYxNDE4NGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLmgKKysr
IC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotdm9pZCBzZXRTcGVsbENo
ZWNrZXJMb2dnaW5nRW5hYmxlZChib29sKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5tbQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYmJiNGQ5NmRlOWUyYTFhMmQ3N2NjYjM1MjhiNzMxZDFiZGYwOWRmNy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW0KKysrIC9kZXYvbnVsbApA
QCAtMSw5MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0
ICJEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5oIgotCi0jaWYgUExBVEZPUk0oTUFDKQotCi0j
aW1wb3J0IDxBcHBLaXQvTlNTcGVsbENoZWNrZXIuaD4KLSNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25z
Lmg+Ci0jaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KLQotc3RhdGljIGJvb2wgc3Bl
bGxDaGVja2VyTG9nZ2luZ0VuYWJsZWQ7Ci1zdGF0aWMgSU1QIGFwcEtpdFJlY29yZFJlc3BvbnNl
SU1QOwotCi1zdGF0aWMgY29uc3QgY2hhciAqc3RyaW5nRm9yQ29ycmVjdGlvblJlc3BvbnNlKE5T
Q29ycmVjdGlvblJlc3BvbnNlIGNvcnJlY3Rpb25SZXNwb25zZSkKLXsKLSAgICBzd2l0Y2ggKGNv
cnJlY3Rpb25SZXNwb25zZSkgewotICAgIGNhc2UgTlNDb3JyZWN0aW9uUmVzcG9uc2VOb25lOgot
ICAgICAgICByZXR1cm4gIm5vbmUiOwotICAgIGNhc2UgTlNDb3JyZWN0aW9uUmVzcG9uc2VBY2Nl
cHRlZDoKLSAgICAgICAgcmV0dXJuICJhY2NlcHRlZCI7Ci0gICAgY2FzZSBOU0NvcnJlY3Rpb25S
ZXNwb25zZVJlamVjdGVkOgotICAgICAgICByZXR1cm4gInJlamVjdGVkIjsKLSAgICBjYXNlIE5T
Q29ycmVjdGlvblJlc3BvbnNlSWdub3JlZDoKLSAgICAgICAgcmV0dXJuICJpZ25vcmVkIjsKLSAg
ICBjYXNlIE5TQ29ycmVjdGlvblJlc3BvbnNlRWRpdGVkOgotICAgICAgICByZXR1cm4gImVkaXRl
ZCI7Ci0gICAgY2FzZSBOU0NvcnJlY3Rpb25SZXNwb25zZVJldmVydGVkOgotICAgICAgICByZXR1
cm4gInJldmVydGVkIjsKLSAgICB9Ci0KLSAgICByZXR1cm4gImludmFsaWQiOwotfQotCi1zdGF0
aWMgdm9pZCBkcnRfTlNTcGVsbENoZWNrZXJfcmVjb3JkUmVzcG9uc2VUb0NvcnJlY3Rpb24oaWQg
c2VsZiwgU0VMIF9jbWQsIE5TQ29ycmVjdGlvblJlc3BvbnNlIHJlc3BvbnNlLCBOU1N0cmluZyAq
Y29ycmVjdGlvbiwgTlNTdHJpbmcgKndvcmQsIE5TU3RyaW5nICpsYW5ndWFnZSwgTlNJbnRlZ2Vy
IHNwZWxsRG9jdW1lbnRUYWcpCi17Ci0gICAgaWYgKHNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVk
KQotICAgICAgICBwcmludGYoIk5TU3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlVG9Db3JyZWN0
aW9uOiAlcyAtPiAlcyAocmVzcG9uc2U6ICVzKVxuIiwgW3dvcmQgVVRGOFN0cmluZ10sIFtjb3Jy
ZWN0aW9uIFVURjhTdHJpbmddLCBzdHJpbmdGb3JDb3JyZWN0aW9uUmVzcG9uc2UocmVzcG9uc2Up
KTsKLQotICAgIHd0ZkNhbGxJTVA8dm9pZCwgTlNDb3JyZWN0aW9uUmVzcG9uc2UsIE5TU3RyaW5n
ICosIE5TU3RyaW5nICosIE5TU3RyaW5nICosIE5TSW50ZWdlcj4oYXBwS2l0UmVjb3JkUmVzcG9u
c2VJTVAsIHNlbGYsIF9jbWQsIHJlc3BvbnNlLCBjb3JyZWN0aW9uLCB3b3JkLCBsYW5ndWFnZSwg
c3BlbGxEb2N1bWVudFRhZyk7Ci19Ci0KLXN0YXRpYyB2b2lkIHN3aXp6bGVOU1NwZWxsQ2hlY2tl
ck1ldGhvZHNJZk5lZWRlZCgpCi17Ci0gICAgc3RhdGljIGJvb2wgaGFzU3dpenpsZWQ7Ci0gICAg
aWYgKGhhc1N3aXp6bGVkKQotICAgICAgICByZXR1cm47Ci0gICAgaGFzU3dpenpsZWQgPSB0cnVl
OwotCi0gICAgTWV0aG9kIHJlY29yZFJlc3BvbnNlTWV0aG9kID0gY2xhc3NfZ2V0SW5zdGFuY2VN
ZXRob2Qob2JqY19nZXRDbGFzcygiTlNTcGVsbENoZWNrZXIiKSwgQHNlbGVjdG9yKHJlY29yZFJl
c3BvbnNlOnRvQ29ycmVjdGlvbjpmb3JXb3JkOmxhbmd1YWdlOmluU3BlbGxEb2N1bWVudFdpdGhU
YWc6KSk7Ci0KLSAgICBhcHBLaXRSZWNvcmRSZXNwb25zZUlNUCA9IG1ldGhvZF9zZXRJbXBsZW1l
bnRhdGlvbihyZWNvcmRSZXNwb25zZU1ldGhvZCwgKElNUClkcnRfTlNTcGVsbENoZWNrZXJfcmVj
b3JkUmVzcG9uc2VUb0NvcnJlY3Rpb24pOwotfQotCi12b2lkIHNldFNwZWxsQ2hlY2tlckxvZ2dp
bmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKLXsKLSAgICBzd2l6emxlTlNTcGVsbENoZWNrZXJNZXRo
b2RzSWZOZWVkZWQoKTsKLQotICAgIHNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkID0gZW5hYmxl
ZDsKLX0KLQotI2Vsc2UgLy8gUExBVEZPUk0oTUFDKQotCi12b2lkIHNldFNwZWxsQ2hlY2tlckxv
Z2dpbmdFbmFibGVkKGJvb2wpCi17Ci19Ci0KLSNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbSBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCmluZGV4IDZlMDJmZjAzYTIzOTI4
MTMyNGY0ZmFhMmU1ZjFhN2RjNTFmMTg2OTQuLmZjMmE2ZWZmOGY0NDRiYWMxYzdhZGYzYjYyYmIw
YzAwYTU2YzdlMTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVu
bmVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1t
CkBAIC0zMSw4ICszMSw4IEBACiAjaW1wb3J0ICJUZXN0UnVubmVyLmgiCiAKICNpbXBvcnQgIkRl
ZmF1bHRQb2xpY3lEZWxlZ2F0ZS5oIgotI2ltcG9ydCAiRHVtcFJlbmRlclRyZWVTcGVsbENoZWNr
ZXIuaCIKICNpbXBvcnQgIkVkaXRpbmdEZWxlZ2F0ZS5oIgorI2ltcG9ydCAiTGF5b3V0VGVzdFNw
ZWxsQ2hlY2tlci5oIgogI2ltcG9ydCAiTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIuaCIKICNpbXBv
cnQgIk1vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5oIgogI2ltcG9ydCAiUG9saWN5RGVsZWdh
dGUuaCIKQEAgLTIxMiw3ICsyMTIsMjEgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRTdG9yYWdlRGF0
YWJhc2VJZGxlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQogCiB2b2lkIFRlc3RSdW5uZXI6OnNl
dFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKLSAgICA6OnNldFNw
ZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKGVuYWJsZWQpOworI2lmIFBMQVRGT1JNKE1BQykKKyAg
ICBbTGF5b3V0VGVzdFNwZWxsQ2hlY2tlciBpbnN0YWxsSWZOZWNlc3NhcnldLnNwZWxsQ2hlY2tl
ckxvZ2dpbmdFbmFibGVkID0gZW5hYmxlZDsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGVuYWJs
ZWQpOworI2VuZGlmCit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0U3BlbGxDaGVja2VyVGV4dFJl
cGxhY2VtZW50cyhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgcmVwbGFjZW1lbnRz
KQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBbW0xheW91dFRlc3RTcGVsbENoZWNrZXIgaW5z
dGFsbElmTmVjZXNzYXJ5XSBzZXRSZXBsYWNlbWVudHNGcm9tSlNPYmplY3Q6cmVwbGFjZW1lbnRz
IGluQ29udGV4dDpjb250ZXh0XTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJlcGxhY2VtZW50
cyk7CisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOworI2VuZGlmCiB9CiAKIHZvaWQgVGVzdFJ1
bm5lcjo6Y2xvc2VJZGxlTG9jYWxTdG9yYWdlRGF0YWJhc2VzKCkKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcAppbmRleCA2OWMzNTE0MjE1YTA3ZTI3YzFjZjM0N2E2
NDUwMjVmMDBhMTAwNjlmLi43ODAzMzMxMTZhYWQwZDU5MzlmODc0NmY4MDJlMjc4NTZkYjlkYmEy
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCkBAIC0xNDA2
LDMgKzE0MDYsOCBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFi
bGVkKGJvb2wgZW5hYmxlZCkKIHsKICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICJFUlJPUjogVGVz
dFJ1bm5lcjo6c2V0U3BlbGxDaGVja2VyTG9nZ2luZ0VuYWJsZWQoKSBub3QgaW1wbGVtZW50ZWRc
biIpOwogfQorCit2b2lkIFRlc3RSdW5uZXI6OnNldFNwZWxsQ2hlY2tlclRleHRSZXBsYWNlbWVu
dHMoSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZikKK3sKKyAgICBmcHJpbnRmKHRlc3RSZXN1bHQs
ICJFUlJPUjogVGVzdFJ1bm5lcjo6c2V0U3BlbGxDaGVja2VyVGV4dFJlcGxhY2VtZW50cygpIG5v
dCBpbXBsZW1lbnRlZFxuIik7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVk
L2NvY29hL0xheW91dFRlc3RTcGVsbENoZWNrZXIuaCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQv
Y29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmMjE3OTgzODIwODBm
YjA4OTIzZjdkYTNkYTZhZjI4NzYxZDJiNzAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0
UnVubmVyU2hhcmVkL2NvY29hL0xheW91dFRlc3RTcGVsbENoZWNrZXIuaApAQCAtMCwwICsxLDU0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBQTEFU
Rk9STShNQUMpCisKKyNpbXBvcnQgPEFwcEtpdC9OU1NwZWxsQ2hlY2tlci5oPgorCitAaW50ZXJm
YWNlIExheW91dFRlc3RUZXh0Q2hlY2tpbmdSZXN1bHQgOiBOU1RleHRDaGVja2luZ1Jlc3VsdCB7
CitAcHJpdmF0ZQorICAgIFJldGFpblB0cjxOU1N0cmluZz4gX3JlcGxhY2VtZW50OworICAgIE5T
VGV4dENoZWNraW5nVHlwZSBfdHlwZTsKKyAgICBOU1JhbmdlIF9yYW5nZTsKK30KKworLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoVHlwZTooTlNUZXh0Q2hlY2tpbmdUeXBlKXR5cGUgcmFuZ2U6KE5T
UmFuZ2UpcmFuZ2UgcmVwbGFjZW1lbnQ6KE5TU3RyaW5nICopcmVwbGFjZW1lbnQ7CitAZW5kCisK
K0BpbnRlcmZhY2UgTGF5b3V0VGVzdFNwZWxsQ2hlY2tlciA6IE5TU3BlbGxDaGVja2VyCisrIChp
bnN0YW5jZXR5cGUpaW5zdGFsbElmTmVjZXNzYXJ5OworKyAodm9pZCl1bmluc3RhbGxBbmRSZXNl
dDsKKworLSAodm9pZClzZXRSZXBsYWNlbWVudHNGcm9tSlNPYmplY3Q6KEpTT2JqZWN0UmVmKXJl
cGxhY2VtZW50cyBpbkNvbnRleHQ6KEpTQ29udGV4dFJlZiljb250ZXh0OworQHByb3BlcnR5IChu
b25hdG9taWMsIGNvcHkpIE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBMYXlvdXRUZXN0VGV4dENo
ZWNraW5nUmVzdWx0ICo+ICpyZXBsYWNlbWVudHM7CitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9P
TCBzcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZDsKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JN
KE1BQykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVz
dFNwZWxsQ2hlY2tlci5tbSBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVz
dFNwZWxsQ2hlY2tlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yN2IzNTNjZmU4N2UwMjQ2M2E2NjhiMjFiNjc1
ZGJhMzg2MDU0OWViCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9j
b2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tCkBAIC0wLDAgKzEsMjQ3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJMYXlvdXRUZXN0U3BlbGxDaGVja2Vy
LmgiCisKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CisjaW1wb3J0IDxv
YmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW1wb3J0IDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KKworI2lmIFBMQVRGT1JNKE1BQykKKwordHlwZWRlZiB2b2lkIChe
VGV4dENoZWNraW5nQ29tcGxldGlvbkhhbmRsZXIpKE5TSW50ZWdlciBzZXF1ZW5jZU51bWJlciwg
TlNBcnJheTxOU1RleHRDaGVja2luZ1Jlc3VsdCAqPiAqcmVzdWx0cywgTlNPcnRob2dyYXBoeSAq
b3J0aG9ncmFwaHksIE5TSW50ZWdlciB3b3JkQ291bnQpOworCitzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8UmV0YWluUHRyPExheW91dFRlc3RTcGVsbENoZWNrZXI+PiBnbG9iYWxTcGVsbENoZWNrZXI7
CitzdGF0aWMgQk9PTCBoYXNJbnN0YWxsZWRMYXlvdXRUZXN0U3BlbGxDaGVja2VyID0gTk87Citz
dGF0aWMgSU1QIGdsb2JhbGx5U3dpenpsZWRTaGFyZWRTcGVsbENoZWNrZXJJbXBsZW1lbnRhdGlv
bjsKK3N0YXRpYyBNZXRob2Qgb3JpZ2luYWxTaGFyZWRTcGVsbENoZWNrZXJNZXRob2Q7CisKK3N0
YXRpYyBMYXlvdXRUZXN0U3BlbGxDaGVja2VyICpleGlzdGluZ0dsb2JhbExheW91dFRlc3RTcGVs
bENoZWNrZXIoKQoreworICAgIHJldHVybiBnbG9iYWxTcGVsbENoZWNrZXIuZ2V0KCkuZ2V0KCk7
Cit9CisKK3N0YXRpYyBMYXlvdXRUZXN0U3BlbGxDaGVja2VyICplbnN1cmVHbG9iYWxMYXlvdXRU
ZXN0U3BlbGxDaGVja2VyKCkKK3sKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tl
bjsKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisgICAgICAgIGdsb2JhbFNwZWxs
Q2hlY2tlci5nZXQoKSA9IGFkb3B0TlMoW1tMYXlvdXRUZXN0U3BlbGxDaGVja2VyIGFsbG9jXSBp
bml0XSk7CisgICAgfSk7CisgICAgcmV0dXJuIGV4aXN0aW5nR2xvYmFsTGF5b3V0VGVzdFNwZWxs
Q2hlY2tlcigpOworfQorCitzdGF0aWMgY29uc3QgY2hhciAqc3RyaW5nRm9yQ29ycmVjdGlvblJl
c3BvbnNlKE5TQ29ycmVjdGlvblJlc3BvbnNlIGNvcnJlY3Rpb25SZXNwb25zZSkKK3sKKyAgICBz
d2l0Y2ggKGNvcnJlY3Rpb25SZXNwb25zZSkgeworICAgIGNhc2UgTlNDb3JyZWN0aW9uUmVzcG9u
c2VOb25lOgorICAgICAgICByZXR1cm4gIm5vbmUiOworICAgIGNhc2UgTlNDb3JyZWN0aW9uUmVz
cG9uc2VBY2NlcHRlZDoKKyAgICAgICAgcmV0dXJuICJhY2NlcHRlZCI7CisgICAgY2FzZSBOU0Nv
cnJlY3Rpb25SZXNwb25zZVJlamVjdGVkOgorICAgICAgICByZXR1cm4gInJlamVjdGVkIjsKKyAg
ICBjYXNlIE5TQ29ycmVjdGlvblJlc3BvbnNlSWdub3JlZDoKKyAgICAgICAgcmV0dXJuICJpZ25v
cmVkIjsKKyAgICBjYXNlIE5TQ29ycmVjdGlvblJlc3BvbnNlRWRpdGVkOgorICAgICAgICByZXR1
cm4gImVkaXRlZCI7CisgICAgY2FzZSBOU0NvcnJlY3Rpb25SZXNwb25zZVJldmVydGVkOgorICAg
ICAgICByZXR1cm4gInJldmVydGVkIjsKKyAgICB9CisgICAgcmV0dXJuICJpbnZhbGlkIjsKK30K
Kworc3RhdGljIE5TVGV4dENoZWNraW5nVHlwZSBuc1RleHRDaGVja2luZ1R5cGUoSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+JiYganNUeXBlKQoreworICAgIGF1dG8gY2ZUeXBlID0gYWRvcHRDRihK
U1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc1R5cGUuZ2V0KCkpKTsK
KyAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGNmVHlwZS5nZXQoKSwgQ0ZTVFIoIm9ydGhvZ3JhcGh5
IiksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUpID09IGtDRkNvbXBhcmVFcXVhbFRvKQorICAg
ICAgICByZXR1cm4gTlNUZXh0Q2hlY2tpbmdUeXBlT3J0aG9ncmFwaHk7CisKKyAgICBpZiAoQ0ZT
dHJpbmdDb21wYXJlKGNmVHlwZS5nZXQoKSwgQ0ZTVFIoInNwZWxsaW5nIiksIGtDRkNvbXBhcmVD
YXNlSW5zZW5zaXRpdmUpID09IGtDRkNvbXBhcmVFcXVhbFRvKQorICAgICAgICByZXR1cm4gTlNU
ZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7CisKKyAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGNmVHlw
ZS5nZXQoKSwgQ0ZTVFIoImdyYW1tYXIiKSwga0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgPT0g
a0NGQ29tcGFyZUVxdWFsVG8pCisgICAgICAgIHJldHVybiBOU1RleHRDaGVja2luZ1R5cGVHcmFt
bWFyOworCisgICAgaWYgKENGU3RyaW5nQ29tcGFyZShjZlR5cGUuZ2V0KCksIENGU1RSKCJkYXRl
IiksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUpID09IGtDRkNvbXBhcmVFcXVhbFRvKQorICAg
ICAgICByZXR1cm4gTlNUZXh0Q2hlY2tpbmdUeXBlRGF0ZTsKKworICAgIGlmIChDRlN0cmluZ0Nv
bXBhcmUoY2ZUeXBlLmdldCgpLCBDRlNUUigiYWRkcmVzcyIpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vu
c2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKKyAgICAgICAgcmV0dXJuIE5TVGV4dENoZWNr
aW5nVHlwZUFkZHJlc3M7CisKKyAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGNmVHlwZS5nZXQoKSwg
Q0ZTVFIoImxpbmsiKSwga0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgPT0ga0NGQ29tcGFyZUVx
dWFsVG8pCisgICAgICAgIHJldHVybiBOU1RleHRDaGVja2luZ1R5cGVMaW5rOworCisgICAgaWYg
KENGU3RyaW5nQ29tcGFyZShjZlR5cGUuZ2V0KCksIENGU1RSKCJxdW90ZSIpLCBrQ0ZDb21wYXJl
Q2FzZUluc2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKKyAgICAgICAgcmV0dXJuIE5T
VGV4dENoZWNraW5nVHlwZVF1b3RlOworCisgICAgaWYgKENGU3RyaW5nQ29tcGFyZShjZlR5cGUu
Z2V0KCksIENGU1RSKCJkYXNoIiksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUpID09IGtDRkNv
bXBhcmVFcXVhbFRvKQorICAgICAgICByZXR1cm4gTlNUZXh0Q2hlY2tpbmdUeXBlRGFzaDsKKwor
ICAgIGlmIChDRlN0cmluZ0NvbXBhcmUoY2ZUeXBlLmdldCgpLCBDRlNUUigicmVwbGFjZW1lbnQi
KSwga0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pCisgICAg
ICAgIHJldHVybiBOU1RleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudDsKKworICAgIGlmIChDRlN0
cmluZ0NvbXBhcmUoY2ZUeXBlLmdldCgpLCBDRlNUUigiY29ycmVjdGlvbiIpLCBrQ0ZDb21wYXJl
Q2FzZUluc2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKKyAgICAgICAgcmV0dXJuIE5T
VGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb247CisKKyAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGNm
VHlwZS5nZXQoKSwgQ0ZTVFIoInJlZ3VsYXItZXhwcmVzc2lvbiIpLCBrQ0ZDb21wYXJlQ2FzZUlu
c2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKKyAgICAgICAgcmV0dXJuIE5TVGV4dENo
ZWNraW5nVHlwZVJlZ3VsYXJFeHByZXNzaW9uOworCisgICAgaWYgKENGU3RyaW5nQ29tcGFyZShj
ZlR5cGUuZ2V0KCksIENGU1RSKCJwaG9uZS1udW1iZXIiKSwga0NGQ29tcGFyZUNhc2VJbnNlbnNp
dGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pCisgICAgICAgIHJldHVybiBOU1RleHRDaGVja2lu
Z1R5cGVQaG9uZU51bWJlcjsKKworICAgIGlmIChDRlN0cmluZ0NvbXBhcmUoY2ZUeXBlLmdldCgp
LCBDRlNUUigidHJhbnNpdC1pbmZvcm1hdGlvbiIpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZl
KSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKKyAgICAgICAgcmV0dXJuIE5TVGV4dENoZWNraW5nVHlw
ZVRyYW5zaXRJbmZvcm1hdGlvbjsKKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBOU1RleHRDaGVja2luZ1R5cGVTcGVsbGluZzsKK30KKworQGltcGxlbWVudGF0aW9uIExh
eW91dFRlc3RUZXh0Q2hlY2tpbmdSZXN1bHQKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVHlw
ZTooTlNUZXh0Q2hlY2tpbmdUeXBlKXR5cGUgcmFuZ2U6KE5TUmFuZ2UpcmFuZ2UgcmVwbGFjZW1l
bnQ6KE5TU3RyaW5nICopcmVwbGFjZW1lbnQKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGlu
aXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF90eXBlID0gdHlwZTsKKyAgICBfcmFu
Z2UgPSByYW5nZTsKKyAgICBfcmVwbGFjZW1lbnQgPSByZXBsYWNlbWVudDsKKworICAgIHJldHVy
biBzZWxmOworfQorCistIChOU1JhbmdlKXJhbmdlCit7CisgICAgcmV0dXJuIF9yYW5nZTsKK30K
KworLSAoTlNUZXh0Q2hlY2tpbmdUeXBlKXJlc3VsdFR5cGUKK3sKKyAgICByZXR1cm4gX3R5cGU7
Cit9CisKKy0gKE5TU3RyaW5nICopcmVwbGFjZW1lbnRTdHJpbmcKK3sKKyAgICByZXR1cm4gX3Jl
cGxhY2VtZW50LmdldCgpOworfQorCistIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uCit7CisgICAg
cmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAICVwIHR5cGU9JXR1IHJhbmdl
PVsldHUsICV0dV0gcmVwbGFjZW1lbnQ9JyVAJz4iLCBzZWxmLmNsYXNzLCBzZWxmLCBfdHlwZSwg
X3JhbmdlLmxvY2F0aW9uLCBfcmFuZ2UubG9jYXRpb24gKyBfcmFuZ2UubGVuZ3RoLCBfcmVwbGFj
ZW1lbnQuZ2V0KCldOworfQorCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBMYXlvdXRUZXN0U3Bl
bGxDaGVja2VyIHsKKyAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIExheW91
dFRlc3RUZXh0Q2hlY2tpbmdSZXN1bHQgKj4+IF9yZXBsYWNlbWVudHM7Cit9CisKKysgKGluc3Rh
bmNldHlwZSlpbnN0YWxsSWZOZWNlc3NhcnkKK3sKKyAgICBhdXRvICpzcGVsbENoZWNrZXIgPSBl
bnN1cmVHbG9iYWxMYXlvdXRUZXN0U3BlbGxDaGVja2VyKCk7CisgICAgaWYgKGhhc0luc3RhbGxl
ZExheW91dFRlc3RTcGVsbENoZWNrZXIpCisgICAgICAgIHJldHVybiBzcGVsbENoZWNrZXI7CisK
KyAgICBvcmlnaW5hbFNoYXJlZFNwZWxsQ2hlY2tlck1ldGhvZCA9IGNsYXNzX2dldENsYXNzTWV0
aG9kKG9iamNfZ2V0TWV0YUNsYXNzKCJOU1NwZWxsQ2hlY2tlciIpLCBAc2VsZWN0b3Ioc2hhcmVk
U3BlbGxDaGVja2VyKSk7CisgICAgZ2xvYmFsbHlTd2l6emxlZFNoYXJlZFNwZWxsQ2hlY2tlcklt
cGxlbWVudGF0aW9uID0gbWV0aG9kX3NldEltcGxlbWVudGF0aW9uKG9yaWdpbmFsU2hhcmVkU3Bl
bGxDaGVja2VyTWV0aG9kLCByZWludGVycHJldF9jYXN0PElNUD4oZW5zdXJlR2xvYmFsTGF5b3V0
VGVzdFNwZWxsQ2hlY2tlcikpOworICAgIGhhc0luc3RhbGxlZExheW91dFRlc3RTcGVsbENoZWNr
ZXIgPSBZRVM7CisgICAgcmV0dXJuIHNwZWxsQ2hlY2tlcjsKK30KKworKyAodm9pZCl1bmluc3Rh
bGxBbmRSZXNldAoreworICAgIFtleGlzdGluZ0dsb2JhbExheW91dFRlc3RTcGVsbENoZWNrZXIo
KSByZXNldF07CisgICAgaWYgKCFoYXNJbnN0YWxsZWRMYXlvdXRUZXN0U3BlbGxDaGVja2VyKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtZXRob2Rfc2V0SW1wbGVtZW50YXRpb24ob3JpZ2luYWxT
aGFyZWRTcGVsbENoZWNrZXJNZXRob2QsIGdsb2JhbGx5U3dpenpsZWRTaGFyZWRTcGVsbENoZWNr
ZXJJbXBsZW1lbnRhdGlvbik7CisgICAgaGFzSW5zdGFsbGVkTGF5b3V0VGVzdFNwZWxsQ2hlY2tl
ciA9IE5POworfQorCistICh2b2lkKXJlc2V0Cit7CisgICAgc2VsZi5yZXBsYWNlbWVudHMgPSBu
aWw7CisgICAgc2VsZi5zcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZCA9IE5POworfQorCistIChO
U0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgTGF5b3V0VGVzdFRleHRDaGVja2luZ1Jlc3VsdCAqPiAq
KXJlcGxhY2VtZW50cworeworICAgIHJldHVybiBfcmVwbGFjZW1lbnRzLmdldCgpOworfQorCist
ICh2b2lkKXNldFJlcGxhY2VtZW50czooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIExheW91dFRl
c3RUZXh0Q2hlY2tpbmdSZXN1bHQgKj4gKilyZXBsYWNlbWVudHMKK3sKKyAgICBfcmVwbGFjZW1l
bnRzID0gYWRvcHROUyhyZXBsYWNlbWVudHMuY29weSk7Cit9CisKKy0gKHZvaWQpc2V0UmVwbGFj
ZW1lbnRzRnJvbUpTT2JqZWN0OihKU09iamVjdFJlZilyZXBsYWNlbWVudHMgaW5Db250ZXh0OihK
U0NvbnRleHRSZWYpY29udGV4dAoreworICAgIGF1dG8gZnJvbVByb3BlcnR5TmFtZSA9IGFkb3B0
KEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJmcm9tIikpOworICAgIGF1dG8gdG9Qcm9w
ZXJ0eU5hbWUgPSBhZG9wdChKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygidG8iKSk7Cisg
ICAgYXV0byB0eXBlUHJvcGVydHlOYW1lID0gYWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoInR5cGUiKSk7CisgICAgYXV0byByZXBsYWNlbWVudFByb3BlcnR5TmFtZSA9IGFkb3B0
KEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJyZXBsYWNlbWVudCIpKTsKKyAgICBhdXRv
IHByb3BlcnRpZXMgPSBKU09iamVjdENvcHlQcm9wZXJ0eU5hbWVzKGNvbnRleHQsIHJlcGxhY2Vt
ZW50cyk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBh
bGxvY10gaW5pdF0pOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBKU1Byb3Bl
cnR5TmFtZUFycmF5R2V0Q291bnQocHJvcGVydGllcyk7ICsraW5kZXgpIHsKKyAgICAgICAgSlNT
dHJpbmdSZWYgd29yZFRvUmVwbGFjZSA9IEpTUHJvcGVydHlOYW1lQXJyYXlHZXROYW1lQXRJbmRl
eChwcm9wZXJ0aWVzLCBpbmRleCk7CisgICAgICAgIEpTT2JqZWN0UmVmIHJlcGxhY2VtZW50ID0g
SlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgcmVw
bGFjZW1lbnRzLCB3b3JkVG9SZXBsYWNlLCBudWxscHRyKSwgbnVsbHB0cik7CisgICAgICAgIGxv
bmcgZnJvbVZhbHVlID0gbHJvdW5kbChKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgSlNPYmplY3RH
ZXRQcm9wZXJ0eShjb250ZXh0LCByZXBsYWNlbWVudCwgZnJvbVByb3BlcnR5TmFtZS5nZXQoKSwg
bnVsbHB0ciksIG51bGxwdHIpKTsKKyAgICAgICAgbG9uZyB0b1ZhbHVlID0gbHJvdW5kbChKU1Zh
bHVlVG9OdW1iZXIoY29udGV4dCwgSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCByZXBsYWNl
bWVudCwgdG9Qcm9wZXJ0eU5hbWUuZ2V0KCksIG51bGxwdHIpLCBudWxscHRyKSk7CisgICAgICAg
IGF1dG8gdHlwZVZhbHVlID0gYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBKU09i
amVjdEdldFByb3BlcnR5KGNvbnRleHQsIHJlcGxhY2VtZW50LCB0eXBlUHJvcGVydHlOYW1lLmdl
dCgpLCBudWxscHRyKSwgbnVsbHB0cikpOworICAgICAgICBhdXRvIHJlcGxhY2VtZW50VmFsdWUg
PSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIHJlcGxhY2VtZW50LCByZXBsYWNlbWVudFBy
b3BlcnR5TmFtZS5nZXQoKSwgbnVsbHB0cik7CisgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gcmVwbGFjZW1lbnRUZXh0OworICAgICAgICBpZiAoIUpTVmFsdWVJc1VuZGVmaW5lZChjb250
ZXh0LCByZXBsYWNlbWVudFZhbHVlKSkgeworICAgICAgICAgICAgYXV0byByZXBsYWNlbWVudEpT
U3RyaW5nID0gYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCByZXBsYWNlbWVudFZh
bHVlLCBudWxscHRyKSk7CisgICAgICAgICAgICByZXBsYWNlbWVudFRleHQgPSBhZG9wdENGKEpT
U3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlcGxhY2VtZW50SlNTdHJp
bmcuZ2V0KCkpKTsKKyAgICAgICAgfQorICAgICAgICBhdXRvIHNwZWxsQ2hlY2tSZXN1bHQgPSBh
ZG9wdE5TKFtbTGF5b3V0VGVzdFRleHRDaGVja2luZ1Jlc3VsdCBhbGxvY10gaW5pdFdpdGhUeXBl
Om5zVGV4dENoZWNraW5nVHlwZShXVEZNb3ZlKHR5cGVWYWx1ZSkpIHJhbmdlOk5TTWFrZVJhbmdl
KGZyb21WYWx1ZSwgdG9WYWx1ZSAtIGZyb21WYWx1ZSkgcmVwbGFjZW1lbnQ6KE5TU3RyaW5nICop
cmVwbGFjZW1lbnRUZXh0LmdldCgpXSk7CisgICAgICAgIGF1dG8gY2ZXb3JkVG9SZXBsYWNlID0g
YWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB3b3JkVG9S
ZXBsYWNlKSk7CisgICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0OnNwZWxsQ2hlY2tSZXN1bHQuZ2V0
KCkgZm9yS2V5OihOU1N0cmluZyAqKWNmV29yZFRvUmVwbGFjZS5nZXQoKV07CisgICAgfQorICAg
IEpTUHJvcGVydHlOYW1lQXJyYXlSZWxlYXNlKHByb3BlcnRpZXMpOworCisgICAgX3JlcGxhY2Vt
ZW50cyA9IFdURk1vdmUocmVzdWx0KTsKK30KKworLSAoTlNBcnJheTxOU1RleHRDaGVja2luZ1Jl
c3VsdCAqPiAqKWNoZWNrU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZ1RvQ2hlY2sgcmFuZ2U6KE5T
UmFuZ2UpcmFuZ2UgdHlwZXM6KE5TVGV4dENoZWNraW5nVHlwZXMpY2hlY2tpbmdUeXBlcyBvcHRp
b25zOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopb3B0aW9ucyBpblNwZWxsRG9jdW1l
bnRXaXRoVGFnOihOU0ludGVnZXIpdGFnIG9ydGhvZ3JhcGh5OihOU09ydGhvZ3JhcGh5ICoqKW9y
dGhvZ3JhcGh5IHdvcmRDb3VudDooTlNJbnRlZ2VyICopd29yZENvdW50Cit7CisgICAgaWYgKGF1
dG8gKnJlc3VsdCA9IFtfcmVwbGFjZW1lbnRzIG9iamVjdEZvcktleTpzdHJpbmdUb0NoZWNrXSkK
KyAgICAgICAgcmV0dXJuIEBbIHJlc3VsdCBdOworCisgICAgcmV0dXJuIFtzdXBlciBjaGVja1N0
cmluZzpzdHJpbmdUb0NoZWNrIHJhbmdlOnJhbmdlIHR5cGVzOmNoZWNraW5nVHlwZXMgb3B0aW9u
czpvcHRpb25zIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6dGFnIG9ydGhvZ3JhcGh5Om9ydGhvZ3Jh
cGh5IHdvcmRDb3VudDp3b3JkQ291bnRdOworfQorCistICh2b2lkKXJlY29yZFJlc3BvbnNlOihO
U0NvcnJlY3Rpb25SZXNwb25zZSlyZXNwb25zZSB0b0NvcnJlY3Rpb246KE5TU3RyaW5nICopY29y
cmVjdGlvbiBmb3JXb3JkOihOU1N0cmluZyAqKXdvcmQgbGFuZ3VhZ2U6KE5TU3RyaW5nICopbGFu
Z3VhZ2UgaW5TcGVsbERvY3VtZW50V2l0aFRhZzooTlNJbnRlZ2VyKXRhZworeworICAgIGlmIChf
c3BlbGxDaGVja2VyTG9nZ2luZ0VuYWJsZWQpCisgICAgICAgIHByaW50ZigiTlNTcGVsbENoZWNr
ZXIgcmVjb3JkUmVzcG9uc2VUb0NvcnJlY3Rpb246ICVzIC0+ICVzIChyZXNwb25zZTogJXMpXG4i
LCBbd29yZCBVVEY4U3RyaW5nXSwgW2NvcnJlY3Rpb24gVVRGOFN0cmluZ10sIHN0cmluZ0ZvckNv
cnJlY3Rpb25SZXNwb25zZShyZXNwb25zZSkpOworCisgICAgW3N1cGVyIHJlY29yZFJlc3BvbnNl
OnJlc3BvbnNlIHRvQ29ycmVjdGlvbjpjb3JyZWN0aW9uIGZvcldvcmQ6d29yZCBsYW5ndWFnZTps
YW5ndWFnZSBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOnRhZ107Cit9CisKK0BlbmQKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVz
dFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDhiYmExMGRiNmE1Y2RmMmYz
ZTJlMDM0Y2M0YzRlOTQzODhhZWMwNWIuLjE5NDBmNWJlNTM5YTUwMjhlZDc0OTg5ODdiYjIzMTMx
NDY4MDNjNjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1
bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzMsNiAr
MTMzLDcgQEAKIAkJRTEzMkFBM0QxN0NFNzc2RjAwNjExREYwIC8qIFdlYktpdFRlc3RSdW5uZXJF
dmVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUx
MzJBQTNCMTdDRTc3NkYwMDYxMURGMCAvKiBXZWJLaXRUZXN0UnVubmVyRXZlbnQubW0gKi87IH07
CiAJCUUxQzY0MkMzMTdDQkNDNzMwMEQ2NkEzQyAvKiBQb3NlQXNDbGFzcy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQzY0MkMxMTdDQkNDNzMwMEQ2
NkEzQyAvKiBQb3NlQXNDbGFzcy5tbSAqLzsgfTsKIAkJRTFDNjQyQzYxN0NCQ0Q0QzAwRDY2QTND
IC8qIFdlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFDNjQyQzQxN0NCQ0Q0QzAwRDY2QTNDIC8qIFdlYktp
dFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tICovOyB9OworCQlGNEMzNTc4QzIwRTg0NDQ2MDBGQTA3
NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0QzM1NzhBMjBFODQ0NDAwMEZBMDc0OCAvKiBMYXlvdXRU
ZXN0U3BlbGxDaGVja2VyLm1tICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICov
CiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC0zNzIsNiAr
MzczLDggQEAKIAkJRTFDNjQyQzIxN0NCQ0M3MzAwRDY2QTNDIC8qIFBvc2VBc0NsYXNzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvc2VBc0NsYXNzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUxQzY0MkM0MTdDQkNENEMwMEQ2NkEzQyAvKiBXZWJLaXRUZXN0
UnVubmVyUGFzdGVib2FyZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMUM2NDJDNTE3Q0JDRDRDMDBENjZBM0MgLyogV2ViS2l0VGVzdFJ1bm5lclBhc3Rl
Ym9hcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0VGVzdFJ1bm5l
clBhc3RlYm9hcmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjRDMzU3OEEyMEU4
NDQ0MDAwRkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tOyBwYXRo
ID0gLi4vVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNEMzNTc4QjIwRTg0NDQwMDBGQTA3NDggLyog
TGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLmg7IHBhdGggPSAuLi9UZXN0UnVubmVyU2hhcmVkL2Nv
Y29hL0xheW91dFRlc3RTcGVsbENoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3
b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtNDc5LDYgKzQ4Miw3IEBACiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTBGMThFNzFCMUQ2QkM0RTYwMDI3RTU0NyAv
KiBCaW5kaW5ncyAqLywKKwkJCQlGNEI2QzMxNjIwRTg0MzY5MDA4QUMyMjUgLyogY29jb2EgKi8s
CiAJCQkJMEY3M0I1NDcxQkE3ODJGRTAwNEIzRUY0IC8qIFVJU2NyaXB0Q29udGV4dCAqLywKIAkJ
CQkzMTQ4QTA1MzFFNkY4NUI2MDBEM0IzMTYgLyogSU9TTGF5b3V0VGVzdENvbW11bmljYXRpb24u
Y3BwICovLAogCQkJCTMxNDhBMDU0MUU2Rjg1QjYwMEQzQjMxNiAvKiBJT1NMYXlvdXRUZXN0Q29t
bXVuaWNhdGlvbi5oICovLApAQCAtODIyLDYgKzgyNiwxNSBAQAogCQkJbmFtZSA9IFNoYXJlZDsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUY0QjZDMzE2MjBFODQzNjkwMDhB
QzIyNSAvKiBjb2NvYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAo
CisJCQkJRjRDMzU3OEIyMEU4NDQ0MDAwRkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIu
aCAqLywKKwkJCQlGNEMzNTc4QTIwRTg0NDQwMDBGQTA3NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hl
Y2tlci5tbSAqLywKKwkJCSk7CisJCQluYW1lID0gY29jb2E7CisJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOworCQl9OwogLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJY
SGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtMTA0Niw2ICsxMDU5LDcgQEAKIAkJCQkz
MURBOEEzRDFFNzIwNUNDMDBFMURGMkYgLyogSU9TTGF5b3V0VGVzdENvbW11bmljYXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3M0I1NTExQkE3ODk2ODAwNEIzRUY0IC8qIEpTVUlTY3Jp
cHRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMThFNzE4MUQ2QkM0NTYwMDI3
RTU0NyAvKiBKU1dyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjRDMzU3OEMyMEU4NDQ0
NjAwRkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIubW0gaW4gU291cmNlcyAqLywKIAkJ
CQlBMTg1MTAzQzFCOUFFMEZFMDA3NDRBRUIgLyogT3B0aW9ucy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBMTg1MTA0MDFCOUFFMTMxMDA3NDRBRUIgLyogUGl4ZWxEdW1wU3VwcG9ydC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkyREZBOTg0OTFEN0Y3MENGMDBBRkYyQzkgLyogU2hhcmVkRXZlbnRT
dHJlYW1zTWFjLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjA3Yzg3OWNjNmY2YWFkYWI0OTZh
NjM1YzcyMjFiYjZlNDA5ZGYzOC4uYjlmNTY5ZWE5ZWRjNmEzNGIyZGM2YTE0ZWQ4MTQwNmRkYWEy
NzgxOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE4LTA2LTMwICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gVGV4dCByZXBsYWNlbWVu
dHMgdGhhdCBlbmQgd2l0aCBzeW1ib2xzIGFyZSBleHBhbmRlZCBpbW1lZGlhdGVseQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3MjI1CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS80MTExMjQzMz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRzIGEgbGF5b3V0IHRlc3QgdG8gY2hlY2sgdGhhdCBpZiBh
IHVzZXIgaGFzIGNvbmZpZ3VyZWQgYSB0ZXh0IHJlcGxhY2VtZW50IHRoYXQgZW5kcyB3aXRoIHB1
bmN0dWF0aW9uLCB0aGVuOgorICAgICAgICAxLiBUeXBpbmcgdGhhdCB0ZXh0IHJlcGxhY2VtZW50
IHdvbid0IGltbWVkaWF0ZWx5IHRyaWdnZXIgcmVwbGFjZW1lbnQuCisgICAgICAgIDIuIFRleHQg
cmVwbGFjZW1lbnQgaXMgdHJpZ2dlcmVkIGFmdGVyIHByZXNzaW5nIGVudGVyLgorCisgICAgICAg
ICogZWRpdGluZy9zcGVsbGluZy90ZXh0LXJlcGxhY2VtZW50LWFmdGVyLXR5cGluZy10by13b3Jk
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy90ZXh0LXJl
cGxhY2VtZW50LWFmdGVyLXR5cGluZy10by13b3JkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIv
VGVzdEV4cGVjdGF0aW9uczoKKwogMjAxOC0wNi0yOSAgQW50b2luZSBRdWludCAgPGdyYW91dHNA
YXBwbGUuY29tPgogCiAgICAgICAgIFtXZWIgQW5pbWF0aW9uc10gTWFrZSBXUFQgdGVzdCBhdCB0
aW1pbmctbW9kZWwvdGltZWxpbmVzL2RvY3VtZW50LXRpbWVsaW5lcy5odG1sIHBhc3MgcmVsaWFi
bHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvdGV4dC1yZXBsYWNl
bWVudC1hZnRlci10eXBpbmctdG8td29yZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NwZWxsaW5nL3RleHQtcmVwbGFjZW1lbnQtYWZ0ZXItdHlwaW5nLXRvLXdvcmQtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE4M2ViMTA3YmY4MTY4MmUyMmQ2MmFhOGYxYmVlMmEwNGM5Yjlm
ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3RleHQt
cmVwbGFjZW1lbnQtYWZ0ZXItdHlwaW5nLXRvLXdvcmQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
OCBAQAorQmVmb3JlIHByZXNzaW5nIGVudGVyOgorUEFTUyBlZGl0b3IudGV4dENvbnRlbnQgaXMg
J1lUPycKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
WW91IHRoZXJlPworCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcv
dGV4dC1yZXBsYWNlbWVudC1hZnRlci10eXBpbmctdG8td29yZC5odG1sIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zcGVsbGluZy90ZXh0LXJlcGxhY2VtZW50LWFmdGVyLXR5cGluZy10by13b3JkLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOGM5NDk1ZDg2NjJmMDZmZDlmZjE3YzM2MDc1MmU3NDJkMzI5MmJlNwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvdGV4dC1yZXBs
YWNlbWVudC1hZnRlci10eXBpbmctdG8td29yZC5odG1sCkBAIC0wLDAgKzEsNjMgQEAKKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9lZGl0aW5nLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworZnVuY3Rpb24gemVyb0RlbGF5VGltZXIoKQorewor
ICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMCkp
OworfQorCithc3luYyBmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBpZiAod2luZG93LmludGVy
bmFscykgeworICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2Vy
RW5hYmxlZCh0cnVlKTsKKyAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5jaHJvbm91
c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGZhbHNlKTsKKyAgICAgICAgaW50ZXJuYWxzLnNldEF1dG9t
YXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQodHJ1ZSk7CisgICAgICAgIGludGVybmFscy5zZXRB
dXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKHRydWUpOworICAgICAgICB0ZXN0UnVu
bmVyLnNldFNwZWxsQ2hlY2tlclRleHRSZXBsYWNlbWVudHMoeworICAgICAgICAgICAgIllUPyI6
IHsKKyAgICAgICAgICAgICAgICAicmVwbGFjZW1lbnQiOiAiWW91IHRoZXJlPyIsCisgICAgICAg
ICAgICAgICAgInR5cGUiOiAicmVwbGFjZW1lbnQiLAorICAgICAgICAgICAgICAgICJmcm9tIjog
MCwKKyAgICAgICAgICAgICAgICAidG8iOiAzCisgICAgICAgICAgICB9LAorICAgICAgICAgICAg
IllUP1xuIjogeworICAgICAgICAgICAgICAgICJyZXBsYWNlbWVudCI6ICJZb3UgdGhlcmU/IiwK
KyAgICAgICAgICAgICAgICAidHlwZSI6ICJyZXBsYWNlbWVudCIsCisgICAgICAgICAgICAgICAg
ImZyb20iOiAwLAorICAgICAgICAgICAgICAgICJ0byI6IDMKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSk7CisgICAgfQorCisgICAgY29uc3QgZWRpdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImVkaXRvciIpOworICAgIGVkaXRvci5mb2N1cygpOworICAgIGZvciAoY29uc3QgY2hhcmFj
dGVyIG9mICJZVD8iKQorICAgICAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZChjaGFyYWN0ZXIpOwor
ICAgIGF3YWl0IHplcm9EZWxheVRpbWVyKCk7CisKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgICAgIGRlc2NyaXB0aW9uLmlubmVySFRNTCA9IGBUbyBtYW51YWxseSB0ZXN0LCBh
ZGQgYW4gYXV0b21hdGljIHRleHQgcmVwbGFjZW1lbnQgbWFwcGluZyBmcm9tIHRoZSBzdHJpbmcg
IllUPyIgdG8KKyAgICAgICAgIllvdSB0aGVyZT8iLCBhbmQgdGhlbiB0eXBlIHRoZSBzdHJpbmcg
IllUPyIuIEl0IHNob3VsZCBub3QgYmUgaW1tZWRpYXRlbHkgY29ycmVjdGVkIHRvICJZb3UgdGhl
cmU/Ii4KKyAgICAgICAgSG93ZXZlciwgZW50ZXJpbmcgYSBuZXdsaW5lIHNob3VsZCBzdWJzZXF1
ZW50bHkgdHJpZ2dlciBhdXRvY29ycmVjdGlvbi5gOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgZGVidWcoIkJlZm9yZSBwcmVzc2luZyBlbnRlcjoiKTsKKyAgICBzaG91bGRCZSgiZWRp
dG9yLnRleHRDb250ZW50IiwgIidZVD8nIik7CisgICAgaW5zZXJ0UGFyYWdyYXBoQ29tbWFuZCgp
OworICAgIGF3YWl0IHplcm9EZWxheVRpbWVyKCk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9Cis8
L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAgICA8ZGl2IGNvbnRlbnRlZGl0YWJsZSBzdHlsZT0i
bWFyZ2luLWJvdHRvbTogMWVtOyBib3JkZXI6IDFweCBvcmFuZ2UgZGFzaGVkOyIgaWQ9ImVkaXRv
ciI+PC9kaXY+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mv
VGVzdEV4cGVjdGF0aW9ucwppbmRleCA3ZmFhOGRkNmEyY2YxMzc3M2Y2NWYyNzgyNTljMDA2NDJi
M2VmZTRkLi44MDhkYTEzOWU5ZTYwNWFjMzk5ODY1ZWJiYzgwMmQ4ODgyYjQ1Y2ZkIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTEwLDYgKzExMCw5IEBA
IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbWFya2Vycy1pbi1vdmVybGFwcGluZy1saW5lcy1s
YXJnZS1mb250Lmh0bWwgWyBXb250Rml4CiBmYXN0L3dyaXRpbmctbW9kZS9lbmdsaXNoLWJ0LXRl
eHQtd2l0aC1zcGVsbGluZy1tYXJrZXIuaHRtbCBbIFdvbnRGaXggXQogZmFzdC93cml0aW5nLW1v
ZGUvZW5nbGlzaC1ybC10ZXh0LXdpdGgtc3BlbGxpbmctbWFya2VyLmh0bWwgWyBXb250Rml4IF0K
IAorIyBSZXF1aXJlcyBzdXBwb3J0IGZvciB0ZXN0aW5nIHRleHQgcmVwbGFjZW1lbnQKK2VkaXRp
bmcvc3BlbGxpbmcvdGV4dC1yZXBsYWNlbWVudC1hZnRlci10eXBpbmctdG8td29yZC5odG1sIFsg
U2tpcCBdCisKICMgVUlLaXQgZHJhd3Mgc2VsZWN0aW9uIG9uIGlPUwogZmFzdC9zZWxlY3RvcnMv
aW5wdXQtd2l0aC1zZWxlY3Rpb24tcHNldWRvLWVsZW1lbnQuaHRtbCBbIFdvbnRGaXggXQogZmFz
dC9zZWxlY3RvcnMvc2VsZWN0aW9uLXdpbmRvdy1pbmFjdGl2ZS5odG1sIFsgV29udEZpeCBdCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNDNj
YTcxNmE4NGYxNDIwNDM3NmZmMTIwMWUzMzA4OGZkZWZhOTYxMy4uYjIzNGUyMDQwMDFlNjQ0NDQ5
NTJhOTliYjFkZTMxMGE1NTVhMjc3NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTgwLDYgKzE4MCw3IEBAIHdlYmtpdC5vcmcvYi8xMDU2
MTYgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXdoaXRlc3BhY2Utc2VsZWN0aW9uLmh0
bWwKIHdlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9zcGVsbGluZy9ncmFtbWFyLmh0bWwKIHdl
YmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9zcGVsbGluZy9tYXJrZXJzLmh0bWwKIHdlYmtpdC5v
cmcvYi8xMDU2MTYgZWRpdGluZy9zcGVsbGluZy9yZXRyby1jb3JyZWN0aW9uLXNwZWxsaW5nLW1h
cmtlcnMuaHRtbAord2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL3NwZWxsaW5nL3RleHQtcmVw
bGFjZW1lbnQtYWZ0ZXItdHlwaW5nLXRvLXdvcmQuaHRtbAogd2Via2l0Lm9yZy9iLzEwNTYxNiBl
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW1hcmtlcnMtYWZ0ZXItcGFzdGluZy1zZW50ZW5jZS5o
dG1sCiB3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvbWFjL3NwZWxsaW5nL2F1dG9jb3JyZWN0
aW9uLWRlbGV0ZS5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcv
bWFjL3NwZWxsaW5nL2F1dG9jb3JyZWN0aW9uLXJlbW92aW5nLXVuZGVybGluZS1hZnRlci1wYXN0
ZS5odG1sIFsgRmFpbHVyZSBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344041</attachid>
            <date>2018-06-30 21:20:50 -0700</date>
            <delta_ts>2018-06-30 21:26:39 -0700</delta_ts>
            <desc>More 32-bit build fixes</desc>
            <filename>bug-187225-20180630212049.patch</filename>
            <type>text/plain</type>
            <size>71450</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzNDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWUyMjM5NDVhN2ZiNzU1
NWFiY2M5MmQ3MzhjNGEyZmJiM2E3MTdlMS4uNzliODJhNzMyYjFjMDkyMTRjYjE3ZGE0ZTYwNjkx
YjI2YzI0NDRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDE4LTA2LTMwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gVGV4
dCByZXBsYWNlbWVudHMgdGhhdCBlbmQgd2l0aCBzeW1ib2xzIGFyZSBleHBhbmRlZCBpbW1lZGlh
dGVseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3
MjI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MTExMjQzMz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBzaGlwcGluZyBTYWZhcmksIGVuYWJs
aW5nIGdyYW1tYXIgY29ycmVjdGlvbiBjYXVzZXMgdGV4dCBzaG9ydGN1dHMgdGhhdCBlbmQgd2l0
aCBzeW1ib2xzIG9yIHB1bmN0dWF0aW9uIG1hcmtzCisgICAgICAgIHRvIGltbWVkaWF0ZWx5IHRy
aWdnZXIgd2hlbiB0eXBpbmc7IG5vcm1hbGx5LCB3aGVuIGdyYW1tYXIgY29ycmVjdGlvbiBpcyBv
ZmYsIHRoaXMgaXMgb25seSB0cmlnZ2VyZWQgYWZ0ZXIgdGhlCisgICAgICAgIHVzZXIgaGFzIGFk
ZGl0aW9uYWxseSBpbnNlcnRlZCBhIHB1bmN0dWF0aW9uIG1hcmsgb3Igd2hpdGVzcGFjZSBjaGFy
YWN0ZXIgYWZ0ZXIgdGhlIHJlcGxhY2VkIHRleHQuCisKKyAgICAgICAgVGhpcyBidWcgaGFwcGVu
cyBiZWNhdXNlIGVuYWJsaW5nIGdyYW1tYXIgY2hlY2tpbmcgY2F1c2VzIHRoZSBzcGVsbCBjaGVj
a2luZyByYW5nZSB0byBleHBhbmQgdG8gdGhlIHJhbmdlIG9mIHRoZQorICAgICAgICBmdWxsIHNl
bnRlbmNlLCBzbyBhbnkgdGV4dCBjaGVja2luZyByZXN1bHRzIHRoYXQgcmVwbGFjZSBhbiBleGlz
dGluZyByYW5nZSBhcmUgdHJpZ2dlcmVkIGFzIGxvbmcgYXMgdGhleSBlbmQKKyAgICAgICAgYW55
d2hlcmUgaW4gdGhlIHNlbnRlbmNlLiBJbiBjb250cmFzdCwgd2hlbiBncmFtbWFyIGNoZWNraW5n
IGlzIGRpc2FibGVkLCB0aGUgc3BlbGwgY2hlY2tpbmcgcmFuZ2UgaXMgbGltaXRlZCB0bworICAg
ICAgICB0aGUgbmVhcmVzdCBhZGphY2VudCB3b3JkLCB3aGljaCBwcmV2ZW50cyB0ZXh0IHJlcGxh
Y2VtZW50IGZyb20gb2NjdXJyaW5nIGVsc2V3aGVyZSBpbiB0aGUgc2VudGVuY2UuCisKKyAgICAg
ICAgSG93ZXZlciwgYWZ0ZXIgcjIzMjUzMCwgd2Ugbm93IGFsd2F5cyBleHBhbmQgdGhlIHNwZWxs
IGNoZWNraW5nIHJhbmdlIHRvIHRoZSBleHRlbnQgb2YgdGhlIHNlbnRlbmNlIHdoZW4gYSB3b3Jk
CisgICAgICAgIGlzIHR5cGVkIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBncmFtbWFyIGNoZWNraW5n
IGlzIGVuYWJsZWQsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIGlzc3VlIGRlc2NyaWJlZCBhYm92ZSBu
b3cKKyAgICAgICAgaGFwcGVucyBldmVyeXdoZXJlLiBUbyBmaXggdGhpcyByZWNlbnQgcmVncmVz
c2lvbiBhbmQgdGhlIGV4aXN0aW5nIGJ1Zywgd2U6CisKKyAgICAgICAgLSAgIEF1Z21lbnQgb3Vy
IHNwZWxsY2hlY2tpbmcgY29kZXBhdGhzIHRvIGluY2x1ZGUgYSBuZXcgYXV0b21hdGljIHRleHQg
cmVwbGFjZW1lbnQgcmFuZ2UsIGFsb25nc2lkZQorICAgICAgICAgICAgc3BlbGxjaGVja2luZyBh
bmQgcGFyYWdyYXBoIHJhbmdlcy4KKyAgICAgICAgLSAgIExldCB0aGlzIGF1dG9tYXRpYyB0ZXh0
IHJlcGxhY2VtZW50IHJhbmdlIGJlIHRoZSByYW5nZSBvZiB0aGUgYWRqYWNlbnQgd29yZCBpbiB0
aGUgY2FzZSB3aGVyZSB0aGUgdXNlciBoYXMKKyAgICAgICAgICAgIGZpbmlzaGVkIHR5cGluZyBh
IHdvcmQuCisgICAgICAgIC0gICBXaGVuIG1hcmtpbmcgYW5kIHJlcGxhY2luZyB0ZXh0IGNoZWNr
aW5nIHJlc3VsdHMsIGNvbnN1bHQgdGhpcyBuZXcgYXV0b21hdGljIHRleHQgcmVwbGFjZW1lbnQg
aW5zdGVhZCBvZiB0aGUKKyAgICAgICAgICAgIHNwZWxsY2hlY2tpbmcgcmFuZ2UuCisKKyAgICAg
ICAgVGhpcyBrZWVwcyB0aGUgYmVoYXZpb3IgZ3JhbW1hciBhbmQgc2VudGVuY2UgcmV0cm8gY29y
cmVjdGlvbiByZXN1bHRzIGludGFjdCwgd2hpbGUgbGltaXRpbmcgdGhlIHNjb3BlIGluIHdoaWNo
CisgICAgICAgIHRleHQgcmVwbGFjZW1lbnQgcmVzdWx0cyBhcmUgYXBwbGllZC4KKworICAgICAg
ICBUZXN0OiBlZGl0aW5nL3NwZWxsaW5nL3RleHQtcmVwbGFjZW1lbnQtYWZ0ZXItdHlwaW5nLXRv
LXdvcmQuaHRtbAorCisgICAgICAgICogZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnRpbWVy
RmlyZWQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6cmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZCk6CisKKyAgICAgICAg
UGFzcyBpbiB0aGUgYWRqYWNlbnQgd29yZCByYW5nZSBmb3IgdGhlIGBhdXRvbWF0aWNSZXBsYWNl
bWVudFJhbmdlYCwgaW5zdGVhZCBvZiB0aGUgc3BlbGwgY2hlY2tpbmcgcmFuZ2UgKHdoaWNoCisg
ICAgICAgIG1heSBiZSBleHRlbmRlZCB0byB0aGUgZnVsbCByYW5nZSBvZiB0aGUgc2VudGVuY2Up
LgorCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRH
cmFtbWFySW5SYW5nZXMpOgorCisgICAgICAgIEFkZCBhbiBgYXV0b21hdGljUmVwbGFjZW1lbnRS
YW5nZWAgYXJndW1lbnQgdG8gbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdl
cywgYW5kIGFkanVzdCBjYWxsIHNpdGVzCisgICAgICAgIHRvIHBhc3MgaW4gYSByYW5nZSAoZ2Vu
ZXJhbGx5IHRoZSBzYW1lIGFzIHRoZSBzcGVsbCBjaGVja2luZyByYW5nZSwgYnV0IGluIHRoZSBj
YXNlIHdoZXJlIGEgd29yZCBoYXMgYmVlbiB0eXBlZCwKKyAgICAgICAgdGhpcyBpcyBhIG5hcnJv
d2VyIHJhbmdlKS4KKworICAgICAgICAoV2ViQ29yZTo6Y29ycmVjdFNwZWxsY2hlY2tpbmdQcmVz
ZXJ2aW5nVGV4dENoZWNraW5nUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
bWFya0FuZFJlcGxhY2VGb3IpOgorCisgICAgICAgIFdoZW4gcmVwbGFjaW5nIHRleHQsIG9ubHkg
YWxsb3cgdGV4dCByZXBsYWNlbWVudCBpbiB0aGUgYXV0b21hdGljIHJlcGxhY2VtZW50IHJhbmdl
IHJhdGhlciB0aGFuIHRoZSBzcGVsbAorICAgICAgICBjaGVja2luZyByYW5nZS4KKworICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcik6CisgICAg
ICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsQ2hlY2tlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrUmVxdWVzdDo6U3BlbGxDaGVja1JlcXVl
c3QpOgorCisgICAgICAgIEFkZCBhIG5ldyB2ZXJzaW9uIG9mIHRoaXMgY29uc3RydWN0b3IgdGhh
dCB0YWtlcyBhIHNpbmdsZSBSYW5nZSByZXByZXNlbnRpbmcgYm90aCB0aGUgc3BlbGxjaGVja2lu
ZyByYW5nZSBhbmQKKyAgICAgICAgdGhlIGF1dG9tYXRpYyB0ZXh0IHJlcGxhY2VtZW50IHJhbmdl
LCBmb3IgY29udmVuaWVuY2UuCisKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tSZXF1ZXN0
OjpjcmVhdGUpOgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxDaGVja2VyLmg6CisKKyAgICAgICAg
QWRkIHBsdW1iaW5nIGZvciB0aGUgYXV0b21hdGljIHJlcGxhY2VtZW50IHJhbmdlLgorCisgICAg
ICAgIChXZWJDb3JlOjpTcGVsbENoZWNrUmVxdWVzdDo6YXV0b21hdGljUmVwbGFjZW1lbnRSYW5n
ZSBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwOgorCisg
ICAgICAgIEFkZCBwbHVtYmluZyBmb3IgdGhlIGF1dG9tYXRpYyByZXBsYWNlbWVudCByYW5nZSwg
YW5kIG5ldyBoZWxwZXJzIHRvIGxvY2F0ZSB0aGUgcmFuZ2UgYXMgb2Zmc2V0cyB3aXRoaW4gdGhl
CisgICAgICAgIHRleHQgY2hlY2tpbmcgcGFyYWdyYXBoIHJhbmdlLgorCisgICAgICAgIChXZWJD
b3JlOjpUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OlRleHRDaGVja2luZ1BhcmFncmFwaCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmF1dG9tYXRpY1JlcGxhY2VtZW50
U3RhcnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nUGFyYWdyYXBoOjph
dXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9UZXh0
Q2hlY2tpbmdIZWxwZXIuaDoKKwogMjAxOC0wNi0zMCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtMRkNdIERvIG5vdCBhZGQgdGhlIGNvbnRhaW5pbmcgYmxvY2sn
cyBvZmZzZXQgd2hpbGUgY29tcHV0aW5nIHRoZSBvdXQtb2YtZmxvdyBzdGF0aWMgcG9zaXRpb24u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyLmNwcAppbmRleCBkNDUzZjY0NDBhZDQ2ZWJlMzBhMGNiYTllYWUyMjI3NDFhNWFiZjQyLi5h
OTQ2ZjUxMzZjNGFmMjVmMGEwNjJhOWE2YTM1NDkzZjVlN2M0NmRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKQEAgLTI4
Myw3ICsyODMsOCBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnRpbWVyRmlyZWQo
KQogICAgICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQoc2VsZWN0aW9uLnN0YXJ0KCksIHNlbGVj
dGlvbi5hZmZpbml0eSgpKTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHAgPSBzdGFydE9mV29y
ZChzdGFydCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpOwogICAgICAgICBWaXNpYmxlU2VsZWN0aW9u
IGFkamFjZW50V29yZHMgPSBWaXNpYmxlU2VsZWN0aW9uKHAsIHN0YXJ0KTsKLSAgICAgICAgbV9m
cmFtZS5lZGl0b3IoKS5tYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRl
eHRDaGVja2luZ1R5cGVTcGVsbGluZyB8IFRleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCB8IFRl
eHRDaGVja2luZ1R5cGVTaG93Q29ycmVjdGlvblBhbmVsLCBhZGphY2VudFdvcmRzLnRvTm9ybWFs
aXplZFJhbmdlKCkuZ2V0KCksIDApOworICAgICAgICBhdXRvIGFkamFjZW50V29yZFJhbmdlID0g
YWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6ZWRSYW5nZSgpOworICAgICAgICBtX2ZyYW1lLmVkaXRv
cigpLm1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5n
VHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50IHwgVGV4dENoZWNraW5n
VHlwZVNob3dDb3JyZWN0aW9uUGFuZWwsIGFkamFjZW50V29yZFJhbmdlLmdldCgpLCBhZGphY2Vu
dFdvcmRSYW5nZS5nZXQoKSwgbnVsbHB0cik7CiAgICAgfQogICAgICAgICBicmVhazsKICAgICBj
YXNlIEFsdGVybmF0aXZlVGV4dFR5cGVSZXZlcnNpb246IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAppbmRleCAwYzcxNjMyODUzNDBhYTUxNDQ0MzJlYTYyNjQwNTgzMjA5YzY4MGQ3Li5iYzMy
ZTFmNzU0N2Q1ODU0ZWJlYzUyMmZjMDA3ZmVjMDBmNDczOWE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCkBAIC02NjcsNyArNjY3LDcgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VTZWxlY3Rp
b25XaXRoRnJhZ21lbnQoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIGJvb2wgc2VsZWMKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgYXV0byByYW5nZVRvQ2hlY2sgPSBSYW5nZTo6Y3JlYXRlKGRv
Y3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk5vZGUobm9kZVRvQ2hlY2spLCBsYXN0UG9zaXRpb25J
bk5vZGUobm9kZVRvQ2hlY2spKTsKLSAgICBpZiAoYXV0byByZXF1ZXN0ID0gU3BlbGxDaGVja1Jl
cXVlc3Q6OmNyZWF0ZShyZXNvbHZlVGV4dENoZWNraW5nVHlwZU1hc2soKm5vZGVUb0NoZWNrLCBU
ZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgfCBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hciksIFRleHRD
aGVja2luZ1Byb2Nlc3NCYXRjaCwgcmFuZ2VUb0NoZWNrLmNvcHlSZWYoKSwgcmFuZ2VUb0NoZWNr
LmNvcHlSZWYoKSkpCisgICAgaWYgKGF1dG8gcmVxdWVzdCA9IFNwZWxsQ2hlY2tSZXF1ZXN0Ojpj
cmVhdGUocmVzb2x2ZVRleHRDaGVja2luZ1R5cGVNYXNrKCpub2RlVG9DaGVjaywgVGV4dENoZWNr
aW5nVHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZUdyYW1tYXIpLCBUZXh0Q2hlY2tpbmdQ
cm9jZXNzQmF0Y2gsIHJhbmdlVG9DaGVjay5jb3B5UmVmKCksIHJhbmdlVG9DaGVjay5jb3B5UmVm
KCksIHJhbmdlVG9DaGVjay5jb3B5UmVmKCkpKQogICAgICAgICBtX3NwZWxsQ2hlY2tlci0+cmVx
dWVzdENoZWNraW5nRm9yKHJlcXVlc3QucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKQEAgLTIzNDIs
NyArMjM0Miw4IEBAIHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1dv
cmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uICZ3b3JkU3RhcnQsCiAgICAgICAgIHJldHVybjsKIAog
ICAgIFZpc2libGVTZWxlY3Rpb24gYWRqYWNlbnRXb3JkcyA9IFZpc2libGVTZWxlY3Rpb24oc3Rh
cnRPZldvcmQod29yZFN0YXJ0LCBMZWZ0V29yZElmT25Cb3VuZGFyeSksIGVuZE9mV29yZCh3b3Jk
U3RhcnQsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSkpOwotICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NB
bmRCYWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgYWRqYWNlbnRXb3Jkcy50
b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBhZGphY2VudFdvcmRzLnRvTm9ybWFsaXplZFJhbmdl
KCkuZ2V0KCkpOworICAgIGF1dG8gYWRqYWNlbnRXb3JkUmFuZ2UgPSBhZGphY2VudFdvcmRzLnRv
Tm9ybWFsaXplZFJhbmdlKCk7CisgICAgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJ
blJhbmdlcyh0ZXh0Q2hlY2tpbmdPcHRpb25zLCBhZGphY2VudFdvcmRSYW5nZS5nZXQoKSwgYWRq
YWNlbnRXb3JkUmFuZ2UuZ2V0KCksIG51bGxwdHIpOwogI2Vsc2UKICNpZiAhVVNFKEFVVE9NQVRJ
Q19URVhUX1JFUExBQ0VNRU5UKQogICAgIFVOVVNFRF9QQVJBTShkb1JlcGxhY2VtZW50KTsKQEAg
LTI0MTcsMTMgKzI0MTgsMTcgQEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5
cGluZ1RvV29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24gJndvcmRTdGFydCwKICAgICAgICAgaWYg
KCFzcGVsbENoZWNraW5nUmFuZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgYXV0
byBhZGphY2VudFdvcmRSYW5nZSA9IFZpc2libGVTZWxlY3Rpb24oc3RhcnRPZldvcmQod29yZFN0
YXJ0LCBMZWZ0V29yZElmT25Cb3VuZGFyeSksIGVuZE9mV29yZCh3b3JkU3RhcnQsIFJpZ2h0V29y
ZElmT25Cb3VuZGFyeSkpLnRvTm9ybWFsaXplZFJhbmdlKCk7CisgICAgICAgIGlmICghYWRqYWNl
bnRXb3JkUmFuZ2UpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgLy8gVGhlIHNwZWxs
aW5nIGFuZCBncmFtbWFyIG1hcmtlcnMgaW4gdGhlc2UgcmFuZ2VzIGFyZSByZWNvbXB1dGVkLiBU
aGlzIGlzIGJlY2F1c2UgdHlwaW5nIGEgd29yZCBtYXkKICAgICAgICAgLy8gY2F1c2UgYW55IG90
aGVyIHBhcnQgb2YgdGhlIGN1cnJlbnQgc2VudGVuY2UgdG8gbG9zZSBvciBnYWluIHNwZWxsaW5n
IGNvcnJlY3Rpb24gbWFya2VycywgZHVlIHRvCiAgICAgICAgIC8vIHNlbnRlbmNlIHJldHJvIGNv
cnJlY3Rpb24uIEFzIHN1Y2gsIHdlIGV4cGFuZCB0aGUgc3BlbGwgY2hlY2tpbmcgcmFuZ2UgdG8g
ZW5jb21wYXNzIGFzIG11Y2ggb2YgdGhlCiAgICAgICAgIC8vIGZ1bGwgc2VudGVuY2UgYXMgd2Ug
Y2FuLCByZXNwZWN0aW5nIGJvdW5kYXJpZXMgd2hlcmUgc3BlbGxjaGVja2luZyBpcyBkaXNhYmxl
ZC4KICAgICAgICAgZnVsbFNlbnRlbmNlUmFuZ2UtPm93bmVyRG9jdW1lbnQoKS5tYXJrZXJzKCku
cmVtb3ZlTWFya2VycyhmdWxsU2VudGVuY2VSYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6Okdy
YW1tYXIpOwogICAgICAgICBzcGVsbENoZWNraW5nUmFuZ2UtPm93bmVyRG9jdW1lbnQoKS5tYXJr
ZXJzKCkucmVtb3ZlTWFya2VycyhzcGVsbENoZWNraW5nUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFy
a2VyOjpTcGVsbGluZyk7Ci0gICAgICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFy
SW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgc3BlbGxDaGVja2luZ1JhbmdlLmdldCgpLCBm
dWxsU2VudGVuY2VSYW5nZS5nZXQoKSk7CisgICAgICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRC
YWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgc3BlbGxDaGVja2luZ1Jhbmdl
LmdldCgpLCBhZGphY2VudFdvcmRSYW5nZS5nZXQoKSwgZnVsbFNlbnRlbmNlUmFuZ2UuZ2V0KCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNTQ3LDcgKzI1NTIsNyBAQCB2b2lkIEVk
aXRvcjo6bWFya0JhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQog
I2VuZGlmCiB9CiAKLXZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1h
ckluUmFuZ2VzKFRleHRDaGVja2luZ1R5cGVNYXNrIHRleHRDaGVja2luZ09wdGlvbnMsIFJhbmdl
KiBzcGVsbGluZ1JhbmdlLCBSYW5nZSogZ3JhbW1hclJhbmdlKQordm9pZCBFZGl0b3I6Om1hcmtB
bGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nVHlwZU1hc2sg
dGV4dENoZWNraW5nT3B0aW9ucywgUmFuZ2UqIHNwZWxsaW5nUmFuZ2UsIFJhbmdlKiBhdXRvbWF0
aWNSZXBsYWNlbWVudFJhbmdlLCBSYW5nZSogZ3JhbW1hclJhbmdlKQogewogICAgIEFTU0VSVCh1
bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKCkpOwogCkBAIC0yNTc5LDcgKzI1ODQsOCBAQCB2b2lk
IEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hl
Y2tpbmdUeXBlTWFzayB0ZXh0QwogCiAgICAgLy8gSW4gYXN5bmNocm9ub3VzIG1vZGUsIHdlIGlu
dGVudGlvbmFsbHkgY2hlY2sgcGFyYWdyYXBoLXdpZGUgc2VudGVuY2UuCiAgICAgY29uc3QgYXV0
byByZXNvbHZlZE9wdGlvbnMgPSByZXNvbHZlVGV4dENoZWNraW5nVHlwZU1hc2soZWRpdGFibGVO
b2RlLCB0ZXh0Q2hlY2tpbmdPcHRpb25zKTsKLSAgICBhdXRvIHJlcXVlc3QgPSBTcGVsbENoZWNr
UmVxdWVzdDo6Y3JlYXRlKHJlc29sdmVkT3B0aW9ucywgVGV4dENoZWNraW5nUHJvY2Vzc0luY3Jl
bWVudGFsLCBhc3luY2hyb25vdXMgPyBwYXJhZ3JhcGhSYW5nZS5nZXQoKSA6IHJhbmdlVG9DaGVj
aywgcGFyYWdyYXBoUmFuZ2UuY29weVJlZigpKTsKKyAgICBhdXRvJiB0ZXh0UmVwbGFjZW1lbnRS
YW5nZSA9IGF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UgPyAqYXV0b21hdGljUmVwbGFjZW1lbnRS
YW5nZSA6IHJhbmdlVG9DaGVjazsKKyAgICBhdXRvIHJlcXVlc3QgPSBTcGVsbENoZWNrUmVxdWVz
dDo6Y3JlYXRlKHJlc29sdmVkT3B0aW9ucywgVGV4dENoZWNraW5nUHJvY2Vzc0luY3JlbWVudGFs
LCBhc3luY2hyb25vdXMgPyBwYXJhZ3JhcGhSYW5nZS5nZXQoKSA6IHJhbmdlVG9DaGVjaywgdGV4
dFJlcGxhY2VtZW50UmFuZ2UsIHBhcmFncmFwaFJhbmdlLmNvcHlSZWYoKSk7CiAgICAgaWYgKCFy
ZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAKQEAgLTI2MjcsNyArMjYzMyw4IEBAIHN0YXRpYyB2
b2lkIGNvcnJlY3RTcGVsbGNoZWNraW5nUHJlc2VydmluZ1RleHRDaGVja2luZ1BhcmFncmFwaChU
ZXh0Q2hlY2tpbmdQYXJhCiAKICAgICBSZWZQdHI8UmFuZ2U+IG5ld1BhcmFncmFwaFJhbmdlID0g
VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCgmc2NvcGUsIHBhcmFncmFw
aExvY2F0aW9uLCBwYXJhZ3JhcGhMZW5ndGggKyByZXBsYWNlbWVudC5sZW5ndGgoKSAtIHJlc3Vs
dExlbmd0aCk7CiAKLSAgICBwYXJhZ3JhcGggPSBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoVGV4dEl0
ZXJhdG9yOjpzdWJyYW5nZSgqbmV3UGFyYWdyYXBoUmFuZ2UsIHJlc3VsdExvY2F0aW9uLCByZXBs
YWNlbWVudC5sZW5ndGgoKSksIG5ld1BhcmFncmFwaFJhbmdlLmdldCgpKTsKKyAgICBhdXRvIHNw
ZWxsQ2hlY2tpbmdSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKm5ld1BhcmFncmFwaFJh
bmdlLCByZXN1bHRMb2NhdGlvbiwgcmVwbGFjZW1lbnQubGVuZ3RoKCkpOworICAgIHBhcmFncmFw
aCA9IFRleHRDaGVja2luZ1BhcmFncmFwaChzcGVsbENoZWNraW5nUmFuZ2UuY29weVJlZigpLCBz
cGVsbENoZWNraW5nUmFuZ2UuY29weVJlZigpLCBuZXdQYXJhZ3JhcGhSYW5nZS5nZXQoKSk7CiB9
CiAKIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCkBA
IC0yNjM1LDcgKzI2NDIsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3Qg
U3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQogICAgIFJlZjxGcmFt
ZT4gcHJvdGVjdGlvbihtX2ZyYW1lKTsKIAogICAgIFRleHRDaGVja2luZ1R5cGVNYXNrIHRleHRD
aGVja2luZ09wdGlvbnMgPSByZXF1ZXN0LmRhdGEoKS5tYXNrKCk7Ci0gICAgVGV4dENoZWNraW5n
UGFyYWdyYXBoIHBhcmFncmFwaChyZXF1ZXN0LmNoZWNraW5nUmFuZ2UoKSwgJnJlcXVlc3QucGFy
YWdyYXBoUmFuZ2UoKSk7CisgICAgVGV4dENoZWNraW5nUGFyYWdyYXBoIHBhcmFncmFwaChyZXF1
ZXN0LmNoZWNraW5nUmFuZ2UoKSwgcmVxdWVzdC5hdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlKCks
ICZyZXF1ZXN0LnBhcmFncmFwaFJhbmdlKCkpOwogCiAgICAgY29uc3QgYm9vbCBzaG91bGRNYXJr
U3BlbGxpbmcgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zICYgVGV4dENoZWNraW5nVHlwZVNwZWxsaW5n
OwogICAgIGNvbnN0IGJvb2wgc2hvdWxkTWFya0dyYW1tYXIgPSB0ZXh0Q2hlY2tpbmdPcHRpb25z
ICYgVGV4dENoZWNraW5nVHlwZUdyYW1tYXI7CkBAIC0yNjc1LDYgKzI2ODIsNyBAQCB2b2lkIEVk
aXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFZlY3RvcjxUZQogICAgICAgICBjb25zdCBpbnQgcmVzdWx0TG9jYXRpb24gPSByZXN1
bHRzW2ldLmxvY2F0aW9uICsgb2Zmc2V0RHVlVG9SZXBsYWNlbWVudDsKICAgICAgICAgY29uc3Qg
aW50IHJlc3VsdExlbmd0aCA9IHJlc3VsdHNbaV0ubGVuZ3RoOwogICAgICAgICBjb25zdCBpbnQg
cmVzdWx0RW5kTG9jYXRpb24gPSByZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aDsKKyAgICAg
ICAgY29uc3QgaW50IGF1dG9tYXRpY1JlcGxhY2VtZW50RW5kTG9jYXRpb24gPSBwYXJhZ3JhcGgu
YXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpICsgcGFyYWdyYXBoLmF1dG9tYXRpY1JlcGxhY2Vt
ZW50TGVuZ3RoKCkgKyBvZmZzZXREdWVUb1JlcGxhY2VtZW50OwogICAgICAgICBjb25zdCBTdHJp
bmcmIHJlcGxhY2VtZW50ID0gcmVzdWx0c1tpXS5yZXBsYWNlbWVudDsKICAgICAgICAgY29uc3Qg
Ym9vbCByZXN1bHRFbmRzQXRBbWJpZ3VvdXNCb3VuZGFyeSA9IHVzZUFtYmlndW91c0JvdW5kYXJ5
T2Zmc2V0ICYmIHNlbGVjdGlvbk9mZnNldCAtIDEgPD0gcmVzdWx0RW5kTG9jYXRpb247CiAKQEAg
LTI2OTksMTIgKzI3MDcsMTIgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNvbnN0
IFNwZWxsQ2hlY2tSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8VGUKICAgICAgICAgICAg
ICAgICAgICAgYmFkR3JhbW1hclJhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCkubWFy
a2VycygpLmFkZE1hcmtlcihiYWRHcmFtbWFyUmFuZ2UucHRyKCksIERvY3VtZW50TWFya2VyOjpH
cmFtbWFyLCBkZXRhaWwudXNlckRlc2NyaXB0aW9uKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAocmVzdWx0RW5kTG9jYXRpb24gPD0gc3BlbGxp
bmdSYW5nZUVuZE9mZnNldCAmJiByZXN1bHRFbmRMb2NhdGlvbiA+PSBwYXJhZ3JhcGguY2hlY2tp
bmdTdGFydCgpCisgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0RW5kTG9jYXRpb24gPD0gYXV0b21h
dGljUmVwbGFjZW1lbnRFbmRMb2NhdGlvbiAmJiByZXN1bHRFbmRMb2NhdGlvbiA+PSBwYXJhZ3Jh
cGguYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpCiAgICAgICAgICAgICAmJiBpc0F1dG9tYXRp
Y1RleHRSZXBsYWNlbWVudFR5cGUocmVzdWx0VHlwZSkpIHsKLSAgICAgICAgICAgIC8vIEluIHRo
aXMgY2FzZSB0aGUgcmVzdWx0IHJhbmdlIGp1c3QgaGFzIHRvIHRvdWNoIHRoZSBzcGVsbGluZyBy
YW5nZSwgc28gd2UgY2FuIGhhbmRsZSByZXBsYWNpbmcgbm9uLXdvcmQgdGV4dCBzdWNoIGFzIHB1
bmN0dWF0aW9uLgorICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIHRoZSByZXN1bHQgcmFuZ2Ug
anVzdCBoYXMgdG8gdG91Y2ggdGhlIGF1dG9tYXRpYyByZXBsYWNlbWVudCByYW5nZSwgc28gd2Ug
Y2FuIGhhbmRsZSByZXBsYWNpbmcgbm9uLXdvcmQgdGV4dCBzdWNoIGFzIHB1bmN0dWF0aW9uLgog
ICAgICAgICAgICAgQVNTRVJUKHJlc3VsdExlbmd0aCA+IDAgJiYgcmVzdWx0TG9jYXRpb24gPj0g
MCk7CiAKLSAgICAgICAgICAgIGlmIChzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsICYmIChyZXN1
bHRFbmRMb2NhdGlvbiA8IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQKKyAgICAgICAgICAgIGlmIChz
aG91bGRTaG93Q29ycmVjdGlvblBhbmVsICYmIChyZXN1bHRFbmRMb2NhdGlvbiA8IGF1dG9tYXRp
Y1JlcGxhY2VtZW50RW5kTG9jYXRpb24KICAgICAgICAgICAgICAgICB8fCAhKHJlc3VsdFR5cGUg
JiAoVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50IHwgVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rp
b24pKSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTI3MjgsNyArMjczNiw3IEBA
IHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgVmVjdG9yPFRlCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgICAgIGlmIChzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKHJlc3VsdEVuZExvY2F0aW9uID09IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQpIHsKKyAg
ICAgICAgICAgICAgICBpZiAocmVzdWx0RW5kTG9jYXRpb24gPT0gYXV0b21hdGljUmVwbGFjZW1l
bnRFbmRMb2NhdGlvbikgewogICAgICAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IHNob3cgdGhl
IGNvcnJlY3Rpb24gcGFuZWwgb24gdGhlIGxhc3Qgd29yZC4KICAgICAgICAgICAgICAgICAgICAg
bV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5zaG93KHJhbmdlVG9SZXBsYWNlLCByZXBsYWNl
bWVudCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjgyOSw3ICsyODM3LDggQEAg
dm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mIHNwZWxsaW5nU2VsZWMKICAgICAgICAgVGV4dENoZWNraW5nVHlwZU1hc2sgdGV4
dENoZWNraW5nT3B0aW9ucyA9IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZzsKICAgICAgICAgaWYg
KG1hcmtHcmFtbWFyICYmIGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKQogICAgICAgICAgICAg
dGV4dENoZWNraW5nT3B0aW9ucyB8PSBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsKLSAgICAgICAg
bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyh0ZXh0Q2hlY2tpbmdPcHRp
b25zLCBzcGVsbGluZ1NlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBncmFtbWFy
U2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOworICAgICAgICBhdXRvIHNwZWxs
Q2hlY2tpbmdSYW5nZSA9IHNwZWxsaW5nU2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7Cisg
ICAgICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNr
aW5nT3B0aW9ucywgc3BlbGxDaGVja2luZ1JhbmdlLmdldCgpLCBzcGVsbENoZWNraW5nUmFuZ2Uu
Z2V0KCksIGdyYW1tYXJTZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IGUxNDE0M2Zl
Y2U5MTEwN2E2NTJmZmU4ZmM1MThmMmM3MjVmYTljZDcuLmI0YTAxMGZiNGU3MzIwYTJlYmQ3NDY1
M2JjNzRlOTQ5NzEwMjc0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtMjkzLDcgKzI5
Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzT3ZlcndyaXRlTW9kZUVuYWJsZWQoKSBjb25zdCB7
IHJldHVybiBtX292ZXJ3cml0ZU1vZGVFbmFibGVkOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB0b2dnbGVPdmVyd3JpdGVNb2RlRW5hYmxlZCgpOwogCi0gICAgdm9pZCBtYXJrQWxsTWlzc3Bl
bGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ1R5cGVNYXNrLCBSYW5nZSog
c3BlbGxpbmdSYW5nZSwgUmFuZ2UqIGdyYW1tYXJSYW5nZSk7CisgICAgdm9pZCBtYXJrQWxsTWlz
c3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ1R5cGVNYXNrLCBSYW5n
ZSogc3BlbGxpbmdSYW5nZSwgUmFuZ2UqIGF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UsIFJhbmdl
KiBncmFtbWFyUmFuZ2UpOwogI2lmIFBMQVRGT1JNKElPUykKICAgICBOT19SRVRVUk5fRFVFX1RP
X0FTU0VSVAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxs
Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKaW5k
ZXggYTViNjE2ZDI0OGUxMWM4NjQyNzk1MjYzZDg5Y2M0MGIxM2E5Y2ZmOS4uYzA1NGM1YWRlNTQw
OTA0MjIzYjkwOTNjMTQwYTM1ODY2Njc5NjFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3Bl
bGxDaGVja2VyLmNwcApAQCAtNDAsOCArNDAsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVNwZWxsQ2hlY2tSZXF1ZXN0OjpTcGVsbENoZWNrUmVxdWVzdChSZWY8UmFuZ2U+JiYgY2hlY2tp
bmdSYW5nZSwgUmVmPFJhbmdlPiYmIHBhcmFncmFwaFJhbmdlLCBjb25zdCBTdHJpbmcmIHRleHQs
IFRleHRDaGVja2luZ1R5cGVNYXNrIG1hc2ssIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHByb2Nl
c3NUeXBlKQorU3BlbGxDaGVja1JlcXVlc3Q6OlNwZWxsQ2hlY2tSZXF1ZXN0KFJlZjxSYW5nZT4m
JiBjaGVja2luZ1JhbmdlLCBSZWY8UmFuZ2U+JiYgYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSwg
UmVmPFJhbmdlPiYmIHBhcmFncmFwaFJhbmdlLCBjb25zdCBTdHJpbmcmIHRleHQsIFRleHRDaGVj
a2luZ1R5cGVNYXNrIG1hc2ssIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHByb2Nlc3NUeXBlKQog
ICAgIDogbV9jaGVja2luZ1JhbmdlKFdURk1vdmUoY2hlY2tpbmdSYW5nZSkpCisgICAgLCBtX2F1
dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UoV1RGTW92ZShhdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdl
KSkKICAgICAsIG1fcGFyYWdyYXBoUmFuZ2UoV1RGTW92ZShwYXJhZ3JhcGhSYW5nZSkpCiAgICAg
LCBtX3Jvb3RFZGl0YWJsZUVsZW1lbnQobV9jaGVja2luZ1JhbmdlLT5zdGFydENvbnRhaW5lcigp
LnJvb3RFZGl0YWJsZUVsZW1lbnQoKSkKICAgICAsIG1fcmVxdWVzdERhdGEodW5yZXF1ZXN0ZWRU
ZXh0Q2hlY2tpbmdTZXF1ZW5jZSwgdGV4dCwgbWFzaywgcHJvY2Vzc1R5cGUpCkBAIC01MCwxMyAr
NTEsMTMgQEAgU3BlbGxDaGVja1JlcXVlc3Q6OlNwZWxsQ2hlY2tSZXF1ZXN0KFJlZjxSYW5nZT4m
JiBjaGVja2luZ1JhbmdlLCBSZWY8UmFuZ2U+JiYgcGEKIAogU3BlbGxDaGVja1JlcXVlc3Q6On5T
cGVsbENoZWNrUmVxdWVzdCgpID0gZGVmYXVsdDsKIAotUmVmUHRyPFNwZWxsQ2hlY2tSZXF1ZXN0
PiBTcGVsbENoZWNrUmVxdWVzdDo6Y3JlYXRlKFRleHRDaGVja2luZ1R5cGVNYXNrIHRleHRDaGVj
a2luZ09wdGlvbnMsIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHByb2Nlc3NUeXBlLCBSZWY8UmFu
Z2U+JiYgY2hlY2tpbmdSYW5nZSwgUmVmPFJhbmdlPiYmIHBhcmFncmFwaFJhbmdlKQorUmVmUHRy
PFNwZWxsQ2hlY2tSZXF1ZXN0PiBTcGVsbENoZWNrUmVxdWVzdDo6Y3JlYXRlKFRleHRDaGVja2lu
Z1R5cGVNYXNrIHRleHRDaGVja2luZ09wdGlvbnMsIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHBy
b2Nlc3NUeXBlLCBSZWY8UmFuZ2U+JiYgY2hlY2tpbmdSYW5nZSwgUmVmPFJhbmdlPiYmIGF1dG9t
YXRpY1JlcGxhY2VtZW50UmFuZ2UsIFJlZjxSYW5nZT4mJiBwYXJhZ3JhcGhSYW5nZSkKIHsKICAg
ICBTdHJpbmcgdGV4dCA9IGNoZWNraW5nUmFuZ2UtPnRleHQoKTsKICAgICBpZiAoIXRleHQubGVu
Z3RoKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3BlbGxDaGVja1JlcXVlc3QoV1RGTW92ZShjaGVja2luZ1JhbmdlKSwgV1RGTW92ZShwYXJh
Z3JhcGhSYW5nZSksIHRleHQsIHRleHRDaGVja2luZ09wdGlvbnMsIHByb2Nlc3NUeXBlKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3BlbGxDaGVja1JlcXVlc3QoV1RGTW92ZShjaGVja2lu
Z1JhbmdlKSwgV1RGTW92ZShhdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlKSwgV1RGTW92ZShwYXJh
Z3JhcGhSYW5nZSksIHRleHQsIHRleHRDaGVja2luZ09wdGlvbnMsIHByb2Nlc3NUeXBlKSk7CiB9
CiAKIGNvbnN0IFRleHRDaGVja2luZ1JlcXVlc3REYXRhJiBTcGVsbENoZWNrUmVxdWVzdDo6ZGF0
YSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tl
ci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaAppbmRleCBhMjNjMThj
YzBmMTVmY2E1MjYwNWU0MWE3NzE4ODk4NjBkODQ2YTAzLi4wNTk0NTM2NmNjOTgxNDQwMWNkODgy
ZjBjMWQ3MGU1MjYyMDdjOGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nw
ZWxsQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmgK
QEAgLTQ0LDExICs0NCwxMiBAQCBjbGFzcyBTcGVsbENoZWNrZXI7CiAKIGNsYXNzIFNwZWxsQ2hl
Y2tSZXF1ZXN0IDogcHVibGljIFRleHRDaGVja2luZ1JlcXVlc3QgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWZQdHI8U3BlbGxDaGVja1JlcXVlc3Q+IGNyZWF0ZShUZXh0Q2hlY2tpbmdUeXBlTWFz
aywgVGV4dENoZWNraW5nUHJvY2Vzc1R5cGUsIFJlZjxSYW5nZT4mJiBjaGVja2luZ1JhbmdlLCBS
ZWY8UmFuZ2U+JiYgcGFyYWdyYXBoUmFuZ2UpOworICAgIHN0YXRpYyBSZWZQdHI8U3BlbGxDaGVj
a1JlcXVlc3Q+IGNyZWF0ZShUZXh0Q2hlY2tpbmdUeXBlTWFzaywgVGV4dENoZWNraW5nUHJvY2Vz
c1R5cGUsIFJlZjxSYW5nZT4mJiBjaGVja2luZ1JhbmdlLCBSZWY8UmFuZ2U+JiYgYXV0b21hdGlj
UmVwbGFjZW1lbnRSYW5nZSwgUmVmPFJhbmdlPiYmIHBhcmFncmFwaFJhbmdlKTsKICAgICB2aXJ0
dWFsIH5TcGVsbENoZWNrUmVxdWVzdCgpOwogCiAgICAgUmFuZ2UmIGNoZWNraW5nUmFuZ2UoKSBj
b25zdCB7IHJldHVybiBtX2NoZWNraW5nUmFuZ2UuZ2V0KCk7IH0KICAgICBSYW5nZSYgcGFyYWdy
YXBoUmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhcmFncmFwaFJhbmdlLmdldCgpOyB9CisgICAg
UmFuZ2UmIGF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX2F1dG9t
YXRpY1JlcGxhY2VtZW50UmFuZ2UuZ2V0KCk7IH0KICAgICBFbGVtZW50KiByb290RWRpdGFibGVF
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9yb290RWRpdGFibGVFbGVtZW50LmdldCgpOyB9CiAK
ICAgICB2b2lkIHNldENoZWNrZXJBbmRTZXF1ZW5jZShTcGVsbENoZWNrZXIqLCBpbnQgc2VxdWVu
Y2UpOwpAQCAtNjAsMTAgKzYxLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENhbmNlbCgpIG92
ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIFNwZWxsQ2hlY2tSZXF1ZXN0KFJlZjxSYW5nZT4mJiBj
aGVja2luZ1JhbmdlLCBSZWY8UmFuZ2U+JiYgcGFyYWdyYXBoUmFuZ2UsIGNvbnN0IFN0cmluZyYs
IFRleHRDaGVja2luZ1R5cGVNYXNrLCBUZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSk7CisgICAgU3Bl
bGxDaGVja1JlcXVlc3QoUmVmPFJhbmdlPiYmIGNoZWNraW5nUmFuZ2UsIFJlZjxSYW5nZT4mJiBh
dXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlLCBSZWY8UmFuZ2U+JiYgcGFyYWdyYXBoUmFuZ2UsIGNv
bnN0IFN0cmluZyYsIFRleHRDaGVja2luZ1R5cGVNYXNrLCBUZXh0Q2hlY2tpbmdQcm9jZXNzVHlw
ZSk7CiAKICAgICBTcGVsbENoZWNrZXIqIG1fY2hlY2tlciB7IG51bGxwdHIgfTsKICAgICBSZWY8
UmFuZ2U+IG1fY2hlY2tpbmdSYW5nZTsKKyAgICBSZWY8UmFuZ2U+IG1fYXV0b21hdGljUmVwbGFj
ZW1lbnRSYW5nZTsKICAgICBSZWY8UmFuZ2U+IG1fcGFyYWdyYXBoUmFuZ2U7CiAgICAgUmVmUHRy
PEVsZW1lbnQ+IG1fcm9vdEVkaXRhYmxlRWxlbWVudDsKICAgICBUZXh0Q2hlY2tpbmdSZXF1ZXN0
RGF0YSBtX3JlcXVlc3REYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tp
bmdIZWxwZXIuY3BwCmluZGV4IGVkOWJlZTQ5Y2E3MjJmM2Y4NjhhNGE1OTI1YjhjOTk3NGUzMGZj
OTIuLjcyNWQwMzNlZDZiOWIwN2ViZTk5ZTJiYTMyZjgzNDFlN2FlZWMyMjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKQEAgLTExNywxMiArMTE3
LDE2IEBAIHN0YXRpYyBSZWY8UmFuZ2U+IGV4cGFuZFRvUGFyYWdyYXBoQm91bmRhcnkoUmFuZ2Um
IHJhbmdlKQogICAgIHJldHVybiBwYXJhZ3JhcGhSYW5nZTsKIH0KIAotVGV4dENoZWNraW5nUGFy
YWdyYXBoOjpUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoUmVmPFJhbmdlPiYmIGNoZWNraW5nUmFuZ2Us
IFJhbmdlKiBwYXJhZ3JhcGhSYW5nZSkKK1RleHRDaGVja2luZ1BhcmFncmFwaDo6VGV4dENoZWNr
aW5nUGFyYWdyYXBoKFJlZjxSYW5nZT4mJiBjaGVja2luZ0FuZEF1dG9tYXRpY1JlcGxhY2VtZW50
UmFuZ2UpCisgICAgOiBtX2NoZWNraW5nUmFuZ2UoY2hlY2tpbmdBbmRBdXRvbWF0aWNSZXBsYWNl
bWVudFJhbmdlLmNvcHlSZWYoKSkKKyAgICAsIG1fYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZShj
aGVja2luZ0FuZEF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UuY29weVJlZigpKQoreworfQorCitU
ZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OlRleHRDaGVja2luZ1BhcmFncmFwaChSZWY8UmFuZ2U+JiYg
Y2hlY2tpbmdSYW5nZSwgUmVmPFJhbmdlPiYmIGF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UsIFJl
ZlB0cjxSYW5nZT4mJiBwYXJhZ3JhcGhSYW5nZSkKICAgICA6IG1fY2hlY2tpbmdSYW5nZShXVEZN
b3ZlKGNoZWNraW5nUmFuZ2UpKQotICAgICwgbV9wYXJhZ3JhcGhSYW5nZShwYXJhZ3JhcGhSYW5n
ZSkKLSAgICAsIG1fY2hlY2tpbmdTdGFydCgtMSkKLSAgICAsIG1fY2hlY2tpbmdFbmQoLTEpCi0g
ICAgLCBtX2NoZWNraW5nTGVuZ3RoKC0xKQorICAgICwgbV9hdXRvbWF0aWNSZXBsYWNlbWVudFJh
bmdlKFdURk1vdmUoYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSkpCisgICAgLCBtX3BhcmFncmFw
aFJhbmdlKFdURk1vdmUocGFyYWdyYXBoUmFuZ2UpKQogewogfQogCkBAIC0yMTEsNiArMjE1LDI2
IEBAIGludCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmNoZWNraW5nTGVuZ3RoKCkgY29uc3QKICAg
ICByZXR1cm4gbV9jaGVja2luZ0xlbmd0aDsKIH0KIAoraW50IFRleHRDaGVja2luZ1BhcmFncmFw
aDo6YXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpIGNvbnN0Cit7CisgICAgaWYgKG1fYXV0b21h
dGljUmVwbGFjZW1lbnRTdGFydCAhPSAtMSkKKyAgICAgICAgcmV0dXJuIG1fYXV0b21hdGljUmVw
bGFjZW1lbnRTdGFydDsKKworICAgIGF1dG8gc3RhcnRPZmZzZXRSYW5nZSA9IFJhbmdlOjpjcmVh
dGUocGFyYWdyYXBoUmFuZ2UoKS5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIHBhcmFncmFw
aFJhbmdlKCkuc3RhcnRQb3NpdGlvbigpLCBtX2F1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UtPnN0
YXJ0UG9zaXRpb24oKSk7CisgICAgbV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0ID0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFydE9mZnNldFJhbmdlLnB0cigpKTsKKyAgICByZXR1cm4g
bV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0OworfQorCitpbnQgVGV4dENoZWNraW5nUGFyYWdy
YXBoOjphdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCgpIGNvbnN0Cit7CisgICAgaWYgKG1fYXV0
b21hdGljUmVwbGFjZW1lbnRMZW5ndGggIT0gLTEpCisgICAgICAgIHJldHVybiBtX2F1dG9tYXRp
Y1JlcGxhY2VtZW50TGVuZ3RoOworCisgICAgYXV0byBlbmRPZmZzZXRSYW5nZSA9IFJhbmdlOjpj
cmVhdGUocGFyYWdyYXBoUmFuZ2UoKS5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIHBhcmFn
cmFwaFJhbmdlKCkuc3RhcnRQb3NpdGlvbigpLCBtX2F1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2Ut
PmVuZFBvc2l0aW9uKCkpOworICAgIG1fYXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGggPSBUZXh0
SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZE9mZnNldFJhbmdlLnB0cigpKSAtIGF1dG9tYXRpY1Jl
cGxhY2VtZW50U3RhcnQoKTsKKyAgICByZXR1cm4gbV9hdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0
aDsKK30KKwogVGV4dENoZWNraW5nSGVscGVyOjpUZXh0Q2hlY2tpbmdIZWxwZXIoRWRpdG9yQ2xp
ZW50JiBjbGllbnQsIFJhbmdlJiByYW5nZSkKICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAs
IG1fcmFuZ2UocmFuZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRD
aGVja2luZ0hlbHBlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxw
ZXIuaAppbmRleCA2YjBmNDNmY2Y3NGFlYWU3MTU2Y2E5MjQ5ODYzYWQ3MmMwNTRkZDdlLi5iYzc5
YmFkNzA2NGU1MzhmZjExNWQyMDM0NjhmYmFiOWE2NGNjZTEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmgKQEAgLTMzLDcgKzMzLDggQEAgc3RydWN0IFRl
eHRDaGVja2luZ1Jlc3VsdDsKIAogY2xhc3MgVGV4dENoZWNraW5nUGFyYWdyYXBoIHsKIHB1Ymxp
YzoKLSAgICBleHBsaWNpdCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoUmVmPFJhbmdlPiYmIGNoZWNr
aW5nUmFuZ2UsIFJhbmdlKiBwYXJhZ3JhcGhSYW5nZSA9IG51bGxwdHIpOworICAgIGV4cGxpY2l0
IFRleHRDaGVja2luZ1BhcmFncmFwaChSZWY8UmFuZ2U+JiYgY2hlY2tpbmdBbmRBdXRvbWF0aWNS
ZXBsYWNlbWVudFJhbmdlKTsKKyAgICBleHBsaWNpdCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoUmVm
PFJhbmdlPiYmIGNoZWNraW5nUmFuZ2UsIFJlZjxSYW5nZT4mJiBhdXRvbWF0aWNSZXBsYWNlbWVu
dFJhbmdlLCBSZWZQdHI8UmFuZ2U+JiYgcGFyYWdyYXBoUmFuZ2UpOwogCiAgICAgaW50IHJhbmdl
TGVuZ3RoKCkgY29uc3Q7CiAgICAgUmVmPFJhbmdlPiBzdWJyYW5nZShpbnQgY2hhcmFjdGVyT2Zm
c2V0LCBpbnQgY2hhcmFjdGVyQ291bnQpIGNvbnN0OwpAQCAtNTUsNiArNTYsMTEgQEAgcHVibGlj
OgogICAgIGludCBjaGVja2luZ0xlbmd0aCgpIGNvbnN0OwogICAgIFN0cmluZyBjaGVja2luZ1N1
YnN0cmluZygpIGNvbnN0IHsgcmV0dXJuIHRleHRTdWJzdHJpbmcoY2hlY2tpbmdTdGFydCgpLCBj
aGVja2luZ0xlbmd0aCgpKTsgfQogCisgICAgLy8gRGV0ZXJtaW5lcyB0aGUgcmFuZ2UgaW4gd2hp
Y2ggd2UgYWxsb3cgYXV0b21hdGljIHRleHQgcmVwbGFjZW1lbnQuIElmIGFuIGF1dG9tYXRpYyBy
ZXBsYWNlbWVudCByYW5nZSBpcyBub3QgcGFzc2VkIHRvIHRoZQorICAgIC8vIHRleHQgY2hlY2tp
bmcgcGFyYWdyYXBoLCB0aGlzIGRlZmF1bHRzIHRvIHRoZSBzcGVsbCBjaGVja2luZyByYW5nZS4K
KyAgICBpbnQgYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpIGNvbnN0OworICAgIGludCBhdXRv
bWF0aWNSZXBsYWNlbWVudExlbmd0aCgpIGNvbnN0OworCiAgICAgYm9vbCBjaGVja2luZ1Jhbmdl
TWF0Y2hlcyhpbnQgbG9jYXRpb24sIGludCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJuIGxvY2F0aW9u
ID09IGNoZWNraW5nU3RhcnQoKSAmJiBsZW5ndGggPT0gY2hlY2tpbmdMZW5ndGgoKTsgfQogICAg
IGJvb2wgaXNDaGVja2luZ1JhbmdlQ292ZXJlZEJ5KGludCBsb2NhdGlvbiwgaW50IGxlbmd0aCkg
Y29uc3QgeyByZXR1cm4gbG9jYXRpb24gPD0gY2hlY2tpbmdTdGFydCgpICYmIGxvY2F0aW9uICsg
bGVuZ3RoID49IGNoZWNraW5nU3RhcnQoKSArIGNoZWNraW5nTGVuZ3RoKCk7IH0KICAgICBib29s
IGNoZWNraW5nUmFuZ2VDb3ZlcnMoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKSBjb25zdCB7IHJl
dHVybiBsb2NhdGlvbiA8IGNoZWNraW5nRW5kKCkgJiYgbG9jYXRpb24gKyBsZW5ndGggPiBjaGVj
a2luZ1N0YXJ0KCk7IH0KQEAgLTY1LDEyICs3MSwxNSBAQCBwcml2YXRlOgogICAgIFJhbmdlJiBv
ZmZzZXRBc1JhbmdlKCkgY29uc3Q7CiAKICAgICBSZWY8UmFuZ2U+IG1fY2hlY2tpbmdSYW5nZTsK
KyAgICBSZWY8UmFuZ2U+IG1fYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZTsKICAgICBtdXRhYmxl
IFJlZlB0cjxSYW5nZT4gbV9wYXJhZ3JhcGhSYW5nZTsKICAgICBtdXRhYmxlIFJlZlB0cjxSYW5n
ZT4gbV9vZmZzZXRBc1JhbmdlOwogICAgIG11dGFibGUgU3RyaW5nIG1fdGV4dDsKLSAgICBtdXRh
YmxlIGludCBtX2NoZWNraW5nU3RhcnQ7Ci0gICAgbXV0YWJsZSBpbnQgbV9jaGVja2luZ0VuZDsK
LSAgICBtdXRhYmxlIGludCBtX2NoZWNraW5nTGVuZ3RoOworICAgIG11dGFibGUgaW50IG1fY2hl
Y2tpbmdTdGFydCB7IC0xIH07CisgICAgbXV0YWJsZSBpbnQgbV9jaGVja2luZ0VuZCB7IC0xIH07
CisgICAgbXV0YWJsZSBpbnQgbV9jaGVja2luZ0xlbmd0aCB7IC0xIH07CisgICAgbXV0YWJsZSBp
bnQgbV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0IHsgLTEgfTsKKyAgICBtdXRhYmxlIGludCBt
X2F1dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3RoIHsgLTEgfTsKIH07CiAKIGNsYXNzIFRleHRDaGVj
a2luZ0hlbHBlciB7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggYzk2MWE3NjVjNDY2NWQ2MDZkMTY2MjVjOWU0YjdjOGQyNjI0MDBkMy4uMjkyNGRk
Njg4MmYwYTY4MDIyNDdmMmQ2NmU0YzcxMDI1MzliODAwMSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDE4LTA2LTMw
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNP
U10gVGV4dCByZXBsYWNlbWVudHMgdGhhdCBlbmQgd2l0aCBzeW1ib2xzIGFyZSBleHBhbmRlZCBp
bW1lZGlhdGVseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg3MjI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MTExMjQzMz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIHRlc3Rpbmcgc3VwcG9y
dCBmb3IgbW9ja2luZyBOU1NwZWxsQ2hlY2tlcidzIHRleHQgY2hlY2tpbmcgcmVzdWx0cy4gU2Vl
IGJlbG93IGZvciBtb3JlIGRldGFpbHMsIGFuZCB0aGUgbmV3CisgICAgICAgIGxheW91dCB0ZXN0
IGZvciBhbiBleGFtcGxlIG9mIGl0cyB1c2FnZS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChzZXRTcGVsbENoZWNrZXJUZXh0
UmVwbGFjZW1lbnRzQ2FsbGJhY2spOgorCisgICAgICAgIEFkZCBiaW5kaW5ncyBzdXBwb3J0IGlu
IFRlc3RSdW5uZXIgdG8gc3BlY2lmeSBhIHNldCBvZiB0ZXh0IHJlcGxhY2VtZW50IG1hcHBpbmdz
LiBFYWNoIGVudHJ5IGluIHRoZSBkaWN0aW9uYXJ5CisgICAgICAgIG1hcHMgYSBzdHJpbmcgcmVw
cmVzZW50aW5nIGFuIGlucHV0IHRvIHRoZSBOU1NwZWxsQ2hlY2tlciB0byBzb21lIGluZm9ybWF0
aW9uIGRlc2NyaWJpbmcgdGhlIHNwZWxsIGNoZWNraW5nCisgICAgICAgIHJlc3VsdCB0aGF0IExh
eW91dFRlc3RTcGVsbENoZWNrZXIgd2lsbCByZXR1cm4uCisKKyAgICAgICAgKFRlc3RSdW5uZXI6
OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5o
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAg
ICAgKHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZyk6CisKKyAgICAg
ICAgUmVzdG9yZSB0aGUgb3JpZ2luYWwgc2hhcmVkIE5TU3BlbGxjaGVja2VyIGJlZm9yZSB0cmFu
c2l0aW9uaW5nIHRvIHRoZSBuZXh0IGxheW91dCB0ZXN0LCBpZiBuZWVkZWQuCisKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW06IFJlbW92
ZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW06CisgICAg
ICAgIChUZXN0UnVubmVyOjpzZXRTcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZCk6CisgICAgICAg
IChUZXN0UnVubmVyOjpzZXRTcGVsbENoZWNrZXJUZXh0UmVwbGFjZW1lbnRzKToKKworICAgICAg
ICBUaGVzZSB0ZXN0UnVubmVyIG1ldGhvZHMgZW5zdXJlIHRoYXQgYC1bTlNTcGVsbENoZWNrZXIg
c2hhcmVkU3BlbGxDaGVja2VyXWAgaXMgc3dpenpsZWQgdG8gcmV0dXJuIG91ciBtb2NrCisgICAg
ICAgIExheW91dFRlc3RTcGVsbENoZWNrZXIgaW5zdGFuY2UgYmVmb3JlIGNhbGxpbmcgaW50byBp
dC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcDoKKyAg
ICAgICAgKFRlc3RSdW5uZXI6OnNldFNwZWxsQ2hlY2tlclRleHRSZXBsYWNlbWVudHMpOgorICAg
ICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5oOiBS
ZW5hbWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlU3BlbGxD
aGVja2VyLmguCisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3Bl
bGxDaGVja2VyLm1tOiBBZGRlZC4KKworICAgICAgICBNb3ZlZCBEdW1wUmVuZGVyVHJlZVNwZWxs
Q2hlY2tlciB0byBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLCBhbmQgbWFkZSBpdCBjb21waWxlIGZv
ciBib3RoIFdlYktpdFRlc3RSdW5uZXIKKyAgICAgICAgKG1vZGVybiBXZWJLaXQpIGFuZCBEdW1w
UmVuZGVyVHJlZSAobGVnYWN5IFdlYktpdCkgYnkgcHV0dGluZyBpdCBpbiBUZXN0UnVubmVyU2hh
cmVkLgorCisgICAgICAgIChleGlzdGluZ0dsb2JhbExheW91dFRlc3RTcGVsbENoZWNrZXIpOgor
ICAgICAgICAoZW5zdXJlR2xvYmFsTGF5b3V0VGVzdFNwZWxsQ2hlY2tlcik6CisgICAgICAgIChz
dHJpbmdGb3JDb3JyZWN0aW9uUmVzcG9uc2UpOgorICAgICAgICAobnNUZXh0Q2hlY2tpbmdUeXBl
KToKKyAgICAgICAgKC1bTGF5b3V0VGVzdFRleHRDaGVja2luZ1Jlc3VsdCBpbml0V2l0aFR5cGU6
cmFuZ2U6cmVwbGFjZW1lbnQ6XSk6CisgICAgICAgICgtW0xheW91dFRlc3RUZXh0Q2hlY2tpbmdS
ZXN1bHQgcmFuZ2VdKToKKyAgICAgICAgKC1bTGF5b3V0VGVzdFRleHRDaGVja2luZ1Jlc3VsdCBy
ZXN1bHRUeXBlXSk6CisgICAgICAgICgtW0xheW91dFRlc3RUZXh0Q2hlY2tpbmdSZXN1bHQgcmVw
bGFjZW1lbnRTdHJpbmddKToKKyAgICAgICAgKC1bTGF5b3V0VGVzdFRleHRDaGVja2luZ1Jlc3Vs
dCBkZXNjcmlwdGlvbl0pOgorCisgICAgICAgIExheW91dFRlc3RUZXh0Q2hlY2tpbmdSZXN1bHQg
cmVwcmVzZW50cyBhIGZha2UgTlNUZXh0Q2hlY2tpbmdSZXN1bHQgY29udGFpbmluZyBzcGVsbCBj
aGVja2luZyByZXN1bHRzIHN1cHBsaWVkCisgICAgICAgIGJ5IHRoZSBsYXlvdXQgdGVzdC4KKwor
ICAgICAgICAoK1tMYXlvdXRUZXN0U3BlbGxDaGVja2VyIGluc3RhbGxJZk5lY2Vzc2FyeV0pOgor
ICAgICAgICAoK1tMYXlvdXRUZXN0U3BlbGxDaGVja2VyIHVuaW5zdGFsbEFuZFJlc2V0XSk6CisK
KyAgICAgICAgSGVscGVyIG1ldGhvZHMgdG8gYmVnaW4gYW5kIGVuZCBzd2l6emxpbmcgdGhlIHNo
YXJlZCBOU1NwZWxsQ2hlY2tlci4KKworICAgICAgICAoLVtMYXlvdXRUZXN0U3BlbGxDaGVja2Vy
IHJlc2V0XSk6CisKKyAgICAgICAgUmVzZXRzIHRoZSBzdGF0ZSBvZiB0aGUgTGF5b3V0VGVzdFNw
ZWxsQ2hlY2tlciAodGhpcyBlbnRhaWxzIGNsZWFyaW5nIHRoZSBmYWtlIHJlcGxhY2VtZW50cyBk
aWN0aW9uYXJ5IGFuZAorICAgICAgICB0dXJuaW5nIG9mZiBsb2dnaW5nIGZvciByZWNvcmRlZCBz
cGVsbGNoZWNraW5nIHJlc3BvbnNlcykuCisKKyAgICAgICAgKC1bTGF5b3V0VGVzdFNwZWxsQ2hl
Y2tlciByZXBsYWNlbWVudHNdKToKKyAgICAgICAgKC1bTGF5b3V0VGVzdFNwZWxsQ2hlY2tlciBz
ZXRSZXBsYWNlbWVudHM6XSk6CisgICAgICAgICgtW0xheW91dFRlc3RTcGVsbENoZWNrZXIgc2V0
UmVwbGFjZW1lbnRzRnJvbUpTT2JqZWN0OmluQ29udGV4dDpdKToKKworICAgICAgICBIZWxwZXIg
bWV0aG9kIHRvIHRha2UgYSBgSlNPYmplY3RSZWZgIHN1cHBsaWVkIGJ5IHRoZSB0ZXN0IHJ1bm5l
ciBhbmQgdHJhbnNmb3JtIGl0IGludG8gYSBtYXAgb2Ygc3BlbGwgY2hlY2tpbmcKKyAgICAgICAg
c3RyaW5nIGlucHV0cyB0byBMYXlvdXRUZXN0VGV4dENoZWNraW5nUmVzdWx0cy4KKworICAgICAg
ICAoLVtMYXlvdXRUZXN0U3BlbGxDaGVja2VyIGNoZWNrU3RyaW5nOnJhbmdlOnR5cGVzOm9wdGlv
bnM6aW5TcGVsbERvY3VtZW50V2l0aFRhZzpvcnRob2dyYXBoeTp3b3JkQ291bnQ6XSk6CisKKyAg
ICAgICAgQ29uc3VsdCB0aGUgdGV4dCByZXBsYWNlbWVudCBtYXAgYW5kIGJhaWwgZWFybHkgaWYg
YSBtYXRjaCBpcyBmb3VuZCwgYmVmb3JlIGNhbGxpbmcgaW50byByZWFsIE5TU3BlbGxDaGVja2Vy
CisgICAgICAgIGxvZ2ljIHRvIHBlcmZvcm0gc3BlbGxjaGVja2luZy4KKworICAgICAgICAoLVtM
YXlvdXRUZXN0U3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlOnRvQ29ycmVjdGlvbjpmb3JXb3Jk
Omxhbmd1YWdlOmluU3BlbGxEb2N1bWVudFdpdGhUYWc6XSk6CisKKyAgICAgICAgUmVpbXBsZW1l
bnQgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uYWxpdHkgaW4gRHVtcFJlbmRlclRyZWVTcGVsbENoZWNr
ZXIgdG8gbWFrZSBgLXJlY29yZFJlc3BvbnNlOuKApmAgcHJpbnQgdG8gc3Rkb3V0CisgICAgICAg
IGJ5IG92ZXJyaWRpbmcgdGhlIG1ldGhvZCBhbmQgcHJpbnRpbmcgaWYgdGhlIGAtc3BlbGxDaGVj
a2VyTG9nZ2luZ0VuYWJsZWRgIHByb3BlcnR5IGhhcyBiZWVuIHNldCB0byBZRVMuCisKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKwogMjAxOC0wNi0zMCAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGln
YWxpYS5jb20+CiAKICAgICAgICAgW0NNYWtlXSBidWlsZC13ZWJraXQgc2hvdWxkIGJlIGFibGUg
dG8gZW5hYmxlIGFkZHJlc3Mgc2FuaXRpemVyCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBkYzliOWZiOGI4NzMyMWY2NDM0ZTQ2NmY0NDBiMTdkNTY0YzhiYTYwLi4yODdkMjZhNjdjMDg4
Y2RiNjYxOGFlZTRlMTIwOWM1YjRmMDZkMTI5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTc3LDcgKzc3LDYgQEAKIAkJMjlDRkJBMkUxMjI3M0ExMDAwQkMzMEMwIC8qIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjlDRkJBMkQxMjI3M0ExMDAwQkMzMEMwIC8qIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyTWFjLm1tICovOyB9OwogCQkyQ0U4OEZBMjE3MTI0RDhDMDA3MzRGQzAgLyogSmF2YVNj
cmlwdFRocmVhZGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyQ0U4OEZBMTE3MTI0Q0VFMDA3MzRGQzAgLyogSmF2YVNjcmlwdFRocmVhZGluZy5j
cHAgKi87IH07CiAJCTJENDAzRjFCMTUwODcyMDkwMDUzNThEMiAvKiBMYXlvdXRUZXN0SGVscGVy
Lm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDQwM0VB
MjE1MDg3MTQyMDA1MzU4RDIgLyogTGF5b3V0VGVzdEhlbHBlci5tICovOyB9OwotCQkyREEyRTNB
NTFFMUJBNTQxMDBBM0JCRDAgLyogRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREEyRTNBNDFFMUJBNTQx
MDBBM0JCRDAgLyogRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW0gKi87IH07CiAJCTMxMTE3
QjNEMTVEOUE1NkEwMDE2M0JDOCAvKiBNb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTExN0IzQjE1RDlB
NTZBMDAxNjNCQzggLyogTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tICovOyB9OwogCQkz
MTI5NDNGOTFFNzFGMkI0MDAxRUUyQ0MgLyogSU9TTGF5b3V0VGVzdENvbW11bmljYXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE0OEEwNTUx
RTZGOTBGNDAwRDNCMzE2IC8qIElPU0xheW91dFRlc3RDb21tdW5pY2F0aW9uLmNwcCAqLzsgfTsK
IAkJNDQ2NENBQkUxQzIwQTA4QjAwRTVCQjU1IC8qIER1bXBSZW5kZXJUcmVlQXBwTWFpbi5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NjRDQUJEMUMy
MEEwNzAwMEU1QkI1NSAvKiBEdW1wUmVuZGVyVHJlZUFwcE1haW4ubW0gKi87IH07CkBAIC0xNDgs
NiArMTQ3LDcgQEAKIAkJQzIzRUEyMDgxQkM5RjA1MTAwQzk4MEI3IC8qIEZvbnRXaXRoRmVhdHVy
ZXMub3RmIGluIENvcHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDMjNFQTIwNjFCQzlFQUJBMDBDOTgwQjcgLyogRm9udFdpdGhGZWF0dXJlcy5vdGYgKi87
IH07CiAJCUMyM0VBMjA5MUJDOUYwNTEwMEM5ODBCNyAvKiBGb250V2l0aEZlYXR1cmVzLnR0ZiBp
biBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzIz
RUEyMDcxQkM5RUFCQTAwQzk4MEI3IC8qIEZvbnRXaXRoRmVhdHVyZXMudHRmICovOyB9OwogCQlF
MUI3ODE2NTExQUYzMUI3MDA3RTFCQzIgLyogTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUI3ODA4NzExQUYx
NjY5MDA3RTFCQzIgLyogTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIubW0gKi87IH07CisJCUY0QzM1
NzhEMjBFODQ0NEUwMEZBMDc0OCAvKiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRDMzU3ODgyMEU4NDQyNzAw
RkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIubW0gKi87IH07CiAJCUY0RDQyMzYxMURE
NTA0ODIwMDY3ODI5MCAvKiBUZXh0SW5wdXRDb250cm9sbGVySU9TLm0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEQ0MjM1RjFERDUwNDUzMDA2NzgyOTAg
LyogVGV4dElucHV0Q29udHJvbGxlcklPUy5tICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBz
ZWN0aW9uICovCiAKQEAgLTI4Miw4ICsyODIsNiBAQAogCQkyQ0U4OEZBMTE3MTI0Q0VFMDA3MzRG
QzAgLyogSmF2YVNjcmlwdFRocmVhZGluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKYXZhU2NyaXB0VGhyZWFkaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMkQ0MDNFQTIxNTA4NzE0MjAwNTM1OEQyIC8qIExheW91dFRlc3RIZWxwZXIubSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBuYW1lID0gTGF5b3V0VGVzdEhlbHBlci5tOyBw
YXRoID0gbWFjL0xheW91dFRlc3RIZWxwZXIubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkQ0MDNGMTkxNTA4NzFGOTAwNTM1OEQyIC8qIExheW91dFRlc3RIZWxwZXIgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8u
ZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IExheW91dFRlc3RIZWxwZXI7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0JCTJEQTJFM0EzMUUxQkE1NDEw
MEEzQkJEMCAvKiBEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5oOyBwYXRoID0gbWFj
L0R1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTJEQTJFM0E0MUUxQkE1NDEwMEEzQkJEMCAvKiBEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tl
ci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IER1bXBSZW5kZXJU
cmVlU3BlbGxDaGVja2VyLm1tOyBwYXRoID0gbWFjL0R1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2Vy
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRURFMERBQTFGNTEzMURFMDBENUY4
REYgLyogQXBwS2l0VGVzdFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBcHBLaXRUZXN0U1BJLmg7IHBh
dGggPSBtYWMvQXBwS2l0VGVzdFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
MTExN0IzQTE1RDlBNTZBMDAxNjNCQzggLyogTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1vY2tXZWJOb3RpZmljYXRpb25Qcm92
aWRlci5oOyBwYXRoID0gbWFjL01vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzMTExN0IzQjE1RDlBNTZBMDAxNjNCQzggLyogTW9ja1dl
Yk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBuYW1lID0gTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tOyBwYXRoID0gbWFjL01vY2tX
ZWJOb3RpZmljYXRpb25Qcm92aWRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTQxMiw2ICs0MTAsOCBAQAogCQlDMjNFQTIwNzFCQzlFQUJBMDBDOTgwQjcgLyogRm9udFdpdGhG
ZWF0dXJlcy50dGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBmaWxlOyBuYW1lID0gRm9udFdpdGhGZWF0dXJlcy50dGY7IHBhdGggPSBmb250cy9Gb250
V2l0aEZlYXR1cmVzLnR0Zjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFCNzgwODUx
MUFGMTY0MzAwN0UxQkMyIC8qIE1vY2tHZW9sb2NhdGlvblByb3ZpZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1vY2tHZW9sb2NhdGlvblByb3ZpZGVyLmg7IHBhdGggPSBt
YWMvTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTFCNzgwODcxMUFGMTY2OTAwN0UxQkMyIC8qIE1vY2tHZW9sb2NhdGlvblByb3ZpZGVyLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gTW9ja0dlb2xvY2F0aW9u
UHJvdmlkZXIubW07IHBhdGggPSBtYWMvTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0QzM1Nzg4MjBFODQ0MjcwMEZBMDc0OCAvKiBMYXlv
dXRUZXN0U3BlbGxDaGVja2VyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbTsgcGF0aCA9IC4uL1Rlc3RSdW5uZXJTaGFy
ZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRjRDMzU3ODkyMEU4NDQyNzAwRkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNr
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGF5b3V0VGVzdFNwZWxsQ2hl
Y2tlci5oOyBwYXRoID0gLi4vVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxD
aGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RDQyMzVGMURENTA0NTMw
MDY3ODI5MCAvKiBUZXh0SW5wdXRDb250cm9sbGVySU9TLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMub2JqYzsgbmFtZSA9IFRleHRJbnB1dENvbnRyb2xsZXJJT1MubTsgcGF0aCA9IGlvcy9UZXh0
SW5wdXRDb250cm9sbGVySU9TLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RDQy
MzYwMURENTA0NjkwMDY3ODI5MCAvKiBUZXh0SW5wdXRDb250cm9sbGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRJbnB1dENvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KQEAgLTY4
Nyw2ICs2ODcsNyBAQAogCQkzMTQ4QTA2NTFFNkY5MEY0MDBEM0IzMTYgLyogVGVzdFJ1bm5lclNo
YXJlZCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRjRC
NkMzMTgyMEU4NDM4MjAwOEFDMjI1IC8qIGNvY29hICovLAogCQkJCTMxNDhBMDU1MUU2RjkwRjQw
MEQzQjMxNiAvKiBJT1NMYXlvdXRUZXN0Q29tbXVuaWNhdGlvbi5jcHAgKi8sCiAJCQkJMzE0OEEw
NTYxRTZGOTBGNDAwRDNCMzE2IC8qIElPU0xheW91dFRlc3RDb21tdW5pY2F0aW9uLmggKi8sCiAJ
CQkpOwpAQCAtNzc5LDggKzc4MCw2IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlBOEI5MUFERjBD
RjNCMzcyMDA4RjkxRkYgLyogRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLmggKi8sCiAJCQkJQThC
OTFBRDcwQ0YzQjMyRjAwOEY5MUZGIC8qIER1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tbSAqLywK
LQkJCQkyREEyRTNBMzFFMUJBNTQxMDBBM0JCRDAgLyogRHVtcFJlbmRlclRyZWVTcGVsbENoZWNr
ZXIuaCAqLywKLQkJCQkyREEyRTNBNDFFMUJBNTQxMDBBM0JCRDAgLyogRHVtcFJlbmRlclRyZWVT
cGVsbENoZWNrZXIubW0gKi8sCiAJCQkJQThCOTFBREQwQ0YzQjM3MjAwOEY5MUZGIC8qIER1bXBS
ZW5kZXJUcmVlV2luZG93LmggKi8sCiAJCQkJQThCOTFBRDkwQ0YzQjMyRjAwOEY5MUZGIC8qIER1
bXBSZW5kZXJUcmVlV2luZG93Lm1tICovLAogCQkJKTsKQEAgLTgxNyw2ICs4MTYsMTUgQEAKIAkJ
CW5hbWUgPSBQaXhlbER1bXA7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlG
NEI2QzMxODIwRTg0MzgyMDA4QUMyMjUgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91
cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUY0QzM1Nzg5MjBFODQ0MjcwMEZBMDc0OCAvKiBMYXlv
dXRUZXN0U3BlbGxDaGVja2VyLmggKi8sCisJCQkJRjRDMzU3ODgyMEU4NDQyNzAwRkEwNzQ4IC8q
IExheW91dFRlc3RTcGVsbENoZWNrZXIubW0gKi8sCisJCQkpOworCQkJbmFtZSA9IGNvY29hOwor
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJRjRENDIzNUQxREQ0Rjk5OTAwNjc4
MjkwIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBA
IC0xMDgxLDcgKzEwODksNiBAQAogCQkJCUJDQTE4QjdCMEM5QjA4RjEwMDExNDM2OSAvKiBEdW1w
UmVuZGVyVHJlZURyYWdnaW5nSW5mby5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4RDc5Q0VCMEZD
MjhCMkMwMDRBQzhGRSAvKiBEdW1wUmVuZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJjZS5tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQThCOTFBREEwQ0YzQjMyRjAwOEY5MUZGIC8qIER1bXBSZW5kZXJUcmVl
UGFzdGVib2FyZC5tbSBpbiBTb3VyY2VzICovLAotCQkJCTJEQTJFM0E1MUUxQkE1NDEwMEEzQkJE
MCAvKiBEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4
QjkxQURDMENGM0IzMkYwMDhGOTFGRiAvKiBEdW1wUmVuZGVyVHJlZVdpbmRvdy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDQTE4QjYyMEM5QjA4QzIwMDExNDM2OSAvKiBFZGl0aW5nRGVsZWdhdGUu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEI3MDBDOUIwOERCMDAxMTQzNjkgLyogRXZlbnRT
ZW5kaW5nQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLApAQCAtMTA5Myw2ICsxMTAwLDcgQEAK
IAkJCQkyQ0U4OEZBMjE3MTI0RDhDMDA3MzRGQzAgLyogSmF2YVNjcmlwdFRocmVhZGluZy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjE4RTcwNjFENkJBMDIzMDAyN0U1NDcgLyogSlNVSVNjcmlw
dENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYxOEU3MTMxRDZCQzQzQTAwMjdF
NTQ3IC8qIEpTV3JhcHBlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGNEMzNTc4RDIwRTg0NDRF
MDBGQTA3NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUUxQjc4MTY1MTFBRjMxQjcwMDdFMUJDMiAvKiBNb2NrR2VvbG9jYXRpb25Qcm92aWRlci5tbSBp
biBTb3VyY2VzICovLAogCQkJCTMxMTE3QjNEMTVEOUE1NkEwMDE2M0JDOCAvKiBNb2NrV2ViTm90
aWZpY2F0aW9uUHJvdmlkZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEI3MjBDOUIwOERC
MDAxMTQzNjkgLyogTmF2aWdhdGlvbkNvbnRyb2xsZXIubSBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9UZXN0UnVubmVyLmNwcAppbmRleCBmOGFkOTUxNTE3NDBiNjZjNzQ2OTJhZDUyZDM3
NGEzMDVkYTQ0NjcxLi43ZThlYzliZDQ1YjBiNzVmNGU4ZTkyNmJhNWM3ZDYzOGU2MjZlNDYzIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcApAQCAtMTc4OCw2ICsxNzg4LDE2IEBAIHN0
YXRpYyBKU1ZhbHVlUmVmIHNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkQ2FsbGJhY2soSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRTcGVsbENoZWNrZXJUZXh0UmVwbGFj
ZW1lbnRzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9u
LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNW
YWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmIChh
cmd1bWVudENvdW50IDwgMSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpOworCisgICAgYXV0byogcnVubmVyID0gc3RhdGljX2Nhc3Q8VGVzdFJ1bm5lcio+KEpT
T2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgcnVubmVyLT5zZXRTcGVsbENoZWNr
ZXJUZXh0UmVwbGFjZW1lbnRzKGNvbnRleHQsIEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBhcmd1
bWVudHNbMF0sIG51bGxwdHIpKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29u
dGV4dCk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIHNldE9wZW5QYW5lbEZpbGVzQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVu
dHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIGlmIChhcmd1bWVudENvdW50ID09
IDEpCkBAIC0yMjU1LDYgKzIyNjUsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBUZXN0UnVubmVyOjpz
dGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJydW5VSVNjcmlwdCIsIHJ1blVJU2NyaXB0Q2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiaW1hZ2VDb3VudEluR2VuZXJhbFBhc3RlYm9hcmQi
LCBpbWFnZUNvdW50SW5HZW5lcmFsUGFzdGVib2FyZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgInNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkIiwgc2V0U3BlbGxDaGVja2VyTG9nZ2lu
Z0VuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzZXRTcGVsbENoZWNrZXJUZXh0
UmVwbGFjZW1lbnRzIiwgc2V0U3BlbGxDaGVja2VyVGV4dFJlcGxhY2VtZW50c0NhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCiAgICAgICAgIHsgInNldE9wZW5QYW5lbEZpbGVzIiwgc2V0T3BlblBhbmVsRmlsZXND
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJmb3JjZUltbWVkaWF0ZUNvbXBsZXRpb24iLCBm
b3JjZUltbWVkaWF0ZUNvbXBsZXRpb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7IDAsIDAs
IDAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCmluZGV4IDNlMzI4YjgyMjMyM2ZlYzRiNGI1
NGY3NzdhY2VkMjQzNDY0NmI2YzEuLmRiZjE0ZmViNjE3OGJjYWQ2Nzk2YTAxYzQ0NTdhYjI1YmNk
MjIxY2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgKQEAgLTM3Niw2ICszNzYsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBkdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoKSBjb25zdCB7IHJldHVy
biBtX2R1bXBKU0NvbnNvbGVMb2dJblN0ZEVycjsgfQogCiAgICAgdm9pZCBzZXRTcGVsbENoZWNr
ZXJMb2dnaW5nRW5hYmxlZChib29sKTsKKyAgICB2b2lkIHNldFNwZWxsQ2hlY2tlclRleHRSZXBs
YWNlbWVudHMoSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiByZXBsYWNlbWVudHMpOwogCiAgICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBvcGVuUGFuZWxGaWxlcygpIGNvbnN0IHsg
cmV0dXJuIG1fb3BlblBhbmVsRmlsZXM7IH0KICAgICB2b2lkIHNldE9wZW5QYW5lbEZpbGVzKEpT
Q29udGV4dFJlZiwgSlNWYWx1ZVJlZik7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJl
bmRlclRyZWUubW0KaW5kZXggZDY5Njc3YmQ5ZWU3M2E4OWQyZjIwNjQ1MDQ4ZGM3MDJjOTZmNzNi
OS4uMmQ1OWRhNzhiNTIxMDgwODQ1NWY2NGY5NjlhOGM2MmVlMzc5Y2RkOCAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtMzQsMTMgKzM0LDEzIEBACiAj
aW1wb3J0ICJEZWZhdWx0UG9saWN5RGVsZWdhdGUuaCIKICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVl
RHJhZ2dpbmdJbmZvLmgiCiAjaW1wb3J0ICJEdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQuaCIKLSNp
bXBvcnQgIkR1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLmgiCiAjaW1wb3J0ICJEdW1wUmVuZGVy
VHJlZVdpbmRvdy5oIgogI2ltcG9ydCAiRWRpdGluZ0RlbGVnYXRlLmgiCiAjaW1wb3J0ICJFdmVu
dFNlbmRpbmdDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJGcmFtZUxvYWREZWxlZ2F0ZS5oIgogI2lt
cG9ydCAiSGlzdG9yeURlbGVnYXRlLmgiCiAjaW1wb3J0ICJKYXZhU2NyaXB0VGhyZWFkaW5nLmgi
CisjaW1wb3J0ICJMYXlvdXRUZXN0U3BlbGxDaGVja2VyLmgiCiAjaW1wb3J0ICJNb2NrR2VvbG9j
YXRpb25Qcm92aWRlci5oIgogI2ltcG9ydCAiTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmgi
CiAjaW1wb3J0ICJOYXZpZ2F0aW9uQ29udHJvbGxlci5oIgpAQCAtMTg2OCw3ICsxODY4LDkgQEAg
c3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKGNv
bnN0IFRlc3RPcHRpb25zJiBvcHRpb24KIAogICAgIFttYWluRnJhbWUgX2NsZWFyT3BlbmVyXTsK
IAotICAgIHNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKGZhbHNlKTsKKyNpZiBQTEFURk9S
TShNQUMpCisgICAgW0xheW91dFRlc3RTcGVsbENoZWNrZXIgdW5pbnN0YWxsQW5kUmVzZXRdOwor
I2VuZGlmCiAKICAgICByZXNldEFjY3VtdWxhdGVkTG9ncygpOwogICAgIFdlYkNvcmVUZXN0U3Vw
cG9ydDo6aW5pdGlhbGl6ZUxvZ0NoYW5uZWxzSWZOZWNlc3NhcnkoKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5oIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlM2ZkNzFjNDIxMWMwYjI3Yzc1YzkxZjE2NjFmYjdj
YzYxNDE4NGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLmgKKysr
IC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotdm9pZCBzZXRTcGVsbENo
ZWNrZXJMb2dnaW5nRW5hYmxlZChib29sKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5tbQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYmJiNGQ5NmRlOWUyYTFhMmQ3N2NjYjM1MjhiNzMxZDFiZGYwOWRmNy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW0KKysrIC9kZXYvbnVsbApA
QCAtMSw5MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0
ICJEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5oIgotCi0jaWYgUExBVEZPUk0oTUFDKQotCi0j
aW1wb3J0IDxBcHBLaXQvTlNTcGVsbENoZWNrZXIuaD4KLSNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25z
Lmg+Ci0jaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KLQotc3RhdGljIGJvb2wgc3Bl
bGxDaGVja2VyTG9nZ2luZ0VuYWJsZWQ7Ci1zdGF0aWMgSU1QIGFwcEtpdFJlY29yZFJlc3BvbnNl
SU1QOwotCi1zdGF0aWMgY29uc3QgY2hhciAqc3RyaW5nRm9yQ29ycmVjdGlvblJlc3BvbnNlKE5T
Q29ycmVjdGlvblJlc3BvbnNlIGNvcnJlY3Rpb25SZXNwb25zZSkKLXsKLSAgICBzd2l0Y2ggKGNv
cnJlY3Rpb25SZXNwb25zZSkgewotICAgIGNhc2UgTlNDb3JyZWN0aW9uUmVzcG9uc2VOb25lOgot
ICAgICAgICByZXR1cm4gIm5vbmUiOwotICAgIGNhc2UgTlNDb3JyZWN0aW9uUmVzcG9uc2VBY2Nl
cHRlZDoKLSAgICAgICAgcmV0dXJuICJhY2NlcHRlZCI7Ci0gICAgY2FzZSBOU0NvcnJlY3Rpb25S
ZXNwb25zZVJlamVjdGVkOgotICAgICAgICByZXR1cm4gInJlamVjdGVkIjsKLSAgICBjYXNlIE5T
Q29ycmVjdGlvblJlc3BvbnNlSWdub3JlZDoKLSAgICAgICAgcmV0dXJuICJpZ25vcmVkIjsKLSAg
ICBjYXNlIE5TQ29ycmVjdGlvblJlc3BvbnNlRWRpdGVkOgotICAgICAgICByZXR1cm4gImVkaXRl
ZCI7Ci0gICAgY2FzZSBOU0NvcnJlY3Rpb25SZXNwb25zZVJldmVydGVkOgotICAgICAgICByZXR1
cm4gInJldmVydGVkIjsKLSAgICB9Ci0KLSAgICByZXR1cm4gImludmFsaWQiOwotfQotCi1zdGF0
aWMgdm9pZCBkcnRfTlNTcGVsbENoZWNrZXJfcmVjb3JkUmVzcG9uc2VUb0NvcnJlY3Rpb24oaWQg
c2VsZiwgU0VMIF9jbWQsIE5TQ29ycmVjdGlvblJlc3BvbnNlIHJlc3BvbnNlLCBOU1N0cmluZyAq
Y29ycmVjdGlvbiwgTlNTdHJpbmcgKndvcmQsIE5TU3RyaW5nICpsYW5ndWFnZSwgTlNJbnRlZ2Vy
IHNwZWxsRG9jdW1lbnRUYWcpCi17Ci0gICAgaWYgKHNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVk
KQotICAgICAgICBwcmludGYoIk5TU3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlVG9Db3JyZWN0
aW9uOiAlcyAtPiAlcyAocmVzcG9uc2U6ICVzKVxuIiwgW3dvcmQgVVRGOFN0cmluZ10sIFtjb3Jy
ZWN0aW9uIFVURjhTdHJpbmddLCBzdHJpbmdGb3JDb3JyZWN0aW9uUmVzcG9uc2UocmVzcG9uc2Up
KTsKLQotICAgIHd0ZkNhbGxJTVA8dm9pZCwgTlNDb3JyZWN0aW9uUmVzcG9uc2UsIE5TU3RyaW5n
ICosIE5TU3RyaW5nICosIE5TU3RyaW5nICosIE5TSW50ZWdlcj4oYXBwS2l0UmVjb3JkUmVzcG9u
c2VJTVAsIHNlbGYsIF9jbWQsIHJlc3BvbnNlLCBjb3JyZWN0aW9uLCB3b3JkLCBsYW5ndWFnZSwg
c3BlbGxEb2N1bWVudFRhZyk7Ci19Ci0KLXN0YXRpYyB2b2lkIHN3aXp6bGVOU1NwZWxsQ2hlY2tl
ck1ldGhvZHNJZk5lZWRlZCgpCi17Ci0gICAgc3RhdGljIGJvb2wgaGFzU3dpenpsZWQ7Ci0gICAg
aWYgKGhhc1N3aXp6bGVkKQotICAgICAgICByZXR1cm47Ci0gICAgaGFzU3dpenpsZWQgPSB0cnVl
OwotCi0gICAgTWV0aG9kIHJlY29yZFJlc3BvbnNlTWV0aG9kID0gY2xhc3NfZ2V0SW5zdGFuY2VN
ZXRob2Qob2JqY19nZXRDbGFzcygiTlNTcGVsbENoZWNrZXIiKSwgQHNlbGVjdG9yKHJlY29yZFJl
c3BvbnNlOnRvQ29ycmVjdGlvbjpmb3JXb3JkOmxhbmd1YWdlOmluU3BlbGxEb2N1bWVudFdpdGhU
YWc6KSk7Ci0KLSAgICBhcHBLaXRSZWNvcmRSZXNwb25zZUlNUCA9IG1ldGhvZF9zZXRJbXBsZW1l
bnRhdGlvbihyZWNvcmRSZXNwb25zZU1ldGhvZCwgKElNUClkcnRfTlNTcGVsbENoZWNrZXJfcmVj
b3JkUmVzcG9uc2VUb0NvcnJlY3Rpb24pOwotfQotCi12b2lkIHNldFNwZWxsQ2hlY2tlckxvZ2dp
bmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKLXsKLSAgICBzd2l6emxlTlNTcGVsbENoZWNrZXJNZXRo
b2RzSWZOZWVkZWQoKTsKLQotICAgIHNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkID0gZW5hYmxl
ZDsKLX0KLQotI2Vsc2UgLy8gUExBVEZPUk0oTUFDKQotCi12b2lkIHNldFNwZWxsQ2hlY2tlckxv
Z2dpbmdFbmFibGVkKGJvb2wpCi17Ci19Ci0KLSNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbSBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCmluZGV4IDZlMDJmZjAzYTIzOTI4
MTMyNGY0ZmFhMmU1ZjFhN2RjNTFmMTg2OTQuLmZjMmE2ZWZmOGY0NDRiYWMxYzdhZGYzYjYyYmIw
YzAwYTU2YzdlMTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVu
bmVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1t
CkBAIC0zMSw4ICszMSw4IEBACiAjaW1wb3J0ICJUZXN0UnVubmVyLmgiCiAKICNpbXBvcnQgIkRl
ZmF1bHRQb2xpY3lEZWxlZ2F0ZS5oIgotI2ltcG9ydCAiRHVtcFJlbmRlclRyZWVTcGVsbENoZWNr
ZXIuaCIKICNpbXBvcnQgIkVkaXRpbmdEZWxlZ2F0ZS5oIgorI2ltcG9ydCAiTGF5b3V0VGVzdFNw
ZWxsQ2hlY2tlci5oIgogI2ltcG9ydCAiTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIuaCIKICNpbXBv
cnQgIk1vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5oIgogI2ltcG9ydCAiUG9saWN5RGVsZWdh
dGUuaCIKQEAgLTIxMiw3ICsyMTIsMjEgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRTdG9yYWdlRGF0
YWJhc2VJZGxlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQogCiB2b2lkIFRlc3RSdW5uZXI6OnNl
dFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKLSAgICA6OnNldFNw
ZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKGVuYWJsZWQpOworI2lmIFBMQVRGT1JNKE1BQykKKyAg
ICBbTGF5b3V0VGVzdFNwZWxsQ2hlY2tlciBpbnN0YWxsSWZOZWNlc3NhcnldLnNwZWxsQ2hlY2tl
ckxvZ2dpbmdFbmFibGVkID0gZW5hYmxlZDsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGVuYWJs
ZWQpOworI2VuZGlmCit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0U3BlbGxDaGVja2VyVGV4dFJl
cGxhY2VtZW50cyhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgcmVwbGFjZW1lbnRz
KQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBbW0xheW91dFRlc3RTcGVsbENoZWNrZXIgaW5z
dGFsbElmTmVjZXNzYXJ5XSBzZXRSZXBsYWNlbWVudHNGcm9tSlNPYmplY3Q6cmVwbGFjZW1lbnRz
IGluQ29udGV4dDpjb250ZXh0XTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJlcGxhY2VtZW50
cyk7CisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOworI2VuZGlmCiB9CiAKIHZvaWQgVGVzdFJ1
bm5lcjo6Y2xvc2VJZGxlTG9jYWxTdG9yYWdlRGF0YWJhc2VzKCkKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcAppbmRleCA2OWMzNTE0MjE1YTA3ZTI3YzFjZjM0N2E2
NDUwMjVmMDBhMTAwNjlmLi43ODAzMzMxMTZhYWQwZDU5MzlmODc0NmY4MDJlMjc4NTZkYjlkYmEy
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCkBAIC0xNDA2
LDMgKzE0MDYsOCBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFi
bGVkKGJvb2wgZW5hYmxlZCkKIHsKICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICJFUlJPUjogVGVz
dFJ1bm5lcjo6c2V0U3BlbGxDaGVja2VyTG9nZ2luZ0VuYWJsZWQoKSBub3QgaW1wbGVtZW50ZWRc
biIpOwogfQorCit2b2lkIFRlc3RSdW5uZXI6OnNldFNwZWxsQ2hlY2tlclRleHRSZXBsYWNlbWVu
dHMoSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZikKK3sKKyAgICBmcHJpbnRmKHRlc3RSZXN1bHQs
ICJFUlJPUjogVGVzdFJ1bm5lcjo6c2V0U3BlbGxDaGVja2VyVGV4dFJlcGxhY2VtZW50cygpIG5v
dCBpbXBsZW1lbnRlZFxuIik7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVk
L2NvY29hL0xheW91dFRlc3RTcGVsbENoZWNrZXIuaCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQv
Y29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4NTQ4OTM5Y2E3OWQx
Zjc3ZTQyZjFkOWIzZDk4Y2UxNjk4ZDhiYTkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0
UnVubmVyU2hhcmVkL2NvY29hL0xheW91dFRlc3RTcGVsbENoZWNrZXIuaApAQCAtMCwwICsxLDU5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBQTEFU
Rk9STShNQUMpCisKKyNpbXBvcnQgPEFwcEtpdC9OU1NwZWxsQ2hlY2tlci5oPgorCitAaW50ZXJm
YWNlIExheW91dFRlc3RUZXh0Q2hlY2tpbmdSZXN1bHQgOiBOU1RleHRDaGVja2luZ1Jlc3VsdCB7
CitAcHJpdmF0ZQorICAgIFJldGFpblB0cjxOU1N0cmluZz4gX3JlcGxhY2VtZW50OworICAgIE5T
VGV4dENoZWNraW5nVHlwZSBfdHlwZTsKKyAgICBOU1JhbmdlIF9yYW5nZTsKK30KKworLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoVHlwZTooTlNUZXh0Q2hlY2tpbmdUeXBlKXR5cGUgcmFuZ2U6KE5T
UmFuZ2UpcmFuZ2UgcmVwbGFjZW1lbnQ6KE5TU3RyaW5nICopcmVwbGFjZW1lbnQ7CitAZW5kCisK
K0BpbnRlcmZhY2UgTGF5b3V0VGVzdFNwZWxsQ2hlY2tlciA6IE5TU3BlbGxDaGVja2VyIHsKK0Bw
cml2YXRlCisgICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBMYXlvdXRUZXN0
VGV4dENoZWNraW5nUmVzdWx0ICo+PiBfcmVwbGFjZW1lbnRzOworICAgIEJPT0wgX3NwZWxsQ2hl
Y2tlckxvZ2dpbmdFbmFibGVkOworfQorCisrIChpbnN0YW5jZXR5cGUpaW5zdGFsbElmTmVjZXNz
YXJ5OworKyAodm9pZCl1bmluc3RhbGxBbmRSZXNldDsKKworLSAodm9pZClzZXRSZXBsYWNlbWVu
dHNGcm9tSlNPYmplY3Q6KEpTT2JqZWN0UmVmKXJlcGxhY2VtZW50cyBpbkNvbnRleHQ6KEpTQ29u
dGV4dFJlZiljb250ZXh0OworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TRGljdGlvbmFy
eTxOU1N0cmluZyAqLCBMYXlvdXRUZXN0VGV4dENoZWNraW5nUmVzdWx0ICo+ICpyZXBsYWNlbWVu
dHM7CitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBzcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxl
ZDsKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbSBiL1Rvb2xzL1Rl
c3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jYjcyM2Q3NmQyMjg0YTBkZTEwZDk3MGJlNjg3OWFmMjRkODE0Y2YzCi0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2Vy
Lm1tCkBAIC0wLDAgKzEsMjQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJMYXlvdXRUZXN0U3BlbGxDaGVja2VyLmgiCisKKyNpbXBvcnQgPEphdmFTY3JpcHRD
b3JlL0pTUmV0YWluUHRyLmg+CisjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHd0
Zi9Bc3NlcnRpb25zLmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworI2lmIFBM
QVRGT1JNKE1BQykKKwordHlwZWRlZiB2b2lkICheVGV4dENoZWNraW5nQ29tcGxldGlvbkhhbmRs
ZXIpKE5TSW50ZWdlciBzZXF1ZW5jZU51bWJlciwgTlNBcnJheTxOU1RleHRDaGVja2luZ1Jlc3Vs
dCAqPiAqcmVzdWx0cywgTlNPcnRob2dyYXBoeSAqb3J0aG9ncmFwaHksIE5TSW50ZWdlciB3b3Jk
Q291bnQpOworCitzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPExheW91dFRlc3RTcGVs
bENoZWNrZXI+PiBnbG9iYWxTcGVsbENoZWNrZXI7CitzdGF0aWMgQk9PTCBoYXNJbnN0YWxsZWRM
YXlvdXRUZXN0U3BlbGxDaGVja2VyID0gTk87CitzdGF0aWMgSU1QIGdsb2JhbGx5U3dpenpsZWRT
aGFyZWRTcGVsbENoZWNrZXJJbXBsZW1lbnRhdGlvbjsKK3N0YXRpYyBNZXRob2Qgb3JpZ2luYWxT
aGFyZWRTcGVsbENoZWNrZXJNZXRob2Q7CisKK3N0YXRpYyBMYXlvdXRUZXN0U3BlbGxDaGVja2Vy
ICpleGlzdGluZ0dsb2JhbExheW91dFRlc3RTcGVsbENoZWNrZXIoKQoreworICAgIHJldHVybiBn
bG9iYWxTcGVsbENoZWNrZXIuZ2V0KCkuZ2V0KCk7Cit9CisKK3N0YXRpYyBMYXlvdXRUZXN0U3Bl
bGxDaGVja2VyICplbnN1cmVHbG9iYWxMYXlvdXRUZXN0U3BlbGxDaGVja2VyKCkKK3sKKyAgICBz
dGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNl
VG9rZW4sIF57CisgICAgICAgIGdsb2JhbFNwZWxsQ2hlY2tlci5nZXQoKSA9IGFkb3B0TlMoW1tM
YXlvdXRUZXN0U3BlbGxDaGVja2VyIGFsbG9jXSBpbml0XSk7CisgICAgfSk7CisgICAgcmV0dXJu
IGV4aXN0aW5nR2xvYmFsTGF5b3V0VGVzdFNwZWxsQ2hlY2tlcigpOworfQorCitzdGF0aWMgY29u
c3QgY2hhciAqc3RyaW5nRm9yQ29ycmVjdGlvblJlc3BvbnNlKE5TQ29ycmVjdGlvblJlc3BvbnNl
IGNvcnJlY3Rpb25SZXNwb25zZSkKK3sKKyAgICBzd2l0Y2ggKGNvcnJlY3Rpb25SZXNwb25zZSkg
eworICAgIGNhc2UgTlNDb3JyZWN0aW9uUmVzcG9uc2VOb25lOgorICAgICAgICByZXR1cm4gIm5v
bmUiOworICAgIGNhc2UgTlNDb3JyZWN0aW9uUmVzcG9uc2VBY2NlcHRlZDoKKyAgICAgICAgcmV0
dXJuICJhY2NlcHRlZCI7CisgICAgY2FzZSBOU0NvcnJlY3Rpb25SZXNwb25zZVJlamVjdGVkOgor
ICAgICAgICByZXR1cm4gInJlamVjdGVkIjsKKyAgICBjYXNlIE5TQ29ycmVjdGlvblJlc3BvbnNl
SWdub3JlZDoKKyAgICAgICAgcmV0dXJuICJpZ25vcmVkIjsKKyAgICBjYXNlIE5TQ29ycmVjdGlv
blJlc3BvbnNlRWRpdGVkOgorICAgICAgICByZXR1cm4gImVkaXRlZCI7CisgICAgY2FzZSBOU0Nv
cnJlY3Rpb25SZXNwb25zZVJldmVydGVkOgorICAgICAgICByZXR1cm4gInJldmVydGVkIjsKKyAg
ICB9CisgICAgcmV0dXJuICJpbnZhbGlkIjsKK30KKworc3RhdGljIE5TVGV4dENoZWNraW5nVHlw
ZSBuc1RleHRDaGVja2luZ1R5cGUoSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+JiYganNUeXBlKQor
eworICAgIGF1dG8gY2ZUeXBlID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBqc1R5cGUuZ2V0KCkpKTsKKyAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGNm
VHlwZS5nZXQoKSwgQ0ZTVFIoIm9ydGhvZ3JhcGh5IiksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRp
dmUpID09IGtDRkNvbXBhcmVFcXVhbFRvKQorICAgICAgICByZXR1cm4gTlNUZXh0Q2hlY2tpbmdU
eXBlT3J0aG9ncmFwaHk7CisKKyAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGNmVHlwZS5nZXQoKSwg
Q0ZTVFIoInNwZWxsaW5nIiksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUpID09IGtDRkNvbXBh
cmVFcXVhbFRvKQorICAgICAgICByZXR1cm4gTlNUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7CisK
KyAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGNmVHlwZS5nZXQoKSwgQ0ZTVFIoImdyYW1tYXIiKSwg
a0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pCisgICAgICAg
IHJldHVybiBOU1RleHRDaGVja2luZ1R5cGVHcmFtbWFyOworCisgICAgaWYgKENGU3RyaW5nQ29t
cGFyZShjZlR5cGUuZ2V0KCksIENGU1RSKCJkYXRlIiksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRp
dmUpID09IGtDRkNvbXBhcmVFcXVhbFRvKQorICAgICAgICByZXR1cm4gTlNUZXh0Q2hlY2tpbmdU
eXBlRGF0ZTsKKworICAgIGlmIChDRlN0cmluZ0NvbXBhcmUoY2ZUeXBlLmdldCgpLCBDRlNUUigi
YWRkcmVzcyIpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxU
bykKKyAgICAgICAgcmV0dXJuIE5TVGV4dENoZWNraW5nVHlwZUFkZHJlc3M7CisKKyAgICBpZiAo
Q0ZTdHJpbmdDb21wYXJlKGNmVHlwZS5nZXQoKSwgQ0ZTVFIoImxpbmsiKSwga0NGQ29tcGFyZUNh
c2VJbnNlbnNpdGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pCisgICAgICAgIHJldHVybiBOU1Rl
eHRDaGVja2luZ1R5cGVMaW5rOworCisgICAgaWYgKENGU3RyaW5nQ29tcGFyZShjZlR5cGUuZ2V0
KCksIENGU1RSKCJxdW90ZSIpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSA9PSBrQ0ZDb21w
YXJlRXF1YWxUbykKKyAgICAgICAgcmV0dXJuIE5TVGV4dENoZWNraW5nVHlwZVF1b3RlOworCisg
ICAgaWYgKENGU3RyaW5nQ29tcGFyZShjZlR5cGUuZ2V0KCksIENGU1RSKCJkYXNoIiksIGtDRkNv
bXBhcmVDYXNlSW5zZW5zaXRpdmUpID09IGtDRkNvbXBhcmVFcXVhbFRvKQorICAgICAgICByZXR1
cm4gTlNUZXh0Q2hlY2tpbmdUeXBlRGFzaDsKKworICAgIGlmIChDRlN0cmluZ0NvbXBhcmUoY2ZU
eXBlLmdldCgpLCBDRlNUUigicmVwbGFjZW1lbnQiKSwga0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2
ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pCisgICAgICAgIHJldHVybiBOU1RleHRDaGVja2luZ1R5
cGVSZXBsYWNlbWVudDsKKworICAgIGlmIChDRlN0cmluZ0NvbXBhcmUoY2ZUeXBlLmdldCgpLCBD
RlNUUigiY29ycmVjdGlvbiIpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSA9PSBrQ0ZDb21w
YXJlRXF1YWxUbykKKyAgICAgICAgcmV0dXJuIE5TVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb247
CisKKyAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGNmVHlwZS5nZXQoKSwgQ0ZTVFIoInJlZ3VsYXIt
ZXhwcmVzc2lvbiIpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1
YWxUbykKKyAgICAgICAgcmV0dXJuIE5TVGV4dENoZWNraW5nVHlwZVJlZ3VsYXJFeHByZXNzaW9u
OworCisgICAgaWYgKENGU3RyaW5nQ29tcGFyZShjZlR5cGUuZ2V0KCksIENGU1RSKCJwaG9uZS1u
dW1iZXIiKSwga0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8p
CisgICAgICAgIHJldHVybiBOU1RleHRDaGVja2luZ1R5cGVQaG9uZU51bWJlcjsKKworICAgIGlm
IChDRlN0cmluZ0NvbXBhcmUoY2ZUeXBlLmdldCgpLCBDRlNUUigidHJhbnNpdC1pbmZvcm1hdGlv
biIpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKKyAg
ICAgICAgcmV0dXJuIE5TVGV4dENoZWNraW5nVHlwZVRyYW5zaXRJbmZvcm1hdGlvbjsKKworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBOU1RleHRDaGVja2luZ1R5cGVTcGVs
bGluZzsKK30KKworQGltcGxlbWVudGF0aW9uIExheW91dFRlc3RUZXh0Q2hlY2tpbmdSZXN1bHQK
KworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVHlwZTooTlNUZXh0Q2hlY2tpbmdUeXBlKXR5cGUg
cmFuZ2U6KE5TUmFuZ2UpcmFuZ2UgcmVwbGFjZW1lbnQ6KE5TU3RyaW5nICopcmVwbGFjZW1lbnQK
K3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KworICAgIF90eXBlID0gdHlwZTsKKyAgICBfcmFuZ2UgPSByYW5nZTsKKyAgICBfcmVwbGFjZW1l
bnQgPSByZXBsYWNlbWVudDsKKworICAgIHJldHVybiBzZWxmOworfQorCistIChOU1JhbmdlKXJh
bmdlCit7CisgICAgcmV0dXJuIF9yYW5nZTsKK30KKworLSAoTlNUZXh0Q2hlY2tpbmdUeXBlKXJl
c3VsdFR5cGUKK3sKKyAgICByZXR1cm4gX3R5cGU7Cit9CisKKy0gKE5TU3RyaW5nICopcmVwbGFj
ZW1lbnRTdHJpbmcKK3sKKyAgICByZXR1cm4gX3JlcGxhY2VtZW50LmdldCgpOworfQorCistIChO
U1N0cmluZyAqKWRlc2NyaXB0aW9uCit7CisgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiPCVAICVwIHR5cGU9JXR1IHJhbmdlPVsldHUsICV0dV0gcmVwbGFjZW1lbnQ9JyVA
Jz4iLCBzZWxmLmNsYXNzLCBzZWxmLCBfdHlwZSwgX3JhbmdlLmxvY2F0aW9uLCBfcmFuZ2UubG9j
YXRpb24gKyBfcmFuZ2UubGVuZ3RoLCBfcmVwbGFjZW1lbnQuZ2V0KCldOworfQorCitAZW5kCisK
K0BpbXBsZW1lbnRhdGlvbiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyCisKK0BzeW50aGVzaXplIHNw
ZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkID0gX3NwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkOwor
CisrIChpbnN0YW5jZXR5cGUpaW5zdGFsbElmTmVjZXNzYXJ5Cit7CisgICAgYXV0byAqc3BlbGxD
aGVja2VyID0gZW5zdXJlR2xvYmFsTGF5b3V0VGVzdFNwZWxsQ2hlY2tlcigpOworICAgIGlmICho
YXNJbnN0YWxsZWRMYXlvdXRUZXN0U3BlbGxDaGVja2VyKQorICAgICAgICByZXR1cm4gc3BlbGxD
aGVja2VyOworCisgICAgb3JpZ2luYWxTaGFyZWRTcGVsbENoZWNrZXJNZXRob2QgPSBjbGFzc19n
ZXRDbGFzc01ldGhvZChvYmpjX2dldE1ldGFDbGFzcygiTlNTcGVsbENoZWNrZXIiKSwgQHNlbGVj
dG9yKHNoYXJlZFNwZWxsQ2hlY2tlcikpOworICAgIGdsb2JhbGx5U3dpenpsZWRTaGFyZWRTcGVs
bENoZWNrZXJJbXBsZW1lbnRhdGlvbiA9IG1ldGhvZF9zZXRJbXBsZW1lbnRhdGlvbihvcmlnaW5h
bFNoYXJlZFNwZWxsQ2hlY2tlck1ldGhvZCwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KGVuc3VyZUds
b2JhbExheW91dFRlc3RTcGVsbENoZWNrZXIpKTsKKyAgICBoYXNJbnN0YWxsZWRMYXlvdXRUZXN0
U3BlbGxDaGVja2VyID0gWUVTOworICAgIHJldHVybiBzcGVsbENoZWNrZXI7Cit9CisKKysgKHZv
aWQpdW5pbnN0YWxsQW5kUmVzZXQKK3sKKyAgICBbZXhpc3RpbmdHbG9iYWxMYXlvdXRUZXN0U3Bl
bGxDaGVja2VyKCkgcmVzZXRdOworICAgIGlmICghaGFzSW5zdGFsbGVkTGF5b3V0VGVzdFNwZWxs
Q2hlY2tlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbWV0aG9kX3NldEltcGxlbWVudGF0aW9u
KG9yaWdpbmFsU2hhcmVkU3BlbGxDaGVja2VyTWV0aG9kLCBnbG9iYWxseVN3aXp6bGVkU2hhcmVk
U3BlbGxDaGVja2VySW1wbGVtZW50YXRpb24pOworICAgIGhhc0luc3RhbGxlZExheW91dFRlc3RT
cGVsbENoZWNrZXIgPSBOTzsKK30KKworLSAodm9pZClyZXNldAoreworICAgIHNlbGYucmVwbGFj
ZW1lbnRzID0gbmlsOworICAgIHNlbGYuc3BlbGxDaGVja2VyTG9nZ2luZ0VuYWJsZWQgPSBOTzsK
K30KKworLSAoTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIExheW91dFRlc3RUZXh0Q2hlY2tpbmdS
ZXN1bHQgKj4gKilyZXBsYWNlbWVudHMKK3sKKyAgICByZXR1cm4gX3JlcGxhY2VtZW50cy5nZXQo
KTsKK30KKworLSAodm9pZClzZXRSZXBsYWNlbWVudHM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAq
LCBMYXlvdXRUZXN0VGV4dENoZWNraW5nUmVzdWx0ICo+ICopcmVwbGFjZW1lbnRzCit7CisgICAg
X3JlcGxhY2VtZW50cyA9IGFkb3B0TlMocmVwbGFjZW1lbnRzLmNvcHkpOworfQorCistICh2b2lk
KXNldFJlcGxhY2VtZW50c0Zyb21KU09iamVjdDooSlNPYmplY3RSZWYpcmVwbGFjZW1lbnRzIGlu
Q29udGV4dDooSlNDb250ZXh0UmVmKWNvbnRleHQKK3sKKyAgICBhdXRvIGZyb21Qcm9wZXJ0eU5h
bWUgPSBhZG9wdChKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiZnJvbSIpKTsKKyAgICBh
dXRvIHRvUHJvcGVydHlOYW1lID0gYWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
InRvIikpOworICAgIGF1dG8gdHlwZVByb3BlcnR5TmFtZSA9IGFkb3B0KEpTU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJ0eXBlIikpOworICAgIGF1dG8gcmVwbGFjZW1lbnRQcm9wZXJ0eU5h
bWUgPSBhZG9wdChKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygicmVwbGFjZW1lbnQiKSk7
CisgICAgYXV0byBwcm9wZXJ0aWVzID0gSlNPYmplY3RDb3B5UHJvcGVydHlOYW1lcyhjb250ZXh0
LCByZXBsYWNlbWVudHMpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbW05TTXV0YWJsZURp
Y3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4
IDwgSlNQcm9wZXJ0eU5hbWVBcnJheUdldENvdW50KHByb3BlcnRpZXMpOyArK2luZGV4KSB7Cisg
ICAgICAgIEpTU3RyaW5nUmVmIHdvcmRUb1JlcGxhY2UgPSBKU1Byb3BlcnR5TmFtZUFycmF5R2V0
TmFtZUF0SW5kZXgocHJvcGVydGllcywgaW5kZXgpOworICAgICAgICBKU09iamVjdFJlZiByZXBs
YWNlbWVudCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBKU09iamVjdEdldFByb3BlcnR5KGNv
bnRleHQsIHJlcGxhY2VtZW50cywgd29yZFRvUmVwbGFjZSwgbnVsbHB0ciksIG51bGxwdHIpOwor
ICAgICAgICBsb25nIGZyb21WYWx1ZSA9IGxyb3VuZGwoSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQs
IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgcmVwbGFjZW1lbnQsIGZyb21Qcm9wZXJ0eU5h
bWUuZ2V0KCksIG51bGxwdHIpLCBudWxscHRyKSk7CisgICAgICAgIGxvbmcgdG9WYWx1ZSA9IGxy
b3VuZGwoSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4
dCwgcmVwbGFjZW1lbnQsIHRvUHJvcGVydHlOYW1lLmdldCgpLCBudWxscHRyKSwgbnVsbHB0cikp
OworICAgICAgICBhdXRvIHR5cGVWYWx1ZSA9IGFkb3B0KEpTVmFsdWVUb1N0cmluZ0NvcHkoY29u
dGV4dCwgSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCByZXBsYWNlbWVudCwgdHlwZVByb3Bl
cnR5TmFtZS5nZXQoKSwgbnVsbHB0ciksIG51bGxwdHIpKTsKKyAgICAgICAgYXV0byByZXBsYWNl
bWVudFZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCByZXBsYWNlbWVudCwgcmVw
bGFjZW1lbnRQcm9wZXJ0eU5hbWUuZ2V0KCksIG51bGxwdHIpOworICAgICAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHJlcGxhY2VtZW50VGV4dDsKKyAgICAgICAgaWYgKCFKU1ZhbHVlSXNVbmRl
ZmluZWQoY29udGV4dCwgcmVwbGFjZW1lbnRWYWx1ZSkpIHsKKyAgICAgICAgICAgIGF1dG8gcmVw
bGFjZW1lbnRKU1N0cmluZyA9IGFkb3B0KEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgcmVw
bGFjZW1lbnRWYWx1ZSwgbnVsbHB0cikpOworICAgICAgICAgICAgcmVwbGFjZW1lbnRUZXh0ID0g
YWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCByZXBsYWNl
bWVudEpTU3RyaW5nLmdldCgpKSk7CisgICAgICAgIH0KKyAgICAgICAgYXV0byBzcGVsbENoZWNr
UmVzdWx0ID0gYWRvcHROUyhbW0xheW91dFRlc3RUZXh0Q2hlY2tpbmdSZXN1bHQgYWxsb2NdIGlu
aXRXaXRoVHlwZTpuc1RleHRDaGVja2luZ1R5cGUoV1RGTW92ZSh0eXBlVmFsdWUpKSByYW5nZTpO
U01ha2VSYW5nZShmcm9tVmFsdWUsIHRvVmFsdWUgLSBmcm9tVmFsdWUpIHJlcGxhY2VtZW50OihO
U1N0cmluZyAqKXJlcGxhY2VtZW50VGV4dC5nZXQoKV0pOworICAgICAgICBhdXRvIGNmV29yZFRv
UmVwbGFjZSA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgd29yZFRvUmVwbGFjZSkpOworICAgICAgICBbcmVzdWx0IHNldE9iamVjdDpzcGVsbENoZWNr
UmVzdWx0LmdldCgpIGZvcktleTooTlNTdHJpbmcgKiljZldvcmRUb1JlcGxhY2UuZ2V0KCldOwor
ICAgIH0KKyAgICBKU1Byb3BlcnR5TmFtZUFycmF5UmVsZWFzZShwcm9wZXJ0aWVzKTsKKworICAg
IF9yZXBsYWNlbWVudHMgPSBXVEZNb3ZlKHJlc3VsdCk7Cit9CisKKy0gKE5TQXJyYXk8TlNUZXh0
Q2hlY2tpbmdSZXN1bHQgKj4gKiljaGVja1N0cmluZzooTlNTdHJpbmcgKilzdHJpbmdUb0NoZWNr
IHJhbmdlOihOU1JhbmdlKXJhbmdlIHR5cGVzOihOU1RleHRDaGVja2luZ1R5cGVzKWNoZWNraW5n
VHlwZXMgb3B0aW9uczooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKW9wdGlvbnMgaW5T
cGVsbERvY3VtZW50V2l0aFRhZzooTlNJbnRlZ2VyKXRhZyBvcnRob2dyYXBoeTooTlNPcnRob2dy
YXBoeSAqKilvcnRob2dyYXBoeSB3b3JkQ291bnQ6KE5TSW50ZWdlciAqKXdvcmRDb3VudAorewor
ICAgIGlmIChhdXRvICpyZXN1bHQgPSBbX3JlcGxhY2VtZW50cyBvYmplY3RGb3JLZXk6c3RyaW5n
VG9DaGVja10pCisgICAgICAgIHJldHVybiBAWyByZXN1bHQgXTsKKworICAgIHJldHVybiBbc3Vw
ZXIgY2hlY2tTdHJpbmc6c3RyaW5nVG9DaGVjayByYW5nZTpyYW5nZSB0eXBlczpjaGVja2luZ1R5
cGVzIG9wdGlvbnM6b3B0aW9ucyBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOnRhZyBvcnRob2dyYXBo
eTpvcnRob2dyYXBoeSB3b3JkQ291bnQ6d29yZENvdW50XTsKK30KKworLSAodm9pZClyZWNvcmRS
ZXNwb25zZTooTlNDb3JyZWN0aW9uUmVzcG9uc2UpcmVzcG9uc2UgdG9Db3JyZWN0aW9uOihOU1N0
cmluZyAqKWNvcnJlY3Rpb24gZm9yV29yZDooTlNTdHJpbmcgKil3b3JkIGxhbmd1YWdlOihOU1N0
cmluZyAqKWxhbmd1YWdlIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6KE5TSW50ZWdlcil0YWcKK3sK
KyAgICBpZiAoX3NwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKQorICAgICAgICBwcmludGYoIk5T
U3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlVG9Db3JyZWN0aW9uOiAlcyAtPiAlcyAocmVzcG9u
c2U6ICVzKVxuIiwgW3dvcmQgVVRGOFN0cmluZ10sIFtjb3JyZWN0aW9uIFVURjhTdHJpbmddLCBz
dHJpbmdGb3JDb3JyZWN0aW9uUmVzcG9uc2UocmVzcG9uc2UpKTsKKworICAgIFtzdXBlciByZWNv
cmRSZXNwb25zZTpyZXNwb25zZSB0b0NvcnJlY3Rpb246Y29ycmVjdGlvbiBmb3JXb3JkOndvcmQg
bGFuZ3VhZ2U6bGFuZ3VhZ2UgaW5TcGVsbERvY3VtZW50V2l0aFRhZzp0YWddOworfQorCitAZW5k
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0
UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4YmJhMTBk
YjZhNWNkZjJmM2UyZTAzNGNjNGM0ZTk0Mzg4YWVjMDViLi4xOTQwZjViZTUzOWE1MDI4ZWQ3NDk4
OTg3YmIyMzEzMTQ2ODAzYzYwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dl
YktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTMzLDYgKzEzMyw3IEBACiAJCUUxMzJBQTNEMTdDRTc3NkYwMDYxMURGMCAvKiBXZWJLaXRU
ZXN0UnVubmVyRXZlbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMTMyQUEzQjE3Q0U3NzZGMDA2MTFERjAgLyogV2ViS2l0VGVzdFJ1bm5lckV2ZW50
Lm1tICovOyB9OwogCQlFMUM2NDJDMzE3Q0JDQzczMDBENjZBM0MgLyogUG9zZUFzQ2xhc3MubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUM2NDJDMTE3
Q0JDQzczMDBENjZBM0MgLyogUG9zZUFzQ2xhc3MubW0gKi87IH07CiAJCUUxQzY0MkM2MTdDQkNE
NEMwMEQ2NkEzQyAvKiBXZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQzY0MkM0MTdDQkNENEMwMEQ2NkEz
QyAvKiBXZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZC5tbSAqLzsgfTsKKwkJRjRDMzU3OEMyMEU4
NDQ0NjAwRkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEMzNTc4QTIwRTg0NDQwMDBGQTA3NDgg
LyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbSAqLzsgfTsKIC8qIEVuZCBQQlhCdWlsZEZpbGUg
c2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwpA
QCAtMzcyLDYgKzM3Myw4IEBACiAJCUUxQzY0MkMyMTdDQkNDNzMwMEQ2NkEzQyAvKiBQb3NlQXND
bGFzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3NlQXNDbGFzcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUM2NDJDNDE3Q0JDRDRDMDBENjZBM0MgLyog
V2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZC5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTFDNjQyQzUxN0NCQ0Q0QzAwRDY2QTNDIC8qIFdlYktpdFRlc3RS
dW5uZXJQYXN0ZWJvYXJkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktp
dFRlc3RSdW5uZXJQYXN0ZWJvYXJkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0
QzM1NzhBMjBFODQ0NDAwMEZBMDc0OCAvKiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gTGF5b3V0VGVzdFNwZWxsQ2hlY2tl
ci5tbTsgcGF0aCA9IC4uL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hl
Y2tlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjRDMzU3OEIyMEU4NDQ0MDAw
RkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5oOyBwYXRoID0gLi4vVGVzdFJ1bm5l
clNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJlZ2lu
IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTQ3OSw2ICs0ODIsNyBAQAog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwRjE4RTcxQjFENkJDNEU2
MDAyN0U1NDcgLyogQmluZGluZ3MgKi8sCisJCQkJRjRCNkMzMTYyMEU4NDM2OTAwOEFDMjI1IC8q
IGNvY29hICovLAogCQkJCTBGNzNCNTQ3MUJBNzgyRkUwMDRCM0VGNCAvKiBVSVNjcmlwdENvbnRl
eHQgKi8sCiAJCQkJMzE0OEEwNTMxRTZGODVCNjAwRDNCMzE2IC8qIElPU0xheW91dFRlc3RDb21t
dW5pY2F0aW9uLmNwcCAqLywKIAkJCQkzMTQ4QTA1NDFFNkY4NUI2MDBEM0IzMTYgLyogSU9TTGF5
b3V0VGVzdENvbW11bmljYXRpb24uaCAqLywKQEAgLTgyMiw2ICs4MjYsMTUgQEAKIAkJCW5hbWUg
PSBTaGFyZWQ7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlGNEI2QzMxNjIw
RTg0MzY5MDA4QUMyMjUgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNo
aWxkcmVuID0gKAorCQkJCUY0QzM1NzhCMjBFODQ0NDAwMEZBMDc0OCAvKiBMYXlvdXRUZXN0U3Bl
bGxDaGVja2VyLmggKi8sCisJCQkJRjRDMzU3OEEyMEU4NDQ0MDAwRkEwNzQ4IC8qIExheW91dFRl
c3RTcGVsbENoZWNrZXIubW0gKi8sCisJCQkpOworCQkJbmFtZSA9IGNvY29hOworCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIC8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCiAKIC8q
IEJlZ2luIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTEwNDYsNiArMTA1OSw3
IEBACiAJCQkJMzFEQThBM0QxRTcyMDVDQzAwRTFERjJGIC8qIElPU0xheW91dFRlc3RDb21tdW5p
Y2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzNCNTUxMUJBNzg5NjgwMDRCM0VGNCAv
KiBKU1VJU2NyaXB0Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjE4RTcxODFE
NkJDNDU2MDAyN0U1NDcgLyogSlNXcmFwcGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUY0QzM1
NzhDMjBFODQ0NDYwMEZBMDc0OCAvKiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTE4NTEwM0MxQjlBRTBGRTAwNzQ0QUVCIC8qIE9wdGlvbnMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTE4NTEwNDAxQjlBRTEzMTAwNzQ0QUVCIC8qIFBpeGVsRHVtcFN1cHBv
cnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRGQTk4NDkxRDdGNzBDRjAwQUZGMkM5IC8qIFNo
YXJlZEV2ZW50U3RyZWFtc01hYy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGYwN2M4NzljYzZm
NmFhZGFiNDk2YTYzNWM3MjIxYmI2ZTQwOWRmMzguLmI5ZjU2OWVhOWVkYzZhMzRiMmRjNmExNGVk
ODE0MDZkZGFhMjc4MTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxOC0wNi0zMCAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdIFRleHQg
cmVwbGFjZW1lbnRzIHRoYXQgZW5kIHdpdGggc3ltYm9scyBhcmUgZXhwYW5kZWQgaW1tZWRpYXRl
bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NzIy
NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDExMTI0MzM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBhIGxheW91dCB0ZXN0IHRvIGNoZWNr
IHRoYXQgaWYgYSB1c2VyIGhhcyBjb25maWd1cmVkIGEgdGV4dCByZXBsYWNlbWVudCB0aGF0IGVu
ZHMgd2l0aCBwdW5jdHVhdGlvbiwgdGhlbjoKKyAgICAgICAgMS4gVHlwaW5nIHRoYXQgdGV4dCBy
ZXBsYWNlbWVudCB3b24ndCBpbW1lZGlhdGVseSB0cmlnZ2VyIHJlcGxhY2VtZW50LgorICAgICAg
ICAyLiBUZXh0IHJlcGxhY2VtZW50IGlzIHRyaWdnZXJlZCBhZnRlciBwcmVzc2luZyBlbnRlci4K
KworICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvdGV4dC1yZXBsYWNlbWVudC1hZnRlci10eXBp
bmctdG8td29yZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxp
bmcvdGV4dC1yZXBsYWNlbWVudC1hZnRlci10eXBpbmctdG8td29yZC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTgtMDYtMjkgIEFudG9pbmUgUXVpbnQg
IDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViIEFuaW1hdGlvbnNdIE1ha2UgV1BU
IHRlc3QgYXQgdGltaW5nLW1vZGVsL3RpbWVsaW5lcy9kb2N1bWVudC10aW1lbGluZXMuaHRtbCBw
YXNzIHJlbGlhYmx5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3Rl
eHQtcmVwbGFjZW1lbnQtYWZ0ZXItdHlwaW5nLXRvLXdvcmQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZWRpdGluZy9zcGVsbGluZy90ZXh0LXJlcGxhY2VtZW50LWFmdGVyLXR5cGluZy10by13
b3JkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODNlYjEwN2JmODE2ODJlMjJkNjJhYThmMWJl
ZTJhMDRjOWI5ZmYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVs
bGluZy90ZXh0LXJlcGxhY2VtZW50LWFmdGVyLXR5cGluZy10by13b3JkLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDggQEAKK0JlZm9yZSBwcmVzc2luZyBlbnRlcjoKK1BBU1MgZWRpdG9yLnRleHRD
b250ZW50IGlzICdZVD8nCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKK1lvdSB0aGVyZT8KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NwZWxsaW5nL3RleHQtcmVwbGFjZW1lbnQtYWZ0ZXItdHlwaW5nLXRvLXdvcmQuaHRtbCBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvdGV4dC1yZXBsYWNlbWVudC1hZnRlci10eXBpbmct
dG8td29yZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjOTQ5NWQ4NjYyZjA2ZmQ5ZmYxN2MzNjA3NTJlNzQy
ZDMyOTJiZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5n
L3RleHQtcmVwbGFjZW1lbnQtYWZ0ZXItdHlwaW5nLXRvLXdvcmQuaHRtbApAQCAtMCwwICsxLDYz
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZWRpdGluZy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0PgoranNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1bmN0aW9uIHplcm9EZWxheVRp
bWVyKCkKK3sKKyAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJl
c29sdmUsIDApKTsKK30KKworYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZpZWRU
ZXh0Q2hlY2tlckVuYWJsZWQodHJ1ZSk7CisgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRB
c3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChmYWxzZSk7CisgICAgICAgIGludGVybmFs
cy5zZXRBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKHRydWUpOworICAgICAgICBpbnRl
cm5hbHMuc2V0QXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCh0cnVlKTsKKyAgICAg
ICAgdGVzdFJ1bm5lci5zZXRTcGVsbENoZWNrZXJUZXh0UmVwbGFjZW1lbnRzKHsKKyAgICAgICAg
ICAgICJZVD8iOiB7CisgICAgICAgICAgICAgICAgInJlcGxhY2VtZW50IjogIllvdSB0aGVyZT8i
LAorICAgICAgICAgICAgICAgICJ0eXBlIjogInJlcGxhY2VtZW50IiwKKyAgICAgICAgICAgICAg
ICAiZnJvbSI6IDAsCisgICAgICAgICAgICAgICAgInRvIjogMworICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICJZVD9cbiI6IHsKKyAgICAgICAgICAgICAgICAicmVwbGFjZW1lbnQiOiAiWW91
IHRoZXJlPyIsCisgICAgICAgICAgICAgICAgInR5cGUiOiAicmVwbGFjZW1lbnQiLAorICAgICAg
ICAgICAgICAgICJmcm9tIjogMCwKKyAgICAgICAgICAgICAgICAidG8iOiAzCisgICAgICAgICAg
ICB9CisgICAgICAgIH0pOworICAgIH0KKworICAgIGNvbnN0IGVkaXRvciA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJlZGl0b3IiKTsKKyAgICBlZGl0b3IuZm9jdXMoKTsKKyAgICBmb3IgKGNv
bnN0IGNoYXJhY3RlciBvZiAiWVQ/IikKKyAgICAgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoY2hh
cmFjdGVyKTsKKyAgICBhd2FpdCB6ZXJvRGVsYXlUaW1lcigpOworCisgICAgaWYgKCF3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgICAgICBkZXNjcmlwdGlvbi5pbm5lckhUTUwgPSBgVG8gbWFudWFs
bHkgdGVzdCwgYWRkIGFuIGF1dG9tYXRpYyB0ZXh0IHJlcGxhY2VtZW50IG1hcHBpbmcgZnJvbSB0
aGUgc3RyaW5nICJZVD8iIHRvCisgICAgICAgICJZb3UgdGhlcmU/IiwgYW5kIHRoZW4gdHlwZSB0
aGUgc3RyaW5nICJZVD8iLiBJdCBzaG91bGQgbm90IGJlIGltbWVkaWF0ZWx5IGNvcnJlY3RlZCB0
byAiWW91IHRoZXJlPyIuCisgICAgICAgIEhvd2V2ZXIsIGVudGVyaW5nIGEgbmV3bGluZSBzaG91
bGQgc3Vic2VxdWVudGx5IHRyaWdnZXIgYXV0b2NvcnJlY3Rpb24uYDsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGRlYnVnKCJCZWZvcmUgcHJlc3NpbmcgZW50ZXI6Iik7CisgICAgc2hv
dWxkQmUoImVkaXRvci50ZXh0Q29udGVudCIsICInWVQ/JyIpOworICAgIGluc2VydFBhcmFncmFw
aENvbW1hbmQoKTsKKyAgICBhd2FpdCB6ZXJvRGVsYXlUaW1lcigpOworICAgIGZpbmlzaEpTVGVz
dCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4K
KyAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+CisgICAgPGRpdiBjb250ZW50ZWRpdGFi
bGUgc3R5bGU9Im1hcmdpbi1ib3R0b206IDFlbTsgYm9yZGVyOiAxcHggb3JhbmdlIGRhc2hlZDsi
IGlkPSJlZGl0b3IiPjwvZGl2PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggN2ZhYThkZDZhMmNmMTM3NzNmNjVmMjc4
MjU5YzAwNjQyYjNlZmU0ZC4uODA4ZGExMzllOWU2MDVhYzM5OTg2NWViYmM4MDJkODg4MmI0NWNm
ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTExMCw2
ICsxMTAsOSBAQCBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW1hcmtlcnMtaW4tb3ZlcmxhcHBp
bmctbGluZXMtbGFyZ2UtZm9udC5odG1sIFsgV29udEZpeAogZmFzdC93cml0aW5nLW1vZGUvZW5n
bGlzaC1idC10ZXh0LXdpdGgtc3BlbGxpbmctbWFya2VyLmh0bWwgWyBXb250Rml4IF0KIGZhc3Qv
d3JpdGluZy1tb2RlL2VuZ2xpc2gtcmwtdGV4dC13aXRoLXNwZWxsaW5nLW1hcmtlci5odG1sIFsg
V29udEZpeCBdCiAKKyMgUmVxdWlyZXMgc3VwcG9ydCBmb3IgdGVzdGluZyB0ZXh0IHJlcGxhY2Vt
ZW50CitlZGl0aW5nL3NwZWxsaW5nL3RleHQtcmVwbGFjZW1lbnQtYWZ0ZXItdHlwaW5nLXRvLXdv
cmQuaHRtbCBbIFNraXAgXQorCiAjIFVJS2l0IGRyYXdzIHNlbGVjdGlvbiBvbiBpT1MKIGZhc3Qv
c2VsZWN0b3JzL2lucHV0LXdpdGgtc2VsZWN0aW9uLXBzZXVkby1lbGVtZW50Lmh0bWwgWyBXb250
Rml4IF0KIGZhc3Qvc2VsZWN0b3JzL3NlbGVjdGlvbi13aW5kb3ctaW5hY3RpdmUuaHRtbCBbIFdv
bnRGaXggXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25z
CmluZGV4IDQzY2E3MTZhODRmMTQyMDQzNzZmZjEyMDFlMzMwODhmZGVmYTk2MTMuLmIyMzRlMjA0
MDAxZTY0NDQ0OTUyYTk5YmIxZGUzMTBhNTU1YTI3NzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE4MCw2ICsxODAsNyBAQCB3ZWJraXQu
b3JnL2IvMTA1NjE2IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC13aGl0ZXNwYWNlLXNl
bGVjdGlvbi5odG1sCiB3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvc3BlbGxpbmcvZ3JhbW1h
ci5odG1sCiB3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvc3BlbGxpbmcvbWFya2Vycy5odG1s
CiB3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvc3BlbGxpbmcvcmV0cm8tY29ycmVjdGlvbi1z
cGVsbGluZy1tYXJrZXJzLmh0bWwKK3dlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9zcGVsbGlu
Zy90ZXh0LXJlcGxhY2VtZW50LWFmdGVyLXR5cGluZy10by13b3JkLmh0bWwKIHdlYmtpdC5vcmcv
Yi8xMDU2MTYgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tYXJrZXJzLWFmdGVyLXBhc3Rpbmct
c2VudGVuY2UuaHRtbAogd2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL21hYy9zcGVsbGluZy9h
dXRvY29ycmVjdGlvbi1kZWxldGUuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzEwNTYx
NiBlZGl0aW5nL21hYy9zcGVsbGluZy9hdXRvY29ycmVjdGlvbi1yZW1vdmluZy11bmRlcmxpbmUt
YWZ0ZXItcGFzdGUuaHRtbCBbIEZhaWx1cmUgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344042</attachid>
            <date>2018-06-30 21:26:41 -0700</date>
            <delta_ts>2018-07-01 14:40:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187225-20180630212640.patch</filename>
            <type>text/plain</type>
            <size>71448</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzNDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWUyMjM5NDVhN2ZiNzU1
NWFiY2M5MmQ3MzhjNGEyZmJiM2E3MTdlMS4uNzliODJhNzMyYjFjMDkyMTRjYjE3ZGE0ZTYwNjkx
YjI2YzI0NDRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDE4LTA2LTMwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gVGV4
dCByZXBsYWNlbWVudHMgdGhhdCBlbmQgd2l0aCBzeW1ib2xzIGFyZSBleHBhbmRlZCBpbW1lZGlh
dGVseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3
MjI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MTExMjQzMz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBzaGlwcGluZyBTYWZhcmksIGVuYWJs
aW5nIGdyYW1tYXIgY29ycmVjdGlvbiBjYXVzZXMgdGV4dCBzaG9ydGN1dHMgdGhhdCBlbmQgd2l0
aCBzeW1ib2xzIG9yIHB1bmN0dWF0aW9uIG1hcmtzCisgICAgICAgIHRvIGltbWVkaWF0ZWx5IHRy
aWdnZXIgd2hlbiB0eXBpbmc7IG5vcm1hbGx5LCB3aGVuIGdyYW1tYXIgY29ycmVjdGlvbiBpcyBv
ZmYsIHRoaXMgaXMgb25seSB0cmlnZ2VyZWQgYWZ0ZXIgdGhlCisgICAgICAgIHVzZXIgaGFzIGFk
ZGl0aW9uYWxseSBpbnNlcnRlZCBhIHB1bmN0dWF0aW9uIG1hcmsgb3Igd2hpdGVzcGFjZSBjaGFy
YWN0ZXIgYWZ0ZXIgdGhlIHJlcGxhY2VkIHRleHQuCisKKyAgICAgICAgVGhpcyBidWcgaGFwcGVu
cyBiZWNhdXNlIGVuYWJsaW5nIGdyYW1tYXIgY2hlY2tpbmcgY2F1c2VzIHRoZSBzcGVsbCBjaGVj
a2luZyByYW5nZSB0byBleHBhbmQgdG8gdGhlIHJhbmdlIG9mIHRoZQorICAgICAgICBmdWxsIHNl
bnRlbmNlLCBzbyBhbnkgdGV4dCBjaGVja2luZyByZXN1bHRzIHRoYXQgcmVwbGFjZSBhbiBleGlz
dGluZyByYW5nZSBhcmUgdHJpZ2dlcmVkIGFzIGxvbmcgYXMgdGhleSBlbmQKKyAgICAgICAgYW55
d2hlcmUgaW4gdGhlIHNlbnRlbmNlLiBJbiBjb250cmFzdCwgd2hlbiBncmFtbWFyIGNoZWNraW5n
IGlzIGRpc2FibGVkLCB0aGUgc3BlbGwgY2hlY2tpbmcgcmFuZ2UgaXMgbGltaXRlZCB0bworICAg
ICAgICB0aGUgbmVhcmVzdCBhZGphY2VudCB3b3JkLCB3aGljaCBwcmV2ZW50cyB0ZXh0IHJlcGxh
Y2VtZW50IGZyb20gb2NjdXJyaW5nIGVsc2V3aGVyZSBpbiB0aGUgc2VudGVuY2UuCisKKyAgICAg
ICAgSG93ZXZlciwgYWZ0ZXIgcjIzMjUzMCwgd2Ugbm93IGFsd2F5cyBleHBhbmQgdGhlIHNwZWxs
IGNoZWNraW5nIHJhbmdlIHRvIHRoZSBleHRlbnQgb2YgdGhlIHNlbnRlbmNlIHdoZW4gYSB3b3Jk
CisgICAgICAgIGlzIHR5cGVkIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBncmFtbWFyIGNoZWNraW5n
IGlzIGVuYWJsZWQsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIGlzc3VlIGRlc2NyaWJlZCBhYm92ZSBu
b3cKKyAgICAgICAgaGFwcGVucyBldmVyeXdoZXJlLiBUbyBmaXggdGhpcyByZWNlbnQgcmVncmVz
c2lvbiBhbmQgdGhlIGV4aXN0aW5nIGJ1Zywgd2U6CisKKyAgICAgICAgLSAgIEF1Z21lbnQgb3Vy
IHNwZWxsY2hlY2tpbmcgY29kZXBhdGhzIHRvIGluY2x1ZGUgYSBuZXcgYXV0b21hdGljIHRleHQg
cmVwbGFjZW1lbnQgcmFuZ2UsIGFsb25nc2lkZQorICAgICAgICAgICAgc3BlbGxjaGVja2luZyBh
bmQgcGFyYWdyYXBoIHJhbmdlcy4KKyAgICAgICAgLSAgIExldCB0aGlzIGF1dG9tYXRpYyB0ZXh0
IHJlcGxhY2VtZW50IHJhbmdlIGJlIHRoZSByYW5nZSBvZiB0aGUgYWRqYWNlbnQgd29yZCBpbiB0
aGUgY2FzZSB3aGVyZSB0aGUgdXNlciBoYXMKKyAgICAgICAgICAgIGZpbmlzaGVkIHR5cGluZyBh
IHdvcmQuCisgICAgICAgIC0gICBXaGVuIG1hcmtpbmcgYW5kIHJlcGxhY2luZyB0ZXh0IGNoZWNr
aW5nIHJlc3VsdHMsIGNvbnN1bHQgdGhpcyBuZXcgYXV0b21hdGljIHRleHQgcmVwbGFjZW1lbnQg
aW5zdGVhZCBvZiB0aGUKKyAgICAgICAgICAgIHNwZWxsY2hlY2tpbmcgcmFuZ2UuCisKKyAgICAg
ICAgVGhpcyBrZWVwcyB0aGUgYmVoYXZpb3IgZ3JhbW1hciBhbmQgc2VudGVuY2UgcmV0cm8gY29y
cmVjdGlvbiByZXN1bHRzIGludGFjdCwgd2hpbGUgbGltaXRpbmcgdGhlIHNjb3BlIGluIHdoaWNo
CisgICAgICAgIHRleHQgcmVwbGFjZW1lbnQgcmVzdWx0cyBhcmUgYXBwbGllZC4KKworICAgICAg
ICBUZXN0OiBlZGl0aW5nL3NwZWxsaW5nL3RleHQtcmVwbGFjZW1lbnQtYWZ0ZXItdHlwaW5nLXRv
LXdvcmQuaHRtbAorCisgICAgICAgICogZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnRpbWVy
RmlyZWQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6cmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZCk6CisKKyAgICAgICAg
UGFzcyBpbiB0aGUgYWRqYWNlbnQgd29yZCByYW5nZSBmb3IgdGhlIGBhdXRvbWF0aWNSZXBsYWNl
bWVudFJhbmdlYCwgaW5zdGVhZCBvZiB0aGUgc3BlbGwgY2hlY2tpbmcgcmFuZ2UgKHdoaWNoCisg
ICAgICAgIG1heSBiZSBleHRlbmRlZCB0byB0aGUgZnVsbCByYW5nZSBvZiB0aGUgc2VudGVuY2Up
LgorCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRH
cmFtbWFySW5SYW5nZXMpOgorCisgICAgICAgIEFkZCBhbiBgYXV0b21hdGljUmVwbGFjZW1lbnRS
YW5nZWAgYXJndW1lbnQgdG8gbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdl
cywgYW5kIGFkanVzdCBjYWxsIHNpdGVzCisgICAgICAgIHRvIHBhc3MgaW4gYSByYW5nZSAoZ2Vu
ZXJhbGx5IHRoZSBzYW1lIGFzIHRoZSBzcGVsbCBjaGVja2luZyByYW5nZSwgYnV0IGluIHRoZSBj
YXNlIHdoZXJlIGEgd29yZCBoYXMgYmVlbiB0eXBlZCwKKyAgICAgICAgdGhpcyBpcyBhIG5hcnJv
d2VyIHJhbmdlKS4KKworICAgICAgICAoV2ViQ29yZTo6Y29ycmVjdFNwZWxsY2hlY2tpbmdQcmVz
ZXJ2aW5nVGV4dENoZWNraW5nUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
bWFya0FuZFJlcGxhY2VGb3IpOgorCisgICAgICAgIFdoZW4gcmVwbGFjaW5nIHRleHQsIG9ubHkg
YWxsb3cgdGV4dCByZXBsYWNlbWVudCBpbiB0aGUgYXV0b21hdGljIHJlcGxhY2VtZW50IHJhbmdl
IHJhdGhlciB0aGFuIHRoZSBzcGVsbAorICAgICAgICBjaGVja2luZyByYW5nZS4KKworICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcik6CisgICAg
ICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsQ2hlY2tlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrUmVxdWVzdDo6U3BlbGxDaGVja1JlcXVl
c3QpOgorCisgICAgICAgIEFkZCBhIG5ldyB2ZXJzaW9uIG9mIHRoaXMgY29uc3RydWN0b3IgdGhh
dCB0YWtlcyBhIHNpbmdsZSBSYW5nZSByZXByZXNlbnRpbmcgYm90aCB0aGUgc3BlbGxjaGVja2lu
ZyByYW5nZSBhbmQKKyAgICAgICAgdGhlIGF1dG9tYXRpYyB0ZXh0IHJlcGxhY2VtZW50IHJhbmdl
LCBmb3IgY29udmVuaWVuY2UuCisKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tSZXF1ZXN0
OjpjcmVhdGUpOgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxDaGVja2VyLmg6CisKKyAgICAgICAg
QWRkIHBsdW1iaW5nIGZvciB0aGUgYXV0b21hdGljIHJlcGxhY2VtZW50IHJhbmdlLgorCisgICAg
ICAgIChXZWJDb3JlOjpTcGVsbENoZWNrUmVxdWVzdDo6YXV0b21hdGljUmVwbGFjZW1lbnRSYW5n
ZSBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwOgorCisg
ICAgICAgIEFkZCBwbHVtYmluZyBmb3IgdGhlIGF1dG9tYXRpYyByZXBsYWNlbWVudCByYW5nZSwg
YW5kIG5ldyBoZWxwZXJzIHRvIGxvY2F0ZSB0aGUgcmFuZ2UgYXMgb2Zmc2V0cyB3aXRoaW4gdGhl
CisgICAgICAgIHRleHQgY2hlY2tpbmcgcGFyYWdyYXBoIHJhbmdlLgorCisgICAgICAgIChXZWJD
b3JlOjpUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OlRleHRDaGVja2luZ1BhcmFncmFwaCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmF1dG9tYXRpY1JlcGxhY2VtZW50
U3RhcnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nUGFyYWdyYXBoOjph
dXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9UZXh0
Q2hlY2tpbmdIZWxwZXIuaDoKKwogMjAxOC0wNi0zMCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtMRkNdIERvIG5vdCBhZGQgdGhlIGNvbnRhaW5pbmcgYmxvY2sn
cyBvZmZzZXQgd2hpbGUgY29tcHV0aW5nIHRoZSBvdXQtb2YtZmxvdyBzdGF0aWMgcG9zaXRpb24u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyLmNwcAppbmRleCBkNDUzZjY0NDBhZDQ2ZWJlMzBhMGNiYTllYWUyMjI3NDFhNWFiZjQyLi5h
OTQ2ZjUxMzZjNGFmMjVmMGEwNjJhOWE2YTM1NDkzZjVlN2M0NmRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKQEAgLTI4
Myw3ICsyODMsOCBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnRpbWVyRmlyZWQo
KQogICAgICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQoc2VsZWN0aW9uLnN0YXJ0KCksIHNlbGVj
dGlvbi5hZmZpbml0eSgpKTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHAgPSBzdGFydE9mV29y
ZChzdGFydCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpOwogICAgICAgICBWaXNpYmxlU2VsZWN0aW9u
IGFkamFjZW50V29yZHMgPSBWaXNpYmxlU2VsZWN0aW9uKHAsIHN0YXJ0KTsKLSAgICAgICAgbV9m
cmFtZS5lZGl0b3IoKS5tYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRl
eHRDaGVja2luZ1R5cGVTcGVsbGluZyB8IFRleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCB8IFRl
eHRDaGVja2luZ1R5cGVTaG93Q29ycmVjdGlvblBhbmVsLCBhZGphY2VudFdvcmRzLnRvTm9ybWFs
aXplZFJhbmdlKCkuZ2V0KCksIDApOworICAgICAgICBhdXRvIGFkamFjZW50V29yZFJhbmdlID0g
YWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6ZWRSYW5nZSgpOworICAgICAgICBtX2ZyYW1lLmVkaXRv
cigpLm1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5n
VHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50IHwgVGV4dENoZWNraW5n
VHlwZVNob3dDb3JyZWN0aW9uUGFuZWwsIGFkamFjZW50V29yZFJhbmdlLmdldCgpLCBhZGphY2Vu
dFdvcmRSYW5nZS5nZXQoKSwgbnVsbHB0cik7CiAgICAgfQogICAgICAgICBicmVhazsKICAgICBj
YXNlIEFsdGVybmF0aXZlVGV4dFR5cGVSZXZlcnNpb246IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAppbmRleCAwYzcxNjMyODUzNDBhYTUxNDQ0MzJlYTYyNjQwNTgzMjA5YzY4MGQ3Li5iYzMy
ZTFmNzU0N2Q1ODU0ZWJlYzUyMmZjMDA3ZmVjMDBmNDczOWE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCkBAIC02NjcsNyArNjY3LDcgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VTZWxlY3Rp
b25XaXRoRnJhZ21lbnQoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIGJvb2wgc2VsZWMKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgYXV0byByYW5nZVRvQ2hlY2sgPSBSYW5nZTo6Y3JlYXRlKGRv
Y3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk5vZGUobm9kZVRvQ2hlY2spLCBsYXN0UG9zaXRpb25J
bk5vZGUobm9kZVRvQ2hlY2spKTsKLSAgICBpZiAoYXV0byByZXF1ZXN0ID0gU3BlbGxDaGVja1Jl
cXVlc3Q6OmNyZWF0ZShyZXNvbHZlVGV4dENoZWNraW5nVHlwZU1hc2soKm5vZGVUb0NoZWNrLCBU
ZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgfCBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hciksIFRleHRD
aGVja2luZ1Byb2Nlc3NCYXRjaCwgcmFuZ2VUb0NoZWNrLmNvcHlSZWYoKSwgcmFuZ2VUb0NoZWNr
LmNvcHlSZWYoKSkpCisgICAgaWYgKGF1dG8gcmVxdWVzdCA9IFNwZWxsQ2hlY2tSZXF1ZXN0Ojpj
cmVhdGUocmVzb2x2ZVRleHRDaGVja2luZ1R5cGVNYXNrKCpub2RlVG9DaGVjaywgVGV4dENoZWNr
aW5nVHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZUdyYW1tYXIpLCBUZXh0Q2hlY2tpbmdQ
cm9jZXNzQmF0Y2gsIHJhbmdlVG9DaGVjay5jb3B5UmVmKCksIHJhbmdlVG9DaGVjay5jb3B5UmVm
KCksIHJhbmdlVG9DaGVjay5jb3B5UmVmKCkpKQogICAgICAgICBtX3NwZWxsQ2hlY2tlci0+cmVx
dWVzdENoZWNraW5nRm9yKHJlcXVlc3QucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKQEAgLTIzNDIs
NyArMjM0Miw4IEBAIHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1dv
cmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uICZ3b3JkU3RhcnQsCiAgICAgICAgIHJldHVybjsKIAog
ICAgIFZpc2libGVTZWxlY3Rpb24gYWRqYWNlbnRXb3JkcyA9IFZpc2libGVTZWxlY3Rpb24oc3Rh
cnRPZldvcmQod29yZFN0YXJ0LCBMZWZ0V29yZElmT25Cb3VuZGFyeSksIGVuZE9mV29yZCh3b3Jk
U3RhcnQsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSkpOwotICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NB
bmRCYWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgYWRqYWNlbnRXb3Jkcy50
b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBhZGphY2VudFdvcmRzLnRvTm9ybWFsaXplZFJhbmdl
KCkuZ2V0KCkpOworICAgIGF1dG8gYWRqYWNlbnRXb3JkUmFuZ2UgPSBhZGphY2VudFdvcmRzLnRv
Tm9ybWFsaXplZFJhbmdlKCk7CisgICAgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJ
blJhbmdlcyh0ZXh0Q2hlY2tpbmdPcHRpb25zLCBhZGphY2VudFdvcmRSYW5nZS5nZXQoKSwgYWRq
YWNlbnRXb3JkUmFuZ2UuZ2V0KCksIG51bGxwdHIpOwogI2Vsc2UKICNpZiAhVVNFKEFVVE9NQVRJ
Q19URVhUX1JFUExBQ0VNRU5UKQogICAgIFVOVVNFRF9QQVJBTShkb1JlcGxhY2VtZW50KTsKQEAg
LTI0MTcsMTMgKzI0MTgsMTcgQEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5
cGluZ1RvV29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24gJndvcmRTdGFydCwKICAgICAgICAgaWYg
KCFzcGVsbENoZWNraW5nUmFuZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgYXV0
byBhZGphY2VudFdvcmRSYW5nZSA9IFZpc2libGVTZWxlY3Rpb24oc3RhcnRPZldvcmQod29yZFN0
YXJ0LCBMZWZ0V29yZElmT25Cb3VuZGFyeSksIGVuZE9mV29yZCh3b3JkU3RhcnQsIFJpZ2h0V29y
ZElmT25Cb3VuZGFyeSkpLnRvTm9ybWFsaXplZFJhbmdlKCk7CisgICAgICAgIGlmICghYWRqYWNl
bnRXb3JkUmFuZ2UpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgLy8gVGhlIHNwZWxs
aW5nIGFuZCBncmFtbWFyIG1hcmtlcnMgaW4gdGhlc2UgcmFuZ2VzIGFyZSByZWNvbXB1dGVkLiBU
aGlzIGlzIGJlY2F1c2UgdHlwaW5nIGEgd29yZCBtYXkKICAgICAgICAgLy8gY2F1c2UgYW55IG90
aGVyIHBhcnQgb2YgdGhlIGN1cnJlbnQgc2VudGVuY2UgdG8gbG9zZSBvciBnYWluIHNwZWxsaW5n
IGNvcnJlY3Rpb24gbWFya2VycywgZHVlIHRvCiAgICAgICAgIC8vIHNlbnRlbmNlIHJldHJvIGNv
cnJlY3Rpb24uIEFzIHN1Y2gsIHdlIGV4cGFuZCB0aGUgc3BlbGwgY2hlY2tpbmcgcmFuZ2UgdG8g
ZW5jb21wYXNzIGFzIG11Y2ggb2YgdGhlCiAgICAgICAgIC8vIGZ1bGwgc2VudGVuY2UgYXMgd2Ug
Y2FuLCByZXNwZWN0aW5nIGJvdW5kYXJpZXMgd2hlcmUgc3BlbGxjaGVja2luZyBpcyBkaXNhYmxl
ZC4KICAgICAgICAgZnVsbFNlbnRlbmNlUmFuZ2UtPm93bmVyRG9jdW1lbnQoKS5tYXJrZXJzKCku
cmVtb3ZlTWFya2VycyhmdWxsU2VudGVuY2VSYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6Okdy
YW1tYXIpOwogICAgICAgICBzcGVsbENoZWNraW5nUmFuZ2UtPm93bmVyRG9jdW1lbnQoKS5tYXJr
ZXJzKCkucmVtb3ZlTWFya2VycyhzcGVsbENoZWNraW5nUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFy
a2VyOjpTcGVsbGluZyk7Ci0gICAgICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFy
SW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgc3BlbGxDaGVja2luZ1JhbmdlLmdldCgpLCBm
dWxsU2VudGVuY2VSYW5nZS5nZXQoKSk7CisgICAgICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRC
YWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgc3BlbGxDaGVja2luZ1Jhbmdl
LmdldCgpLCBhZGphY2VudFdvcmRSYW5nZS5nZXQoKSwgZnVsbFNlbnRlbmNlUmFuZ2UuZ2V0KCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNTQ3LDcgKzI1NTIsNyBAQCB2b2lkIEVk
aXRvcjo6bWFya0JhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQog
I2VuZGlmCiB9CiAKLXZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1h
ckluUmFuZ2VzKFRleHRDaGVja2luZ1R5cGVNYXNrIHRleHRDaGVja2luZ09wdGlvbnMsIFJhbmdl
KiBzcGVsbGluZ1JhbmdlLCBSYW5nZSogZ3JhbW1hclJhbmdlKQordm9pZCBFZGl0b3I6Om1hcmtB
bGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nVHlwZU1hc2sg
dGV4dENoZWNraW5nT3B0aW9ucywgUmFuZ2UqIHNwZWxsaW5nUmFuZ2UsIFJhbmdlKiBhdXRvbWF0
aWNSZXBsYWNlbWVudFJhbmdlLCBSYW5nZSogZ3JhbW1hclJhbmdlKQogewogICAgIEFTU0VSVCh1
bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKCkpOwogCkBAIC0yNTc5LDcgKzI1ODQsOCBAQCB2b2lk
IEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hl
Y2tpbmdUeXBlTWFzayB0ZXh0QwogCiAgICAgLy8gSW4gYXN5bmNocm9ub3VzIG1vZGUsIHdlIGlu
dGVudGlvbmFsbHkgY2hlY2sgcGFyYWdyYXBoLXdpZGUgc2VudGVuY2UuCiAgICAgY29uc3QgYXV0
byByZXNvbHZlZE9wdGlvbnMgPSByZXNvbHZlVGV4dENoZWNraW5nVHlwZU1hc2soZWRpdGFibGVO
b2RlLCB0ZXh0Q2hlY2tpbmdPcHRpb25zKTsKLSAgICBhdXRvIHJlcXVlc3QgPSBTcGVsbENoZWNr
UmVxdWVzdDo6Y3JlYXRlKHJlc29sdmVkT3B0aW9ucywgVGV4dENoZWNraW5nUHJvY2Vzc0luY3Jl
bWVudGFsLCBhc3luY2hyb25vdXMgPyBwYXJhZ3JhcGhSYW5nZS5nZXQoKSA6IHJhbmdlVG9DaGVj
aywgcGFyYWdyYXBoUmFuZ2UuY29weVJlZigpKTsKKyAgICBhdXRvJiB0ZXh0UmVwbGFjZW1lbnRS
YW5nZSA9IGF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UgPyAqYXV0b21hdGljUmVwbGFjZW1lbnRS
YW5nZSA6IHJhbmdlVG9DaGVjazsKKyAgICBhdXRvIHJlcXVlc3QgPSBTcGVsbENoZWNrUmVxdWVz
dDo6Y3JlYXRlKHJlc29sdmVkT3B0aW9ucywgVGV4dENoZWNraW5nUHJvY2Vzc0luY3JlbWVudGFs
LCBhc3luY2hyb25vdXMgPyBwYXJhZ3JhcGhSYW5nZS5nZXQoKSA6IHJhbmdlVG9DaGVjaywgdGV4
dFJlcGxhY2VtZW50UmFuZ2UsIHBhcmFncmFwaFJhbmdlLmNvcHlSZWYoKSk7CiAgICAgaWYgKCFy
ZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAKQEAgLTI2MjcsNyArMjYzMyw4IEBAIHN0YXRpYyB2
b2lkIGNvcnJlY3RTcGVsbGNoZWNraW5nUHJlc2VydmluZ1RleHRDaGVja2luZ1BhcmFncmFwaChU
ZXh0Q2hlY2tpbmdQYXJhCiAKICAgICBSZWZQdHI8UmFuZ2U+IG5ld1BhcmFncmFwaFJhbmdlID0g
VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCgmc2NvcGUsIHBhcmFncmFw
aExvY2F0aW9uLCBwYXJhZ3JhcGhMZW5ndGggKyByZXBsYWNlbWVudC5sZW5ndGgoKSAtIHJlc3Vs
dExlbmd0aCk7CiAKLSAgICBwYXJhZ3JhcGggPSBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoVGV4dEl0
ZXJhdG9yOjpzdWJyYW5nZSgqbmV3UGFyYWdyYXBoUmFuZ2UsIHJlc3VsdExvY2F0aW9uLCByZXBs
YWNlbWVudC5sZW5ndGgoKSksIG5ld1BhcmFncmFwaFJhbmdlLmdldCgpKTsKKyAgICBhdXRvIHNw
ZWxsQ2hlY2tpbmdSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKm5ld1BhcmFncmFwaFJh
bmdlLCByZXN1bHRMb2NhdGlvbiwgcmVwbGFjZW1lbnQubGVuZ3RoKCkpOworICAgIHBhcmFncmFw
aCA9IFRleHRDaGVja2luZ1BhcmFncmFwaChzcGVsbENoZWNraW5nUmFuZ2UuY29weVJlZigpLCBz
cGVsbENoZWNraW5nUmFuZ2UuY29weVJlZigpLCBuZXdQYXJhZ3JhcGhSYW5nZS5nZXQoKSk7CiB9
CiAKIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCkBA
IC0yNjM1LDcgKzI2NDIsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3Qg
U3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQogICAgIFJlZjxGcmFt
ZT4gcHJvdGVjdGlvbihtX2ZyYW1lKTsKIAogICAgIFRleHRDaGVja2luZ1R5cGVNYXNrIHRleHRD
aGVja2luZ09wdGlvbnMgPSByZXF1ZXN0LmRhdGEoKS5tYXNrKCk7Ci0gICAgVGV4dENoZWNraW5n
UGFyYWdyYXBoIHBhcmFncmFwaChyZXF1ZXN0LmNoZWNraW5nUmFuZ2UoKSwgJnJlcXVlc3QucGFy
YWdyYXBoUmFuZ2UoKSk7CisgICAgVGV4dENoZWNraW5nUGFyYWdyYXBoIHBhcmFncmFwaChyZXF1
ZXN0LmNoZWNraW5nUmFuZ2UoKSwgcmVxdWVzdC5hdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlKCks
ICZyZXF1ZXN0LnBhcmFncmFwaFJhbmdlKCkpOwogCiAgICAgY29uc3QgYm9vbCBzaG91bGRNYXJr
U3BlbGxpbmcgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zICYgVGV4dENoZWNraW5nVHlwZVNwZWxsaW5n
OwogICAgIGNvbnN0IGJvb2wgc2hvdWxkTWFya0dyYW1tYXIgPSB0ZXh0Q2hlY2tpbmdPcHRpb25z
ICYgVGV4dENoZWNraW5nVHlwZUdyYW1tYXI7CkBAIC0yNjc1LDYgKzI2ODIsNyBAQCB2b2lkIEVk
aXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFZlY3RvcjxUZQogICAgICAgICBjb25zdCBpbnQgcmVzdWx0TG9jYXRpb24gPSByZXN1
bHRzW2ldLmxvY2F0aW9uICsgb2Zmc2V0RHVlVG9SZXBsYWNlbWVudDsKICAgICAgICAgY29uc3Qg
aW50IHJlc3VsdExlbmd0aCA9IHJlc3VsdHNbaV0ubGVuZ3RoOwogICAgICAgICBjb25zdCBpbnQg
cmVzdWx0RW5kTG9jYXRpb24gPSByZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aDsKKyAgICAg
ICAgY29uc3QgaW50IGF1dG9tYXRpY1JlcGxhY2VtZW50RW5kTG9jYXRpb24gPSBwYXJhZ3JhcGgu
YXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpICsgcGFyYWdyYXBoLmF1dG9tYXRpY1JlcGxhY2Vt
ZW50TGVuZ3RoKCkgKyBvZmZzZXREdWVUb1JlcGxhY2VtZW50OwogICAgICAgICBjb25zdCBTdHJp
bmcmIHJlcGxhY2VtZW50ID0gcmVzdWx0c1tpXS5yZXBsYWNlbWVudDsKICAgICAgICAgY29uc3Qg
Ym9vbCByZXN1bHRFbmRzQXRBbWJpZ3VvdXNCb3VuZGFyeSA9IHVzZUFtYmlndW91c0JvdW5kYXJ5
T2Zmc2V0ICYmIHNlbGVjdGlvbk9mZnNldCAtIDEgPD0gcmVzdWx0RW5kTG9jYXRpb247CiAKQEAg
LTI2OTksMTIgKzI3MDcsMTIgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNvbnN0
IFNwZWxsQ2hlY2tSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8VGUKICAgICAgICAgICAg
ICAgICAgICAgYmFkR3JhbW1hclJhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCkubWFy
a2VycygpLmFkZE1hcmtlcihiYWRHcmFtbWFyUmFuZ2UucHRyKCksIERvY3VtZW50TWFya2VyOjpH
cmFtbWFyLCBkZXRhaWwudXNlckRlc2NyaXB0aW9uKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAocmVzdWx0RW5kTG9jYXRpb24gPD0gc3BlbGxp
bmdSYW5nZUVuZE9mZnNldCAmJiByZXN1bHRFbmRMb2NhdGlvbiA+PSBwYXJhZ3JhcGguY2hlY2tp
bmdTdGFydCgpCisgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0RW5kTG9jYXRpb24gPD0gYXV0b21h
dGljUmVwbGFjZW1lbnRFbmRMb2NhdGlvbiAmJiByZXN1bHRFbmRMb2NhdGlvbiA+PSBwYXJhZ3Jh
cGguYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpCiAgICAgICAgICAgICAmJiBpc0F1dG9tYXRp
Y1RleHRSZXBsYWNlbWVudFR5cGUocmVzdWx0VHlwZSkpIHsKLSAgICAgICAgICAgIC8vIEluIHRo
aXMgY2FzZSB0aGUgcmVzdWx0IHJhbmdlIGp1c3QgaGFzIHRvIHRvdWNoIHRoZSBzcGVsbGluZyBy
YW5nZSwgc28gd2UgY2FuIGhhbmRsZSByZXBsYWNpbmcgbm9uLXdvcmQgdGV4dCBzdWNoIGFzIHB1
bmN0dWF0aW9uLgorICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIHRoZSByZXN1bHQgcmFuZ2Ug
anVzdCBoYXMgdG8gdG91Y2ggdGhlIGF1dG9tYXRpYyByZXBsYWNlbWVudCByYW5nZSwgc28gd2Ug
Y2FuIGhhbmRsZSByZXBsYWNpbmcgbm9uLXdvcmQgdGV4dCBzdWNoIGFzIHB1bmN0dWF0aW9uLgog
ICAgICAgICAgICAgQVNTRVJUKHJlc3VsdExlbmd0aCA+IDAgJiYgcmVzdWx0TG9jYXRpb24gPj0g
MCk7CiAKLSAgICAgICAgICAgIGlmIChzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsICYmIChyZXN1
bHRFbmRMb2NhdGlvbiA8IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQKKyAgICAgICAgICAgIGlmIChz
aG91bGRTaG93Q29ycmVjdGlvblBhbmVsICYmIChyZXN1bHRFbmRMb2NhdGlvbiA8IGF1dG9tYXRp
Y1JlcGxhY2VtZW50RW5kTG9jYXRpb24KICAgICAgICAgICAgICAgICB8fCAhKHJlc3VsdFR5cGUg
JiAoVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50IHwgVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rp
b24pKSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTI3MjgsNyArMjczNiw3IEBA
IHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgVmVjdG9yPFRlCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgICAgIGlmIChzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKHJlc3VsdEVuZExvY2F0aW9uID09IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQpIHsKKyAg
ICAgICAgICAgICAgICBpZiAocmVzdWx0RW5kTG9jYXRpb24gPT0gYXV0b21hdGljUmVwbGFjZW1l
bnRFbmRMb2NhdGlvbikgewogICAgICAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IHNob3cgdGhl
IGNvcnJlY3Rpb24gcGFuZWwgb24gdGhlIGxhc3Qgd29yZC4KICAgICAgICAgICAgICAgICAgICAg
bV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5zaG93KHJhbmdlVG9SZXBsYWNlLCByZXBsYWNl
bWVudCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjgyOSw3ICsyODM3LDggQEAg
dm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mIHNwZWxsaW5nU2VsZWMKICAgICAgICAgVGV4dENoZWNraW5nVHlwZU1hc2sgdGV4
dENoZWNraW5nT3B0aW9ucyA9IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZzsKICAgICAgICAgaWYg
KG1hcmtHcmFtbWFyICYmIGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKQogICAgICAgICAgICAg
dGV4dENoZWNraW5nT3B0aW9ucyB8PSBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsKLSAgICAgICAg
bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyh0ZXh0Q2hlY2tpbmdPcHRp
b25zLCBzcGVsbGluZ1NlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBncmFtbWFy
U2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOworICAgICAgICBhdXRvIHNwZWxs
Q2hlY2tpbmdSYW5nZSA9IHNwZWxsaW5nU2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7Cisg
ICAgICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNr
aW5nT3B0aW9ucywgc3BlbGxDaGVja2luZ1JhbmdlLmdldCgpLCBzcGVsbENoZWNraW5nUmFuZ2Uu
Z2V0KCksIGdyYW1tYXJTZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IGUxNDE0M2Zl
Y2U5MTEwN2E2NTJmZmU4ZmM1MThmMmM3MjVmYTljZDcuLmI0YTAxMGZiNGU3MzIwYTJlYmQ3NDY1
M2JjNzRlOTQ5NzEwMjc0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtMjkzLDcgKzI5
Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzT3ZlcndyaXRlTW9kZUVuYWJsZWQoKSBjb25zdCB7
IHJldHVybiBtX292ZXJ3cml0ZU1vZGVFbmFibGVkOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB0b2dnbGVPdmVyd3JpdGVNb2RlRW5hYmxlZCgpOwogCi0gICAgdm9pZCBtYXJrQWxsTWlzc3Bl
bGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ1R5cGVNYXNrLCBSYW5nZSog
c3BlbGxpbmdSYW5nZSwgUmFuZ2UqIGdyYW1tYXJSYW5nZSk7CisgICAgdm9pZCBtYXJrQWxsTWlz
c3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ1R5cGVNYXNrLCBSYW5n
ZSogc3BlbGxpbmdSYW5nZSwgUmFuZ2UqIGF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UsIFJhbmdl
KiBncmFtbWFyUmFuZ2UpOwogI2lmIFBMQVRGT1JNKElPUykKICAgICBOT19SRVRVUk5fRFVFX1RP
X0FTU0VSVAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxs
Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKaW5k
ZXggYTViNjE2ZDI0OGUxMWM4NjQyNzk1MjYzZDg5Y2M0MGIxM2E5Y2ZmOS4uYzA1NGM1YWRlNTQw
OTA0MjIzYjkwOTNjMTQwYTM1ODY2Njc5NjFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3Bl
bGxDaGVja2VyLmNwcApAQCAtNDAsOCArNDAsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVNwZWxsQ2hlY2tSZXF1ZXN0OjpTcGVsbENoZWNrUmVxdWVzdChSZWY8UmFuZ2U+JiYgY2hlY2tp
bmdSYW5nZSwgUmVmPFJhbmdlPiYmIHBhcmFncmFwaFJhbmdlLCBjb25zdCBTdHJpbmcmIHRleHQs
IFRleHRDaGVja2luZ1R5cGVNYXNrIG1hc2ssIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHByb2Nl
c3NUeXBlKQorU3BlbGxDaGVja1JlcXVlc3Q6OlNwZWxsQ2hlY2tSZXF1ZXN0KFJlZjxSYW5nZT4m
JiBjaGVja2luZ1JhbmdlLCBSZWY8UmFuZ2U+JiYgYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSwg
UmVmPFJhbmdlPiYmIHBhcmFncmFwaFJhbmdlLCBjb25zdCBTdHJpbmcmIHRleHQsIFRleHRDaGVj
a2luZ1R5cGVNYXNrIG1hc2ssIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHByb2Nlc3NUeXBlKQog
ICAgIDogbV9jaGVja2luZ1JhbmdlKFdURk1vdmUoY2hlY2tpbmdSYW5nZSkpCisgICAgLCBtX2F1
dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UoV1RGTW92ZShhdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdl
KSkKICAgICAsIG1fcGFyYWdyYXBoUmFuZ2UoV1RGTW92ZShwYXJhZ3JhcGhSYW5nZSkpCiAgICAg
LCBtX3Jvb3RFZGl0YWJsZUVsZW1lbnQobV9jaGVja2luZ1JhbmdlLT5zdGFydENvbnRhaW5lcigp
LnJvb3RFZGl0YWJsZUVsZW1lbnQoKSkKICAgICAsIG1fcmVxdWVzdERhdGEodW5yZXF1ZXN0ZWRU
ZXh0Q2hlY2tpbmdTZXF1ZW5jZSwgdGV4dCwgbWFzaywgcHJvY2Vzc1R5cGUpCkBAIC01MCwxMyAr
NTEsMTMgQEAgU3BlbGxDaGVja1JlcXVlc3Q6OlNwZWxsQ2hlY2tSZXF1ZXN0KFJlZjxSYW5nZT4m
JiBjaGVja2luZ1JhbmdlLCBSZWY8UmFuZ2U+JiYgcGEKIAogU3BlbGxDaGVja1JlcXVlc3Q6On5T
cGVsbENoZWNrUmVxdWVzdCgpID0gZGVmYXVsdDsKIAotUmVmUHRyPFNwZWxsQ2hlY2tSZXF1ZXN0
PiBTcGVsbENoZWNrUmVxdWVzdDo6Y3JlYXRlKFRleHRDaGVja2luZ1R5cGVNYXNrIHRleHRDaGVj
a2luZ09wdGlvbnMsIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHByb2Nlc3NUeXBlLCBSZWY8UmFu
Z2U+JiYgY2hlY2tpbmdSYW5nZSwgUmVmPFJhbmdlPiYmIHBhcmFncmFwaFJhbmdlKQorUmVmUHRy
PFNwZWxsQ2hlY2tSZXF1ZXN0PiBTcGVsbENoZWNrUmVxdWVzdDo6Y3JlYXRlKFRleHRDaGVja2lu
Z1R5cGVNYXNrIHRleHRDaGVja2luZ09wdGlvbnMsIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHBy
b2Nlc3NUeXBlLCBSZWY8UmFuZ2U+JiYgY2hlY2tpbmdSYW5nZSwgUmVmPFJhbmdlPiYmIGF1dG9t
YXRpY1JlcGxhY2VtZW50UmFuZ2UsIFJlZjxSYW5nZT4mJiBwYXJhZ3JhcGhSYW5nZSkKIHsKICAg
ICBTdHJpbmcgdGV4dCA9IGNoZWNraW5nUmFuZ2UtPnRleHQoKTsKICAgICBpZiAoIXRleHQubGVu
Z3RoKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3BlbGxDaGVja1JlcXVlc3QoV1RGTW92ZShjaGVja2luZ1JhbmdlKSwgV1RGTW92ZShwYXJh
Z3JhcGhSYW5nZSksIHRleHQsIHRleHRDaGVja2luZ09wdGlvbnMsIHByb2Nlc3NUeXBlKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3BlbGxDaGVja1JlcXVlc3QoV1RGTW92ZShjaGVja2lu
Z1JhbmdlKSwgV1RGTW92ZShhdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlKSwgV1RGTW92ZShwYXJh
Z3JhcGhSYW5nZSksIHRleHQsIHRleHRDaGVja2luZ09wdGlvbnMsIHByb2Nlc3NUeXBlKSk7CiB9
CiAKIGNvbnN0IFRleHRDaGVja2luZ1JlcXVlc3REYXRhJiBTcGVsbENoZWNrUmVxdWVzdDo6ZGF0
YSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tl
ci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaAppbmRleCBhMjNjMThj
YzBmMTVmY2E1MjYwNWU0MWE3NzE4ODk4NjBkODQ2YTAzLi4wNTk0NTM2NmNjOTgxNDQwMWNkODgy
ZjBjMWQ3MGU1MjYyMDdjOGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nw
ZWxsQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmgK
QEAgLTQ0LDExICs0NCwxMiBAQCBjbGFzcyBTcGVsbENoZWNrZXI7CiAKIGNsYXNzIFNwZWxsQ2hl
Y2tSZXF1ZXN0IDogcHVibGljIFRleHRDaGVja2luZ1JlcXVlc3QgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWZQdHI8U3BlbGxDaGVja1JlcXVlc3Q+IGNyZWF0ZShUZXh0Q2hlY2tpbmdUeXBlTWFz
aywgVGV4dENoZWNraW5nUHJvY2Vzc1R5cGUsIFJlZjxSYW5nZT4mJiBjaGVja2luZ1JhbmdlLCBS
ZWY8UmFuZ2U+JiYgcGFyYWdyYXBoUmFuZ2UpOworICAgIHN0YXRpYyBSZWZQdHI8U3BlbGxDaGVj
a1JlcXVlc3Q+IGNyZWF0ZShUZXh0Q2hlY2tpbmdUeXBlTWFzaywgVGV4dENoZWNraW5nUHJvY2Vz
c1R5cGUsIFJlZjxSYW5nZT4mJiBjaGVja2luZ1JhbmdlLCBSZWY8UmFuZ2U+JiYgYXV0b21hdGlj
UmVwbGFjZW1lbnRSYW5nZSwgUmVmPFJhbmdlPiYmIHBhcmFncmFwaFJhbmdlKTsKICAgICB2aXJ0
dWFsIH5TcGVsbENoZWNrUmVxdWVzdCgpOwogCiAgICAgUmFuZ2UmIGNoZWNraW5nUmFuZ2UoKSBj
b25zdCB7IHJldHVybiBtX2NoZWNraW5nUmFuZ2UuZ2V0KCk7IH0KICAgICBSYW5nZSYgcGFyYWdy
YXBoUmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhcmFncmFwaFJhbmdlLmdldCgpOyB9CisgICAg
UmFuZ2UmIGF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX2F1dG9t
YXRpY1JlcGxhY2VtZW50UmFuZ2UuZ2V0KCk7IH0KICAgICBFbGVtZW50KiByb290RWRpdGFibGVF
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9yb290RWRpdGFibGVFbGVtZW50LmdldCgpOyB9CiAK
ICAgICB2b2lkIHNldENoZWNrZXJBbmRTZXF1ZW5jZShTcGVsbENoZWNrZXIqLCBpbnQgc2VxdWVu
Y2UpOwpAQCAtNjAsMTAgKzYxLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENhbmNlbCgpIG92
ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIFNwZWxsQ2hlY2tSZXF1ZXN0KFJlZjxSYW5nZT4mJiBj
aGVja2luZ1JhbmdlLCBSZWY8UmFuZ2U+JiYgcGFyYWdyYXBoUmFuZ2UsIGNvbnN0IFN0cmluZyYs
IFRleHRDaGVja2luZ1R5cGVNYXNrLCBUZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSk7CisgICAgU3Bl
bGxDaGVja1JlcXVlc3QoUmVmPFJhbmdlPiYmIGNoZWNraW5nUmFuZ2UsIFJlZjxSYW5nZT4mJiBh
dXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlLCBSZWY8UmFuZ2U+JiYgcGFyYWdyYXBoUmFuZ2UsIGNv
bnN0IFN0cmluZyYsIFRleHRDaGVja2luZ1R5cGVNYXNrLCBUZXh0Q2hlY2tpbmdQcm9jZXNzVHlw
ZSk7CiAKICAgICBTcGVsbENoZWNrZXIqIG1fY2hlY2tlciB7IG51bGxwdHIgfTsKICAgICBSZWY8
UmFuZ2U+IG1fY2hlY2tpbmdSYW5nZTsKKyAgICBSZWY8UmFuZ2U+IG1fYXV0b21hdGljUmVwbGFj
ZW1lbnRSYW5nZTsKICAgICBSZWY8UmFuZ2U+IG1fcGFyYWdyYXBoUmFuZ2U7CiAgICAgUmVmUHRy
PEVsZW1lbnQ+IG1fcm9vdEVkaXRhYmxlRWxlbWVudDsKICAgICBUZXh0Q2hlY2tpbmdSZXF1ZXN0
RGF0YSBtX3JlcXVlc3REYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tp
bmdIZWxwZXIuY3BwCmluZGV4IGVkOWJlZTQ5Y2E3MjJmM2Y4NjhhNGE1OTI1YjhjOTk3NGUzMGZj
OTIuLjcyNWQwMzNlZDZiOWIwN2ViZTk5ZTJiYTMyZjgzNDFlN2FlZWMyMjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKQEAgLTExNywxMiArMTE3
LDE2IEBAIHN0YXRpYyBSZWY8UmFuZ2U+IGV4cGFuZFRvUGFyYWdyYXBoQm91bmRhcnkoUmFuZ2Um
IHJhbmdlKQogICAgIHJldHVybiBwYXJhZ3JhcGhSYW5nZTsKIH0KIAotVGV4dENoZWNraW5nUGFy
YWdyYXBoOjpUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoUmVmPFJhbmdlPiYmIGNoZWNraW5nUmFuZ2Us
IFJhbmdlKiBwYXJhZ3JhcGhSYW5nZSkKK1RleHRDaGVja2luZ1BhcmFncmFwaDo6VGV4dENoZWNr
aW5nUGFyYWdyYXBoKFJlZjxSYW5nZT4mJiBjaGVja2luZ0FuZEF1dG9tYXRpY1JlcGxhY2VtZW50
UmFuZ2UpCisgICAgOiBtX2NoZWNraW5nUmFuZ2UoY2hlY2tpbmdBbmRBdXRvbWF0aWNSZXBsYWNl
bWVudFJhbmdlLmNvcHlSZWYoKSkKKyAgICAsIG1fYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZShj
aGVja2luZ0FuZEF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UuY29weVJlZigpKQoreworfQorCitU
ZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OlRleHRDaGVja2luZ1BhcmFncmFwaChSZWY8UmFuZ2U+JiYg
Y2hlY2tpbmdSYW5nZSwgUmVmPFJhbmdlPiYmIGF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UsIFJl
ZlB0cjxSYW5nZT4mJiBwYXJhZ3JhcGhSYW5nZSkKICAgICA6IG1fY2hlY2tpbmdSYW5nZShXVEZN
b3ZlKGNoZWNraW5nUmFuZ2UpKQotICAgICwgbV9wYXJhZ3JhcGhSYW5nZShwYXJhZ3JhcGhSYW5n
ZSkKLSAgICAsIG1fY2hlY2tpbmdTdGFydCgtMSkKLSAgICAsIG1fY2hlY2tpbmdFbmQoLTEpCi0g
ICAgLCBtX2NoZWNraW5nTGVuZ3RoKC0xKQorICAgICwgbV9hdXRvbWF0aWNSZXBsYWNlbWVudFJh
bmdlKFdURk1vdmUoYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSkpCisgICAgLCBtX3BhcmFncmFw
aFJhbmdlKFdURk1vdmUocGFyYWdyYXBoUmFuZ2UpKQogewogfQogCkBAIC0yMTEsNiArMjE1LDI2
IEBAIGludCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmNoZWNraW5nTGVuZ3RoKCkgY29uc3QKICAg
ICByZXR1cm4gbV9jaGVja2luZ0xlbmd0aDsKIH0KIAoraW50IFRleHRDaGVja2luZ1BhcmFncmFw
aDo6YXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpIGNvbnN0Cit7CisgICAgaWYgKG1fYXV0b21h
dGljUmVwbGFjZW1lbnRTdGFydCAhPSAtMSkKKyAgICAgICAgcmV0dXJuIG1fYXV0b21hdGljUmVw
bGFjZW1lbnRTdGFydDsKKworICAgIGF1dG8gc3RhcnRPZmZzZXRSYW5nZSA9IFJhbmdlOjpjcmVh
dGUocGFyYWdyYXBoUmFuZ2UoKS5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIHBhcmFncmFw
aFJhbmdlKCkuc3RhcnRQb3NpdGlvbigpLCBtX2F1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UtPnN0
YXJ0UG9zaXRpb24oKSk7CisgICAgbV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0ID0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFydE9mZnNldFJhbmdlLnB0cigpKTsKKyAgICByZXR1cm4g
bV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0OworfQorCitpbnQgVGV4dENoZWNraW5nUGFyYWdy
YXBoOjphdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCgpIGNvbnN0Cit7CisgICAgaWYgKG1fYXV0
b21hdGljUmVwbGFjZW1lbnRMZW5ndGggIT0gLTEpCisgICAgICAgIHJldHVybiBtX2F1dG9tYXRp
Y1JlcGxhY2VtZW50TGVuZ3RoOworCisgICAgYXV0byBlbmRPZmZzZXRSYW5nZSA9IFJhbmdlOjpj
cmVhdGUocGFyYWdyYXBoUmFuZ2UoKS5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIHBhcmFn
cmFwaFJhbmdlKCkuc3RhcnRQb3NpdGlvbigpLCBtX2F1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2Ut
PmVuZFBvc2l0aW9uKCkpOworICAgIG1fYXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGggPSBUZXh0
SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZE9mZnNldFJhbmdlLnB0cigpKSAtIGF1dG9tYXRpY1Jl
cGxhY2VtZW50U3RhcnQoKTsKKyAgICByZXR1cm4gbV9hdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0
aDsKK30KKwogVGV4dENoZWNraW5nSGVscGVyOjpUZXh0Q2hlY2tpbmdIZWxwZXIoRWRpdG9yQ2xp
ZW50JiBjbGllbnQsIFJhbmdlJiByYW5nZSkKICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAs
IG1fcmFuZ2UocmFuZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRD
aGVja2luZ0hlbHBlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxw
ZXIuaAppbmRleCA2YjBmNDNmY2Y3NGFlYWU3MTU2Y2E5MjQ5ODYzYWQ3MmMwNTRkZDdlLi5iYzc5
YmFkNzA2NGU1MzhmZjExNWQyMDM0NjhmYmFiOWE2NGNjZTEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmgKQEAgLTMzLDcgKzMzLDggQEAgc3RydWN0IFRl
eHRDaGVja2luZ1Jlc3VsdDsKIAogY2xhc3MgVGV4dENoZWNraW5nUGFyYWdyYXBoIHsKIHB1Ymxp
YzoKLSAgICBleHBsaWNpdCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoUmVmPFJhbmdlPiYmIGNoZWNr
aW5nUmFuZ2UsIFJhbmdlKiBwYXJhZ3JhcGhSYW5nZSA9IG51bGxwdHIpOworICAgIGV4cGxpY2l0
IFRleHRDaGVja2luZ1BhcmFncmFwaChSZWY8UmFuZ2U+JiYgY2hlY2tpbmdBbmRBdXRvbWF0aWNS
ZXBsYWNlbWVudFJhbmdlKTsKKyAgICBleHBsaWNpdCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoUmVm
PFJhbmdlPiYmIGNoZWNraW5nUmFuZ2UsIFJlZjxSYW5nZT4mJiBhdXRvbWF0aWNSZXBsYWNlbWVu
dFJhbmdlLCBSZWZQdHI8UmFuZ2U+JiYgcGFyYWdyYXBoUmFuZ2UpOwogCiAgICAgaW50IHJhbmdl
TGVuZ3RoKCkgY29uc3Q7CiAgICAgUmVmPFJhbmdlPiBzdWJyYW5nZShpbnQgY2hhcmFjdGVyT2Zm
c2V0LCBpbnQgY2hhcmFjdGVyQ291bnQpIGNvbnN0OwpAQCAtNTUsNiArNTYsMTEgQEAgcHVibGlj
OgogICAgIGludCBjaGVja2luZ0xlbmd0aCgpIGNvbnN0OwogICAgIFN0cmluZyBjaGVja2luZ1N1
YnN0cmluZygpIGNvbnN0IHsgcmV0dXJuIHRleHRTdWJzdHJpbmcoY2hlY2tpbmdTdGFydCgpLCBj
aGVja2luZ0xlbmd0aCgpKTsgfQogCisgICAgLy8gRGV0ZXJtaW5lcyB0aGUgcmFuZ2UgaW4gd2hp
Y2ggd2UgYWxsb3cgYXV0b21hdGljIHRleHQgcmVwbGFjZW1lbnQuIElmIGFuIGF1dG9tYXRpYyBy
ZXBsYWNlbWVudCByYW5nZSBpcyBub3QgcGFzc2VkIHRvIHRoZQorICAgIC8vIHRleHQgY2hlY2tp
bmcgcGFyYWdyYXBoLCB0aGlzIGRlZmF1bHRzIHRvIHRoZSBzcGVsbCBjaGVja2luZyByYW5nZS4K
KyAgICBpbnQgYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpIGNvbnN0OworICAgIGludCBhdXRv
bWF0aWNSZXBsYWNlbWVudExlbmd0aCgpIGNvbnN0OworCiAgICAgYm9vbCBjaGVja2luZ1Jhbmdl
TWF0Y2hlcyhpbnQgbG9jYXRpb24sIGludCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJuIGxvY2F0aW9u
ID09IGNoZWNraW5nU3RhcnQoKSAmJiBsZW5ndGggPT0gY2hlY2tpbmdMZW5ndGgoKTsgfQogICAg
IGJvb2wgaXNDaGVja2luZ1JhbmdlQ292ZXJlZEJ5KGludCBsb2NhdGlvbiwgaW50IGxlbmd0aCkg
Y29uc3QgeyByZXR1cm4gbG9jYXRpb24gPD0gY2hlY2tpbmdTdGFydCgpICYmIGxvY2F0aW9uICsg
bGVuZ3RoID49IGNoZWNraW5nU3RhcnQoKSArIGNoZWNraW5nTGVuZ3RoKCk7IH0KICAgICBib29s
IGNoZWNraW5nUmFuZ2VDb3ZlcnMoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKSBjb25zdCB7IHJl
dHVybiBsb2NhdGlvbiA8IGNoZWNraW5nRW5kKCkgJiYgbG9jYXRpb24gKyBsZW5ndGggPiBjaGVj
a2luZ1N0YXJ0KCk7IH0KQEAgLTY1LDEyICs3MSwxNSBAQCBwcml2YXRlOgogICAgIFJhbmdlJiBv
ZmZzZXRBc1JhbmdlKCkgY29uc3Q7CiAKICAgICBSZWY8UmFuZ2U+IG1fY2hlY2tpbmdSYW5nZTsK
KyAgICBSZWY8UmFuZ2U+IG1fYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZTsKICAgICBtdXRhYmxl
IFJlZlB0cjxSYW5nZT4gbV9wYXJhZ3JhcGhSYW5nZTsKICAgICBtdXRhYmxlIFJlZlB0cjxSYW5n
ZT4gbV9vZmZzZXRBc1JhbmdlOwogICAgIG11dGFibGUgU3RyaW5nIG1fdGV4dDsKLSAgICBtdXRh
YmxlIGludCBtX2NoZWNraW5nU3RhcnQ7Ci0gICAgbXV0YWJsZSBpbnQgbV9jaGVja2luZ0VuZDsK
LSAgICBtdXRhYmxlIGludCBtX2NoZWNraW5nTGVuZ3RoOworICAgIG11dGFibGUgaW50IG1fY2hl
Y2tpbmdTdGFydCB7IC0xIH07CisgICAgbXV0YWJsZSBpbnQgbV9jaGVja2luZ0VuZCB7IC0xIH07
CisgICAgbXV0YWJsZSBpbnQgbV9jaGVja2luZ0xlbmd0aCB7IC0xIH07CisgICAgbXV0YWJsZSBp
bnQgbV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0IHsgLTEgfTsKKyAgICBtdXRhYmxlIGludCBt
X2F1dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3RoIHsgLTEgfTsKIH07CiAKIGNsYXNzIFRleHRDaGVj
a2luZ0hlbHBlciB7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggYzk2MWE3NjVjNDY2NWQ2MDZkMTY2MjVjOWU0YjdjOGQyNjI0MDBkMy4uMjkyNGRk
Njg4MmYwYTY4MDIyNDdmMmQ2NmU0YzcxMDI1MzliODAwMSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDE4LTA2LTMw
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNP
U10gVGV4dCByZXBsYWNlbWVudHMgdGhhdCBlbmQgd2l0aCBzeW1ib2xzIGFyZSBleHBhbmRlZCBp
bW1lZGlhdGVseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg3MjI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MTExMjQzMz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIHRlc3Rpbmcgc3VwcG9y
dCBmb3IgbW9ja2luZyBOU1NwZWxsQ2hlY2tlcidzIHRleHQgY2hlY2tpbmcgcmVzdWx0cy4gU2Vl
IGJlbG93IGZvciBtb3JlIGRldGFpbHMsIGFuZCB0aGUgbmV3CisgICAgICAgIGxheW91dCB0ZXN0
IGZvciBhbiBleGFtcGxlIG9mIGl0cyB1c2FnZS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChzZXRTcGVsbENoZWNrZXJUZXh0
UmVwbGFjZW1lbnRzQ2FsbGJhY2spOgorCisgICAgICAgIEFkZCBiaW5kaW5ncyBzdXBwb3J0IGlu
IFRlc3RSdW5uZXIgdG8gc3BlY2lmeSBhIHNldCBvZiB0ZXh0IHJlcGxhY2VtZW50IG1hcHBpbmdz
LiBFYWNoIGVudHJ5IGluIHRoZSBkaWN0aW9uYXJ5CisgICAgICAgIG1hcHMgYSBzdHJpbmcgcmVw
cmVzZW50aW5nIGFuIGlucHV0IHRvIHRoZSBOU1NwZWxsQ2hlY2tlciB0byBzb21lIGluZm9ybWF0
aW9uIGRlc2NyaWJpbmcgdGhlIHNwZWxsIGNoZWNraW5nCisgICAgICAgIHJlc3VsdCB0aGF0IExh
eW91dFRlc3RTcGVsbENoZWNrZXIgd2lsbCByZXR1cm4uCisKKyAgICAgICAgKFRlc3RSdW5uZXI6
OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5o
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAg
ICAgKHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZyk6CisKKyAgICAg
ICAgUmVzdG9yZSB0aGUgb3JpZ2luYWwgc2hhcmVkIE5TU3BlbGxjaGVja2VyIGJlZm9yZSB0cmFu
c2l0aW9uaW5nIHRvIHRoZSBuZXh0IGxheW91dCB0ZXN0LCBpZiBuZWVkZWQuCisKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW06IFJlbW92
ZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW06CisgICAg
ICAgIChUZXN0UnVubmVyOjpzZXRTcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZCk6CisgICAgICAg
IChUZXN0UnVubmVyOjpzZXRTcGVsbENoZWNrZXJUZXh0UmVwbGFjZW1lbnRzKToKKworICAgICAg
ICBUaGVzZSB0ZXN0UnVubmVyIG1ldGhvZHMgZW5zdXJlIHRoYXQgYC1bTlNTcGVsbENoZWNrZXIg
c2hhcmVkU3BlbGxDaGVja2VyXWAgaXMgc3dpenpsZWQgdG8gcmV0dXJuIG91ciBtb2NrCisgICAg
ICAgIExheW91dFRlc3RTcGVsbENoZWNrZXIgaW5zdGFuY2UgYmVmb3JlIGNhbGxpbmcgaW50byBp
dC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcDoKKyAg
ICAgICAgKFRlc3RSdW5uZXI6OnNldFNwZWxsQ2hlY2tlclRleHRSZXBsYWNlbWVudHMpOgorICAg
ICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5oOiBS
ZW5hbWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlU3BlbGxD
aGVja2VyLmguCisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3Bl
bGxDaGVja2VyLm1tOiBBZGRlZC4KKworICAgICAgICBNb3ZlZCBEdW1wUmVuZGVyVHJlZVNwZWxs
Q2hlY2tlciB0byBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLCBhbmQgbWFkZSBpdCBjb21waWxlIGZv
ciBib3RoIFdlYktpdFRlc3RSdW5uZXIKKyAgICAgICAgKG1vZGVybiBXZWJLaXQpIGFuZCBEdW1w
UmVuZGVyVHJlZSAobGVnYWN5IFdlYktpdCkgYnkgcHV0dGluZyBpdCBpbiBUZXN0UnVubmVyU2hh
cmVkLgorCisgICAgICAgIChleGlzdGluZ0dsb2JhbExheW91dFRlc3RTcGVsbENoZWNrZXIpOgor
ICAgICAgICAoZW5zdXJlR2xvYmFsTGF5b3V0VGVzdFNwZWxsQ2hlY2tlcik6CisgICAgICAgIChz
dHJpbmdGb3JDb3JyZWN0aW9uUmVzcG9uc2UpOgorICAgICAgICAobnNUZXh0Q2hlY2tpbmdUeXBl
KToKKyAgICAgICAgKC1bTGF5b3V0VGVzdFRleHRDaGVja2luZ1Jlc3VsdCBpbml0V2l0aFR5cGU6
cmFuZ2U6cmVwbGFjZW1lbnQ6XSk6CisgICAgICAgICgtW0xheW91dFRlc3RUZXh0Q2hlY2tpbmdS
ZXN1bHQgcmFuZ2VdKToKKyAgICAgICAgKC1bTGF5b3V0VGVzdFRleHRDaGVja2luZ1Jlc3VsdCBy
ZXN1bHRUeXBlXSk6CisgICAgICAgICgtW0xheW91dFRlc3RUZXh0Q2hlY2tpbmdSZXN1bHQgcmVw
bGFjZW1lbnRTdHJpbmddKToKKyAgICAgICAgKC1bTGF5b3V0VGVzdFRleHRDaGVja2luZ1Jlc3Vs
dCBkZXNjcmlwdGlvbl0pOgorCisgICAgICAgIExheW91dFRlc3RUZXh0Q2hlY2tpbmdSZXN1bHQg
cmVwcmVzZW50cyBhIGZha2UgTlNUZXh0Q2hlY2tpbmdSZXN1bHQgY29udGFpbmluZyBzcGVsbCBj
aGVja2luZyByZXN1bHRzIHN1cHBsaWVkCisgICAgICAgIGJ5IHRoZSBsYXlvdXQgdGVzdC4KKwor
ICAgICAgICAoK1tMYXlvdXRUZXN0U3BlbGxDaGVja2VyIGluc3RhbGxJZk5lY2Vzc2FyeV0pOgor
ICAgICAgICAoK1tMYXlvdXRUZXN0U3BlbGxDaGVja2VyIHVuaW5zdGFsbEFuZFJlc2V0XSk6CisK
KyAgICAgICAgSGVscGVyIG1ldGhvZHMgdG8gYmVnaW4gYW5kIGVuZCBzd2l6emxpbmcgdGhlIHNo
YXJlZCBOU1NwZWxsQ2hlY2tlci4KKworICAgICAgICAoLVtMYXlvdXRUZXN0U3BlbGxDaGVja2Vy
IHJlc2V0XSk6CisKKyAgICAgICAgUmVzZXRzIHRoZSBzdGF0ZSBvZiB0aGUgTGF5b3V0VGVzdFNw
ZWxsQ2hlY2tlciAodGhpcyBlbnRhaWxzIGNsZWFyaW5nIHRoZSBmYWtlIHJlcGxhY2VtZW50cyBk
aWN0aW9uYXJ5IGFuZAorICAgICAgICB0dXJuaW5nIG9mZiBsb2dnaW5nIGZvciByZWNvcmRlZCBz
cGVsbGNoZWNraW5nIHJlc3BvbnNlcykuCisKKyAgICAgICAgKC1bTGF5b3V0VGVzdFNwZWxsQ2hl
Y2tlciByZXBsYWNlbWVudHNdKToKKyAgICAgICAgKC1bTGF5b3V0VGVzdFNwZWxsQ2hlY2tlciBz
ZXRSZXBsYWNlbWVudHM6XSk6CisgICAgICAgICgtW0xheW91dFRlc3RTcGVsbENoZWNrZXIgc2V0
UmVwbGFjZW1lbnRzRnJvbUpTT2JqZWN0OmluQ29udGV4dDpdKToKKworICAgICAgICBIZWxwZXIg
bWV0aG9kIHRvIHRha2UgYSBgSlNPYmplY3RSZWZgIHN1cHBsaWVkIGJ5IHRoZSB0ZXN0IHJ1bm5l
ciBhbmQgdHJhbnNmb3JtIGl0IGludG8gYSBtYXAgb2Ygc3BlbGwgY2hlY2tpbmcKKyAgICAgICAg
c3RyaW5nIGlucHV0cyB0byBMYXlvdXRUZXN0VGV4dENoZWNraW5nUmVzdWx0cy4KKworICAgICAg
ICAoLVtMYXlvdXRUZXN0U3BlbGxDaGVja2VyIGNoZWNrU3RyaW5nOnJhbmdlOnR5cGVzOm9wdGlv
bnM6aW5TcGVsbERvY3VtZW50V2l0aFRhZzpvcnRob2dyYXBoeTp3b3JkQ291bnQ6XSk6CisKKyAg
ICAgICAgQ29uc3VsdCB0aGUgdGV4dCByZXBsYWNlbWVudCBtYXAgYW5kIGJhaWwgZWFybHkgaWYg
YSBtYXRjaCBpcyBmb3VuZCwgYmVmb3JlIGNhbGxpbmcgaW50byByZWFsIE5TU3BlbGxDaGVja2Vy
CisgICAgICAgIGxvZ2ljIHRvIHBlcmZvcm0gc3BlbGxjaGVja2luZy4KKworICAgICAgICAoLVtM
YXlvdXRUZXN0U3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlOnRvQ29ycmVjdGlvbjpmb3JXb3Jk
Omxhbmd1YWdlOmluU3BlbGxEb2N1bWVudFdpdGhUYWc6XSk6CisKKyAgICAgICAgUmVpbXBsZW1l
bnQgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uYWxpdHkgaW4gRHVtcFJlbmRlclRyZWVTcGVsbENoZWNr
ZXIgdG8gbWFrZSBgLXJlY29yZFJlc3BvbnNlOuKApmAgcHJpbnQgdG8gc3Rkb3V0CisgICAgICAg
IGJ5IG92ZXJyaWRpbmcgdGhlIG1ldGhvZCBhbmQgcHJpbnRpbmcgaWYgdGhlIGAtc3BlbGxDaGVj
a2VyTG9nZ2luZ0VuYWJsZWRgIHByb3BlcnR5IGhhcyBiZWVuIHNldCB0byBZRVMuCisKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKwogMjAxOC0wNi0zMCAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGln
YWxpYS5jb20+CiAKICAgICAgICAgW0NNYWtlXSBidWlsZC13ZWJraXQgc2hvdWxkIGJlIGFibGUg
dG8gZW5hYmxlIGFkZHJlc3Mgc2FuaXRpemVyCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBkYzliOWZiOGI4NzMyMWY2NDM0ZTQ2NmY0NDBiMTdkNTY0YzhiYTYwLi4yODdkMjZhNjdjMDg4
Y2RiNjYxOGFlZTRlMTIwOWM1YjRmMDZkMTI5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTc3LDcgKzc3LDYgQEAKIAkJMjlDRkJBMkUxMjI3M0ExMDAwQkMzMEMwIC8qIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjlDRkJBMkQxMjI3M0ExMDAwQkMzMEMwIC8qIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyTWFjLm1tICovOyB9OwogCQkyQ0U4OEZBMjE3MTI0RDhDMDA3MzRGQzAgLyogSmF2YVNj
cmlwdFRocmVhZGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyQ0U4OEZBMTE3MTI0Q0VFMDA3MzRGQzAgLyogSmF2YVNjcmlwdFRocmVhZGluZy5j
cHAgKi87IH07CiAJCTJENDAzRjFCMTUwODcyMDkwMDUzNThEMiAvKiBMYXlvdXRUZXN0SGVscGVy
Lm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDQwM0VB
MjE1MDg3MTQyMDA1MzU4RDIgLyogTGF5b3V0VGVzdEhlbHBlci5tICovOyB9OwotCQkyREEyRTNB
NTFFMUJBNTQxMDBBM0JCRDAgLyogRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREEyRTNBNDFFMUJBNTQx
MDBBM0JCRDAgLyogRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW0gKi87IH07CiAJCTMxMTE3
QjNEMTVEOUE1NkEwMDE2M0JDOCAvKiBNb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTExN0IzQjE1RDlB
NTZBMDAxNjNCQzggLyogTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tICovOyB9OwogCQkz
MTI5NDNGOTFFNzFGMkI0MDAxRUUyQ0MgLyogSU9TTGF5b3V0VGVzdENvbW11bmljYXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE0OEEwNTUx
RTZGOTBGNDAwRDNCMzE2IC8qIElPU0xheW91dFRlc3RDb21tdW5pY2F0aW9uLmNwcCAqLzsgfTsK
IAkJNDQ2NENBQkUxQzIwQTA4QjAwRTVCQjU1IC8qIER1bXBSZW5kZXJUcmVlQXBwTWFpbi5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NjRDQUJEMUMy
MEEwNzAwMEU1QkI1NSAvKiBEdW1wUmVuZGVyVHJlZUFwcE1haW4ubW0gKi87IH07CkBAIC0xNDgs
NiArMTQ3LDcgQEAKIAkJQzIzRUEyMDgxQkM5RjA1MTAwQzk4MEI3IC8qIEZvbnRXaXRoRmVhdHVy
ZXMub3RmIGluIENvcHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDMjNFQTIwNjFCQzlFQUJBMDBDOTgwQjcgLyogRm9udFdpdGhGZWF0dXJlcy5vdGYgKi87
IH07CiAJCUMyM0VBMjA5MUJDOUYwNTEwMEM5ODBCNyAvKiBGb250V2l0aEZlYXR1cmVzLnR0ZiBp
biBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzIz
RUEyMDcxQkM5RUFCQTAwQzk4MEI3IC8qIEZvbnRXaXRoRmVhdHVyZXMudHRmICovOyB9OwogCQlF
MUI3ODE2NTExQUYzMUI3MDA3RTFCQzIgLyogTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUI3ODA4NzExQUYx
NjY5MDA3RTFCQzIgLyogTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIubW0gKi87IH07CisJCUY0QzM1
NzhEMjBFODQ0NEUwMEZBMDc0OCAvKiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRDMzU3ODgyMEU4NDQyNzAw
RkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIubW0gKi87IH07CiAJCUY0RDQyMzYxMURE
NTA0ODIwMDY3ODI5MCAvKiBUZXh0SW5wdXRDb250cm9sbGVySU9TLm0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEQ0MjM1RjFERDUwNDUzMDA2NzgyOTAg
LyogVGV4dElucHV0Q29udHJvbGxlcklPUy5tICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBz
ZWN0aW9uICovCiAKQEAgLTI4Miw4ICsyODIsNiBAQAogCQkyQ0U4OEZBMTE3MTI0Q0VFMDA3MzRG
QzAgLyogSmF2YVNjcmlwdFRocmVhZGluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKYXZhU2NyaXB0VGhyZWFkaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMkQ0MDNFQTIxNTA4NzE0MjAwNTM1OEQyIC8qIExheW91dFRlc3RIZWxwZXIubSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBuYW1lID0gTGF5b3V0VGVzdEhlbHBlci5tOyBw
YXRoID0gbWFjL0xheW91dFRlc3RIZWxwZXIubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkQ0MDNGMTkxNTA4NzFGOTAwNTM1OEQyIC8qIExheW91dFRlc3RIZWxwZXIgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8u
ZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IExheW91dFRlc3RIZWxwZXI7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0JCTJEQTJFM0EzMUUxQkE1NDEw
MEEzQkJEMCAvKiBEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5oOyBwYXRoID0gbWFj
L0R1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTJEQTJFM0E0MUUxQkE1NDEwMEEzQkJEMCAvKiBEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tl
ci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IER1bXBSZW5kZXJU
cmVlU3BlbGxDaGVja2VyLm1tOyBwYXRoID0gbWFjL0R1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2Vy
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRURFMERBQTFGNTEzMURFMDBENUY4
REYgLyogQXBwS2l0VGVzdFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBcHBLaXRUZXN0U1BJLmg7IHBh
dGggPSBtYWMvQXBwS2l0VGVzdFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
MTExN0IzQTE1RDlBNTZBMDAxNjNCQzggLyogTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1vY2tXZWJOb3RpZmljYXRpb25Qcm92
aWRlci5oOyBwYXRoID0gbWFjL01vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzMTExN0IzQjE1RDlBNTZBMDAxNjNCQzggLyogTW9ja1dl
Yk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBuYW1lID0gTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tOyBwYXRoID0gbWFjL01vY2tX
ZWJOb3RpZmljYXRpb25Qcm92aWRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTQxMiw2ICs0MTAsOCBAQAogCQlDMjNFQTIwNzFCQzlFQUJBMDBDOTgwQjcgLyogRm9udFdpdGhG
ZWF0dXJlcy50dGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBmaWxlOyBuYW1lID0gRm9udFdpdGhGZWF0dXJlcy50dGY7IHBhdGggPSBmb250cy9Gb250
V2l0aEZlYXR1cmVzLnR0Zjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFCNzgwODUx
MUFGMTY0MzAwN0UxQkMyIC8qIE1vY2tHZW9sb2NhdGlvblByb3ZpZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1vY2tHZW9sb2NhdGlvblByb3ZpZGVyLmg7IHBhdGggPSBt
YWMvTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTFCNzgwODcxMUFGMTY2OTAwN0UxQkMyIC8qIE1vY2tHZW9sb2NhdGlvblByb3ZpZGVyLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gTW9ja0dlb2xvY2F0aW9u
UHJvdmlkZXIubW07IHBhdGggPSBtYWMvTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0QzM1Nzg4MjBFODQ0MjcwMEZBMDc0OCAvKiBMYXlv
dXRUZXN0U3BlbGxDaGVja2VyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbTsgcGF0aCA9IC4uL1Rlc3RSdW5uZXJTaGFy
ZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRjRDMzU3ODkyMEU4NDQyNzAwRkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNr
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGF5b3V0VGVzdFNwZWxsQ2hl
Y2tlci5oOyBwYXRoID0gLi4vVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxD
aGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RDQyMzVGMURENTA0NTMw
MDY3ODI5MCAvKiBUZXh0SW5wdXRDb250cm9sbGVySU9TLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMub2JqYzsgbmFtZSA9IFRleHRJbnB1dENvbnRyb2xsZXJJT1MubTsgcGF0aCA9IGlvcy9UZXh0
SW5wdXRDb250cm9sbGVySU9TLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RDQy
MzYwMURENTA0NjkwMDY3ODI5MCAvKiBUZXh0SW5wdXRDb250cm9sbGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRJbnB1dENvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KQEAgLTY4
Nyw2ICs2ODcsNyBAQAogCQkzMTQ4QTA2NTFFNkY5MEY0MDBEM0IzMTYgLyogVGVzdFJ1bm5lclNo
YXJlZCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRjRC
NkMzMTgyMEU4NDM4MjAwOEFDMjI1IC8qIGNvY29hICovLAogCQkJCTMxNDhBMDU1MUU2RjkwRjQw
MEQzQjMxNiAvKiBJT1NMYXlvdXRUZXN0Q29tbXVuaWNhdGlvbi5jcHAgKi8sCiAJCQkJMzE0OEEw
NTYxRTZGOTBGNDAwRDNCMzE2IC8qIElPU0xheW91dFRlc3RDb21tdW5pY2F0aW9uLmggKi8sCiAJ
CQkpOwpAQCAtNzc5LDggKzc4MCw2IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlBOEI5MUFERjBD
RjNCMzcyMDA4RjkxRkYgLyogRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLmggKi8sCiAJCQkJQThC
OTFBRDcwQ0YzQjMyRjAwOEY5MUZGIC8qIER1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tbSAqLywK
LQkJCQkyREEyRTNBMzFFMUJBNTQxMDBBM0JCRDAgLyogRHVtcFJlbmRlclRyZWVTcGVsbENoZWNr
ZXIuaCAqLywKLQkJCQkyREEyRTNBNDFFMUJBNTQxMDBBM0JCRDAgLyogRHVtcFJlbmRlclRyZWVT
cGVsbENoZWNrZXIubW0gKi8sCiAJCQkJQThCOTFBREQwQ0YzQjM3MjAwOEY5MUZGIC8qIER1bXBS
ZW5kZXJUcmVlV2luZG93LmggKi8sCiAJCQkJQThCOTFBRDkwQ0YzQjMyRjAwOEY5MUZGIC8qIER1
bXBSZW5kZXJUcmVlV2luZG93Lm1tICovLAogCQkJKTsKQEAgLTgxNyw2ICs4MTYsMTUgQEAKIAkJ
CW5hbWUgPSBQaXhlbER1bXA7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlG
NEI2QzMxODIwRTg0MzgyMDA4QUMyMjUgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91
cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUY0QzM1Nzg5MjBFODQ0MjcwMEZBMDc0OCAvKiBMYXlv
dXRUZXN0U3BlbGxDaGVja2VyLmggKi8sCisJCQkJRjRDMzU3ODgyMEU4NDQyNzAwRkEwNzQ4IC8q
IExheW91dFRlc3RTcGVsbENoZWNrZXIubW0gKi8sCisJCQkpOworCQkJbmFtZSA9IGNvY29hOwor
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJRjRENDIzNUQxREQ0Rjk5OTAwNjc4
MjkwIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBA
IC0xMDgxLDcgKzEwODksNiBAQAogCQkJCUJDQTE4QjdCMEM5QjA4RjEwMDExNDM2OSAvKiBEdW1w
UmVuZGVyVHJlZURyYWdnaW5nSW5mby5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4RDc5Q0VCMEZD
MjhCMkMwMDRBQzhGRSAvKiBEdW1wUmVuZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJjZS5tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQThCOTFBREEwQ0YzQjMyRjAwOEY5MUZGIC8qIER1bXBSZW5kZXJUcmVl
UGFzdGVib2FyZC5tbSBpbiBTb3VyY2VzICovLAotCQkJCTJEQTJFM0E1MUUxQkE1NDEwMEEzQkJE
MCAvKiBEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4
QjkxQURDMENGM0IzMkYwMDhGOTFGRiAvKiBEdW1wUmVuZGVyVHJlZVdpbmRvdy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDQTE4QjYyMEM5QjA4QzIwMDExNDM2OSAvKiBFZGl0aW5nRGVsZWdhdGUu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEI3MDBDOUIwOERCMDAxMTQzNjkgLyogRXZlbnRT
ZW5kaW5nQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLApAQCAtMTA5Myw2ICsxMTAwLDcgQEAK
IAkJCQkyQ0U4OEZBMjE3MTI0RDhDMDA3MzRGQzAgLyogSmF2YVNjcmlwdFRocmVhZGluZy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjE4RTcwNjFENkJBMDIzMDAyN0U1NDcgLyogSlNVSVNjcmlw
dENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYxOEU3MTMxRDZCQzQzQTAwMjdF
NTQ3IC8qIEpTV3JhcHBlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGNEMzNTc4RDIwRTg0NDRF
MDBGQTA3NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUUxQjc4MTY1MTFBRjMxQjcwMDdFMUJDMiAvKiBNb2NrR2VvbG9jYXRpb25Qcm92aWRlci5tbSBp
biBTb3VyY2VzICovLAogCQkJCTMxMTE3QjNEMTVEOUE1NkEwMDE2M0JDOCAvKiBNb2NrV2ViTm90
aWZpY2F0aW9uUHJvdmlkZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEI3MjBDOUIwOERC
MDAxMTQzNjkgLyogTmF2aWdhdGlvbkNvbnRyb2xsZXIubSBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9UZXN0UnVubmVyLmNwcAppbmRleCBmOGFkOTUxNTE3NDBiNjZjNzQ2OTJhZDUyZDM3
NGEzMDVkYTQ0NjcxLi43ZThlYzliZDQ1YjBiNzVmNGU4ZTkyNmJhNWM3ZDYzOGU2MjZlNDYzIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcApAQCAtMTc4OCw2ICsxNzg4LDE2IEBAIHN0
YXRpYyBKU1ZhbHVlUmVmIHNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkQ2FsbGJhY2soSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRTcGVsbENoZWNrZXJUZXh0UmVwbGFj
ZW1lbnRzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9u
LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNW
YWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmIChh
cmd1bWVudENvdW50IDwgMSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpOworCisgICAgYXV0byogcnVubmVyID0gc3RhdGljX2Nhc3Q8VGVzdFJ1bm5lcio+KEpT
T2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgcnVubmVyLT5zZXRTcGVsbENoZWNr
ZXJUZXh0UmVwbGFjZW1lbnRzKGNvbnRleHQsIEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBhcmd1
bWVudHNbMF0sIG51bGxwdHIpKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29u
dGV4dCk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIHNldE9wZW5QYW5lbEZpbGVzQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVu
dHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIGlmIChhcmd1bWVudENvdW50ID09
IDEpCkBAIC0yMjU1LDYgKzIyNjUsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBUZXN0UnVubmVyOjpz
dGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJydW5VSVNjcmlwdCIsIHJ1blVJU2NyaXB0Q2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiaW1hZ2VDb3VudEluR2VuZXJhbFBhc3RlYm9hcmQi
LCBpbWFnZUNvdW50SW5HZW5lcmFsUGFzdGVib2FyZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgInNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkIiwgc2V0U3BlbGxDaGVja2VyTG9nZ2lu
Z0VuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzZXRTcGVsbENoZWNrZXJUZXh0
UmVwbGFjZW1lbnRzIiwgc2V0U3BlbGxDaGVja2VyVGV4dFJlcGxhY2VtZW50c0NhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCiAgICAgICAgIHsgInNldE9wZW5QYW5lbEZpbGVzIiwgc2V0T3BlblBhbmVsRmlsZXND
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJmb3JjZUltbWVkaWF0ZUNvbXBsZXRpb24iLCBm
b3JjZUltbWVkaWF0ZUNvbXBsZXRpb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7IDAsIDAs
IDAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCmluZGV4IDNlMzI4YjgyMjMyM2ZlYzRiNGI1
NGY3NzdhY2VkMjQzNDY0NmI2YzEuLmRiZjE0ZmViNjE3OGJjYWQ2Nzk2YTAxYzQ0NTdhYjI1YmNk
MjIxY2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgKQEAgLTM3Niw2ICszNzYsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBkdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoKSBjb25zdCB7IHJldHVy
biBtX2R1bXBKU0NvbnNvbGVMb2dJblN0ZEVycjsgfQogCiAgICAgdm9pZCBzZXRTcGVsbENoZWNr
ZXJMb2dnaW5nRW5hYmxlZChib29sKTsKKyAgICB2b2lkIHNldFNwZWxsQ2hlY2tlclRleHRSZXBs
YWNlbWVudHMoSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiByZXBsYWNlbWVudHMpOwogCiAgICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBvcGVuUGFuZWxGaWxlcygpIGNvbnN0IHsg
cmV0dXJuIG1fb3BlblBhbmVsRmlsZXM7IH0KICAgICB2b2lkIHNldE9wZW5QYW5lbEZpbGVzKEpT
Q29udGV4dFJlZiwgSlNWYWx1ZVJlZik7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJl
bmRlclRyZWUubW0KaW5kZXggZDY5Njc3YmQ5ZWU3M2E4OWQyZjIwNjQ1MDQ4ZGM3MDJjOTZmNzNi
OS4uMmQ1OWRhNzhiNTIxMDgwODQ1NWY2NGY5NjlhOGM2MmVlMzc5Y2RkOCAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtMzQsMTMgKzM0LDEzIEBACiAj
aW1wb3J0ICJEZWZhdWx0UG9saWN5RGVsZWdhdGUuaCIKICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVl
RHJhZ2dpbmdJbmZvLmgiCiAjaW1wb3J0ICJEdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQuaCIKLSNp
bXBvcnQgIkR1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLmgiCiAjaW1wb3J0ICJEdW1wUmVuZGVy
VHJlZVdpbmRvdy5oIgogI2ltcG9ydCAiRWRpdGluZ0RlbGVnYXRlLmgiCiAjaW1wb3J0ICJFdmVu
dFNlbmRpbmdDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJGcmFtZUxvYWREZWxlZ2F0ZS5oIgogI2lt
cG9ydCAiSGlzdG9yeURlbGVnYXRlLmgiCiAjaW1wb3J0ICJKYXZhU2NyaXB0VGhyZWFkaW5nLmgi
CisjaW1wb3J0ICJMYXlvdXRUZXN0U3BlbGxDaGVja2VyLmgiCiAjaW1wb3J0ICJNb2NrR2VvbG9j
YXRpb25Qcm92aWRlci5oIgogI2ltcG9ydCAiTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmgi
CiAjaW1wb3J0ICJOYXZpZ2F0aW9uQ29udHJvbGxlci5oIgpAQCAtMTg2OCw3ICsxODY4LDkgQEAg
c3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKGNv
bnN0IFRlc3RPcHRpb25zJiBvcHRpb24KIAogICAgIFttYWluRnJhbWUgX2NsZWFyT3BlbmVyXTsK
IAotICAgIHNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKGZhbHNlKTsKKyNpZiBQTEFURk9S
TShNQUMpCisgICAgW0xheW91dFRlc3RTcGVsbENoZWNrZXIgdW5pbnN0YWxsQW5kUmVzZXRdOwor
I2VuZGlmCiAKICAgICByZXNldEFjY3VtdWxhdGVkTG9ncygpOwogICAgIFdlYkNvcmVUZXN0U3Vw
cG9ydDo6aW5pdGlhbGl6ZUxvZ0NoYW5uZWxzSWZOZWNlc3NhcnkoKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5oIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlM2ZkNzFjNDIxMWMwYjI3Yzc1YzkxZjE2NjFmYjdj
YzYxNDE4NGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLmgKKysr
IC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotdm9pZCBzZXRTcGVsbENo
ZWNrZXJMb2dnaW5nRW5hYmxlZChib29sKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5tbQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYmJiNGQ5NmRlOWUyYTFhMmQ3N2NjYjM1MjhiNzMxZDFiZGYwOWRmNy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW0KKysrIC9kZXYvbnVsbApA
QCAtMSw5MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0
ICJEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5oIgotCi0jaWYgUExBVEZPUk0oTUFDKQotCi0j
aW1wb3J0IDxBcHBLaXQvTlNTcGVsbENoZWNrZXIuaD4KLSNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25z
Lmg+Ci0jaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KLQotc3RhdGljIGJvb2wgc3Bl
bGxDaGVja2VyTG9nZ2luZ0VuYWJsZWQ7Ci1zdGF0aWMgSU1QIGFwcEtpdFJlY29yZFJlc3BvbnNl
SU1QOwotCi1zdGF0aWMgY29uc3QgY2hhciAqc3RyaW5nRm9yQ29ycmVjdGlvblJlc3BvbnNlKE5T
Q29ycmVjdGlvblJlc3BvbnNlIGNvcnJlY3Rpb25SZXNwb25zZSkKLXsKLSAgICBzd2l0Y2ggKGNv
cnJlY3Rpb25SZXNwb25zZSkgewotICAgIGNhc2UgTlNDb3JyZWN0aW9uUmVzcG9uc2VOb25lOgot
ICAgICAgICByZXR1cm4gIm5vbmUiOwotICAgIGNhc2UgTlNDb3JyZWN0aW9uUmVzcG9uc2VBY2Nl
cHRlZDoKLSAgICAgICAgcmV0dXJuICJhY2NlcHRlZCI7Ci0gICAgY2FzZSBOU0NvcnJlY3Rpb25S
ZXNwb25zZVJlamVjdGVkOgotICAgICAgICByZXR1cm4gInJlamVjdGVkIjsKLSAgICBjYXNlIE5T
Q29ycmVjdGlvblJlc3BvbnNlSWdub3JlZDoKLSAgICAgICAgcmV0dXJuICJpZ25vcmVkIjsKLSAg
ICBjYXNlIE5TQ29ycmVjdGlvblJlc3BvbnNlRWRpdGVkOgotICAgICAgICByZXR1cm4gImVkaXRl
ZCI7Ci0gICAgY2FzZSBOU0NvcnJlY3Rpb25SZXNwb25zZVJldmVydGVkOgotICAgICAgICByZXR1
cm4gInJldmVydGVkIjsKLSAgICB9Ci0KLSAgICByZXR1cm4gImludmFsaWQiOwotfQotCi1zdGF0
aWMgdm9pZCBkcnRfTlNTcGVsbENoZWNrZXJfcmVjb3JkUmVzcG9uc2VUb0NvcnJlY3Rpb24oaWQg
c2VsZiwgU0VMIF9jbWQsIE5TQ29ycmVjdGlvblJlc3BvbnNlIHJlc3BvbnNlLCBOU1N0cmluZyAq
Y29ycmVjdGlvbiwgTlNTdHJpbmcgKndvcmQsIE5TU3RyaW5nICpsYW5ndWFnZSwgTlNJbnRlZ2Vy
IHNwZWxsRG9jdW1lbnRUYWcpCi17Ci0gICAgaWYgKHNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVk
KQotICAgICAgICBwcmludGYoIk5TU3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlVG9Db3JyZWN0
aW9uOiAlcyAtPiAlcyAocmVzcG9uc2U6ICVzKVxuIiwgW3dvcmQgVVRGOFN0cmluZ10sIFtjb3Jy
ZWN0aW9uIFVURjhTdHJpbmddLCBzdHJpbmdGb3JDb3JyZWN0aW9uUmVzcG9uc2UocmVzcG9uc2Up
KTsKLQotICAgIHd0ZkNhbGxJTVA8dm9pZCwgTlNDb3JyZWN0aW9uUmVzcG9uc2UsIE5TU3RyaW5n
ICosIE5TU3RyaW5nICosIE5TU3RyaW5nICosIE5TSW50ZWdlcj4oYXBwS2l0UmVjb3JkUmVzcG9u
c2VJTVAsIHNlbGYsIF9jbWQsIHJlc3BvbnNlLCBjb3JyZWN0aW9uLCB3b3JkLCBsYW5ndWFnZSwg
c3BlbGxEb2N1bWVudFRhZyk7Ci19Ci0KLXN0YXRpYyB2b2lkIHN3aXp6bGVOU1NwZWxsQ2hlY2tl
ck1ldGhvZHNJZk5lZWRlZCgpCi17Ci0gICAgc3RhdGljIGJvb2wgaGFzU3dpenpsZWQ7Ci0gICAg
aWYgKGhhc1N3aXp6bGVkKQotICAgICAgICByZXR1cm47Ci0gICAgaGFzU3dpenpsZWQgPSB0cnVl
OwotCi0gICAgTWV0aG9kIHJlY29yZFJlc3BvbnNlTWV0aG9kID0gY2xhc3NfZ2V0SW5zdGFuY2VN
ZXRob2Qob2JqY19nZXRDbGFzcygiTlNTcGVsbENoZWNrZXIiKSwgQHNlbGVjdG9yKHJlY29yZFJl
c3BvbnNlOnRvQ29ycmVjdGlvbjpmb3JXb3JkOmxhbmd1YWdlOmluU3BlbGxEb2N1bWVudFdpdGhU
YWc6KSk7Ci0KLSAgICBhcHBLaXRSZWNvcmRSZXNwb25zZUlNUCA9IG1ldGhvZF9zZXRJbXBsZW1l
bnRhdGlvbihyZWNvcmRSZXNwb25zZU1ldGhvZCwgKElNUClkcnRfTlNTcGVsbENoZWNrZXJfcmVj
b3JkUmVzcG9uc2VUb0NvcnJlY3Rpb24pOwotfQotCi12b2lkIHNldFNwZWxsQ2hlY2tlckxvZ2dp
bmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKLXsKLSAgICBzd2l6emxlTlNTcGVsbENoZWNrZXJNZXRo
b2RzSWZOZWVkZWQoKTsKLQotICAgIHNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkID0gZW5hYmxl
ZDsKLX0KLQotI2Vsc2UgLy8gUExBVEZPUk0oTUFDKQotCi12b2lkIHNldFNwZWxsQ2hlY2tlckxv
Z2dpbmdFbmFibGVkKGJvb2wpCi17Ci19Ci0KLSNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbSBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCmluZGV4IDZlMDJmZjAzYTIzOTI4
MTMyNGY0ZmFhMmU1ZjFhN2RjNTFmMTg2OTQuLmZjMmE2ZWZmOGY0NDRiYWMxYzdhZGYzYjYyYmIw
YzAwYTU2YzdlMTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVu
bmVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1t
CkBAIC0zMSw4ICszMSw4IEBACiAjaW1wb3J0ICJUZXN0UnVubmVyLmgiCiAKICNpbXBvcnQgIkRl
ZmF1bHRQb2xpY3lEZWxlZ2F0ZS5oIgotI2ltcG9ydCAiRHVtcFJlbmRlclRyZWVTcGVsbENoZWNr
ZXIuaCIKICNpbXBvcnQgIkVkaXRpbmdEZWxlZ2F0ZS5oIgorI2ltcG9ydCAiTGF5b3V0VGVzdFNw
ZWxsQ2hlY2tlci5oIgogI2ltcG9ydCAiTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIuaCIKICNpbXBv
cnQgIk1vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5oIgogI2ltcG9ydCAiUG9saWN5RGVsZWdh
dGUuaCIKQEAgLTIxMiw3ICsyMTIsMjEgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRTdG9yYWdlRGF0
YWJhc2VJZGxlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQogCiB2b2lkIFRlc3RSdW5uZXI6OnNl
dFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKLSAgICA6OnNldFNw
ZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKGVuYWJsZWQpOworI2lmIFBMQVRGT1JNKE1BQykKKyAg
ICBbTGF5b3V0VGVzdFNwZWxsQ2hlY2tlciBpbnN0YWxsSWZOZWNlc3NhcnldLnNwZWxsQ2hlY2tl
ckxvZ2dpbmdFbmFibGVkID0gZW5hYmxlZDsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGVuYWJs
ZWQpOworI2VuZGlmCit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0U3BlbGxDaGVja2VyVGV4dFJl
cGxhY2VtZW50cyhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgcmVwbGFjZW1lbnRz
KQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBbW0xheW91dFRlc3RTcGVsbENoZWNrZXIgaW5z
dGFsbElmTmVjZXNzYXJ5XSBzZXRSZXBsYWNlbWVudHNGcm9tSlNPYmplY3Q6cmVwbGFjZW1lbnRz
IGluQ29udGV4dDpjb250ZXh0XTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJlcGxhY2VtZW50
cyk7CisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOworI2VuZGlmCiB9CiAKIHZvaWQgVGVzdFJ1
bm5lcjo6Y2xvc2VJZGxlTG9jYWxTdG9yYWdlRGF0YWJhc2VzKCkKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcAppbmRleCA2OWMzNTE0MjE1YTA3ZTI3YzFjZjM0N2E2
NDUwMjVmMDBhMTAwNjlmLi43ODAzMzMxMTZhYWQwZDU5MzlmODc0NmY4MDJlMjc4NTZkYjlkYmEy
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCkBAIC0xNDA2
LDMgKzE0MDYsOCBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFi
bGVkKGJvb2wgZW5hYmxlZCkKIHsKICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICJFUlJPUjogVGVz
dFJ1bm5lcjo6c2V0U3BlbGxDaGVja2VyTG9nZ2luZ0VuYWJsZWQoKSBub3QgaW1wbGVtZW50ZWRc
biIpOwogfQorCit2b2lkIFRlc3RSdW5uZXI6OnNldFNwZWxsQ2hlY2tlclRleHRSZXBsYWNlbWVu
dHMoSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZikKK3sKKyAgICBmcHJpbnRmKHRlc3RSZXN1bHQs
ICJFUlJPUjogVGVzdFJ1bm5lcjo6c2V0U3BlbGxDaGVja2VyVGV4dFJlcGxhY2VtZW50cygpIG5v
dCBpbXBsZW1lbnRlZFxuIik7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVk
L2NvY29hL0xheW91dFRlc3RTcGVsbENoZWNrZXIuaCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQv
Y29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4NTQ4OTM5Y2E3OWQx
Zjc3ZTQyZjFkOWIzZDk4Y2UxNjk4ZDhiYTkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0
UnVubmVyU2hhcmVkL2NvY29hL0xheW91dFRlc3RTcGVsbENoZWNrZXIuaApAQCAtMCwwICsxLDU5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBQTEFU
Rk9STShNQUMpCisKKyNpbXBvcnQgPEFwcEtpdC9OU1NwZWxsQ2hlY2tlci5oPgorCitAaW50ZXJm
YWNlIExheW91dFRlc3RUZXh0Q2hlY2tpbmdSZXN1bHQgOiBOU1RleHRDaGVja2luZ1Jlc3VsdCB7
CitAcHJpdmF0ZQorICAgIFJldGFpblB0cjxOU1N0cmluZz4gX3JlcGxhY2VtZW50OworICAgIE5T
VGV4dENoZWNraW5nVHlwZSBfdHlwZTsKKyAgICBOU1JhbmdlIF9yYW5nZTsKK30KKworLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoVHlwZTooTlNUZXh0Q2hlY2tpbmdUeXBlKXR5cGUgcmFuZ2U6KE5T
UmFuZ2UpcmFuZ2UgcmVwbGFjZW1lbnQ6KE5TU3RyaW5nICopcmVwbGFjZW1lbnQ7CitAZW5kCisK
K0BpbnRlcmZhY2UgTGF5b3V0VGVzdFNwZWxsQ2hlY2tlciA6IE5TU3BlbGxDaGVja2VyIHsKK0Bw
cml2YXRlCisgICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBMYXlvdXRUZXN0
VGV4dENoZWNraW5nUmVzdWx0ICo+PiBfcmVwbGFjZW1lbnRzOworICAgIEJPT0wgX3NwZWxsQ2hl
Y2tlckxvZ2dpbmdFbmFibGVkOworfQorCisrIChpbnN0YW5jZXR5cGUpaW5zdGFsbElmTmVjZXNz
YXJ5OworKyAodm9pZCl1bmluc3RhbGxBbmRSZXNldDsKKworLSAodm9pZClzZXRSZXBsYWNlbWVu
dHNGcm9tSlNPYmplY3Q6KEpTT2JqZWN0UmVmKXJlcGxhY2VtZW50cyBpbkNvbnRleHQ6KEpTQ29u
dGV4dFJlZiljb250ZXh0OworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TRGljdGlvbmFy
eTxOU1N0cmluZyAqLCBMYXlvdXRUZXN0VGV4dENoZWNraW5nUmVzdWx0ICo+ICpyZXBsYWNlbWVu
dHM7CitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBzcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxl
ZDsKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbSBiL1Rvb2xzL1Rl
c3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kNGJlZWYyNjE0NTJiODNlMTc4YWI2ZTliNjBiOTQ2YTU4NDlmNTA3Ci0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2Vy
Lm1tCkBAIC0wLDAgKzEsMjQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJMYXlvdXRUZXN0U3BlbGxDaGVja2VyLmgiCisKKyNpbXBvcnQgPEphdmFTY3JpcHRD
b3JlL0pTUmV0YWluUHRyLmg+CisjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHd0
Zi9Bc3NlcnRpb25zLmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworI2lmIFBM
QVRGT1JNKE1BQykKKwordHlwZWRlZiB2b2lkICheVGV4dENoZWNraW5nQ29tcGxldGlvbkhhbmRs
ZXIpKE5TSW50ZWdlciBzZXF1ZW5jZU51bWJlciwgTlNBcnJheTxOU1RleHRDaGVja2luZ1Jlc3Vs
dCAqPiAqcmVzdWx0cywgTlNPcnRob2dyYXBoeSAqb3J0aG9ncmFwaHksIE5TSW50ZWdlciB3b3Jk
Q291bnQpOworCitzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPExheW91dFRlc3RTcGVs
bENoZWNrZXI+PiBnbG9iYWxTcGVsbENoZWNrZXI7CitzdGF0aWMgQk9PTCBoYXNJbnN0YWxsZWRM
YXlvdXRUZXN0U3BlbGxDaGVja2VyID0gTk87CitzdGF0aWMgSU1QIGdsb2JhbGx5U3dpenpsZWRT
aGFyZWRTcGVsbENoZWNrZXJJbXBsZW1lbnRhdGlvbjsKK3N0YXRpYyBNZXRob2Qgb3JpZ2luYWxT
aGFyZWRTcGVsbENoZWNrZXJNZXRob2Q7CisKK3N0YXRpYyBMYXlvdXRUZXN0U3BlbGxDaGVja2Vy
ICpleGlzdGluZ0dsb2JhbExheW91dFRlc3RTcGVsbENoZWNrZXIoKQoreworICAgIHJldHVybiBn
bG9iYWxTcGVsbENoZWNrZXIuZ2V0KCkuZ2V0KCk7Cit9CisKK3N0YXRpYyBMYXlvdXRUZXN0U3Bl
bGxDaGVja2VyICplbnN1cmVHbG9iYWxMYXlvdXRUZXN0U3BlbGxDaGVja2VyKCkKK3sKKyAgICBz
dGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNl
VG9rZW4sIF57CisgICAgICAgIGdsb2JhbFNwZWxsQ2hlY2tlci5nZXQoKSA9IGFkb3B0TlMoW1tM
YXlvdXRUZXN0U3BlbGxDaGVja2VyIGFsbG9jXSBpbml0XSk7CisgICAgfSk7CisgICAgcmV0dXJu
IGV4aXN0aW5nR2xvYmFsTGF5b3V0VGVzdFNwZWxsQ2hlY2tlcigpOworfQorCitzdGF0aWMgY29u
c3QgY2hhciAqc3RyaW5nRm9yQ29ycmVjdGlvblJlc3BvbnNlKE5TQ29ycmVjdGlvblJlc3BvbnNl
IGNvcnJlY3Rpb25SZXNwb25zZSkKK3sKKyAgICBzd2l0Y2ggKGNvcnJlY3Rpb25SZXNwb25zZSkg
eworICAgIGNhc2UgTlNDb3JyZWN0aW9uUmVzcG9uc2VOb25lOgorICAgICAgICByZXR1cm4gIm5v
bmUiOworICAgIGNhc2UgTlNDb3JyZWN0aW9uUmVzcG9uc2VBY2NlcHRlZDoKKyAgICAgICAgcmV0
dXJuICJhY2NlcHRlZCI7CisgICAgY2FzZSBOU0NvcnJlY3Rpb25SZXNwb25zZVJlamVjdGVkOgor
ICAgICAgICByZXR1cm4gInJlamVjdGVkIjsKKyAgICBjYXNlIE5TQ29ycmVjdGlvblJlc3BvbnNl
SWdub3JlZDoKKyAgICAgICAgcmV0dXJuICJpZ25vcmVkIjsKKyAgICBjYXNlIE5TQ29ycmVjdGlv
blJlc3BvbnNlRWRpdGVkOgorICAgICAgICByZXR1cm4gImVkaXRlZCI7CisgICAgY2FzZSBOU0Nv
cnJlY3Rpb25SZXNwb25zZVJldmVydGVkOgorICAgICAgICByZXR1cm4gInJldmVydGVkIjsKKyAg
ICB9CisgICAgcmV0dXJuICJpbnZhbGlkIjsKK30KKworc3RhdGljIE5TVGV4dENoZWNraW5nVHlw
ZSBuc1RleHRDaGVja2luZ1R5cGUoSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+JiYganNUeXBlKQor
eworICAgIGF1dG8gY2ZUeXBlID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBqc1R5cGUuZ2V0KCkpKTsKKyAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGNm
VHlwZS5nZXQoKSwgQ0ZTVFIoIm9ydGhvZ3JhcGh5IiksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRp
dmUpID09IGtDRkNvbXBhcmVFcXVhbFRvKQorICAgICAgICByZXR1cm4gTlNUZXh0Q2hlY2tpbmdU
eXBlT3J0aG9ncmFwaHk7CisKKyAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGNmVHlwZS5nZXQoKSwg
Q0ZTVFIoInNwZWxsaW5nIiksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUpID09IGtDRkNvbXBh
cmVFcXVhbFRvKQorICAgICAgICByZXR1cm4gTlNUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7CisK
KyAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGNmVHlwZS5nZXQoKSwgQ0ZTVFIoImdyYW1tYXIiKSwg
a0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pCisgICAgICAg
IHJldHVybiBOU1RleHRDaGVja2luZ1R5cGVHcmFtbWFyOworCisgICAgaWYgKENGU3RyaW5nQ29t
cGFyZShjZlR5cGUuZ2V0KCksIENGU1RSKCJkYXRlIiksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRp
dmUpID09IGtDRkNvbXBhcmVFcXVhbFRvKQorICAgICAgICByZXR1cm4gTlNUZXh0Q2hlY2tpbmdU
eXBlRGF0ZTsKKworICAgIGlmIChDRlN0cmluZ0NvbXBhcmUoY2ZUeXBlLmdldCgpLCBDRlNUUigi
YWRkcmVzcyIpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxU
bykKKyAgICAgICAgcmV0dXJuIE5TVGV4dENoZWNraW5nVHlwZUFkZHJlc3M7CisKKyAgICBpZiAo
Q0ZTdHJpbmdDb21wYXJlKGNmVHlwZS5nZXQoKSwgQ0ZTVFIoImxpbmsiKSwga0NGQ29tcGFyZUNh
c2VJbnNlbnNpdGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pCisgICAgICAgIHJldHVybiBOU1Rl
eHRDaGVja2luZ1R5cGVMaW5rOworCisgICAgaWYgKENGU3RyaW5nQ29tcGFyZShjZlR5cGUuZ2V0
KCksIENGU1RSKCJxdW90ZSIpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSA9PSBrQ0ZDb21w
YXJlRXF1YWxUbykKKyAgICAgICAgcmV0dXJuIE5TVGV4dENoZWNraW5nVHlwZVF1b3RlOworCisg
ICAgaWYgKENGU3RyaW5nQ29tcGFyZShjZlR5cGUuZ2V0KCksIENGU1RSKCJkYXNoIiksIGtDRkNv
bXBhcmVDYXNlSW5zZW5zaXRpdmUpID09IGtDRkNvbXBhcmVFcXVhbFRvKQorICAgICAgICByZXR1
cm4gTlNUZXh0Q2hlY2tpbmdUeXBlRGFzaDsKKworICAgIGlmIChDRlN0cmluZ0NvbXBhcmUoY2ZU
eXBlLmdldCgpLCBDRlNUUigicmVwbGFjZW1lbnQiKSwga0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2
ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pCisgICAgICAgIHJldHVybiBOU1RleHRDaGVja2luZ1R5
cGVSZXBsYWNlbWVudDsKKworICAgIGlmIChDRlN0cmluZ0NvbXBhcmUoY2ZUeXBlLmdldCgpLCBD
RlNUUigiY29ycmVjdGlvbiIpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSA9PSBrQ0ZDb21w
YXJlRXF1YWxUbykKKyAgICAgICAgcmV0dXJuIE5TVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb247
CisKKyAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGNmVHlwZS5nZXQoKSwgQ0ZTVFIoInJlZ3VsYXIt
ZXhwcmVzc2lvbiIpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1
YWxUbykKKyAgICAgICAgcmV0dXJuIE5TVGV4dENoZWNraW5nVHlwZVJlZ3VsYXJFeHByZXNzaW9u
OworCisgICAgaWYgKENGU3RyaW5nQ29tcGFyZShjZlR5cGUuZ2V0KCksIENGU1RSKCJwaG9uZS1u
dW1iZXIiKSwga0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8p
CisgICAgICAgIHJldHVybiBOU1RleHRDaGVja2luZ1R5cGVQaG9uZU51bWJlcjsKKworICAgIGlm
IChDRlN0cmluZ0NvbXBhcmUoY2ZUeXBlLmdldCgpLCBDRlNUUigidHJhbnNpdC1pbmZvcm1hdGlv
biIpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKKyAg
ICAgICAgcmV0dXJuIE5TVGV4dENoZWNraW5nVHlwZVRyYW5zaXRJbmZvcm1hdGlvbjsKKworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBOU1RleHRDaGVja2luZ1R5cGVTcGVs
bGluZzsKK30KKworQGltcGxlbWVudGF0aW9uIExheW91dFRlc3RUZXh0Q2hlY2tpbmdSZXN1bHQK
KworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVHlwZTooTlNUZXh0Q2hlY2tpbmdUeXBlKXR5cGUg
cmFuZ2U6KE5TUmFuZ2UpcmFuZ2UgcmVwbGFjZW1lbnQ6KE5TU3RyaW5nICopcmVwbGFjZW1lbnQK
K3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KworICAgIF90eXBlID0gdHlwZTsKKyAgICBfcmFuZ2UgPSByYW5nZTsKKyAgICBfcmVwbGFjZW1l
bnQgPSByZXBsYWNlbWVudDsKKworICAgIHJldHVybiBzZWxmOworfQorCistIChOU1JhbmdlKXJh
bmdlCit7CisgICAgcmV0dXJuIF9yYW5nZTsKK30KKworLSAoTlNUZXh0Q2hlY2tpbmdUeXBlKXJl
c3VsdFR5cGUKK3sKKyAgICByZXR1cm4gX3R5cGU7Cit9CisKKy0gKE5TU3RyaW5nICopcmVwbGFj
ZW1lbnRTdHJpbmcKK3sKKyAgICByZXR1cm4gX3JlcGxhY2VtZW50LmdldCgpOworfQorCistIChO
U1N0cmluZyAqKWRlc2NyaXB0aW9uCit7CisgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiPCVAICVwIHR5cGU9JXR1IHJhbmdlPVsldHUsICV0dV0gcmVwbGFjZW1lbnQ9JyVA
Jz4iLCBzZWxmLmNsYXNzLCBzZWxmLCBfdHlwZSwgX3JhbmdlLmxvY2F0aW9uLCBfcmFuZ2UubG9j
YXRpb24gKyBfcmFuZ2UubGVuZ3RoLCBfcmVwbGFjZW1lbnQuZ2V0KCldOworfQorCitAZW5kCisK
K0BpbXBsZW1lbnRhdGlvbiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyCisKK0BzeW50aGVzaXplIHNw
ZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkPV9zcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZDsKKwor
KyAoaW5zdGFuY2V0eXBlKWluc3RhbGxJZk5lY2Vzc2FyeQoreworICAgIGF1dG8gKnNwZWxsQ2hl
Y2tlciA9IGVuc3VyZUdsb2JhbExheW91dFRlc3RTcGVsbENoZWNrZXIoKTsKKyAgICBpZiAoaGFz
SW5zdGFsbGVkTGF5b3V0VGVzdFNwZWxsQ2hlY2tlcikKKyAgICAgICAgcmV0dXJuIHNwZWxsQ2hl
Y2tlcjsKKworICAgIG9yaWdpbmFsU2hhcmVkU3BlbGxDaGVja2VyTWV0aG9kID0gY2xhc3NfZ2V0
Q2xhc3NNZXRob2Qob2JqY19nZXRNZXRhQ2xhc3MoIk5TU3BlbGxDaGVja2VyIiksIEBzZWxlY3Rv
cihzaGFyZWRTcGVsbENoZWNrZXIpKTsKKyAgICBnbG9iYWxseVN3aXp6bGVkU2hhcmVkU3BlbGxD
aGVja2VySW1wbGVtZW50YXRpb24gPSBtZXRob2Rfc2V0SW1wbGVtZW50YXRpb24ob3JpZ2luYWxT
aGFyZWRTcGVsbENoZWNrZXJNZXRob2QsIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihlbnN1cmVHbG9i
YWxMYXlvdXRUZXN0U3BlbGxDaGVja2VyKSk7CisgICAgaGFzSW5zdGFsbGVkTGF5b3V0VGVzdFNw
ZWxsQ2hlY2tlciA9IFlFUzsKKyAgICByZXR1cm4gc3BlbGxDaGVja2VyOworfQorCisrICh2b2lk
KXVuaW5zdGFsbEFuZFJlc2V0Cit7CisgICAgW2V4aXN0aW5nR2xvYmFsTGF5b3V0VGVzdFNwZWxs
Q2hlY2tlcigpIHJlc2V0XTsKKyAgICBpZiAoIWhhc0luc3RhbGxlZExheW91dFRlc3RTcGVsbENo
ZWNrZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1ldGhvZF9zZXRJbXBsZW1lbnRhdGlvbihv
cmlnaW5hbFNoYXJlZFNwZWxsQ2hlY2tlck1ldGhvZCwgZ2xvYmFsbHlTd2l6emxlZFNoYXJlZFNw
ZWxsQ2hlY2tlckltcGxlbWVudGF0aW9uKTsKKyAgICBoYXNJbnN0YWxsZWRMYXlvdXRUZXN0U3Bl
bGxDaGVja2VyID0gTk87Cit9CisKKy0gKHZvaWQpcmVzZXQKK3sKKyAgICBzZWxmLnJlcGxhY2Vt
ZW50cyA9IG5pbDsKKyAgICBzZWxmLnNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkID0gTk87Cit9
CisKKy0gKE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBMYXlvdXRUZXN0VGV4dENoZWNraW5nUmVz
dWx0ICo+ICopcmVwbGFjZW1lbnRzCit7CisgICAgcmV0dXJuIF9yZXBsYWNlbWVudHMuZ2V0KCk7
Cit9CisKKy0gKHZvaWQpc2V0UmVwbGFjZW1lbnRzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwg
TGF5b3V0VGVzdFRleHRDaGVja2luZ1Jlc3VsdCAqPiAqKXJlcGxhY2VtZW50cworeworICAgIF9y
ZXBsYWNlbWVudHMgPSBhZG9wdE5TKHJlcGxhY2VtZW50cy5jb3B5KTsKK30KKworLSAodm9pZClz
ZXRSZXBsYWNlbWVudHNGcm9tSlNPYmplY3Q6KEpTT2JqZWN0UmVmKXJlcGxhY2VtZW50cyBpbkNv
bnRleHQ6KEpTQ29udGV4dFJlZiljb250ZXh0Cit7CisgICAgYXV0byBmcm9tUHJvcGVydHlOYW1l
ID0gYWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImZyb20iKSk7CisgICAgYXV0
byB0b1Byb3BlcnR5TmFtZSA9IGFkb3B0KEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJ0
byIpKTsKKyAgICBhdXRvIHR5cGVQcm9wZXJ0eU5hbWUgPSBhZG9wdChKU1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygidHlwZSIpKTsKKyAgICBhdXRvIHJlcGxhY2VtZW50UHJvcGVydHlOYW1l
ID0gYWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInJlcGxhY2VtZW50IikpOwor
ICAgIGF1dG8gcHJvcGVydGllcyA9IEpTT2JqZWN0Q29weVByb3BlcnR5TmFtZXMoY29udGV4dCwg
cmVwbGFjZW1lbnRzKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0
aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8
IEpTUHJvcGVydHlOYW1lQXJyYXlHZXRDb3VudChwcm9wZXJ0aWVzKTsgKytpbmRleCkgeworICAg
ICAgICBKU1N0cmluZ1JlZiB3b3JkVG9SZXBsYWNlID0gSlNQcm9wZXJ0eU5hbWVBcnJheUdldE5h
bWVBdEluZGV4KHByb3BlcnRpZXMsIGluZGV4KTsKKyAgICAgICAgSlNPYmplY3RSZWYgcmVwbGFj
ZW1lbnQgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgSlNPYmplY3RHZXRQcm9wZXJ0eShjb250
ZXh0LCByZXBsYWNlbWVudHMsIHdvcmRUb1JlcGxhY2UsIG51bGxwdHIpLCBudWxscHRyKTsKKyAg
ICAgICAgbG9uZyBmcm9tVmFsdWUgPSBscm91bmRsKEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBK
U09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIHJlcGxhY2VtZW50LCBmcm9tUHJvcGVydHlOYW1l
LmdldCgpLCBudWxscHRyKSwgbnVsbHB0cikpOworICAgICAgICBsb25nIHRvVmFsdWUgPSBscm91
bmRsKEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQs
IHJlcGxhY2VtZW50LCB0b1Byb3BlcnR5TmFtZS5nZXQoKSwgbnVsbHB0ciksIG51bGxwdHIpKTsK
KyAgICAgICAgYXV0byB0eXBlVmFsdWUgPSBhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRl
eHQsIEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgcmVwbGFjZW1lbnQsIHR5cGVQcm9wZXJ0
eU5hbWUuZ2V0KCksIG51bGxwdHIpLCBudWxscHRyKSk7CisgICAgICAgIGF1dG8gcmVwbGFjZW1l
bnRWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgcmVwbGFjZW1lbnQsIHJlcGxh
Y2VtZW50UHJvcGVydHlOYW1lLmdldCgpLCBudWxscHRyKTsKKyAgICAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiByZXBsYWNlbWVudFRleHQ7CisgICAgICAgIGlmICghSlNWYWx1ZUlzVW5kZWZp
bmVkKGNvbnRleHQsIHJlcGxhY2VtZW50VmFsdWUpKSB7CisgICAgICAgICAgICBhdXRvIHJlcGxh
Y2VtZW50SlNTdHJpbmcgPSBhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIHJlcGxh
Y2VtZW50VmFsdWUsIG51bGxwdHIpKTsKKyAgICAgICAgICAgIHJlcGxhY2VtZW50VGV4dCA9IGFk
b3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVwbGFjZW1l
bnRKU1N0cmluZy5nZXQoKSkpOworICAgICAgICB9CisgICAgICAgIGF1dG8gc3BlbGxDaGVja1Jl
c3VsdCA9IGFkb3B0TlMoW1tMYXlvdXRUZXN0VGV4dENoZWNraW5nUmVzdWx0IGFsbG9jXSBpbml0
V2l0aFR5cGU6bnNUZXh0Q2hlY2tpbmdUeXBlKFdURk1vdmUodHlwZVZhbHVlKSkgcmFuZ2U6TlNN
YWtlUmFuZ2UoZnJvbVZhbHVlLCB0b1ZhbHVlIC0gZnJvbVZhbHVlKSByZXBsYWNlbWVudDooTlNT
dHJpbmcgKilyZXBsYWNlbWVudFRleHQuZ2V0KCldKTsKKyAgICAgICAgYXV0byBjZldvcmRUb1Jl
cGxhY2UgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQs
IHdvcmRUb1JlcGxhY2UpKTsKKyAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6c3BlbGxDaGVja1Jl
c3VsdC5nZXQoKSBmb3JLZXk6KE5TU3RyaW5nICopY2ZXb3JkVG9SZXBsYWNlLmdldCgpXTsKKyAg
ICB9CisgICAgSlNQcm9wZXJ0eU5hbWVBcnJheVJlbGVhc2UocHJvcGVydGllcyk7CisKKyAgICBf
cmVwbGFjZW1lbnRzID0gV1RGTW92ZShyZXN1bHQpOworfQorCistIChOU0FycmF5PE5TVGV4dENo
ZWNraW5nUmVzdWx0ICo+ICopY2hlY2tTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nVG9DaGVjayBy
YW5nZTooTlNSYW5nZSlyYW5nZSB0eXBlczooTlNUZXh0Q2hlY2tpbmdUeXBlcyljaGVja2luZ1R5
cGVzIG9wdGlvbnM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilvcHRpb25zIGluU3Bl
bGxEb2N1bWVudFdpdGhUYWc6KE5TSW50ZWdlcil0YWcgb3J0aG9ncmFwaHk6KE5TT3J0aG9ncmFw
aHkgKiopb3J0aG9ncmFwaHkgd29yZENvdW50OihOU0ludGVnZXIgKil3b3JkQ291bnQKK3sKKyAg
ICBpZiAoYXV0byAqcmVzdWx0ID0gW19yZXBsYWNlbWVudHMgb2JqZWN0Rm9yS2V5OnN0cmluZ1Rv
Q2hlY2tdKQorICAgICAgICByZXR1cm4gQFsgcmVzdWx0IF07CisKKyAgICByZXR1cm4gW3N1cGVy
IGNoZWNrU3RyaW5nOnN0cmluZ1RvQ2hlY2sgcmFuZ2U6cmFuZ2UgdHlwZXM6Y2hlY2tpbmdUeXBl
cyBvcHRpb25zOm9wdGlvbnMgaW5TcGVsbERvY3VtZW50V2l0aFRhZzp0YWcgb3J0aG9ncmFwaHk6
b3J0aG9ncmFwaHkgd29yZENvdW50OndvcmRDb3VudF07Cit9CisKKy0gKHZvaWQpcmVjb3JkUmVz
cG9uc2U6KE5TQ29ycmVjdGlvblJlc3BvbnNlKXJlc3BvbnNlIHRvQ29ycmVjdGlvbjooTlNTdHJp
bmcgKiljb3JyZWN0aW9uIGZvcldvcmQ6KE5TU3RyaW5nICopd29yZCBsYW5ndWFnZTooTlNTdHJp
bmcgKilsYW5ndWFnZSBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOihOU0ludGVnZXIpdGFnCit7Cisg
ICAgaWYgKF9zcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZCkKKyAgICAgICAgcHJpbnRmKCJOU1Nw
ZWxsQ2hlY2tlciByZWNvcmRSZXNwb25zZVRvQ29ycmVjdGlvbjogJXMgLT4gJXMgKHJlc3BvbnNl
OiAlcylcbiIsIFt3b3JkIFVURjhTdHJpbmddLCBbY29ycmVjdGlvbiBVVEY4U3RyaW5nXSwgc3Ry
aW5nRm9yQ29ycmVjdGlvblJlc3BvbnNlKHJlc3BvbnNlKSk7CisKKyAgICBbc3VwZXIgcmVjb3Jk
UmVzcG9uc2U6cmVzcG9uc2UgdG9Db3JyZWN0aW9uOmNvcnJlY3Rpb24gZm9yV29yZDp3b3JkIGxh
bmd1YWdlOmxhbmd1YWdlIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6dGFnXTsKK30KKworQGVuZAor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1
bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9X
ZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOGJiYTEwZGI2
YTVjZGYyZjNlMmUwMzRjYzRjNGU5NDM4OGFlYzA1Yi4uMTk0MGY1YmU1MzlhNTAyOGVkNzQ5ODk4
N2JiMjMxMzE0NjgwM2M2MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJL
aXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTEzMyw2ICsxMzMsNyBAQAogCQlFMTMyQUEzRDE3Q0U3NzZGMDA2MTFERjAgLyogV2ViS2l0VGVz
dFJ1bm5lckV2ZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTEzMkFBM0IxN0NFNzc2RjAwNjExREYwIC8qIFdlYktpdFRlc3RSdW5uZXJFdmVudC5t
bSAqLzsgfTsKIAkJRTFDNjQyQzMxN0NCQ0M3MzAwRDY2QTNDIC8qIFBvc2VBc0NsYXNzLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFDNjQyQzExN0NC
Q0M3MzAwRDY2QTNDIC8qIFBvc2VBc0NsYXNzLm1tICovOyB9OwogCQlFMUM2NDJDNjE3Q0JDRDRD
MDBENjZBM0MgLyogV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUM2NDJDNDE3Q0JDRDRDMDBENjZBM0Mg
LyogV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQubW0gKi87IH07CisJCUY0QzM1NzhDMjBFODQ0
NDYwMEZBMDc0OCAvKiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRDMzU3OEEyMEU4NDQ0MDAwRkEwNzQ4IC8q
IExheW91dFRlc3RTcGVsbENoZWNrZXIubW0gKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNl
Y3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAg
LTM3Miw2ICszNzMsOCBAQAogCQlFMUM2NDJDMjE3Q0JDQzczMDBENjZBM0MgLyogUG9zZUFzQ2xh
c3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9zZUFzQ2xhc3MuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFDNjQyQzQxN0NCQ0Q0QzAwRDY2QTNDIC8qIFdl
YktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUxQzY0MkM1MTdDQkNENEMwMEQ2NkEzQyAvKiBXZWJLaXRUZXN0UnVu
bmVyUGFzdGVib2FyZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRU
ZXN0UnVubmVyUGFzdGVib2FyZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNEMz
NTc4QTIwRTg0NDQwMDBGQTA3NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IExheW91dFRlc3RTcGVsbENoZWNrZXIu
bW07IHBhdGggPSAuLi9UZXN0UnVubmVyU2hhcmVkL2NvY29hL0xheW91dFRlc3RTcGVsbENoZWNr
ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0QzM1NzhCMjBFODQ0NDAwMEZB
MDc0OCAvKiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IExheW91dFRlc3RTcGVsbENoZWNrZXIuaDsgcGF0aCA9IC4uL1Rlc3RSdW5uZXJT
aGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQ
QlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC00NzksNiArNDgyLDcgQEAKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMEYxOEU3MUIxRDZCQzRFNjAw
MjdFNTQ3IC8qIEJpbmRpbmdzICovLAorCQkJCUY0QjZDMzE2MjBFODQzNjkwMDhBQzIyNSAvKiBj
b2NvYSAqLywKIAkJCQkwRjczQjU0NzFCQTc4MkZFMDA0QjNFRjQgLyogVUlTY3JpcHRDb250ZXh0
ICovLAogCQkJCTMxNDhBMDUzMUU2Rjg1QjYwMEQzQjMxNiAvKiBJT1NMYXlvdXRUZXN0Q29tbXVu
aWNhdGlvbi5jcHAgKi8sCiAJCQkJMzE0OEEwNTQxRTZGODVCNjAwRDNCMzE2IC8qIElPU0xheW91
dFRlc3RDb21tdW5pY2F0aW9uLmggKi8sCkBAIC04MjIsNiArODI2LDE1IEBACiAJCQluYW1lID0g
U2hhcmVkOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJRjRCNkMzMTYyMEU4
NDM2OTAwOEFDMjI1IC8qIGNvY29hICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGls
ZHJlbiA9ICgKKwkJCQlGNEMzNTc4QjIwRTg0NDQwMDBGQTA3NDggLyogTGF5b3V0VGVzdFNwZWxs
Q2hlY2tlci5oICovLAorCQkJCUY0QzM1NzhBMjBFODQ0NDAwMEZBMDc0OCAvKiBMYXlvdXRUZXN0
U3BlbGxDaGVja2VyLm1tICovLAorCQkJKTsKKwkJCW5hbWUgPSBjb2NvYTsKKwkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CisJCX07CiAvKiBFbmQgUEJYR3JvdXAgc2VjdGlvbiAqLwogCiAvKiBC
ZWdpbiBQQlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC0xMDQ2LDYgKzEwNTksNyBA
QAogCQkJCTMxREE4QTNEMUU3MjA1Q0MwMEUxREYyRiAvKiBJT1NMYXlvdXRUZXN0Q29tbXVuaWNh
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjczQjU1MTFCQTc4OTY4MDA0QjNFRjQgLyog
SlNVSVNjcmlwdENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYxOEU3MTgxRDZC
QzQ1NjAwMjdFNTQ3IC8qIEpTV3JhcHBlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGNEMzNTc4
QzIwRTg0NDQ2MDBGQTA3NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUExODUxMDNDMUI5QUUwRkUwMDc0NEFFQiAvKiBPcHRpb25zLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUExODUxMDQwMUI5QUUxMzEwMDc0NEFFQiAvKiBQaXhlbER1bXBTdXBwb3J0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJERkE5ODQ5MUQ3RjcwQ0YwMEFGRjJDOSAvKiBTaGFy
ZWRFdmVudFN0cmVhbXNNYWMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmMDdjODc5Y2M2ZjZh
YWRhYjQ5NmE2MzVjNzIyMWJiNmU0MDlkZjM4Li5iOWY1NjllYTllZGM2YTM0YjJkYzZhMTRlZDgx
NDA2ZGRhYTI3ODE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTgtMDYtMzAgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXSBUZXh0IHJl
cGxhY2VtZW50cyB0aGF0IGVuZCB3aXRoIHN5bWJvbHMgYXJlIGV4cGFuZGVkIGltbWVkaWF0ZWx5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODcyMjUK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQxMTEyNDMzPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgYSBsYXlvdXQgdGVzdCB0byBjaGVjayB0
aGF0IGlmIGEgdXNlciBoYXMgY29uZmlndXJlZCBhIHRleHQgcmVwbGFjZW1lbnQgdGhhdCBlbmRz
IHdpdGggcHVuY3R1YXRpb24sIHRoZW46CisgICAgICAgIDEuIFR5cGluZyB0aGF0IHRleHQgcmVw
bGFjZW1lbnQgd29uJ3QgaW1tZWRpYXRlbHkgdHJpZ2dlciByZXBsYWNlbWVudC4KKyAgICAgICAg
Mi4gVGV4dCByZXBsYWNlbWVudCBpcyB0cmlnZ2VyZWQgYWZ0ZXIgcHJlc3NpbmcgZW50ZXIuCisK
KyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3RleHQtcmVwbGFjZW1lbnQtYWZ0ZXItdHlwaW5n
LXRvLXdvcmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5n
L3RleHQtcmVwbGFjZW1lbnQtYWZ0ZXItdHlwaW5nLXRvLXdvcmQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0v
bWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDE4LTA2LTI5ICBBbnRvaW5lIFF1aW50ICA8
Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYiBBbmltYXRpb25zXSBNYWtlIFdQVCB0
ZXN0IGF0IHRpbWluZy1tb2RlbC90aW1lbGluZXMvZG9jdW1lbnQtdGltZWxpbmVzLmh0bWwgcGFz
cyByZWxpYWJseQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy90ZXh0
LXJlcGxhY2VtZW50LWFmdGVyLXR5cGluZy10by13b3JkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2VkaXRpbmcvc3BlbGxpbmcvdGV4dC1yZXBsYWNlbWVudC1hZnRlci10eXBpbmctdG8td29y
ZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgzZWIxMDdiZjgxNjgyZTIyZDYyYWE4ZjFiZWUy
YTA0YzliOWZmMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxp
bmcvdGV4dC1yZXBsYWNlbWVudC1hZnRlci10eXBpbmctdG8td29yZC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw4IEBACitCZWZvcmUgcHJlc3NpbmcgZW50ZXI6CitQQVNTIGVkaXRvci50ZXh0Q29u
dGVudCBpcyAnWVQ/JworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCitZb3UgdGhlcmU/CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9z
cGVsbGluZy90ZXh0LXJlcGxhY2VtZW50LWFmdGVyLXR5cGluZy10by13b3JkLmh0bWwgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3RleHQtcmVwbGFjZW1lbnQtYWZ0ZXItdHlwaW5nLXRv
LXdvcmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Yzk0OTVkODY2MmYwNmZkOWZmMTdjMzYwNzUyZTc0MmQz
MjkyYmU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy90
ZXh0LXJlcGxhY2VtZW50LWFmdGVyLXR5cGluZy10by13b3JkLmh0bWwKQEAgLTAsMCArMSw2MyBA
QAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2VkaXRpbmcuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD4KK2pzVGVzdElzQXN5bmMgPSB0cnVlOworCitmdW5jdGlvbiB6ZXJvRGVsYXlUaW1l
cigpCit7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNv
bHZlLCAwKSk7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKSB7CisgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4
dENoZWNrZXJFbmFibGVkKHRydWUpOworICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QXN5
bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoZmFsc2UpOworICAgICAgICBpbnRlcm5hbHMu
c2V0QXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCh0cnVlKTsKKyAgICAgICAgaW50ZXJu
YWxzLnNldEF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQodHJ1ZSk7CisgICAgICAg
IHRlc3RSdW5uZXIuc2V0U3BlbGxDaGVja2VyVGV4dFJlcGxhY2VtZW50cyh7CisgICAgICAgICAg
ICAiWVQ/IjogeworICAgICAgICAgICAgICAgICJyZXBsYWNlbWVudCI6ICJZb3UgdGhlcmU/IiwK
KyAgICAgICAgICAgICAgICAidHlwZSI6ICJyZXBsYWNlbWVudCIsCisgICAgICAgICAgICAgICAg
ImZyb20iOiAwLAorICAgICAgICAgICAgICAgICJ0byI6IDMKKyAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICAiWVQ/XG4iOiB7CisgICAgICAgICAgICAgICAgInJlcGxhY2VtZW50IjogIllvdSB0
aGVyZT8iLAorICAgICAgICAgICAgICAgICJ0eXBlIjogInJlcGxhY2VtZW50IiwKKyAgICAgICAg
ICAgICAgICAiZnJvbSI6IDAsCisgICAgICAgICAgICAgICAgInRvIjogMworICAgICAgICAgICAg
fQorICAgICAgICB9KTsKKyAgICB9CisKKyAgICBjb25zdCBlZGl0b3IgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiZWRpdG9yIik7CisgICAgZWRpdG9yLmZvY3VzKCk7CisgICAgZm9yIChjb25z
dCBjaGFyYWN0ZXIgb2YgIllUPyIpCisgICAgICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKGNoYXJh
Y3Rlcik7CisgICAgYXdhaXQgemVyb0RlbGF5VGltZXIoKTsKKworICAgIGlmICghd2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICAgICAgZGVzY3JpcHRpb24uaW5uZXJIVE1MID0gYFRvIG1hbnVhbGx5
IHRlc3QsIGFkZCBhbiBhdXRvbWF0aWMgdGV4dCByZXBsYWNlbWVudCBtYXBwaW5nIGZyb20gdGhl
IHN0cmluZyAiWVQ/IiB0bworICAgICAgICAiWW91IHRoZXJlPyIsIGFuZCB0aGVuIHR5cGUgdGhl
IHN0cmluZyAiWVQ/Ii4gSXQgc2hvdWxkIG5vdCBiZSBpbW1lZGlhdGVseSBjb3JyZWN0ZWQgdG8g
IllvdSB0aGVyZT8iLgorICAgICAgICBIb3dldmVyLCBlbnRlcmluZyBhIG5ld2xpbmUgc2hvdWxk
IHN1YnNlcXVlbnRseSB0cmlnZ2VyIGF1dG9jb3JyZWN0aW9uLmA7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBkZWJ1ZygiQmVmb3JlIHByZXNzaW5nIGVudGVyOiIpOworICAgIHNob3Vs
ZEJlKCJlZGl0b3IudGV4dENvbnRlbnQiLCAiJ1lUPyciKTsKKyAgICBpbnNlcnRQYXJhZ3JhcGhD
b21tYW5kKCk7CisgICAgYXdhaXQgemVyb0RlbGF5VGltZXIoKTsKKyAgICBmaW5pc2hKU1Rlc3Qo
KTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cisg
ICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICAgIDxkaXYgY29udGVudGVkaXRhYmxl
IHN0eWxlPSJtYXJnaW4tYm90dG9tOiAxZW07IGJvcmRlcjogMXB4IG9yYW5nZSBkYXNoZWQ7IiBp
ZD0iZWRpdG9yIj48L2Rpdj4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDdmYWE4ZGQ2YTJjZjEzNzczZjY1ZjI3ODI1
OWMwMDY0MmIzZWZlNGQuLjgwOGRhMTM5ZTllNjA1YWMzOTk4NjVlYmJjODAyZDg4ODJiNDVjZmQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMTAsNiAr
MTEwLDkgQEAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tYXJrZXJzLWluLW92ZXJsYXBwaW5n
LWxpbmVzLWxhcmdlLWZvbnQuaHRtbCBbIFdvbnRGaXgKIGZhc3Qvd3JpdGluZy1tb2RlL2VuZ2xp
c2gtYnQtdGV4dC13aXRoLXNwZWxsaW5nLW1hcmtlci5odG1sIFsgV29udEZpeCBdCiBmYXN0L3dy
aXRpbmctbW9kZS9lbmdsaXNoLXJsLXRleHQtd2l0aC1zcGVsbGluZy1tYXJrZXIuaHRtbCBbIFdv
bnRGaXggXQogCisjIFJlcXVpcmVzIHN1cHBvcnQgZm9yIHRlc3RpbmcgdGV4dCByZXBsYWNlbWVu
dAorZWRpdGluZy9zcGVsbGluZy90ZXh0LXJlcGxhY2VtZW50LWFmdGVyLXR5cGluZy10by13b3Jk
Lmh0bWwgWyBTa2lwIF0KKwogIyBVSUtpdCBkcmF3cyBzZWxlY3Rpb24gb24gaU9TCiBmYXN0L3Nl
bGVjdG9ycy9pbnB1dC13aXRoLXNlbGVjdGlvbi1wc2V1ZG8tZWxlbWVudC5odG1sIFsgV29udEZp
eCBdCiBmYXN0L3NlbGVjdG9ycy9zZWxlY3Rpb24td2luZG93LWluYWN0aXZlLmh0bWwgWyBXb250
Rml4IF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCA0M2NhNzE2YTg0ZjE0MjA0Mzc2ZmYxMjAxZTMzMDg4ZmRlZmE5NjEzLi5iMjM0ZTIwNDAw
MWU2NDQ0NDk1MmE5OWJiMWRlMzEwYTU1NWEyNzc2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC0xODAsNiArMTgwLDcgQEAgd2Via2l0Lm9y
Zy9iLzEwNTYxNiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtd2hpdGVzcGFjZS1zZWxl
Y3Rpb24uaHRtbAogd2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL3NwZWxsaW5nL2dyYW1tYXIu
aHRtbAogd2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL3NwZWxsaW5nL21hcmtlcnMuaHRtbAog
d2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL3NwZWxsaW5nL3JldHJvLWNvcnJlY3Rpb24tc3Bl
bGxpbmctbWFya2Vycy5odG1sCit3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvc3BlbGxpbmcv
dGV4dC1yZXBsYWNlbWVudC1hZnRlci10eXBpbmctdG8td29yZC5odG1sCiB3ZWJraXQub3JnL2Iv
MTA1NjE2IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbWFya2Vycy1hZnRlci1wYXN0aW5nLXNl
bnRlbmNlLmh0bWwKIHdlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9tYWMvc3BlbGxpbmcvYXV0
b2NvcnJlY3Rpb24tZGVsZXRlLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMDU2MTYg
ZWRpdGluZy9tYWMvc3BlbGxpbmcvYXV0b2NvcnJlY3Rpb24tcmVtb3ZpbmctdW5kZXJsaW5lLWFm
dGVyLXBhc3RlLmh0bWwgWyBGYWlsdXJlIF0K
</data>
<flag name="review"
          id="362096"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344064</attachid>
            <date>2018-07-01 16:59:35 -0700</date>
            <delta_ts>2018-07-01 17:03:17 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-187225-20180701165934.patch</filename>
            <type>text/plain</type>
            <size>71066</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzNDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWUyMjM5NDVhN2ZiNzU1
NWFiY2M5MmQ3MzhjNGEyZmJiM2E3MTdlMS4uYTc3ZTE5Njc3ODAwZTBiYTgzNjJiZTBjNTgxMTQy
NTJhZTg5MTExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDE4LTA2LTMwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gVGV4
dCByZXBsYWNlbWVudHMgdGhhdCBlbmQgd2l0aCBzeW1ib2xzIGFyZSBleHBhbmRlZCBpbW1lZGlh
dGVseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3
MjI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MTExMjQzMz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBJbiBzaGlwcGluZyBTYWZhcmksIGVuYWJsaW5n
IGdyYW1tYXIgY29ycmVjdGlvbiBjYXVzZXMgdGV4dCBzaG9ydGN1dHMgdGhhdCBlbmQgd2l0aCBz
eW1ib2xzIG9yIHB1bmN0dWF0aW9uIG1hcmtzCisgICAgICAgIHRvIGltbWVkaWF0ZWx5IHRyaWdn
ZXIgd2hlbiB0eXBpbmc7IG5vcm1hbGx5LCB3aGVuIGdyYW1tYXIgY29ycmVjdGlvbiBpcyBvZmYs
IHRoaXMgaXMgb25seSB0cmlnZ2VyZWQgYWZ0ZXIgdGhlCisgICAgICAgIHVzZXIgaGFzIGFkZGl0
aW9uYWxseSBpbnNlcnRlZCBhIHB1bmN0dWF0aW9uIG1hcmsgb3Igd2hpdGVzcGFjZSBjaGFyYWN0
ZXIgYWZ0ZXIgdGhlIHJlcGxhY2VkIHRleHQuCisKKyAgICAgICAgVGhpcyBidWcgaGFwcGVucyBi
ZWNhdXNlIGVuYWJsaW5nIGdyYW1tYXIgY2hlY2tpbmcgY2F1c2VzIHRoZSBzcGVsbCBjaGVja2lu
ZyByYW5nZSB0byBleHBhbmQgdG8gdGhlIHJhbmdlIG9mIHRoZQorICAgICAgICBmdWxsIHNlbnRl
bmNlLCBzbyBhbnkgdGV4dCBjaGVja2luZyByZXN1bHRzIHRoYXQgcmVwbGFjZSBhbiBleGlzdGlu
ZyByYW5nZSBhcmUgdHJpZ2dlcmVkIGFzIGxvbmcgYXMgdGhleSBlbmQKKyAgICAgICAgYW55d2hl
cmUgaW4gdGhlIHNlbnRlbmNlLiBJbiBjb250cmFzdCwgd2hlbiBncmFtbWFyIGNoZWNraW5nIGlz
IGRpc2FibGVkLCB0aGUgc3BlbGwgY2hlY2tpbmcgcmFuZ2UgaXMgbGltaXRlZCB0bworICAgICAg
ICB0aGUgbmVhcmVzdCBhZGphY2VudCB3b3JkLCB3aGljaCBwcmV2ZW50cyB0ZXh0IHJlcGxhY2Vt
ZW50IGZyb20gb2NjdXJyaW5nIGVsc2V3aGVyZSBpbiB0aGUgc2VudGVuY2UuCisKKyAgICAgICAg
SG93ZXZlciwgYWZ0ZXIgcjIzMjUzMCwgd2Ugbm93IGFsd2F5cyBleHBhbmQgdGhlIHNwZWxsIGNo
ZWNraW5nIHJhbmdlIHRvIHRoZSBleHRlbnQgb2YgdGhlIHNlbnRlbmNlIHdoZW4gYSB3b3JkCisg
ICAgICAgIGlzIHR5cGVkIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBncmFtbWFyIGNoZWNraW5nIGlz
IGVuYWJsZWQsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIGlzc3VlIGRlc2NyaWJlZCBhYm92ZSBub3cK
KyAgICAgICAgaGFwcGVucyBldmVyeXdoZXJlLiBUbyBmaXggdGhpcyByZWNlbnQgcmVncmVzc2lv
biBhbmQgdGhlIGV4aXN0aW5nIGJ1Zywgd2U6CisKKyAgICAgICAgLSAgIEF1Z21lbnQgb3VyIHNw
ZWxsY2hlY2tpbmcgY29kZXBhdGhzIHRvIGluY2x1ZGUgYSBuZXcgYXV0b21hdGljIHRleHQgcmVw
bGFjZW1lbnQgcmFuZ2UsIGFsb25nc2lkZQorICAgICAgICAgICAgc3BlbGxjaGVja2luZyBhbmQg
cGFyYWdyYXBoIHJhbmdlcy4KKyAgICAgICAgLSAgIExldCB0aGlzIGF1dG9tYXRpYyB0ZXh0IHJl
cGxhY2VtZW50IHJhbmdlIGJlIHRoZSByYW5nZSBvZiB0aGUgYWRqYWNlbnQgd29yZCBpbiB0aGUg
Y2FzZSB3aGVyZSB0aGUgdXNlciBoYXMKKyAgICAgICAgICAgIGZpbmlzaGVkIHR5cGluZyBhIHdv
cmQuCisgICAgICAgIC0gICBXaGVuIG1hcmtpbmcgYW5kIHJlcGxhY2luZyB0ZXh0IGNoZWNraW5n
IHJlc3VsdHMsIGNvbnN1bHQgdGhpcyBuZXcgYXV0b21hdGljIHRleHQgcmVwbGFjZW1lbnQgaW5z
dGVhZCBvZiB0aGUKKyAgICAgICAgICAgIHNwZWxsY2hlY2tpbmcgcmFuZ2UuCisKKyAgICAgICAg
VGhpcyBrZWVwcyB0aGUgYmVoYXZpb3IgZ3JhbW1hciBhbmQgc2VudGVuY2UgcmV0cm8gY29ycmVj
dGlvbiByZXN1bHRzIGludGFjdCwgd2hpbGUgbGltaXRpbmcgdGhlIHNjb3BlIGluIHdoaWNoCisg
ICAgICAgIHRleHQgcmVwbGFjZW1lbnQgcmVzdWx0cyBhcmUgYXBwbGllZC4KKworICAgICAgICBU
ZXN0OiBlZGl0aW5nL3NwZWxsaW5nL3RleHQtcmVwbGFjZW1lbnQtYWZ0ZXItdHlwaW5nLXRvLXdv
cmQuaHRtbAorCisgICAgICAgICogZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnRpbWVyRmly
ZWQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6cmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZCk6CisKKyAgICAgICAgUGFz
cyBpbiB0aGUgYWRqYWNlbnQgd29yZCByYW5nZSBmb3IgdGhlIGBhdXRvbWF0aWNSZXBsYWNlbWVu
dFJhbmdlYCwgaW5zdGVhZCBvZiB0aGUgc3BlbGwgY2hlY2tpbmcgcmFuZ2UgKHdoaWNoCisgICAg
ICAgIG1heSBiZSBleHRlbmRlZCB0byB0aGUgZnVsbCByYW5nZSBvZiB0aGUgc2VudGVuY2UpLgor
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFt
bWFySW5SYW5nZXMpOgorCisgICAgICAgIEFkZCBhbiBgYXV0b21hdGljUmVwbGFjZW1lbnRSYW5n
ZWAgYXJndW1lbnQgdG8gbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcywg
YW5kIGFkanVzdCBjYWxsIHNpdGVzCisgICAgICAgIHRvIHBhc3MgaW4gYSByYW5nZSAoZ2VuZXJh
bGx5IHRoZSBzYW1lIGFzIHRoZSBzcGVsbCBjaGVja2luZyByYW5nZSwgYnV0IGluIHRoZSBjYXNl
IHdoZXJlIGEgd29yZCBoYXMgYmVlbiB0eXBlZCwKKyAgICAgICAgdGhpcyBpcyBhIG5hcnJvd2Vy
IHJhbmdlKS4KKworICAgICAgICAoV2ViQ29yZTo6Y29ycmVjdFNwZWxsY2hlY2tpbmdQcmVzZXJ2
aW5nVGV4dENoZWNraW5nUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFy
a0FuZFJlcGxhY2VGb3IpOgorCisgICAgICAgIFdoZW4gcmVwbGFjaW5nIHRleHQsIG9ubHkgYWxs
b3cgdGV4dCByZXBsYWNlbWVudCBpbiB0aGUgYXV0b21hdGljIHJlcGxhY2VtZW50IHJhbmdlIHJh
dGhlciB0aGFuIHRoZSBzcGVsbAorICAgICAgICBjaGVja2luZyByYW5nZS4KKworICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcik6CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrUmVxdWVzdDo6U3BlbGxDaGVja1JlcXVlc3Qp
OgorCisgICAgICAgIEFkZCBhIG5ldyB2ZXJzaW9uIG9mIHRoaXMgY29uc3RydWN0b3IgdGhhdCB0
YWtlcyBhIHNpbmdsZSBSYW5nZSByZXByZXNlbnRpbmcgYm90aCB0aGUgc3BlbGxjaGVja2luZyBy
YW5nZSBhbmQKKyAgICAgICAgdGhlIGF1dG9tYXRpYyB0ZXh0IHJlcGxhY2VtZW50IHJhbmdlLCBm
b3IgY29udmVuaWVuY2UuCisKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tSZXF1ZXN0Ojpj
cmVhdGUpOgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxDaGVja2VyLmg6CisKKyAgICAgICAgQWRk
IHBsdW1iaW5nIGZvciB0aGUgYXV0b21hdGljIHJlcGxhY2VtZW50IHJhbmdlLgorCisgICAgICAg
IChXZWJDb3JlOjpTcGVsbENoZWNrUmVxdWVzdDo6YXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSBj
b25zdCk6CisgICAgICAgICogZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwOgorCisgICAg
ICAgIEFkZCBwbHVtYmluZyBmb3IgdGhlIGF1dG9tYXRpYyByZXBsYWNlbWVudCByYW5nZSwgYW5k
IG5ldyBoZWxwZXJzIHRvIGxvY2F0ZSB0aGUgcmFuZ2UgYXMgb2Zmc2V0cyB3aXRoaW4gdGhlCisg
ICAgICAgIHRleHQgY2hlY2tpbmcgcGFyYWdyYXBoIHJhbmdlLgorCisgICAgICAgIChXZWJDb3Jl
OjpUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OlRleHRDaGVja2luZ1BhcmFncmFwaCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmF1dG9tYXRpY1JlcGxhY2VtZW50U3Rh
cnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nUGFyYWdyYXBoOjphdXRv
bWF0aWNSZXBsYWNlbWVudExlbmd0aCBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9UZXh0Q2hl
Y2tpbmdIZWxwZXIuaDoKKwogMjAxOC0wNi0zMCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtMRkNdIERvIG5vdCBhZGQgdGhlIGNvbnRhaW5pbmcgYmxvY2sncyBv
ZmZzZXQgd2hpbGUgY29tcHV0aW5nIHRoZSBvdXQtb2YtZmxvdyBzdGF0aWMgcG9zaXRpb24uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
LmNwcAppbmRleCBkNDUzZjY0NDBhZDQ2ZWJlMzBhMGNiYTllYWUyMjI3NDFhNWFiZjQyLi5hOTQ2
ZjUxMzZjNGFmMjVmMGEwNjJhOWE2YTM1NDkzZjVlN2M0NmRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKQEAgLTI4Myw3
ICsyODMsOCBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnRpbWVyRmlyZWQoKQog
ICAgICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQoc2VsZWN0aW9uLnN0YXJ0KCksIHNlbGVjdGlv
bi5hZmZpbml0eSgpKTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHAgPSBzdGFydE9mV29yZChz
dGFydCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpOwogICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIGFk
amFjZW50V29yZHMgPSBWaXNpYmxlU2VsZWN0aW9uKHAsIHN0YXJ0KTsKLSAgICAgICAgbV9mcmFt
ZS5lZGl0b3IoKS5tYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRD
aGVja2luZ1R5cGVTcGVsbGluZyB8IFRleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCB8IFRleHRD
aGVja2luZ1R5cGVTaG93Q29ycmVjdGlvblBhbmVsLCBhZGphY2VudFdvcmRzLnRvTm9ybWFsaXpl
ZFJhbmdlKCkuZ2V0KCksIDApOworICAgICAgICBhdXRvIGFkamFjZW50V29yZFJhbmdlID0gYWRq
YWNlbnRXb3Jkcy50b05vcm1hbGl6ZWRSYW5nZSgpOworICAgICAgICBtX2ZyYW1lLmVkaXRvcigp
Lm1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nVHlw
ZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50IHwgVGV4dENoZWNraW5nVHlw
ZVNob3dDb3JyZWN0aW9uUGFuZWwsIGFkamFjZW50V29yZFJhbmdlLmdldCgpLCBhZGphY2VudFdv
cmRSYW5nZS5nZXQoKSwgbnVsbHB0cik7CiAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFsdGVybmF0aXZlVGV4dFR5cGVSZXZlcnNpb246IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cAppbmRleCAwYzcxNjMyODUzNDBhYTUxNDQ0MzJlYTYyNjQwNTgzMjA5YzY4MGQ3Li4yZDUwYzFi
ZTg2NjcyYTRlOWIyODUxZDQ4OWMzOGI2MmUxNTRmZWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCkBAIC02NjcsNyArNjY3LDcgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VTZWxlY3Rpb25X
aXRoRnJhZ21lbnQoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIGJvb2wgc2VsZWMKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgYXV0byByYW5nZVRvQ2hlY2sgPSBSYW5nZTo6Y3JlYXRlKGRvY3Vt
ZW50KCksIGZpcnN0UG9zaXRpb25Jbk5vZGUobm9kZVRvQ2hlY2spLCBsYXN0UG9zaXRpb25Jbk5v
ZGUobm9kZVRvQ2hlY2spKTsKLSAgICBpZiAoYXV0byByZXF1ZXN0ID0gU3BlbGxDaGVja1JlcXVl
c3Q6OmNyZWF0ZShyZXNvbHZlVGV4dENoZWNraW5nVHlwZU1hc2soKm5vZGVUb0NoZWNrLCBUZXh0
Q2hlY2tpbmdUeXBlU3BlbGxpbmcgfCBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hciksIFRleHRDaGVj
a2luZ1Byb2Nlc3NCYXRjaCwgcmFuZ2VUb0NoZWNrLmNvcHlSZWYoKSwgcmFuZ2VUb0NoZWNrLmNv
cHlSZWYoKSkpCisgICAgaWYgKGF1dG8gcmVxdWVzdCA9IFNwZWxsQ2hlY2tSZXF1ZXN0OjpjcmVh
dGUocmVzb2x2ZVRleHRDaGVja2luZ1R5cGVNYXNrKCpub2RlVG9DaGVjaywgVGV4dENoZWNraW5n
VHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZUdyYW1tYXIpLCBUZXh0Q2hlY2tpbmdQcm9j
ZXNzQmF0Y2gsIHJhbmdlVG9DaGVjay5jb3B5UmVmKCksIHJhbmdlVG9DaGVjay5jb3B5UmVmKCks
IHJhbmdlVG9DaGVjay5jb3B5UmVmKCkpKQogICAgICAgICBtX3NwZWxsQ2hlY2tlci0+cmVxdWVz
dENoZWNraW5nRm9yKHJlcXVlc3QucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKQEAgLTIzNDIsNyAr
MjM0Miw4IEBAIHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1dvcmQo
Y29uc3QgVmlzaWJsZVBvc2l0aW9uICZ3b3JkU3RhcnQsCiAgICAgICAgIHJldHVybjsKIAogICAg
IFZpc2libGVTZWxlY3Rpb24gYWRqYWNlbnRXb3JkcyA9IFZpc2libGVTZWxlY3Rpb24oc3RhcnRP
ZldvcmQod29yZFN0YXJ0LCBMZWZ0V29yZElmT25Cb3VuZGFyeSksIGVuZE9mV29yZCh3b3JkU3Rh
cnQsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSkpOwotICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRC
YWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgYWRqYWNlbnRXb3Jkcy50b05v
cm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBhZGphY2VudFdvcmRzLnRvTm9ybWFsaXplZFJhbmdlKCku
Z2V0KCkpOworICAgIGF1dG8gYWRqYWNlbnRXb3JkUmFuZ2UgPSBhZGphY2VudFdvcmRzLnRvTm9y
bWFsaXplZFJhbmdlKCk7CisgICAgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJh
bmdlcyh0ZXh0Q2hlY2tpbmdPcHRpb25zLCBhZGphY2VudFdvcmRSYW5nZS5nZXQoKSwgYWRqYWNl
bnRXb3JkUmFuZ2UuZ2V0KCksIGFkamFjZW50V29yZFJhbmdlLmdldCgpKTsKICNlbHNlCiAjaWYg
IVVTRShBVVRPTUFUSUNfVEVYVF9SRVBMQUNFTUVOVCkKICAgICBVTlVTRURfUEFSQU0oZG9SZXBs
YWNlbWVudCk7CkBAIC0yNDE3LDEzICsyNDE4LDE3IEBAIHZvaWQgRWRpdG9yOjptYXJrTWlzc3Bl
bGxpbmdzQWZ0ZXJUeXBpbmdUb1dvcmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uICZ3b3JkU3RhcnQs
CiAgICAgICAgIGlmICghc3BlbGxDaGVja2luZ1JhbmdlKQogICAgICAgICAgICAgcmV0dXJuOwog
CisgICAgICAgIGF1dG8gYWRqYWNlbnRXb3JkUmFuZ2UgPSBWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0
T2ZXb3JkKHdvcmRTdGFydCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpLCBlbmRPZldvcmQod29yZFN0
YXJ0LCBSaWdodFdvcmRJZk9uQm91bmRhcnkpKS50b05vcm1hbGl6ZWRSYW5nZSgpOworICAgICAg
ICBpZiAoIWFkamFjZW50V29yZFJhbmdlKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAg
IC8vIFRoZSBzcGVsbGluZyBhbmQgZ3JhbW1hciBtYXJrZXJzIGluIHRoZXNlIHJhbmdlcyBhcmUg
cmVjb21wdXRlZC4gVGhpcyBpcyBiZWNhdXNlIHR5cGluZyBhIHdvcmQgbWF5CiAgICAgICAgIC8v
IGNhdXNlIGFueSBvdGhlciBwYXJ0IG9mIHRoZSBjdXJyZW50IHNlbnRlbmNlIHRvIGxvc2Ugb3Ig
Z2FpbiBzcGVsbGluZyBjb3JyZWN0aW9uIG1hcmtlcnMsIGR1ZSB0bwogICAgICAgICAvLyBzZW50
ZW5jZSByZXRybyBjb3JyZWN0aW9uLiBBcyBzdWNoLCB3ZSBleHBhbmQgdGhlIHNwZWxsIGNoZWNr
aW5nIHJhbmdlIHRvIGVuY29tcGFzcyBhcyBtdWNoIG9mIHRoZQogICAgICAgICAvLyBmdWxsIHNl
bnRlbmNlIGFzIHdlIGNhbiwgcmVzcGVjdGluZyBib3VuZGFyaWVzIHdoZXJlIHNwZWxsY2hlY2tp
bmcgaXMgZGlzYWJsZWQuCiAgICAgICAgIGZ1bGxTZW50ZW5jZVJhbmdlLT5vd25lckRvY3VtZW50
KCkubWFya2VycygpLnJlbW92ZU1hcmtlcnMoZnVsbFNlbnRlbmNlUmFuZ2UuZ2V0KCksIERvY3Vt
ZW50TWFya2VyOjpHcmFtbWFyKTsKICAgICAgICAgc3BlbGxDaGVja2luZ1JhbmdlLT5vd25lckRv
Y3VtZW50KCkubWFya2VycygpLnJlbW92ZU1hcmtlcnMoc3BlbGxDaGVja2luZ1JhbmdlLmdldCgp
LCBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcpOwotICAgICAgICBtYXJrQWxsTWlzc3BlbGxpbmdz
QW5kQmFkR3JhbW1hckluUmFuZ2VzKHRleHRDaGVja2luZ09wdGlvbnMsIHNwZWxsQ2hlY2tpbmdS
YW5nZS5nZXQoKSwgZnVsbFNlbnRlbmNlUmFuZ2UuZ2V0KCkpOworICAgICAgICBtYXJrQWxsTWlz
c3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKHRleHRDaGVja2luZ09wdGlvbnMsIHNwZWxs
Q2hlY2tpbmdSYW5nZS5nZXQoKSwgYWRqYWNlbnRXb3JkUmFuZ2UuZ2V0KCksIGZ1bGxTZW50ZW5j
ZVJhbmdlLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjU0Nyw3ICsyNTUy
LDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rpb24m
IHNlbGVjdGlvbikKICNlbmRpZgogfQogCi12b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5n
c0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdUeXBlTWFzayB0ZXh0Q2hlY2tpbmdP
cHRpb25zLCBSYW5nZSogc3BlbGxpbmdSYW5nZSwgUmFuZ2UqIGdyYW1tYXJSYW5nZSkKK3ZvaWQg
RWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVj
a2luZ1R5cGVNYXNrIHRleHRDaGVja2luZ09wdGlvbnMsIFJhbmdlKiBzcGVsbGluZ1JhbmdlLCBS
YW5nZSogYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSwgUmFuZ2UqIGdyYW1tYXJSYW5nZSkKIHsK
ICAgICBBU1NFUlQodW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCgpKTsKIApAQCAtMjU3OSw3ICsy
NTg0LDggQEAgdm9pZCBFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5S
YW5nZXMoVGV4dENoZWNraW5nVHlwZU1hc2sgdGV4dEMKIAogICAgIC8vIEluIGFzeW5jaHJvbm91
cyBtb2RlLCB3ZSBpbnRlbnRpb25hbGx5IGNoZWNrIHBhcmFncmFwaC13aWRlIHNlbnRlbmNlLgog
ICAgIGNvbnN0IGF1dG8gcmVzb2x2ZWRPcHRpb25zID0gcmVzb2x2ZVRleHRDaGVja2luZ1R5cGVN
YXNrKGVkaXRhYmxlTm9kZSwgdGV4dENoZWNraW5nT3B0aW9ucyk7Ci0gICAgYXV0byByZXF1ZXN0
ID0gU3BlbGxDaGVja1JlcXVlc3Q6OmNyZWF0ZShyZXNvbHZlZE9wdGlvbnMsIFRleHRDaGVja2lu
Z1Byb2Nlc3NJbmNyZW1lbnRhbCwgYXN5bmNocm9ub3VzID8gcGFyYWdyYXBoUmFuZ2UuZ2V0KCkg
OiByYW5nZVRvQ2hlY2ssIHBhcmFncmFwaFJhbmdlLmNvcHlSZWYoKSk7CisgICAgYXV0byYgdGV4
dFJlcGxhY2VtZW50UmFuZ2UgPSBhdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlID8gKmF1dG9tYXRp
Y1JlcGxhY2VtZW50UmFuZ2UgOiByYW5nZVRvQ2hlY2s7CisgICAgYXV0byByZXF1ZXN0ID0gU3Bl
bGxDaGVja1JlcXVlc3Q6OmNyZWF0ZShyZXNvbHZlZE9wdGlvbnMsIFRleHRDaGVja2luZ1Byb2Nl
c3NJbmNyZW1lbnRhbCwgYXN5bmNocm9ub3VzID8gcGFyYWdyYXBoUmFuZ2UuZ2V0KCkgOiByYW5n
ZVRvQ2hlY2ssIHRleHRSZXBsYWNlbWVudFJhbmdlLCBwYXJhZ3JhcGhSYW5nZS5jb3B5UmVmKCkp
OwogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yNjI3LDcgKzI2MzMs
OCBAQCBzdGF0aWMgdm9pZCBjb3JyZWN0U3BlbGxjaGVja2luZ1ByZXNlcnZpbmdUZXh0Q2hlY2tp
bmdQYXJhZ3JhcGgoVGV4dENoZWNraW5nUGFyYQogCiAgICAgUmVmUHRyPFJhbmdlPiBuZXdQYXJh
Z3JhcGhSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoJnNj
b3BlLCBwYXJhZ3JhcGhMb2NhdGlvbiwgcGFyYWdyYXBoTGVuZ3RoICsgcmVwbGFjZW1lbnQubGVu
Z3RoKCkgLSByZXN1bHRMZW5ndGgpOwogCi0gICAgcGFyYWdyYXBoID0gVGV4dENoZWNraW5nUGFy
YWdyYXBoKFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKm5ld1BhcmFncmFwaFJhbmdlLCByZXN1bHRM
b2NhdGlvbiwgcmVwbGFjZW1lbnQubGVuZ3RoKCkpLCBuZXdQYXJhZ3JhcGhSYW5nZS5nZXQoKSk7
CisgICAgYXV0byBzcGVsbENoZWNraW5nUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpu
ZXdQYXJhZ3JhcGhSYW5nZSwgcmVzdWx0TG9jYXRpb24sIHJlcGxhY2VtZW50Lmxlbmd0aCgpKTsK
KyAgICBwYXJhZ3JhcGggPSBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoc3BlbGxDaGVja2luZ1Jhbmdl
LmNvcHlSZWYoKSwgc3BlbGxDaGVja2luZ1JhbmdlLmNvcHlSZWYoKSwgbmV3UGFyYWdyYXBoUmFu
Z2UuZ2V0KCkpOwogfQogCiB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3Bl
bGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+
JiByZXN1bHRzKQpAQCAtMjYzNSw3ICsyNjQyLDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBs
YWNlRm9yKGNvbnN0IFNwZWxsQ2hlY2tSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8VGUK
ICAgICBSZWY8RnJhbWU+IHByb3RlY3Rpb24obV9mcmFtZSk7CiAKICAgICBUZXh0Q2hlY2tpbmdU
eXBlTWFzayB0ZXh0Q2hlY2tpbmdPcHRpb25zID0gcmVxdWVzdC5kYXRhKCkubWFzaygpOwotICAg
IFRleHRDaGVja2luZ1BhcmFncmFwaCBwYXJhZ3JhcGgocmVxdWVzdC5jaGVja2luZ1JhbmdlKCks
ICZyZXF1ZXN0LnBhcmFncmFwaFJhbmdlKCkpOworICAgIFRleHRDaGVja2luZ1BhcmFncmFwaCBw
YXJhZ3JhcGgocmVxdWVzdC5jaGVja2luZ1JhbmdlKCksIHJlcXVlc3QuYXV0b21hdGljUmVwbGFj
ZW1lbnRSYW5nZSgpLCAmcmVxdWVzdC5wYXJhZ3JhcGhSYW5nZSgpKTsKIAogICAgIGNvbnN0IGJv
b2wgc2hvdWxkTWFya1NwZWxsaW5nID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIFRleHRDaGVja2lu
Z1R5cGVTcGVsbGluZzsKICAgICBjb25zdCBib29sIHNob3VsZE1hcmtHcmFtbWFyID0gdGV4dENo
ZWNraW5nT3B0aW9ucyAmIFRleHRDaGVja2luZ1R5cGVHcmFtbWFyOwpAQCAtMjY3NSw2ICsyNjgy
LDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNvbnN0IFNwZWxsQ2hlY2tSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8VGUKICAgICAgICAgY29uc3QgaW50IHJlc3VsdExv
Y2F0aW9uID0gcmVzdWx0c1tpXS5sb2NhdGlvbiArIG9mZnNldER1ZVRvUmVwbGFjZW1lbnQ7CiAg
ICAgICAgIGNvbnN0IGludCByZXN1bHRMZW5ndGggPSByZXN1bHRzW2ldLmxlbmd0aDsKICAgICAg
ICAgY29uc3QgaW50IHJlc3VsdEVuZExvY2F0aW9uID0gcmVzdWx0TG9jYXRpb24gKyByZXN1bHRM
ZW5ndGg7CisgICAgICAgIGNvbnN0IGludCBhdXRvbWF0aWNSZXBsYWNlbWVudEVuZExvY2F0aW9u
ID0gcGFyYWdyYXBoLmF1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQoKSArIHBhcmFncmFwaC5hdXRv
bWF0aWNSZXBsYWNlbWVudExlbmd0aCgpICsgb2Zmc2V0RHVlVG9SZXBsYWNlbWVudDsKICAgICAg
ICAgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCA9IHJlc3VsdHNbaV0ucmVwbGFjZW1lbnQ7CiAg
ICAgICAgIGNvbnN0IGJvb2wgcmVzdWx0RW5kc0F0QW1iaWd1b3VzQm91bmRhcnkgPSB1c2VBbWJp
Z3VvdXNCb3VuZGFyeU9mZnNldCAmJiBzZWxlY3Rpb25PZmZzZXQgLSAxIDw9IHJlc3VsdEVuZExv
Y2F0aW9uOwogCkBAIC0yNjk5LDEyICsyNzA3LDEyIEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVw
bGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRl
CiAgICAgICAgICAgICAgICAgICAgIGJhZEdyYW1tYXJSYW5nZS0+c3RhcnRDb250YWluZXIoKS5k
b2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIoYmFkR3JhbW1hclJhbmdlLnB0cigpLCBEb2N1
bWVudE1hcmtlcjo6R3JhbW1hciwgZGV0YWlsLnVzZXJEZXNjcmlwdGlvbik7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdEVuZExvY2F0
aW9uIDw9IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQgJiYgcmVzdWx0RW5kTG9jYXRpb24gPj0gcGFy
YWdyYXBoLmNoZWNraW5nU3RhcnQoKQorICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdEVuZExvY2F0
aW9uIDw9IGF1dG9tYXRpY1JlcGxhY2VtZW50RW5kTG9jYXRpb24gJiYgcmVzdWx0RW5kTG9jYXRp
b24gPj0gcGFyYWdyYXBoLmF1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQoKQogICAgICAgICAgICAg
JiYgaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRUeXBlKHJlc3VsdFR5cGUpKSB7Ci0gICAgICAg
ICAgICAvLyBJbiB0aGlzIGNhc2UgdGhlIHJlc3VsdCByYW5nZSBqdXN0IGhhcyB0byB0b3VjaCB0
aGUgc3BlbGxpbmcgcmFuZ2UsIHNvIHdlIGNhbiBoYW5kbGUgcmVwbGFjaW5nIG5vbi13b3JkIHRl
eHQgc3VjaCBhcyBwdW5jdHVhdGlvbi4KKyAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSB0aGUg
cmVzdWx0IHJhbmdlIGp1c3QgaGFzIHRvIHRvdWNoIHRoZSBhdXRvbWF0aWMgcmVwbGFjZW1lbnQg
cmFuZ2UsIHNvIHdlIGNhbiBoYW5kbGUgcmVwbGFjaW5nIG5vbi13b3JkIHRleHQgc3VjaCBhcyBw
dW5jdHVhdGlvbi4KICAgICAgICAgICAgIEFTU0VSVChyZXN1bHRMZW5ndGggPiAwICYmIHJlc3Vs
dExvY2F0aW9uID49IDApOwogCi0gICAgICAgICAgICBpZiAoc2hvdWxkU2hvd0NvcnJlY3Rpb25Q
YW5lbCAmJiAocmVzdWx0RW5kTG9jYXRpb24gPCBzcGVsbGluZ1JhbmdlRW5kT2Zmc2V0CisgICAg
ICAgICAgICBpZiAoc2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5lbCAmJiAocmVzdWx0RW5kTG9jYXRp
b24gPCBhdXRvbWF0aWNSZXBsYWNlbWVudEVuZExvY2F0aW9uCiAgICAgICAgICAgICAgICAgfHwg
IShyZXN1bHRUeXBlICYgKFRleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCB8IFRleHRDaGVja2lu
Z1R5cGVDb3JyZWN0aW9uKSkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC0yNzI4
LDcgKzI3MzYsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxD
aGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogCiAgICAgICAgICAgICBpZiAoc2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5lbCkgewot
ICAgICAgICAgICAgICAgIGlmIChyZXN1bHRFbmRMb2NhdGlvbiA9PSBzcGVsbGluZ1JhbmdlRW5k
T2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdEVuZExvY2F0aW9uID09IGF1dG9t
YXRpY1JlcGxhY2VtZW50RW5kTG9jYXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgLy8gV2Ug
b25seSBzaG93IHRoZSBjb3JyZWN0aW9uIHBhbmVsIG9uIHRoZSBsYXN0IHdvcmQuCiAgICAgICAg
ICAgICAgICAgICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+c2hvdyhyYW5nZVRvUmVw
bGFjZSwgcmVwbGFjZW1lbnQpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI4Mjks
NyArMjgzNyw4IEBAIHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcihj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzcGVsbGluZ1NlbGVjCiAgICAgICAgIFRleHRDaGVja2lu
Z1R5cGVNYXNrIHRleHRDaGVja2luZ09wdGlvbnMgPSBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7
CiAgICAgICAgIGlmIChtYXJrR3JhbW1hciAmJiBpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSkK
ICAgICAgICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMgfD0gVGV4dENoZWNraW5nVHlwZUdyYW1t
YXI7Ci0gICAgICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXModGV4
dENoZWNraW5nT3B0aW9ucywgc3BlbGxpbmdTZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKS5n
ZXQoKSwgZ3JhbW1hclNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKKyAgICAg
ICAgYXV0byBzcGVsbENoZWNraW5nUmFuZ2UgPSBzcGVsbGluZ1NlbGVjdGlvbi50b05vcm1hbGl6
ZWRSYW5nZSgpOworICAgICAgICBtYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFu
Z2VzKHRleHRDaGVja2luZ09wdGlvbnMsIHNwZWxsQ2hlY2tpbmdSYW5nZS5nZXQoKSwgc3BlbGxD
aGVja2luZ1JhbmdlLmdldCgpLCBncmFtbWFyU2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCku
Z2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApp
bmRleCBlMTQxNDNmZWNlOTExMDdhNjUyZmZlOGZjNTE4ZjJjNzI1ZmE5Y2Q3Li5iNGEwMTBmYjRl
NzMyMGEyZWJkNzQ2NTNiYzc0ZTk0OTcxMDI3NGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgK
QEAgLTI5Myw3ICsyOTMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc092ZXJ3cml0ZU1vZGVFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV9vdmVyd3JpdGVNb2RlRW5hYmxlZDsgfQogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgdG9nZ2xlT3ZlcndyaXRlTW9kZUVuYWJsZWQoKTsKIAotICAgIHZvaWQg
bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdUeXBl
TWFzaywgUmFuZ2UqIHNwZWxsaW5nUmFuZ2UsIFJhbmdlKiBncmFtbWFyUmFuZ2UpOworICAgIHZv
aWQgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdU
eXBlTWFzaywgUmFuZ2UqIHNwZWxsaW5nUmFuZ2UsIFJhbmdlKiBhdXRvbWF0aWNSZXBsYWNlbWVu
dFJhbmdlLCBSYW5nZSogZ3JhbW1hclJhbmdlKTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgTk9f
UkVUVVJOX0RVRV9UT19BU1NFUlQKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENo
ZWNrZXIuY3BwCmluZGV4IGE1YjYxNmQyNDhlMTFjODY0Mjc5NTI2M2Q4OWNjNDBiMTNhOWNmZjku
LmMwNTRjNWFkZTU0MDkwNDIyM2I5MDkzYzE0MGEzNTg2NjY3OTYxZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKQEAgLTQwLDggKzQwLDkgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1TcGVsbENoZWNrUmVxdWVzdDo6U3BlbGxDaGVja1JlcXVlc3QoUmVmPFJh
bmdlPiYmIGNoZWNraW5nUmFuZ2UsIFJlZjxSYW5nZT4mJiBwYXJhZ3JhcGhSYW5nZSwgY29uc3Qg
U3RyaW5nJiB0ZXh0LCBUZXh0Q2hlY2tpbmdUeXBlTWFzayBtYXNrLCBUZXh0Q2hlY2tpbmdQcm9j
ZXNzVHlwZSBwcm9jZXNzVHlwZSkKK1NwZWxsQ2hlY2tSZXF1ZXN0OjpTcGVsbENoZWNrUmVxdWVz
dChSZWY8UmFuZ2U+JiYgY2hlY2tpbmdSYW5nZSwgUmVmPFJhbmdlPiYmIGF1dG9tYXRpY1JlcGxh
Y2VtZW50UmFuZ2UsIFJlZjxSYW5nZT4mJiBwYXJhZ3JhcGhSYW5nZSwgY29uc3QgU3RyaW5nJiB0
ZXh0LCBUZXh0Q2hlY2tpbmdUeXBlTWFzayBtYXNrLCBUZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSBw
cm9jZXNzVHlwZSkKICAgICA6IG1fY2hlY2tpbmdSYW5nZShXVEZNb3ZlKGNoZWNraW5nUmFuZ2Up
KQorICAgICwgbV9hdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlKFdURk1vdmUoYXV0b21hdGljUmVw
bGFjZW1lbnRSYW5nZSkpCiAgICAgLCBtX3BhcmFncmFwaFJhbmdlKFdURk1vdmUocGFyYWdyYXBo
UmFuZ2UpKQogICAgICwgbV9yb290RWRpdGFibGVFbGVtZW50KG1fY2hlY2tpbmdSYW5nZS0+c3Rh
cnRDb250YWluZXIoKS5yb290RWRpdGFibGVFbGVtZW50KCkpCiAgICAgLCBtX3JlcXVlc3REYXRh
KHVucmVxdWVzdGVkVGV4dENoZWNraW5nU2VxdWVuY2UsIHRleHQsIG1hc2ssIHByb2Nlc3NUeXBl
KQpAQCAtNTAsMTMgKzUxLDEzIEBAIFNwZWxsQ2hlY2tSZXF1ZXN0OjpTcGVsbENoZWNrUmVxdWVz
dChSZWY8UmFuZ2U+JiYgY2hlY2tpbmdSYW5nZSwgUmVmPFJhbmdlPiYmIHBhCiAKIFNwZWxsQ2hl
Y2tSZXF1ZXN0Ojp+U3BlbGxDaGVja1JlcXVlc3QoKSA9IGRlZmF1bHQ7CiAKLVJlZlB0cjxTcGVs
bENoZWNrUmVxdWVzdD4gU3BlbGxDaGVja1JlcXVlc3Q6OmNyZWF0ZShUZXh0Q2hlY2tpbmdUeXBl
TWFzayB0ZXh0Q2hlY2tpbmdPcHRpb25zLCBUZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSBwcm9jZXNz
VHlwZSwgUmVmPFJhbmdlPiYmIGNoZWNraW5nUmFuZ2UsIFJlZjxSYW5nZT4mJiBwYXJhZ3JhcGhS
YW5nZSkKK1JlZlB0cjxTcGVsbENoZWNrUmVxdWVzdD4gU3BlbGxDaGVja1JlcXVlc3Q6OmNyZWF0
ZShUZXh0Q2hlY2tpbmdUeXBlTWFzayB0ZXh0Q2hlY2tpbmdPcHRpb25zLCBUZXh0Q2hlY2tpbmdQ
cm9jZXNzVHlwZSBwcm9jZXNzVHlwZSwgUmVmPFJhbmdlPiYmIGNoZWNraW5nUmFuZ2UsIFJlZjxS
YW5nZT4mJiBhdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlLCBSZWY8UmFuZ2U+JiYgcGFyYWdyYXBo
UmFuZ2UpCiB7CiAgICAgU3RyaW5nIHRleHQgPSBjaGVja2luZ1JhbmdlLT50ZXh0KCk7CiAgICAg
aWYgKCF0ZXh0Lmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNwZWxsQ2hlY2tSZXF1ZXN0KFdURk1vdmUoY2hlY2tpbmdSYW5nZSks
IFdURk1vdmUocGFyYWdyYXBoUmFuZ2UpLCB0ZXh0LCB0ZXh0Q2hlY2tpbmdPcHRpb25zLCBwcm9j
ZXNzVHlwZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNwZWxsQ2hlY2tSZXF1ZXN0KFdU
Rk1vdmUoY2hlY2tpbmdSYW5nZSksIFdURk1vdmUoYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSks
IFdURk1vdmUocGFyYWdyYXBoUmFuZ2UpLCB0ZXh0LCB0ZXh0Q2hlY2tpbmdPcHRpb25zLCBwcm9j
ZXNzVHlwZSkpOwogfQogCiBjb25zdCBUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YSYgU3BlbGxDaGVj
a1JlcXVlc3Q6OmRhdGEoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9TcGVsbENoZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmgK
aW5kZXggYTIzYzE4Y2MwZjE1ZmNhNTI2MDVlNDFhNzcxODg5ODYwZDg0NmEwMy4uMDU5NDUzNjZj
Yzk4MTQ0MDFjZDg4MmYwYzFkNzBlNTI2MjA3YzhmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nw
ZWxsQ2hlY2tlci5oCkBAIC00NCwxMSArNDQsMTIgQEAgY2xhc3MgU3BlbGxDaGVja2VyOwogCiBj
bGFzcyBTcGVsbENoZWNrUmVxdWVzdCA6IHB1YmxpYyBUZXh0Q2hlY2tpbmdSZXF1ZXN0IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFNwZWxsQ2hlY2tSZXF1ZXN0PiBjcmVhdGUoVGV4dENo
ZWNraW5nVHlwZU1hc2ssIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlLCBSZWY8UmFuZ2U+JiYgY2hl
Y2tpbmdSYW5nZSwgUmVmPFJhbmdlPiYmIHBhcmFncmFwaFJhbmdlKTsKKyAgICBzdGF0aWMgUmVm
UHRyPFNwZWxsQ2hlY2tSZXF1ZXN0PiBjcmVhdGUoVGV4dENoZWNraW5nVHlwZU1hc2ssIFRleHRD
aGVja2luZ1Byb2Nlc3NUeXBlLCBSZWY8UmFuZ2U+JiYgY2hlY2tpbmdSYW5nZSwgUmVmPFJhbmdl
PiYmIGF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UsIFJlZjxSYW5nZT4mJiBwYXJhZ3JhcGhSYW5n
ZSk7CiAgICAgdmlydHVhbCB+U3BlbGxDaGVja1JlcXVlc3QoKTsKIAogICAgIFJhbmdlJiBjaGVj
a2luZ1JhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9jaGVja2luZ1JhbmdlLmdldCgpOyB9CiAgICAg
UmFuZ2UmIHBhcmFncmFwaFJhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhZ3JhcGhSYW5nZS5n
ZXQoKTsgfQorICAgIFJhbmdlJiBhdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlKCkgY29uc3QgeyBy
ZXR1cm4gbV9hdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlLmdldCgpOyB9CiAgICAgRWxlbWVudCog
cm9vdEVkaXRhYmxlRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdEVkaXRhYmxlRWxlbWVu
dC5nZXQoKTsgfQogCiAgICAgdm9pZCBzZXRDaGVja2VyQW5kU2VxdWVuY2UoU3BlbGxDaGVja2Vy
KiwgaW50IHNlcXVlbmNlKTsKQEAgLTYwLDEwICs2MSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
aWRDYW5jZWwoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBTcGVsbENoZWNrUmVxdWVzdChS
ZWY8UmFuZ2U+JiYgY2hlY2tpbmdSYW5nZSwgUmVmPFJhbmdlPiYmIHBhcmFncmFwaFJhbmdlLCBj
b25zdCBTdHJpbmcmLCBUZXh0Q2hlY2tpbmdUeXBlTWFzaywgVGV4dENoZWNraW5nUHJvY2Vzc1R5
cGUpOworICAgIFNwZWxsQ2hlY2tSZXF1ZXN0KFJlZjxSYW5nZT4mJiBjaGVja2luZ1JhbmdlLCBS
ZWY8UmFuZ2U+JiYgYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSwgUmVmPFJhbmdlPiYmIHBhcmFn
cmFwaFJhbmdlLCBjb25zdCBTdHJpbmcmLCBUZXh0Q2hlY2tpbmdUeXBlTWFzaywgVGV4dENoZWNr
aW5nUHJvY2Vzc1R5cGUpOwogCiAgICAgU3BlbGxDaGVja2VyKiBtX2NoZWNrZXIgeyBudWxscHRy
IH07CiAgICAgUmVmPFJhbmdlPiBtX2NoZWNraW5nUmFuZ2U7CisgICAgUmVmPFJhbmdlPiBtX2F1
dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2U7CiAgICAgUmVmPFJhbmdlPiBtX3BhcmFncmFwaFJhbmdl
OwogICAgIFJlZlB0cjxFbGVtZW50PiBtX3Jvb3RFZGl0YWJsZUVsZW1lbnQ7CiAgICAgVGV4dENo
ZWNraW5nUmVxdWVzdERhdGEgbV9yZXF1ZXN0RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAppbmRleCBlZDliZWU0OWNhNzIyZjNmODY4YTRhNTky
NWI4Yzk5NzRlMzBmYzkyLi43MjVkMDMzZWQ2YjliMDdlYmU5OWUyYmEzMmY4MzQxZTdhZWVjMjI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCkBA
IC0xMTcsMTIgKzExNywxNiBAQCBzdGF0aWMgUmVmPFJhbmdlPiBleHBhbmRUb1BhcmFncmFwaEJv
dW5kYXJ5KFJhbmdlJiByYW5nZSkKICAgICByZXR1cm4gcGFyYWdyYXBoUmFuZ2U7CiB9CiAKLVRl
eHRDaGVja2luZ1BhcmFncmFwaDo6VGV4dENoZWNraW5nUGFyYWdyYXBoKFJlZjxSYW5nZT4mJiBj
aGVja2luZ1JhbmdlLCBSYW5nZSogcGFyYWdyYXBoUmFuZ2UpCitUZXh0Q2hlY2tpbmdQYXJhZ3Jh
cGg6OlRleHRDaGVja2luZ1BhcmFncmFwaChSZWY8UmFuZ2U+JiYgY2hlY2tpbmdBbmRBdXRvbWF0
aWNSZXBsYWNlbWVudFJhbmdlKQorICAgIDogbV9jaGVja2luZ1JhbmdlKGNoZWNraW5nQW5kQXV0
b21hdGljUmVwbGFjZW1lbnRSYW5nZS5jb3B5UmVmKCkpCisgICAgLCBtX2F1dG9tYXRpY1JlcGxh
Y2VtZW50UmFuZ2UoY2hlY2tpbmdBbmRBdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlLmNvcHlSZWYo
KSkKK3sKK30KKworVGV4dENoZWNraW5nUGFyYWdyYXBoOjpUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgo
UmVmPFJhbmdlPiYmIGNoZWNraW5nUmFuZ2UsIFJlZjxSYW5nZT4mJiBhdXRvbWF0aWNSZXBsYWNl
bWVudFJhbmdlLCBSZWZQdHI8UmFuZ2U+JiYgcGFyYWdyYXBoUmFuZ2UpCiAgICAgOiBtX2NoZWNr
aW5nUmFuZ2UoV1RGTW92ZShjaGVja2luZ1JhbmdlKSkKLSAgICAsIG1fcGFyYWdyYXBoUmFuZ2Uo
cGFyYWdyYXBoUmFuZ2UpCi0gICAgLCBtX2NoZWNraW5nU3RhcnQoLTEpCi0gICAgLCBtX2NoZWNr
aW5nRW5kKC0xKQotICAgICwgbV9jaGVja2luZ0xlbmd0aCgtMSkKKyAgICAsIG1fYXV0b21hdGlj
UmVwbGFjZW1lbnRSYW5nZShXVEZNb3ZlKGF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UpKQorICAg
ICwgbV9wYXJhZ3JhcGhSYW5nZShXVEZNb3ZlKHBhcmFncmFwaFJhbmdlKSkKIHsKIH0KIApAQCAt
MjExLDYgKzIxNSwyNiBAQCBpbnQgVGV4dENoZWNraW5nUGFyYWdyYXBoOjpjaGVja2luZ0xlbmd0
aCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY2hlY2tpbmdMZW5ndGg7CiB9CiAKK2ludCBUZXh0Q2hl
Y2tpbmdQYXJhZ3JhcGg6OmF1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQoKSBjb25zdAoreworICAg
IGlmIChtX2F1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQgIT0gLTEpCisgICAgICAgIHJldHVybiBt
X2F1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQ7CisKKyAgICBhdXRvIHN0YXJ0T2Zmc2V0UmFuZ2Ug
PSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdlKCkuc3RhcnRDb250YWluZXIoKS5kb2N1bWVu
dCgpLCBwYXJhZ3JhcGhSYW5nZSgpLnN0YXJ0UG9zaXRpb24oKSwgbV9hdXRvbWF0aWNSZXBsYWNl
bWVudFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOworICAgIG1fYXV0b21hdGljUmVwbGFjZW1lbnRT
dGFydCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoc3RhcnRPZmZzZXRSYW5nZS5wdHIoKSk7
CisgICAgcmV0dXJuIG1fYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydDsKK30KKworaW50IFRleHRD
aGVja2luZ1BhcmFncmFwaDo6YXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGgoKSBjb25zdAorewor
ICAgIGlmIChtX2F1dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3RoICE9IC0xKQorICAgICAgICByZXR1
cm4gbV9hdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aDsKKworICAgIGF1dG8gZW5kT2Zmc2V0UmFu
Z2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdlKCkuc3RhcnRDb250YWluZXIoKS5kb2N1
bWVudCgpLCBwYXJhZ3JhcGhSYW5nZSgpLnN0YXJ0UG9zaXRpb24oKSwgbV9hdXRvbWF0aWNSZXBs
YWNlbWVudFJhbmdlLT5lbmRQb3NpdGlvbigpKTsKKyAgICBtX2F1dG9tYXRpY1JlcGxhY2VtZW50
TGVuZ3RoID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChlbmRPZmZzZXRSYW5nZS5wdHIoKSkg
LSBhdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0KCk7CisgICAgcmV0dXJuIG1fYXV0b21hdGljUmVw
bGFjZW1lbnRMZW5ndGg7Cit9CisKIFRleHRDaGVja2luZ0hlbHBlcjo6VGV4dENoZWNraW5nSGVs
cGVyKEVkaXRvckNsaWVudCYgY2xpZW50LCBSYW5nZSYgcmFuZ2UpCiAgICAgOiBtX2NsaWVudChj
bGllbnQpCiAgICAgLCBtX3JhbmdlKHJhbmdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dENoZWNraW5nSGVscGVyLmgKaW5kZXggNmIwZjQzZmNmNzRhZWFlNzE1NmNhOTI0OTg2M2FkNzJj
MDU0ZGQ3ZS4uYmM3OWJhZDcwNjRlNTM4ZmYxMTVkMjAzNDY4ZmJhYjlhNjRjY2UxMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5oCkBAIC0zMyw3ICszMyw4
IEBAIHN0cnVjdCBUZXh0Q2hlY2tpbmdSZXN1bHQ7CiAKIGNsYXNzIFRleHRDaGVja2luZ1BhcmFn
cmFwaCB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgVGV4dENoZWNraW5nUGFyYWdyYXBoKFJlZjxS
YW5nZT4mJiBjaGVja2luZ1JhbmdlLCBSYW5nZSogcGFyYWdyYXBoUmFuZ2UgPSBudWxscHRyKTsK
KyAgICBleHBsaWNpdCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoUmVmPFJhbmdlPiYmIGNoZWNraW5n
QW5kQXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSk7CisgICAgZXhwbGljaXQgVGV4dENoZWNraW5n
UGFyYWdyYXBoKFJlZjxSYW5nZT4mJiBjaGVja2luZ1JhbmdlLCBSZWY8UmFuZ2U+JiYgYXV0b21h
dGljUmVwbGFjZW1lbnRSYW5nZSwgUmVmUHRyPFJhbmdlPiYmIHBhcmFncmFwaFJhbmdlKTsKIAog
ICAgIGludCByYW5nZUxlbmd0aCgpIGNvbnN0OwogICAgIFJlZjxSYW5nZT4gc3VicmFuZ2UoaW50
IGNoYXJhY3Rlck9mZnNldCwgaW50IGNoYXJhY3RlckNvdW50KSBjb25zdDsKQEAgLTU1LDYgKzU2
LDExIEBAIHB1YmxpYzoKICAgICBpbnQgY2hlY2tpbmdMZW5ndGgoKSBjb25zdDsKICAgICBTdHJp
bmcgY2hlY2tpbmdTdWJzdHJpbmcoKSBjb25zdCB7IHJldHVybiB0ZXh0U3Vic3RyaW5nKGNoZWNr
aW5nU3RhcnQoKSwgY2hlY2tpbmdMZW5ndGgoKSk7IH0KIAorICAgIC8vIERldGVybWluZXMgdGhl
IHJhbmdlIGluIHdoaWNoIHdlIGFsbG93IGF1dG9tYXRpYyB0ZXh0IHJlcGxhY2VtZW50LiBJZiBh
biBhdXRvbWF0aWMgcmVwbGFjZW1lbnQgcmFuZ2UgaXMgbm90IHBhc3NlZCB0byB0aGUKKyAgICAv
LyB0ZXh0IGNoZWNraW5nIHBhcmFncmFwaCwgdGhpcyBkZWZhdWx0cyB0byB0aGUgc3BlbGwgY2hl
Y2tpbmcgcmFuZ2UuCisgICAgaW50IGF1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQoKSBjb25zdDsK
KyAgICBpbnQgYXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGgoKSBjb25zdDsKKwogICAgIGJvb2wg
Y2hlY2tpbmdSYW5nZU1hdGNoZXMoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKSBjb25zdCB7IHJl
dHVybiBsb2NhdGlvbiA9PSBjaGVja2luZ1N0YXJ0KCkgJiYgbGVuZ3RoID09IGNoZWNraW5nTGVu
Z3RoKCk7IH0KICAgICBib29sIGlzQ2hlY2tpbmdSYW5nZUNvdmVyZWRCeShpbnQgbG9jYXRpb24s
IGludCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJuIGxvY2F0aW9uIDw9IGNoZWNraW5nU3RhcnQoKSAm
JiBsb2NhdGlvbiArIGxlbmd0aCA+PSBjaGVja2luZ1N0YXJ0KCkgKyBjaGVja2luZ0xlbmd0aCgp
OyB9CiAgICAgYm9vbCBjaGVja2luZ1JhbmdlQ292ZXJzKGludCBsb2NhdGlvbiwgaW50IGxlbmd0
aCkgY29uc3QgeyByZXR1cm4gbG9jYXRpb24gPCBjaGVja2luZ0VuZCgpICYmIGxvY2F0aW9uICsg
bGVuZ3RoID4gY2hlY2tpbmdTdGFydCgpOyB9CkBAIC02NSwxMiArNzEsMTUgQEAgcHJpdmF0ZToK
ICAgICBSYW5nZSYgb2Zmc2V0QXNSYW5nZSgpIGNvbnN0OwogCiAgICAgUmVmPFJhbmdlPiBtX2No
ZWNraW5nUmFuZ2U7CisgICAgUmVmPFJhbmdlPiBtX2F1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2U7
CiAgICAgbXV0YWJsZSBSZWZQdHI8UmFuZ2U+IG1fcGFyYWdyYXBoUmFuZ2U7CiAgICAgbXV0YWJs
ZSBSZWZQdHI8UmFuZ2U+IG1fb2Zmc2V0QXNSYW5nZTsKICAgICBtdXRhYmxlIFN0cmluZyBtX3Rl
eHQ7Ci0gICAgbXV0YWJsZSBpbnQgbV9jaGVja2luZ1N0YXJ0OwotICAgIG11dGFibGUgaW50IG1f
Y2hlY2tpbmdFbmQ7Ci0gICAgbXV0YWJsZSBpbnQgbV9jaGVja2luZ0xlbmd0aDsKKyAgICBtdXRh
YmxlIGludCBtX2NoZWNraW5nU3RhcnQgeyAtMSB9OworICAgIG11dGFibGUgaW50IG1fY2hlY2tp
bmdFbmQgeyAtMSB9OworICAgIG11dGFibGUgaW50IG1fY2hlY2tpbmdMZW5ndGggeyAtMSB9Owor
ICAgIG11dGFibGUgaW50IG1fYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCB7IC0xIH07CisgICAg
bXV0YWJsZSBpbnQgbV9hdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCB7IC0xIH07CiB9OwogCiBj
bGFzcyBUZXh0Q2hlY2tpbmdIZWxwZXIgewpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGM5NjFhNzY1YzQ2NjVkNjA2ZDE2NjI1YzllNGI3YzhkMjYy
NDAwZDMuLjYzNjc5ZTAyMTliZDg3ZmZhNTIwNzIzYjE3YTU1ZmZlN2NkYWEwNjAgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4NyBA
QAorMjAxOC0wNi0zMCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbbWFjT1NdIFRleHQgcmVwbGFjZW1lbnRzIHRoYXQgZW5kIHdpdGggc3ltYm9scyBh
cmUgZXhwYW5kZWQgaW1tZWRpYXRlbHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4NzIyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDExMTI0MzM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkcyB0ZXN0
aW5nIHN1cHBvcnQgZm9yIG1vY2tpbmcgTlNTcGVsbENoZWNrZXIncyB0ZXh0IGNoZWNraW5nIHJl
c3VsdHMuIFNlZSBiZWxvdyBmb3IgbW9yZSBkZXRhaWxzLCBhbmQgdGhlIG5ldworICAgICAgICBs
YXlvdXQgdGVzdCBmb3IgYW4gZXhhbXBsZSBvZiBpdHMgdXNhZ2UuCisKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoc2V0U3BlbGxD
aGVja2VyVGV4dFJlcGxhY2VtZW50c0NhbGxiYWNrKToKKworICAgICAgICBBZGQgYmluZGluZ3Mg
c3VwcG9ydCBpbiBUZXN0UnVubmVyIHRvIHNwZWNpZnkgYSBzZXQgb2YgdGV4dCByZXBsYWNlbWVu
dCBtYXBwaW5ncy4gRWFjaCBlbnRyeSBpbiB0aGUgZGljdGlvbmFyeQorICAgICAgICBtYXBzIGEg
c3RyaW5nIHJlcHJlc2VudGluZyBhbiBpbnB1dCB0byB0aGUgTlNTcGVsbENoZWNrZXIgdG8gc29t
ZSBpbmZvcm1hdGlvbiBkZXNjcmliaW5nIHRoZSBzcGVsbCBjaGVja2luZworICAgICAgICByZXN1
bHQgdGhhdCBMYXlvdXRUZXN0U3BlbGxDaGVja2VyIHdpbGwgcmV0dXJuLgorCisgICAgICAgIChU
ZXN0UnVubmVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rl
c3RSdW5uZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUu
bW06CisgICAgICAgIChyZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3Rpbmcp
OgorCisgICAgICAgIFJlc3RvcmUgdGhlIG9yaWdpbmFsIHNoYXJlZCBOU1NwZWxsY2hlY2tlciBi
ZWZvcmUgdHJhbnNpdGlvbmluZyB0byB0aGUgbmV4dCBsYXlvdXQgdGVzdCwgaWYgbmVlZGVkLgor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2Vy
Lm1tOiBSZW1vdmVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFj
Lm1tOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0U3BlbGxDaGVja2VyTG9nZ2luZ0VuYWJsZWQp
OgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0U3BlbGxDaGVja2VyVGV4dFJlcGxhY2VtZW50cyk6
CisKKyAgICAgICAgVGhlc2UgdGVzdFJ1bm5lciBtZXRob2RzIGVuc3VyZSB0aGF0IGAtW05TU3Bl
bGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl1gIGlzIHN3aXp6bGVkIHRvIHJldHVybiBvdXIg
bW9jaworICAgICAgICBMYXlvdXRUZXN0U3BlbGxDaGVja2VyIGluc3RhbmNlIGJlZm9yZSBjYWxs
aW5nIGludG8gaXQuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldp
bi5jcHA6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRTcGVsbENoZWNrZXJUZXh0UmVwbGFjZW1l
bnRzKToKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL2NvY29hL0xheW91dFRlc3RTcGVsbENo
ZWNrZXIuaDogUmVuYW1lZCBmcm9tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVy
VHJlZVNwZWxsQ2hlY2tlci5oLgorICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5
b3V0VGVzdFNwZWxsQ2hlY2tlci5tbTogQWRkZWQuCisKKyAgICAgICAgTW92ZWQgRHVtcFJlbmRl
clRyZWVTcGVsbENoZWNrZXIgdG8gTGF5b3V0VGVzdFNwZWxsQ2hlY2tlciwgYW5kIG1hZGUgaXQg
Y29tcGlsZSBmb3IgYm90aCBXZWJLaXRUZXN0UnVubmVyCisgICAgICAgIChtb2Rlcm4gV2ViS2l0
KSBhbmQgRHVtcFJlbmRlclRyZWUgKGxlZ2FjeSBXZWJLaXQpIGJ5IHB1dHRpbmcgaXQgaW4gVGVz
dFJ1bm5lclNoYXJlZC4KKworICAgICAgICAoZXhpc3RpbmdHbG9iYWxMYXlvdXRUZXN0U3BlbGxD
aGVja2VyKToKKyAgICAgICAgKGVuc3VyZUdsb2JhbExheW91dFRlc3RTcGVsbENoZWNrZXIpOgor
ICAgICAgICAoc3RyaW5nRm9yQ29ycmVjdGlvblJlc3BvbnNlKToKKyAgICAgICAgKG5zVGV4dENo
ZWNraW5nVHlwZSk6CisgICAgICAgICgtW0xheW91dFRlc3RUZXh0Q2hlY2tpbmdSZXN1bHQgaW5p
dFdpdGhUeXBlOnJhbmdlOnJlcGxhY2VtZW50Ol0pOgorICAgICAgICAoLVtMYXlvdXRUZXN0VGV4
dENoZWNraW5nUmVzdWx0IHJhbmdlXSk6CisgICAgICAgICgtW0xheW91dFRlc3RUZXh0Q2hlY2tp
bmdSZXN1bHQgcmVzdWx0VHlwZV0pOgorICAgICAgICAoLVtMYXlvdXRUZXN0VGV4dENoZWNraW5n
UmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXSk6CisgICAgICAgICgtW0xheW91dFRlc3RUZXh0Q2hl
Y2tpbmdSZXN1bHQgZGVzY3JpcHRpb25dKToKKworICAgICAgICBMYXlvdXRUZXN0VGV4dENoZWNr
aW5nUmVzdWx0IHJlcHJlc2VudHMgYSBmYWtlIE5TVGV4dENoZWNraW5nUmVzdWx0IGNvbnRhaW5p
bmcgc3BlbGwgY2hlY2tpbmcgcmVzdWx0cyBzdXBwbGllZAorICAgICAgICBieSB0aGUgbGF5b3V0
IHRlc3QuCisKKyAgICAgICAgKCtbTGF5b3V0VGVzdFNwZWxsQ2hlY2tlciBpbnN0YWxsSWZOZWNl
c3NhcnldKToKKyAgICAgICAgKCtbTGF5b3V0VGVzdFNwZWxsQ2hlY2tlciB1bmluc3RhbGxBbmRS
ZXNldF0pOgorCisgICAgICAgIEhlbHBlciBtZXRob2RzIHRvIGJlZ2luIGFuZCBlbmQgc3dpenps
aW5nIHRoZSBzaGFyZWQgTlNTcGVsbENoZWNrZXIuCisKKyAgICAgICAgKC1bTGF5b3V0VGVzdFNw
ZWxsQ2hlY2tlciByZXNldF0pOgorCisgICAgICAgIFJlc2V0cyB0aGUgc3RhdGUgb2YgdGhlIExh
eW91dFRlc3RTcGVsbENoZWNrZXIgKHRoaXMgZW50YWlscyBjbGVhcmluZyB0aGUgZmFrZSByZXBs
YWNlbWVudHMgZGljdGlvbmFyeSBhbmQKKyAgICAgICAgdHVybmluZyBvZmYgbG9nZ2luZyBmb3Ig
cmVjb3JkZWQgc3BlbGxjaGVja2luZyByZXNwb25zZXMpLgorCisgICAgICAgICgtW0xheW91dFRl
c3RTcGVsbENoZWNrZXIgcmVwbGFjZW1lbnRzXSk6CisgICAgICAgICgtW0xheW91dFRlc3RTcGVs
bENoZWNrZXIgc2V0UmVwbGFjZW1lbnRzOl0pOgorICAgICAgICAoLVtMYXlvdXRUZXN0U3BlbGxD
aGVja2VyIHNldFJlcGxhY2VtZW50c0Zyb21KU09iamVjdDppbkNvbnRleHQ6XSk6CisKKyAgICAg
ICAgSGVscGVyIG1ldGhvZCB0byB0YWtlIGEgYEpTT2JqZWN0UmVmYCBzdXBwbGllZCBieSB0aGUg
dGVzdCBydW5uZXIgYW5kIHRyYW5zZm9ybSBpdCBpbnRvIGEgbWFwIG9mIHNwZWxsIGNoZWNraW5n
CisgICAgICAgIHN0cmluZyBpbnB1dHMgdG8gTGF5b3V0VGVzdFRleHRDaGVja2luZ1Jlc3VsdHMu
CisKKyAgICAgICAgKC1bTGF5b3V0VGVzdFNwZWxsQ2hlY2tlciBjaGVja1N0cmluZzpyYW5nZTp0
eXBlczpvcHRpb25zOmluU3BlbGxEb2N1bWVudFdpdGhUYWc6b3J0aG9ncmFwaHk6d29yZENvdW50
Ol0pOgorCisgICAgICAgIENvbnN1bHQgdGhlIHRleHQgcmVwbGFjZW1lbnQgbWFwIGFuZCBiYWls
IGVhcmx5IGlmIGEgbWF0Y2ggaXMgZm91bmQsIGJlZm9yZSBjYWxsaW5nIGludG8gcmVhbCBOU1Nw
ZWxsQ2hlY2tlcgorICAgICAgICBsb2dpYyB0byBwZXJmb3JtIHNwZWxsY2hlY2tpbmcuCisKKyAg
ICAgICAgKC1bTGF5b3V0VGVzdFNwZWxsQ2hlY2tlciByZWNvcmRSZXNwb25zZTp0b0NvcnJlY3Rp
b246Zm9yV29yZDpsYW5ndWFnZTppblNwZWxsRG9jdW1lbnRXaXRoVGFnOl0pOgorCisgICAgICAg
IFJlaW1wbGVtZW50IHRoZSBvcmlnaW5hbCBmdW5jdGlvbmFsaXR5IGluIER1bXBSZW5kZXJUcmVl
U3BlbGxDaGVja2VyIHRvIG1ha2UgYC1yZWNvcmRSZXNwb25zZTrigKZgIHByaW50IHRvIHN0ZG91
dAorICAgICAgICBieSBvdmVycmlkaW5nIHRoZSBtZXRob2QgYW5kIHByaW50aW5nIGlmIHRoZSBg
LXNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkYCBwcm9wZXJ0eSBoYXMgYmVlbiBzZXQgdG8gWUVT
LgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTgtMDYtMzAgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNh
dGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtDTWFrZV0gYnVpbGQtd2Via2l0IHNob3Vs
ZCBiZSBhYmxlIHRvIGVuYWJsZSBhZGRyZXNzIHNhbml0aXplcgpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZGM5YjlmYjhiODczMjFmNjQzNGU0NjZmNDQwYjE3ZDU2NGM4YmE2MC4uMjg3
ZDI2YTY3YzA4OGNkYjY2MThhZWU0ZTEyMDljNWI0ZjA2ZDEyOSAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC03Nyw3ICs3Nyw2IEBACiAJCTI5Q0ZCQTJFMTIyNzNBMTAwMEJDMzBDMCAv
KiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5Q0ZCQTJEMTIyNzNBMTAwMEJDMzBDMCAvKiBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlck1hYy5tbSAqLzsgfTsKIAkJMkNFODhGQTIxNzEyNEQ4QzAwNzM0RkMw
IC8qIEphdmFTY3JpcHRUaHJlYWRpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkNFODhGQTExNzEyNENFRTAwNzM0RkMwIC8qIEphdmFTY3JpcHRU
aHJlYWRpbmcuY3BwICovOyB9OwogCQkyRDQwM0YxQjE1MDg3MjA5MDA1MzU4RDIgLyogTGF5b3V0
VGVzdEhlbHBlci5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkQ0MDNFQTIxNTA4NzE0MjAwNTM1OEQyIC8qIExheW91dFRlc3RIZWxwZXIubSAqLzsgfTsK
LQkJMkRBMkUzQTUxRTFCQTU0MTAwQTNCQkQwIC8qIER1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2Vy
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBMkUz
QTQxRTFCQTU0MTAwQTNCQkQwIC8qIER1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLm1tICovOyB9
OwogCQkzMTExN0IzRDE1RDlBNTZBMDAxNjNCQzggLyogTW9ja1dlYk5vdGlmaWNhdGlvblByb3Zp
ZGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEx
MTdCM0IxNUQ5QTU2QTAwMTYzQkM4IC8qIE1vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5tbSAq
LzsgfTsKIAkJMzEyOTQzRjkxRTcxRjJCNDAwMUVFMkNDIC8qIElPU0xheW91dFRlc3RDb21tdW5p
Y2F0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDMxNDhBMDU1MUU2RjkwRjQwMEQzQjMxNiAvKiBJT1NMYXlvdXRUZXN0Q29tbXVuaWNhdGlvbi5j
cHAgKi87IH07CiAJCTQ0NjRDQUJFMUMyMEEwOEIwMEU1QkI1NSAvKiBEdW1wUmVuZGVyVHJlZUFw
cE1haW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NDY0Q0FCRDFDMjBBMDcwMDBFNUJCNTUgLyogRHVtcFJlbmRlclRyZWVBcHBNYWluLm1tICovOyB9
OwpAQCAtMTQ4LDYgKzE0Nyw3IEBACiAJCUMyM0VBMjA4MUJDOUYwNTEwMEM5ODBCNyAvKiBGb250
V2l0aEZlYXR1cmVzLm90ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzIzRUEyMDYxQkM5RUFCQTAwQzk4MEI3IC8qIEZvbnRXaXRoRmVhdHVy
ZXMub3RmICovOyB9OwogCQlDMjNFQTIwOTFCQzlGMDUxMDBDOTgwQjcgLyogRm9udFdpdGhGZWF0
dXJlcy50dGYgaW4gQ29weSBGb250IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEMyM0VBMjA3MUJDOUVBQkEwMEM5ODBCNyAvKiBGb250V2l0aEZlYXR1cmVzLnR0ZiAq
LzsgfTsKIAkJRTFCNzgxNjUxMUFGMzFCNzAwN0UxQkMyIC8qIE1vY2tHZW9sb2NhdGlvblByb3Zp
ZGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFC
NzgwODcxMUFGMTY2OTAwN0UxQkMyIC8qIE1vY2tHZW9sb2NhdGlvblByb3ZpZGVyLm1tICovOyB9
OworCQlGNEMzNTc4RDIwRTg0NDRFMDBGQTA3NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0QzM1Nzg4
MjBFODQ0MjcwMEZBMDc0OCAvKiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tICovOyB9OwogCQlG
NEQ0MjM2MTFERDUwNDgyMDA2NzgyOTAgLyogVGV4dElucHV0Q29udHJvbGxlcklPUy5tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRENDIzNUYxREQ1MDQ1
MzAwNjc4MjkwIC8qIFRleHRJbnB1dENvbnRyb2xsZXJJT1MubSAqLzsgfTsKIC8qIEVuZCBQQlhC
dWlsZEZpbGUgc2VjdGlvbiAqLwogCkBAIC0yODIsOCArMjgyLDYgQEAKIAkJMkNFODhGQTExNzEy
NENFRTAwNzM0RkMwIC8qIEphdmFTY3JpcHRUaHJlYWRpbmcuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSmF2YVNjcmlwdFRocmVhZGluZy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJENDAzRUEyMTUwODcxNDIwMDUzNThEMiAvKiBMYXlvdXRUZXN0
SGVscGVyLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgbmFtZSA9IExheW91dFRlc3RI
ZWxwZXIubTsgcGF0aCA9IG1hYy9MYXlvdXRUZXN0SGVscGVyLm07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTJENDAzRjE5MTUwODcxRjkwMDUzNThEMiAvKiBMYXlvdXRUZXN0SGVscGVy
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGls
ZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBMYXlvdXRU
ZXN0SGVscGVyOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQkyREEyRTNB
MzFFMUJBNTQxMDBBM0JCRDAgLyogRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIuaDsg
cGF0aCA9IG1hYy9EdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkyREEyRTNBNDFFMUJBNTQxMDBBM0JCRDAgLyogRHVtcFJlbmRlclRyZWVT
cGVsbENoZWNrZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBE
dW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5tbTsgcGF0aCA9IG1hYy9EdW1wUmVuZGVyVHJlZVNw
ZWxsQ2hlY2tlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkVERTBEQUExRjUx
MzFERTAwRDVGOERGIC8qIEFwcEtpdFRlc3RTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQXBwS2l0VGVz
dFNQSS5oOyBwYXRoID0gbWFjL0FwcEtpdFRlc3RTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzExMTdCM0ExNUQ5QTU2QTAwMTYzQkM4IC8qIE1vY2tXZWJOb3RpZmljYXRpb25Q
cm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNb2NrV2ViTm90aWZp
Y2F0aW9uUHJvdmlkZXIuaDsgcGF0aCA9IG1hYy9Nb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzExMTdCM0IxNUQ5QTU2QTAwMTYzQkM4
IC8qIE1vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgbmFtZSA9IE1vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5tbTsgcGF0aCA9
IG1hYy9Nb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC00MTIsNiArNDEwLDggQEAKIAkJQzIzRUEyMDcxQkM5RUFCQTAwQzk4MEI3IC8q
IEZvbnRXaXRoRmVhdHVyZXMudHRmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gZmlsZTsgbmFtZSA9IEZvbnRXaXRoRmVhdHVyZXMudHRmOyBwYXRoID0g
Zm9udHMvRm9udFdpdGhGZWF0dXJlcy50dGY7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUxQjc4MDg1MTFBRjE2NDMwMDdFMUJDMiAvKiBNb2NrR2VvbG9jYXRpb25Qcm92aWRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNb2NrR2VvbG9jYXRpb25Qcm92aWRlci5o
OyBwYXRoID0gbWFjL01vY2tHZW9sb2NhdGlvblByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUxQjc4MDg3MTFBRjE2NjkwMDdFMUJDMiAvKiBNb2NrR2VvbG9jYXRpb25Q
cm92aWRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IE1vY2tH
ZW9sb2NhdGlvblByb3ZpZGVyLm1tOyBwYXRoID0gbWFjL01vY2tHZW9sb2NhdGlvblByb3ZpZGVy
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNEMzNTc4ODIwRTg0NDI3MDBGQTA3
NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgbmFtZSA9IExheW91dFRlc3RTcGVsbENoZWNrZXIubW07IHBhdGggPSAuLi9UZXN0
UnVubmVyU2hhcmVkL2NvY29hL0xheW91dFRlc3RTcGVsbENoZWNrZXIubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUY0QzM1Nzg5MjBFODQ0MjcwMEZBMDc0OCAvKiBMYXlvdXRUZXN0
U3BlbGxDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExheW91dFRl
c3RTcGVsbENoZWNrZXIuaDsgcGF0aCA9IC4uL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0
VGVzdFNwZWxsQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEQ0MjM1
RjFERDUwNDUzMDA2NzgyOTAgLyogVGV4dElucHV0Q29udHJvbGxlcklPUy5tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLm9iamM7IG5hbWUgPSBUZXh0SW5wdXRDb250cm9sbGVySU9TLm07IHBhdGgg
PSBpb3MvVGV4dElucHV0Q29udHJvbGxlcklPUy5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGNEQ0MjM2MDFERDUwNDY5MDA2NzgyOTAgLyogVGV4dElucHV0Q29udHJvbGxlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0SW5wdXRDb250cm9sbGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9u
ICovCkBAIC02ODcsNiArNjg3LDcgQEAKIAkJMzE0OEEwNjUxRTZGOTBGNDAwRDNCMzE2IC8qIFRl
c3RSdW5uZXJTaGFyZWQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAorCQkJCUY0QjZDMzE4MjBFODQzODIwMDhBQzIyNSAvKiBjb2NvYSAqLywKIAkJCQkzMTQ4QTA1
NTFFNkY5MEY0MDBEM0IzMTYgLyogSU9TTGF5b3V0VGVzdENvbW11bmljYXRpb24uY3BwICovLAog
CQkJCTMxNDhBMDU2MUU2RjkwRjQwMEQzQjMxNiAvKiBJT1NMYXlvdXRUZXN0Q29tbXVuaWNhdGlv
bi5oICovLAogCQkJKTsKQEAgLTc3OSw4ICs3ODAsNiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJ
QThCOTFBREYwQ0YzQjM3MjAwOEY5MUZGIC8qIER1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5oICov
LAogCQkJCUE4QjkxQUQ3MENGM0IzMkYwMDhGOTFGRiAvKiBEdW1wUmVuZGVyVHJlZVBhc3RlYm9h
cmQubW0gKi8sCi0JCQkJMkRBMkUzQTMxRTFCQTU0MTAwQTNCQkQwIC8qIER1bXBSZW5kZXJUcmVl
U3BlbGxDaGVja2VyLmggKi8sCi0JCQkJMkRBMkUzQTQxRTFCQTU0MTAwQTNCQkQwIC8qIER1bXBS
ZW5kZXJUcmVlU3BlbGxDaGVja2VyLm1tICovLAogCQkJCUE4QjkxQUREMENGM0IzNzIwMDhGOTFG
RiAvKiBEdW1wUmVuZGVyVHJlZVdpbmRvdy5oICovLAogCQkJCUE4QjkxQUQ5MENGM0IzMkYwMDhG
OTFGRiAvKiBEdW1wUmVuZGVyVHJlZVdpbmRvdy5tbSAqLywKIAkJCSk7CkBAIC04MTcsNiArODE2
LDE1IEBACiAJCQluYW1lID0gUGl4ZWxEdW1wOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
IAkJfTsKKwkJRjRCNkMzMTgyMEU4NDM4MjAwOEFDMjI1IC8qIGNvY29hICovID0geworCQkJaXNh
ID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlGNEMzNTc4OTIwRTg0NDI3MDBGQTA3
NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5oICovLAorCQkJCUY0QzM1Nzg4MjBFODQ0Mjcw
MEZBMDc0OCAvKiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tICovLAorCQkJKTsKKwkJCW5hbWUg
PSBjb2NvYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUY0RDQyMzVEMURE
NEY5OTkwMDY3ODI5MCAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKApAQCAtMTA4MSw3ICsxMDg5LDYgQEAKIAkJCQlCQ0ExOEI3QjBDOUIwOEYxMDAxMTQz
NjkgLyogRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8ubW0gaW4gU291cmNlcyAqLywKIAkJCQlB
OEQ3OUNFQjBGQzI4QjJDMDA0QUM4RkUgLyogRHVtcFJlbmRlclRyZWVGaWxlRHJhZ2dpbmdTb3Vy
Y2UubSBpbiBTb3VyY2VzICovLAogCQkJCUE4QjkxQURBMENGM0IzMkYwMDhGOTFGRiAvKiBEdW1w
UmVuZGVyVHJlZVBhc3RlYm9hcmQubW0gaW4gU291cmNlcyAqLywKLQkJCQkyREEyRTNBNTFFMUJB
NTQxMDBBM0JCRDAgLyogRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW0gaW4gU291cmNlcyAq
LywKIAkJCQlBOEI5MUFEQzBDRjNCMzJGMDA4RjkxRkYgLyogRHVtcFJlbmRlclRyZWVXaW5kb3cu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEI2MjBDOUIwOEMyMDAxMTQzNjkgLyogRWRpdGlu
Z0RlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBMThCNzAwQzlCMDhEQjAwMTE0MzY5
IC8qIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKQEAgLTEwOTMsNiAr
MTEwMCw3IEBACiAJCQkJMkNFODhGQTIxNzEyNEQ4QzAwNzM0RkMwIC8qIEphdmFTY3JpcHRUaHJl
YWRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYxOEU3MDYxRDZCQTAyMzAwMjdFNTQ3IC8q
IEpTVUlTY3JpcHRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMThFNzEzMUQ2
QkM0M0EwMDI3RTU0NyAvKiBKU1dyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjRDMzU3
OEQyMEU4NDQ0RTAwRkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIubW0gaW4gU291cmNl
cyAqLywKIAkJCQlFMUI3ODE2NTExQUYzMUI3MDA3RTFCQzIgLyogTW9ja0dlb2xvY2F0aW9uUHJv
dmlkZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTExN0IzRDE1RDlBNTZBMDAxNjNCQzggLyog
TW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBMThC
NzIwQzlCMDhEQjAwMTE0MzY5IC8qIE5hdmlnYXRpb25Db250cm9sbGVyLm0gaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKaW5kZXggZjhhZDk1MTUxNzQwYjY2Yzc0
NjkyYWQ1MmQzNzRhMzA1ZGE0NDY3MS4uN2U4ZWM5YmQ0NWIwYjc1ZjRlOGU5MjZiYTVjN2Q2Mzhl
NjI2ZTQ2MyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKQEAgLTE3ODgsNiArMTc4
OCwxNiBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRTcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZENh
bGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKUwogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgc2V0U3BlbGxDaGVja2Vy
VGV4dFJlcGxhY2VtZW50c0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJl
ZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQs
IGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sK
KyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjb250ZXh0KTsKKworICAgIGF1dG8qIHJ1bm5lciA9IHN0YXRpY19jYXN0PFRlc3RS
dW5uZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIHJ1bm5lci0+c2V0
U3BlbGxDaGVja2VyVGV4dFJlcGxhY2VtZW50cyhjb250ZXh0LCBKU1ZhbHVlVG9PYmplY3QoY29u
dGV4dCwgYXJndW1lbnRzWzBdLCBudWxscHRyKSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpOworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRPcGVuUGFuZWxGaWxl
c0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNP
YmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVS
ZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBpZiAoYXJndW1l
bnRDb3VudCA9PSAxKQpAQCAtMjI1NSw2ICsyMjY1LDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogVGVz
dFJ1bm5lcjo6c3RhdGljRnVuY3Rpb25zKCkKICAgICAgICAgeyAicnVuVUlTY3JpcHQiLCBydW5V
SVNjcmlwdENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImltYWdlQ291bnRJbkdlbmVyYWxQ
YXN0ZWJvYXJkIiwgaW1hZ2VDb3VudEluR2VuZXJhbFBhc3RlYm9hcmRDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAogICAgICAgICB7ICJzZXRTcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZCIsIHNldFNwZWxsQ2hl
Y2tlckxvZ2dpbmdFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAic2V0U3BlbGxD
aGVja2VyVGV4dFJlcGxhY2VtZW50cyIsIHNldFNwZWxsQ2hlY2tlclRleHRSZXBsYWNlbWVudHND
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRPcGVuUGFuZWxGaWxlcyIsIHNldE9wZW5Q
YW5lbEZpbGVzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZm9yY2VJbW1lZGlhdGVDb21w
bGV0aW9uIiwgZm9yY2VJbW1lZGlhdGVDb21wbGV0aW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAg
ICAgeyAwLCAwLCAwIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5u
ZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAppbmRleCAzZTMyOGI4MjIz
MjNmZWM0YjRiNTRmNzc3YWNlZDI0MzQ2NDZiNmMxLi5kYmYxNGZlYjYxNzhiY2FkNjc5NmEwMWM0
NDU3YWIyNWJjZDIyMWNiIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVu
bmVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCkBAIC0zNzYsNiAr
Mzc2LDcgQEAgcHVibGljOgogICAgIGJvb2wgZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyKCkgY29u
c3QgeyByZXR1cm4gbV9kdW1wSlNDb25zb2xlTG9nSW5TdGRFcnI7IH0KIAogICAgIHZvaWQgc2V0
U3BlbGxDaGVja2VyTG9nZ2luZ0VuYWJsZWQoYm9vbCk7CisgICAgdm9pZCBzZXRTcGVsbENoZWNr
ZXJUZXh0UmVwbGFjZW1lbnRzKEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYgcmVwbGFjZW1lbnRz
KTsKIAogICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgb3BlblBhbmVsRmlsZXMo
KSBjb25zdCB7IHJldHVybiBtX29wZW5QYW5lbEZpbGVzOyB9CiAgICAgdm9pZCBzZXRPcGVuUGFu
ZWxGaWxlcyhKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0R1bXBSZW5kZXJUcmVlLm1tCmluZGV4IGQ2OTY3N2JkOWVlNzNhODlkMmYyMDY0NTA0OGRj
NzAyYzk2ZjczYjkuLjJkNTlkYTc4YjUyMTA4MDg0NTVmNjRmOTY5YThjNjJlZTM3OWNkZDggMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTM0LDEzICsz
NCwxMyBAQAogI2ltcG9ydCAiRGVmYXVsdFBvbGljeURlbGVnYXRlLmgiCiAjaW1wb3J0ICJEdW1w
UmVuZGVyVHJlZURyYWdnaW5nSW5mby5oIgogI2ltcG9ydCAiRHVtcFJlbmRlclRyZWVQYXN0ZWJv
YXJkLmgiCi0jaW1wb3J0ICJEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5oIgogI2ltcG9ydCAi
RHVtcFJlbmRlclRyZWVXaW5kb3cuaCIKICNpbXBvcnQgIkVkaXRpbmdEZWxlZ2F0ZS5oIgogI2lt
cG9ydCAiRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oIgogI2ltcG9ydCAiRnJhbWVMb2FkRGVsZWdh
dGUuaCIKICNpbXBvcnQgIkhpc3RvcnlEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiSmF2YVNjcmlwdFRo
cmVhZGluZy5oIgorI2ltcG9ydCAiTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5oIgogI2ltcG9ydCAi
TW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIuaCIKICNpbXBvcnQgIk1vY2tXZWJOb3RpZmljYXRpb25Q
cm92aWRlci5oIgogI2ltcG9ydCAiTmF2aWdhdGlvbkNvbnRyb2xsZXIuaCIKQEAgLTE4NjgsNyAr
MTg2OCw5IEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3Jl
VGVzdGluZyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9uCiAKICAgICBbbWFpbkZyYW1lIF9jbGVh
ck9wZW5lcl07CiAKLSAgICBzZXRTcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZChmYWxzZSk7Cisj
aWYgUExBVEZPUk0oTUFDKQorICAgIFtMYXlvdXRUZXN0U3BlbGxDaGVja2VyIHVuaW5zdGFsbEFu
ZFJlc2V0XTsKKyNlbmRpZgogCiAgICAgcmVzZXRBY2N1bXVsYXRlZExvZ3MoKTsKICAgICBXZWJD
b3JlVGVzdFN1cHBvcnQ6OmluaXRpYWxpemVMb2dDaGFubmVsc0lmTmVjZXNzYXJ5KCk7CmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVTcGVsbENoZWNr
ZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tl
ci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTNmZDcxYzQyMTFjMGIyN2M3NWM5
MWYxNjYxZmI3Y2M2MTQxODRhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVNwZWxsQ2hl
Y2tlci5oCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLXZvaWQg
c2V0U3BlbGxDaGVja2VyTG9nZ2luZ0VuYWJsZWQoYm9vbCk7CmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW0gYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW0KZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiYjRkOTZkZTllMmExYTJkNzdjY2IzNTI4YjczMWQxYmRm
MDlkZjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLm1tCisrKyAv
ZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5o
IgotI2ltcG9ydCAiRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIuaCIKLQotI2lmIFBMQVRGT1JN
KE1BQykKLQotI2ltcG9ydCA8QXBwS2l0L05TU3BlbGxDaGVja2VyLmg+Ci0jaW1wb3J0IDx3dGYv
QXNzZXJ0aW9ucy5oPgotI2ltcG9ydCA8d3RmL09iamNSdW50aW1lRXh0cmFzLmg+Ci0KLXN0YXRp
YyBib29sIHNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkOwotc3RhdGljIElNUCBhcHBLaXRSZWNv
cmRSZXNwb25zZUlNUDsKLQotc3RhdGljIGNvbnN0IGNoYXIgKnN0cmluZ0ZvckNvcnJlY3Rpb25S
ZXNwb25zZShOU0NvcnJlY3Rpb25SZXNwb25zZSBjb3JyZWN0aW9uUmVzcG9uc2UpCi17Ci0gICAg
c3dpdGNoIChjb3JyZWN0aW9uUmVzcG9uc2UpIHsKLSAgICBjYXNlIE5TQ29ycmVjdGlvblJlc3Bv
bnNlTm9uZToKLSAgICAgICAgcmV0dXJuICJub25lIjsKLSAgICBjYXNlIE5TQ29ycmVjdGlvblJl
c3BvbnNlQWNjZXB0ZWQ6Ci0gICAgICAgIHJldHVybiAiYWNjZXB0ZWQiOwotICAgIGNhc2UgTlND
b3JyZWN0aW9uUmVzcG9uc2VSZWplY3RlZDoKLSAgICAgICAgcmV0dXJuICJyZWplY3RlZCI7Ci0g
ICAgY2FzZSBOU0NvcnJlY3Rpb25SZXNwb25zZUlnbm9yZWQ6Ci0gICAgICAgIHJldHVybiAiaWdu
b3JlZCI7Ci0gICAgY2FzZSBOU0NvcnJlY3Rpb25SZXNwb25zZUVkaXRlZDoKLSAgICAgICAgcmV0
dXJuICJlZGl0ZWQiOwotICAgIGNhc2UgTlNDb3JyZWN0aW9uUmVzcG9uc2VSZXZlcnRlZDoKLSAg
ICAgICAgcmV0dXJuICJyZXZlcnRlZCI7Ci0gICAgfQotCi0gICAgcmV0dXJuICJpbnZhbGlkIjsK
LX0KLQotc3RhdGljIHZvaWQgZHJ0X05TU3BlbGxDaGVja2VyX3JlY29yZFJlc3BvbnNlVG9Db3Jy
ZWN0aW9uKGlkIHNlbGYsIFNFTCBfY21kLCBOU0NvcnJlY3Rpb25SZXNwb25zZSByZXNwb25zZSwg
TlNTdHJpbmcgKmNvcnJlY3Rpb24sIE5TU3RyaW5nICp3b3JkLCBOU1N0cmluZyAqbGFuZ3VhZ2Us
IE5TSW50ZWdlciBzcGVsbERvY3VtZW50VGFnKQotewotICAgIGlmIChzcGVsbENoZWNrZXJMb2dn
aW5nRW5hYmxlZCkKLSAgICAgICAgcHJpbnRmKCJOU1NwZWxsQ2hlY2tlciByZWNvcmRSZXNwb25z
ZVRvQ29ycmVjdGlvbjogJXMgLT4gJXMgKHJlc3BvbnNlOiAlcylcbiIsIFt3b3JkIFVURjhTdHJp
bmddLCBbY29ycmVjdGlvbiBVVEY4U3RyaW5nXSwgc3RyaW5nRm9yQ29ycmVjdGlvblJlc3BvbnNl
KHJlc3BvbnNlKSk7Ci0KLSAgICB3dGZDYWxsSU1QPHZvaWQsIE5TQ29ycmVjdGlvblJlc3BvbnNl
LCBOU1N0cmluZyAqLCBOU1N0cmluZyAqLCBOU1N0cmluZyAqLCBOU0ludGVnZXI+KGFwcEtpdFJl
Y29yZFJlc3BvbnNlSU1QLCBzZWxmLCBfY21kLCByZXNwb25zZSwgY29ycmVjdGlvbiwgd29yZCwg
bGFuZ3VhZ2UsIHNwZWxsRG9jdW1lbnRUYWcpOwotfQotCi1zdGF0aWMgdm9pZCBzd2l6emxlTlNT
cGVsbENoZWNrZXJNZXRob2RzSWZOZWVkZWQoKQotewotICAgIHN0YXRpYyBib29sIGhhc1N3aXp6
bGVkOwotICAgIGlmIChoYXNTd2l6emxlZCkKLSAgICAgICAgcmV0dXJuOwotICAgIGhhc1N3aXp6
bGVkID0gdHJ1ZTsKLQotICAgIE1ldGhvZCByZWNvcmRSZXNwb25zZU1ldGhvZCA9IGNsYXNzX2dl
dEluc3RhbmNlTWV0aG9kKG9iamNfZ2V0Q2xhc3MoIk5TU3BlbGxDaGVja2VyIiksIEBzZWxlY3Rv
cihyZWNvcmRSZXNwb25zZTp0b0NvcnJlY3Rpb246Zm9yV29yZDpsYW5ndWFnZTppblNwZWxsRG9j
dW1lbnRXaXRoVGFnOikpOwotCi0gICAgYXBwS2l0UmVjb3JkUmVzcG9uc2VJTVAgPSBtZXRob2Rf
c2V0SW1wbGVtZW50YXRpb24ocmVjb3JkUmVzcG9uc2VNZXRob2QsIChJTVApZHJ0X05TU3BlbGxD
aGVja2VyX3JlY29yZFJlc3BvbnNlVG9Db3JyZWN0aW9uKTsKLX0KLQotdm9pZCBzZXRTcGVsbENo
ZWNrZXJMb2dnaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCi17Ci0gICAgc3dpenpsZU5TU3BlbGxD
aGVja2VyTWV0aG9kc0lmTmVlZGVkKCk7Ci0KLSAgICBzcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxl
ZCA9IGVuYWJsZWQ7Ci19Ci0KLSNlbHNlIC8vIFBMQVRGT1JNKE1BQykKLQotdm9pZCBzZXRTcGVs
bENoZWNrZXJMb2dnaW5nRW5hYmxlZChib29sKQotewotfQotCi0jZW5kaWYgLy8gUExBVEZPUk0o
TUFDKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMu
bW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQppbmRleCA2ZTAy
ZmYwM2EyMzkyODEzMjRmNGZhYTJlNWYxYTdkYzUxZjE4Njk0Li5kYzMzMmFlNTM5YzJkZTE3N2Yx
NDBjMDZkZDNmMTlkZDYwMDcyZTdhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvVGVzdFJ1bm5lck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1
bm5lck1hYy5tbQpAQCAtMzEsOCArMzEsOCBAQAogI2ltcG9ydCAiVGVzdFJ1bm5lci5oIgogCiAj
aW1wb3J0ICJEZWZhdWx0UG9saWN5RGVsZWdhdGUuaCIKLSNpbXBvcnQgIkR1bXBSZW5kZXJUcmVl
U3BlbGxDaGVja2VyLmgiCiAjaW1wb3J0ICJFZGl0aW5nRGVsZWdhdGUuaCIKKyNpbXBvcnQgIkxh
eW91dFRlc3RTcGVsbENoZWNrZXIuaCIKICNpbXBvcnQgIk1vY2tHZW9sb2NhdGlvblByb3ZpZGVy
LmgiCiAjaW1wb3J0ICJNb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaCIKICNpbXBvcnQgIlBv
bGljeURlbGVnYXRlLmgiCkBAIC0yMTIsNyArMjEyLDIxIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0
U3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkKIAogdm9pZCBUZXN0
UnVubmVyOjpzZXRTcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiB7Ci0g
ICAgOjpzZXRTcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZChlbmFibGVkKTsKKyNpZiBQTEFURk9S
TShNQUMpCisgICAgW0xheW91dFRlc3RTcGVsbENoZWNrZXIgY2hlY2tlcl0uc3BlbGxDaGVja2Vy
TG9nZ2luZ0VuYWJsZWQgPSBlbmFibGVkOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZW5hYmxl
ZCk7CisjZW5kaWYKK30KKwordm9pZCBUZXN0UnVubmVyOjpzZXRTcGVsbENoZWNrZXJUZXh0UmVw
bGFjZW1lbnRzKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiByZXBsYWNlbWVudHMp
Cit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIFtbTGF5b3V0VGVzdFNwZWxsQ2hlY2tlciBjaGVj
a2VyXSBzZXRSZXBsYWNlbWVudHNGcm9tSlNPYmplY3Q6cmVwbGFjZW1lbnRzIGluQ29udGV4dDpj
b250ZXh0XTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJlcGxhY2VtZW50cyk7CisgICAgVU5V
U0VEX1BBUkFNKGNvbnRleHQpOworI2VuZGlmCiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6Y2xvc2VJ
ZGxlTG9jYWxTdG9yYWdlRGF0YWJhc2VzKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0
UnVubmVyV2luLmNwcAppbmRleCA2OWMzNTE0MjE1YTA3ZTI3YzFjZjM0N2E2NDUwMjVmMDBhMTAw
NjlmLi43ODAzMzMxMTZhYWQwZDU5MzlmODc0NmY4MDJlMjc4NTZkYjlkYmEyIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCkBAIC0xNDA2LDMgKzE0MDYsOCBA
QCB2b2lkIFRlc3RSdW5uZXI6OnNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKGJvb2wgZW5h
YmxlZCkKIHsKICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICJFUlJPUjogVGVzdFJ1bm5lcjo6c2V0
U3BlbGxDaGVja2VyTG9nZ2luZ0VuYWJsZWQoKSBub3QgaW1wbGVtZW50ZWRcbiIpOwogfQorCit2
b2lkIFRlc3RSdW5uZXI6OnNldFNwZWxsQ2hlY2tlclRleHRSZXBsYWNlbWVudHMoSlNDb250ZXh0
UmVmLCBKU09iamVjdFJlZikKK3sKKyAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICJFUlJPUjogVGVz
dFJ1bm5lcjo6c2V0U3BlbGxDaGVja2VyVGV4dFJlcGxhY2VtZW50cygpIG5vdCBpbXBsZW1lbnRl
ZFxuIik7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL0xheW91
dFRlc3RTcGVsbENoZWNrZXIuaCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0
VGVzdFNwZWxsQ2hlY2tlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwN2NlN2ZlMmM3MTUyODE1MzQxOGYwMDdk
YWQ3ZGU2NDRhMzFlOWEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVk
L2NvY29hL0xheW91dFRlc3RTcGVsbENoZWNrZXIuaApAQCAtMCwwICsxLDUxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBQTEFURk9STShNQUMpCisK
KyNpbXBvcnQgPEFwcEtpdC9OU1NwZWxsQ2hlY2tlci5oPgorCitAY2xhc3MgTGF5b3V0VGVzdFRl
eHRDaGVja2luZ1Jlc3VsdDsKKworQGludGVyZmFjZSBMYXlvdXRUZXN0U3BlbGxDaGVja2VyIDog
TlNTcGVsbENoZWNrZXIgeworQHByaXZhdGUKKyAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PE5T
U3RyaW5nICosIExheW91dFRlc3RUZXh0Q2hlY2tpbmdSZXN1bHQgKj4+IF9yZXBsYWNlbWVudHM7
CisgICAgQk9PTCBfc3BlbGxDaGVja2VyTG9nZ2luZ0VuYWJsZWQ7Cit9CisKKysgKGluc3RhbmNl
dHlwZSljaGVja2VyOworKyAodm9pZCl1bmluc3RhbGxBbmRSZXNldDsKKworLSAodm9pZClzZXRS
ZXBsYWNlbWVudHNGcm9tSlNPYmplY3Q6KEpTT2JqZWN0UmVmKXJlcGxhY2VtZW50cyBpbkNvbnRl
eHQ6KEpTQ29udGV4dFJlZiljb250ZXh0OworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5T
RGljdGlvbmFyeTxOU1N0cmluZyAqLCBMYXlvdXRUZXN0VGV4dENoZWNraW5nUmVzdWx0ICo+ICpy
ZXBsYWNlbWVudHM7CitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBzcGVsbENoZWNrZXJMb2dn
aW5nRW5hYmxlZDsKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbSBi
L1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zNWY4NjViOGE5NTRkNTJlMzg2MWNjNjE2M2NhOWU2MzA5MzIwNjRhCi0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3Bl
bGxDaGVja2VyLm1tCkBAIC0wLDAgKzEsMjQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJMYXlvdXRUZXN0U3BlbGxDaGVja2VyLmgiCisKKyNpbXBvcnQgPEph
dmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CisjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNp
bXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisKKyNpZiBQTEFURk9STShNQUMpCisKK3N0YXRpYyBM
YXlvdXRUZXN0U3BlbGxDaGVja2VyICpnbG9iYWxTcGVsbENoZWNrZXIgPSBuaWw7CitzdGF0aWMg
Qk9PTCBoYXNTd2l6emxlZExheW91dFRlc3RTcGVsbENoZWNrZXIgPSBOTzsKK3N0YXRpYyBJTVAg
Z2xvYmFsbHlTd2l6emxlZFNoYXJlZFNwZWxsQ2hlY2tlckltcGxlbWVudGF0aW9uOworc3RhdGlj
IE1ldGhvZCBvcmlnaW5hbFNoYXJlZFNwZWxsQ2hlY2tlck1ldGhvZDsKKworc3RhdGljIExheW91
dFRlc3RTcGVsbENoZWNrZXIgKmVuc3VyZUdsb2JhbExheW91dFRlc3RTcGVsbENoZWNrZXIoKQor
eworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIGRpc3BhdGNoX29u
Y2UoJm9uY2VUb2tlbiwgXnsKKyAgICAgICAgZ2xvYmFsU3BlbGxDaGVja2VyID0gW1tMYXlvdXRU
ZXN0U3BlbGxDaGVja2VyIGFsbG9jXSBpbml0XTsKKyAgICB9KTsKKyAgICByZXR1cm4gZ2xvYmFs
U3BlbGxDaGVja2VyOworfQorCitzdGF0aWMgY29uc3QgY2hhciAqc3RyaW5nRm9yQ29ycmVjdGlv
blJlc3BvbnNlKE5TQ29ycmVjdGlvblJlc3BvbnNlIGNvcnJlY3Rpb25SZXNwb25zZSkKK3sKKyAg
ICBzd2l0Y2ggKGNvcnJlY3Rpb25SZXNwb25zZSkgeworICAgIGNhc2UgTlNDb3JyZWN0aW9uUmVz
cG9uc2VOb25lOgorICAgICAgICByZXR1cm4gIm5vbmUiOworICAgIGNhc2UgTlNDb3JyZWN0aW9u
UmVzcG9uc2VBY2NlcHRlZDoKKyAgICAgICAgcmV0dXJuICJhY2NlcHRlZCI7CisgICAgY2FzZSBO
U0NvcnJlY3Rpb25SZXNwb25zZVJlamVjdGVkOgorICAgICAgICByZXR1cm4gInJlamVjdGVkIjsK
KyAgICBjYXNlIE5TQ29ycmVjdGlvblJlc3BvbnNlSWdub3JlZDoKKyAgICAgICAgcmV0dXJuICJp
Z25vcmVkIjsKKyAgICBjYXNlIE5TQ29ycmVjdGlvblJlc3BvbnNlRWRpdGVkOgorICAgICAgICBy
ZXR1cm4gImVkaXRlZCI7CisgICAgY2FzZSBOU0NvcnJlY3Rpb25SZXNwb25zZVJldmVydGVkOgor
ICAgICAgICByZXR1cm4gInJldmVydGVkIjsKKyAgICB9CisgICAgcmV0dXJuICJpbnZhbGlkIjsK
K30KKworc3RhdGljIE5TVGV4dENoZWNraW5nVHlwZSBuc1RleHRDaGVja2luZ1R5cGUoSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+JiYganNUeXBlKQoreworICAgIGF1dG8gY2ZUeXBlID0gYWRvcHRD
RihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc1R5cGUuZ2V0KCkp
KTsKKyAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGNmVHlwZS5nZXQoKSwgQ0ZTVFIoIm9ydGhvZ3Jh
cGh5IiksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUpID09IGtDRkNvbXBhcmVFcXVhbFRvKQor
ICAgICAgICByZXR1cm4gTlNUZXh0Q2hlY2tpbmdUeXBlT3J0aG9ncmFwaHk7CisKKyAgICBpZiAo
Q0ZTdHJpbmdDb21wYXJlKGNmVHlwZS5nZXQoKSwgQ0ZTVFIoInNwZWxsaW5nIiksIGtDRkNvbXBh
cmVDYXNlSW5zZW5zaXRpdmUpID09IGtDRkNvbXBhcmVFcXVhbFRvKQorICAgICAgICByZXR1cm4g
TlNUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7CisKKyAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGNm
VHlwZS5nZXQoKSwgQ0ZTVFIoImdyYW1tYXIiKSwga0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkg
PT0ga0NGQ29tcGFyZUVxdWFsVG8pCisgICAgICAgIHJldHVybiBOU1RleHRDaGVja2luZ1R5cGVH
cmFtbWFyOworCisgICAgaWYgKENGU3RyaW5nQ29tcGFyZShjZlR5cGUuZ2V0KCksIENGU1RSKCJk
YXRlIiksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUpID09IGtDRkNvbXBhcmVFcXVhbFRvKQor
ICAgICAgICByZXR1cm4gTlNUZXh0Q2hlY2tpbmdUeXBlRGF0ZTsKKworICAgIGlmIChDRlN0cmlu
Z0NvbXBhcmUoY2ZUeXBlLmdldCgpLCBDRlNUUigiYWRkcmVzcyIpLCBrQ0ZDb21wYXJlQ2FzZUlu
c2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKKyAgICAgICAgcmV0dXJuIE5TVGV4dENo
ZWNraW5nVHlwZUFkZHJlc3M7CisKKyAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGNmVHlwZS5nZXQo
KSwgQ0ZTVFIoImxpbmsiKSwga0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgPT0ga0NGQ29tcGFy
ZUVxdWFsVG8pCisgICAgICAgIHJldHVybiBOU1RleHRDaGVja2luZ1R5cGVMaW5rOworCisgICAg
aWYgKENGU3RyaW5nQ29tcGFyZShjZlR5cGUuZ2V0KCksIENGU1RSKCJxdW90ZSIpLCBrQ0ZDb21w
YXJlQ2FzZUluc2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKKyAgICAgICAgcmV0dXJu
IE5TVGV4dENoZWNraW5nVHlwZVF1b3RlOworCisgICAgaWYgKENGU3RyaW5nQ29tcGFyZShjZlR5
cGUuZ2V0KCksIENGU1RSKCJkYXNoIiksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUpID09IGtD
RkNvbXBhcmVFcXVhbFRvKQorICAgICAgICByZXR1cm4gTlNUZXh0Q2hlY2tpbmdUeXBlRGFzaDsK
KworICAgIGlmIChDRlN0cmluZ0NvbXBhcmUoY2ZUeXBlLmdldCgpLCBDRlNUUigicmVwbGFjZW1l
bnQiKSwga0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pCisg
ICAgICAgIHJldHVybiBOU1RleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudDsKKworICAgIGlmIChD
RlN0cmluZ0NvbXBhcmUoY2ZUeXBlLmdldCgpLCBDRlNUUigiY29ycmVjdGlvbiIpLCBrQ0ZDb21w
YXJlQ2FzZUluc2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKKyAgICAgICAgcmV0dXJu
IE5TVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb247CisKKyAgICBpZiAoQ0ZTdHJpbmdDb21wYXJl
KGNmVHlwZS5nZXQoKSwgQ0ZTVFIoInJlZ3VsYXItZXhwcmVzc2lvbiIpLCBrQ0ZDb21wYXJlQ2Fz
ZUluc2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKKyAgICAgICAgcmV0dXJuIE5TVGV4
dENoZWNraW5nVHlwZVJlZ3VsYXJFeHByZXNzaW9uOworCisgICAgaWYgKENGU3RyaW5nQ29tcGFy
ZShjZlR5cGUuZ2V0KCksIENGU1RSKCJwaG9uZS1udW1iZXIiKSwga0NGQ29tcGFyZUNhc2VJbnNl
bnNpdGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pCisgICAgICAgIHJldHVybiBOU1RleHRDaGVj
a2luZ1R5cGVQaG9uZU51bWJlcjsKKworICAgIGlmIChDRlN0cmluZ0NvbXBhcmUoY2ZUeXBlLmdl
dCgpLCBDRlNUUigidHJhbnNpdC1pbmZvcm1hdGlvbiIpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0
aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKKyAgICAgICAgcmV0dXJuIE5TVGV4dENoZWNraW5n
VHlwZVRyYW5zaXRJbmZvcm1hdGlvbjsKKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBOU1RleHRDaGVja2luZ1R5cGVTcGVsbGluZzsKK30KKworQGludGVyZmFjZSBMYXlv
dXRUZXN0VGV4dENoZWNraW5nUmVzdWx0IDogTlNUZXh0Q2hlY2tpbmdSZXN1bHQgeworQHByaXZh
dGUKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9yZXBsYWNlbWVudDsKKyAgICBOU1RleHRDaGVj
a2luZ1R5cGUgX3R5cGU7CisgICAgTlNSYW5nZSBfcmFuZ2U7Cit9CisKKy0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aFR5cGU6KE5TVGV4dENoZWNraW5nVHlwZSl0eXBlIHJhbmdlOihOU1JhbmdlKXJh
bmdlIHJlcGxhY2VtZW50OihOU1N0cmluZyAqKXJlcGxhY2VtZW50OworQGVuZAorCitAaW1wbGVt
ZW50YXRpb24gTGF5b3V0VGVzdFRleHRDaGVja2luZ1Jlc3VsdAorCistIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhUeXBlOihOU1RleHRDaGVja2luZ1R5cGUpdHlwZSByYW5nZTooTlNSYW5nZSlyYW5n
ZSByZXBsYWNlbWVudDooTlNTdHJpbmcgKilyZXBsYWNlbWVudAoreworICAgIGlmICghKHNlbGYg
PSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX3R5cGUgPSB0eXBl
OworICAgIF9yYW5nZSA9IHJhbmdlOworICAgIF9yZXBsYWNlbWVudCA9IHJlcGxhY2VtZW50Owor
CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKE5TUmFuZ2UpcmFuZ2UKK3sKKyAgICByZXR1cm4g
X3JhbmdlOworfQorCistIChOU1RleHRDaGVja2luZ1R5cGUpcmVzdWx0VHlwZQoreworICAgIHJl
dHVybiBfdHlwZTsKK30KKworLSAoTlNTdHJpbmcgKilyZXBsYWNlbWVudFN0cmluZworeworICAg
IHJldHVybiBfcmVwbGFjZW1lbnQuZ2V0KCk7Cit9CisKKy0gKE5TU3RyaW5nICopZGVzY3JpcHRp
b24KK3sKKyAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUAgJXAgdHlw
ZT0ldHUgcmFuZ2U9WyV0dSwgJXR1XSByZXBsYWNlbWVudD0nJUAnPiIsIHNlbGYuY2xhc3MsIHNl
bGYsIF90eXBlLCBfcmFuZ2UubG9jYXRpb24sIF9yYW5nZS5sb2NhdGlvbiArIF9yYW5nZS5sZW5n
dGgsIF9yZXBsYWNlbWVudC5nZXQoKV07Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIExh
eW91dFRlc3RTcGVsbENoZWNrZXIKKworQHN5bnRoZXNpemUgc3BlbGxDaGVja2VyTG9nZ2luZ0Vu
YWJsZWQ9X3NwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkOworCisrIChpbnN0YW5jZXR5cGUpY2hl
Y2tlcgoreworICAgIGF1dG8gKnNwZWxsQ2hlY2tlciA9IGVuc3VyZUdsb2JhbExheW91dFRlc3RT
cGVsbENoZWNrZXIoKTsKKyAgICBpZiAoaGFzU3dpenpsZWRMYXlvdXRUZXN0U3BlbGxDaGVja2Vy
KQorICAgICAgICByZXR1cm4gc3BlbGxDaGVja2VyOworCisgICAgb3JpZ2luYWxTaGFyZWRTcGVs
bENoZWNrZXJNZXRob2QgPSBjbGFzc19nZXRDbGFzc01ldGhvZChvYmpjX2dldE1ldGFDbGFzcygi
TlNTcGVsbENoZWNrZXIiKSwgQHNlbGVjdG9yKHNoYXJlZFNwZWxsQ2hlY2tlcikpOworICAgIGds
b2JhbGx5U3dpenpsZWRTaGFyZWRTcGVsbENoZWNrZXJJbXBsZW1lbnRhdGlvbiA9IG1ldGhvZF9z
ZXRJbXBsZW1lbnRhdGlvbihvcmlnaW5hbFNoYXJlZFNwZWxsQ2hlY2tlck1ldGhvZCwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KGVuc3VyZUdsb2JhbExheW91dFRlc3RTcGVsbENoZWNrZXIpKTsKKyAg
ICBoYXNTd2l6emxlZExheW91dFRlc3RTcGVsbENoZWNrZXIgPSBZRVM7CisgICAgcmV0dXJuIHNw
ZWxsQ2hlY2tlcjsKK30KKworKyAodm9pZCl1bmluc3RhbGxBbmRSZXNldAoreworICAgIFtnbG9i
YWxTcGVsbENoZWNrZXIgcmVzZXRdOworICAgIGlmICghaGFzU3dpenpsZWRMYXlvdXRUZXN0U3Bl
bGxDaGVja2VyKQorICAgICAgICByZXR1cm47CisKKyAgICBtZXRob2Rfc2V0SW1wbGVtZW50YXRp
b24ob3JpZ2luYWxTaGFyZWRTcGVsbENoZWNrZXJNZXRob2QsIGdsb2JhbGx5U3dpenpsZWRTaGFy
ZWRTcGVsbENoZWNrZXJJbXBsZW1lbnRhdGlvbik7CisgICAgaGFzU3dpenpsZWRMYXlvdXRUZXN0
U3BlbGxDaGVja2VyID0gTk87Cit9CisKKy0gKHZvaWQpcmVzZXQKK3sKKyAgICBzZWxmLnJlcGxh
Y2VtZW50cyA9IG5pbDsKKyAgICBzZWxmLnNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkID0gTk87
Cit9CisKKy0gKE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBMYXlvdXRUZXN0VGV4dENoZWNraW5n
UmVzdWx0ICo+ICopcmVwbGFjZW1lbnRzCit7CisgICAgcmV0dXJuIF9yZXBsYWNlbWVudHMuZ2V0
KCk7Cit9CisKKy0gKHZvaWQpc2V0UmVwbGFjZW1lbnRzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcg
KiwgTGF5b3V0VGVzdFRleHRDaGVja2luZ1Jlc3VsdCAqPiAqKXJlcGxhY2VtZW50cworeworICAg
IF9yZXBsYWNlbWVudHMgPSBhZG9wdE5TKHJlcGxhY2VtZW50cy5jb3B5KTsKK30KKworLSAodm9p
ZClzZXRSZXBsYWNlbWVudHNGcm9tSlNPYmplY3Q6KEpTT2JqZWN0UmVmKXJlcGxhY2VtZW50cyBp
bkNvbnRleHQ6KEpTQ29udGV4dFJlZiljb250ZXh0Cit7CisgICAgYXV0byBmcm9tUHJvcGVydHlO
YW1lID0gYWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImZyb20iKSk7CisgICAg
YXV0byB0b1Byb3BlcnR5TmFtZSA9IGFkb3B0KEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJ0byIpKTsKKyAgICBhdXRvIHR5cGVQcm9wZXJ0eU5hbWUgPSBhZG9wdChKU1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygidHlwZSIpKTsKKyAgICBhdXRvIHJlcGxhY2VtZW50UHJvcGVydHlO
YW1lID0gYWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInJlcGxhY2VtZW50Iikp
OworICAgIGF1dG8gcHJvcGVydGllcyA9IEpTT2JqZWN0Q29weVByb3BlcnR5TmFtZXMoY29udGV4
dCwgcmVwbGFjZW1lbnRzKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMoW1tOU011dGFibGVE
aWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRl
eCA8IEpTUHJvcGVydHlOYW1lQXJyYXlHZXRDb3VudChwcm9wZXJ0aWVzKTsgKytpbmRleCkgewor
ICAgICAgICBKU1N0cmluZ1JlZiB3b3JkVG9SZXBsYWNlID0gSlNQcm9wZXJ0eU5hbWVBcnJheUdl
dE5hbWVBdEluZGV4KHByb3BlcnRpZXMsIGluZGV4KTsKKyAgICAgICAgSlNPYmplY3RSZWYgcmVw
bGFjZW1lbnQgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgSlNPYmplY3RHZXRQcm9wZXJ0eShj
b250ZXh0LCByZXBsYWNlbWVudHMsIHdvcmRUb1JlcGxhY2UsIG51bGxwdHIpLCBudWxscHRyKTsK
KyAgICAgICAgbG9uZyBmcm9tVmFsdWUgPSBscm91bmRsKEpTVmFsdWVUb051bWJlcihjb250ZXh0
LCBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIHJlcGxhY2VtZW50LCBmcm9tUHJvcGVydHlO
YW1lLmdldCgpLCBudWxscHRyKSwgbnVsbHB0cikpOworICAgICAgICBsb25nIHRvVmFsdWUgPSBs
cm91bmRsKEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBKU09iamVjdEdldFByb3BlcnR5KGNvbnRl
eHQsIHJlcGxhY2VtZW50LCB0b1Byb3BlcnR5TmFtZS5nZXQoKSwgbnVsbHB0ciksIG51bGxwdHIp
KTsKKyAgICAgICAgYXV0byB0eXBlVmFsdWUgPSBhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KGNv
bnRleHQsIEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgcmVwbGFjZW1lbnQsIHR5cGVQcm9w
ZXJ0eU5hbWUuZ2V0KCksIG51bGxwdHIpLCBudWxscHRyKSk7CisgICAgICAgIGF1dG8gcmVwbGFj
ZW1lbnRWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgcmVwbGFjZW1lbnQsIHJl
cGxhY2VtZW50UHJvcGVydHlOYW1lLmdldCgpLCBudWxscHRyKTsKKyAgICAgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiByZXBsYWNlbWVudFRleHQ7CisgICAgICAgIGlmICghSlNWYWx1ZUlzVW5k
ZWZpbmVkKGNvbnRleHQsIHJlcGxhY2VtZW50VmFsdWUpKSB7CisgICAgICAgICAgICBhdXRvIHJl
cGxhY2VtZW50SlNTdHJpbmcgPSBhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIHJl
cGxhY2VtZW50VmFsdWUsIG51bGxwdHIpKTsKKyAgICAgICAgICAgIHJlcGxhY2VtZW50VGV4dCA9
IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVwbGFj
ZW1lbnRKU1N0cmluZy5nZXQoKSkpOworICAgICAgICB9CisgICAgICAgIGF1dG8gc3BlbGxDaGVj
a1Jlc3VsdCA9IGFkb3B0TlMoW1tMYXlvdXRUZXN0VGV4dENoZWNraW5nUmVzdWx0IGFsbG9jXSBp
bml0V2l0aFR5cGU6bnNUZXh0Q2hlY2tpbmdUeXBlKFdURk1vdmUodHlwZVZhbHVlKSkgcmFuZ2U6
TlNNYWtlUmFuZ2UoZnJvbVZhbHVlLCB0b1ZhbHVlIC0gZnJvbVZhbHVlKSByZXBsYWNlbWVudDoo
TlNTdHJpbmcgKilyZXBsYWNlbWVudFRleHQuZ2V0KCldKTsKKyAgICAgICAgYXV0byBjZldvcmRU
b1JlcGxhY2UgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1
bHQsIHdvcmRUb1JlcGxhY2UpKTsKKyAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6c3BlbGxDaGVj
a1Jlc3VsdC5nZXQoKSBmb3JLZXk6KE5TU3RyaW5nICopY2ZXb3JkVG9SZXBsYWNlLmdldCgpXTsK
KyAgICB9CisgICAgSlNQcm9wZXJ0eU5hbWVBcnJheVJlbGVhc2UocHJvcGVydGllcyk7CisKKyAg
ICBfcmVwbGFjZW1lbnRzID0gV1RGTW92ZShyZXN1bHQpOworfQorCistIChOU0FycmF5PE5TVGV4
dENoZWNraW5nUmVzdWx0ICo+ICopY2hlY2tTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nVG9DaGVj
ayByYW5nZTooTlNSYW5nZSlyYW5nZSB0eXBlczooTlNUZXh0Q2hlY2tpbmdUeXBlcyljaGVja2lu
Z1R5cGVzIG9wdGlvbnM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilvcHRpb25zIGlu
U3BlbGxEb2N1bWVudFdpdGhUYWc6KE5TSW50ZWdlcil0YWcgb3J0aG9ncmFwaHk6KE5TT3J0aG9n
cmFwaHkgKiopb3J0aG9ncmFwaHkgd29yZENvdW50OihOU0ludGVnZXIgKil3b3JkQ291bnQKK3sK
KyAgICBpZiAoYXV0byAqcmVzdWx0ID0gW19yZXBsYWNlbWVudHMgb2JqZWN0Rm9yS2V5OnN0cmlu
Z1RvQ2hlY2tdKQorICAgICAgICByZXR1cm4gQFsgcmVzdWx0IF07CisKKyAgICByZXR1cm4gW3N1
cGVyIGNoZWNrU3RyaW5nOnN0cmluZ1RvQ2hlY2sgcmFuZ2U6cmFuZ2UgdHlwZXM6Y2hlY2tpbmdU
eXBlcyBvcHRpb25zOm9wdGlvbnMgaW5TcGVsbERvY3VtZW50V2l0aFRhZzp0YWcgb3J0aG9ncmFw
aHk6b3J0aG9ncmFwaHkgd29yZENvdW50OndvcmRDb3VudF07Cit9CisKKy0gKHZvaWQpcmVjb3Jk
UmVzcG9uc2U6KE5TQ29ycmVjdGlvblJlc3BvbnNlKXJlc3BvbnNlIHRvQ29ycmVjdGlvbjooTlNT
dHJpbmcgKiljb3JyZWN0aW9uIGZvcldvcmQ6KE5TU3RyaW5nICopd29yZCBsYW5ndWFnZTooTlNT
dHJpbmcgKilsYW5ndWFnZSBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOihOU0ludGVnZXIpdGFnCit7
CisgICAgaWYgKF9zcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZCkKKyAgICAgICAgcHJpbnRmKCJO
U1NwZWxsQ2hlY2tlciByZWNvcmRSZXNwb25zZVRvQ29ycmVjdGlvbjogJXMgLT4gJXMgKHJlc3Bv
bnNlOiAlcylcbiIsIFt3b3JkIFVURjhTdHJpbmddLCBbY29ycmVjdGlvbiBVVEY4U3RyaW5nXSwg
c3RyaW5nRm9yQ29ycmVjdGlvblJlc3BvbnNlKHJlc3BvbnNlKSk7CisKKyAgICBbc3VwZXIgcmVj
b3JkUmVzcG9uc2U6cmVzcG9uc2UgdG9Db3JyZWN0aW9uOmNvcnJlY3Rpb24gZm9yV29yZDp3b3Jk
IGxhbmd1YWdlOmxhbmd1YWdlIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6dGFnXTsKK30KKworQGVu
ZAorCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA4YmJhMTBkYjZhNWNkZjJmM2UyZTAzNGNjNGM0ZTk0Mzg4YWVjMDViLi4xOTQw
ZjViZTUzOWE1MDI4ZWQ3NDk4OTg3YmIyMzEzMTQ2ODAzYzYwIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTMzLDYgKzEzMyw3IEBACiAJCUUxMzJBQTNEMTdDRTc3NkYw
MDYxMURGMCAvKiBXZWJLaXRUZXN0UnVubmVyRXZlbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTMyQUEzQjE3Q0U3NzZGMDA2MTFERjAgLyogV2Vi
S2l0VGVzdFJ1bm5lckV2ZW50Lm1tICovOyB9OwogCQlFMUM2NDJDMzE3Q0JDQzczMDBENjZBM0Mg
LyogUG9zZUFzQ2xhc3MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMUM2NDJDMTE3Q0JDQzczMDBENjZBM0MgLyogUG9zZUFzQ2xhc3MubW0gKi87IH07
CiAJCUUxQzY0MkM2MTdDQkNENEMwMEQ2NkEzQyAvKiBXZWJLaXRUZXN0UnVubmVyUGFzdGVib2Fy
ZC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQzY0
MkM0MTdDQkNENEMwMEQ2NkEzQyAvKiBXZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZC5tbSAqLzsg
fTsKKwkJRjRDMzU3OEMyMEU4NDQ0NjAwRkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEMzNTc4
QTIwRTg0NDQwMDBGQTA3NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbSAqLzsgfTsKIC8q
IEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVt
UHJveHkgc2VjdGlvbiAqLwpAQCAtMzcyLDYgKzM3Myw4IEBACiAJCUUxQzY0MkMyMTdDQkNDNzMw
MEQ2NkEzQyAvKiBQb3NlQXNDbGFzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQb3NlQXNDbGFzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUM2NDJDNDE3
Q0JDRDRDMDBENjZBM0MgLyogV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJLaXRUZXN0UnVubmVyUGFzdGVib2Fy
ZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFDNjQyQzUxN0NCQ0Q0QzAwRDY2
QTNDIC8qIFdlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUY0QzM1NzhBMjBFODQ0NDAwMEZBMDc0OCAvKiBMYXlvdXRUZXN0U3Bl
bGxDaGVja2VyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gTGF5
b3V0VGVzdFNwZWxsQ2hlY2tlci5tbTsgcGF0aCA9IC4uL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2Ev
TGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RjRDMzU3OEIyMEU4NDQ0MDAwRkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5oOyBw
YXRoID0gLi4vVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0
aW9uICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAg
LTQ3OSw2ICs0ODIsNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJ
CQkwRjE4RTcxQjFENkJDNEU2MDAyN0U1NDcgLyogQmluZGluZ3MgKi8sCisJCQkJRjRCNkMzMTYy
MEU4NDM2OTAwOEFDMjI1IC8qIGNvY29hICovLAogCQkJCTBGNzNCNTQ3MUJBNzgyRkUwMDRCM0VG
NCAvKiBVSVNjcmlwdENvbnRleHQgKi8sCiAJCQkJMzE0OEEwNTMxRTZGODVCNjAwRDNCMzE2IC8q
IElPU0xheW91dFRlc3RDb21tdW5pY2F0aW9uLmNwcCAqLywKIAkJCQkzMTQ4QTA1NDFFNkY4NUI2
MDBEM0IzMTYgLyogSU9TTGF5b3V0VGVzdENvbW11bmljYXRpb24uaCAqLywKQEAgLTgyMiw2ICs4
MjYsMTUgQEAKIAkJCW5hbWUgPSBTaGFyZWQ7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwog
CQl9OworCQlGNEI2QzMxNjIwRTg0MzY5MDA4QUMyMjUgLyogY29jb2EgKi8gPSB7CisJCQlpc2Eg
PSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUY0QzM1NzhCMjBFODQ0NDAwMEZBMDc0
OCAvKiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLmggKi8sCisJCQkJRjRDMzU3OEEyMEU4NDQ0MDAw
RkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIubW0gKi8sCisJCQkpOworCQkJbmFtZSA9
IGNvY29hOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIC8qIEVuZCBQQlhHcm91
cCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8K
QEAgLTEwNDYsNiArMTA1OSw3IEBACiAJCQkJMzFEQThBM0QxRTcyMDVDQzAwRTFERjJGIC8qIElP
U0xheW91dFRlc3RDb21tdW5pY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzNCNTUx
MUJBNzg5NjgwMDRCM0VGNCAvKiBKU1VJU2NyaXB0Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjE4RTcxODFENkJDNDU2MDAyN0U1NDcgLyogSlNXcmFwcGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUY0QzM1NzhDMjBFODQ0NDYwMEZBMDc0OCAvKiBMYXlvdXRUZXN0U3BlbGxD
aGVja2VyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE4NTEwM0MxQjlBRTBGRTAwNzQ0QUVCIC8q
IE9wdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE4NTEwNDAxQjlBRTEzMTAwNzQ0QUVC
IC8qIFBpeGVsRHVtcFN1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRGQTk4NDkxRDdG
NzBDRjAwQUZGMkM5IC8qIFNoYXJlZEV2ZW50U3RyZWFtc01hYy5tbSBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGYwN2M4NzljYzZmNmFhZGFiNDk2YTYzNWM3MjIxYmI2ZTQwOWRmMzguLjg5OGE4NTlj
ZTU2NmEyZTRlNzEyOGUyYzYzNDJjYWI0M2Q5NmQzMjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAor
MjAxOC0wNi0zMCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAg
ICAgICBbbWFjT1NdIFRleHQgcmVwbGFjZW1lbnRzIHRoYXQgZW5kIHdpdGggc3ltYm9scyBhcmUg
ZXhwYW5kZWQgaW1tZWRpYXRlbHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4NzIyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDExMTI0MzM+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkcyBhIGxheW91
dCB0ZXN0IHRvIGNoZWNrIHRoYXQgaWYgYSB1c2VyIGhhcyBjb25maWd1cmVkIGEgdGV4dCByZXBs
YWNlbWVudCB0aGF0IGVuZHMgd2l0aCBwdW5jdHVhdGlvbiwgdGhlbjoKKyAgICAgICAgMS4gVHlw
aW5nIHRoYXQgdGV4dCByZXBsYWNlbWVudCB3b24ndCBpbW1lZGlhdGVseSB0cmlnZ2VyIHJlcGxh
Y2VtZW50LgorICAgICAgICAyLiBUZXh0IHJlcGxhY2VtZW50IGlzIHRyaWdnZXJlZCBhZnRlciBw
cmVzc2luZyBlbnRlci4KKworICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvdGV4dC1yZXBsYWNl
bWVudC1hZnRlci10eXBpbmctdG8td29yZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGVkaXRpbmcvc3BlbGxpbmcvdGV4dC1yZXBsYWNlbWVudC1hZnRlci10eXBpbmctdG8td29yZC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9uczoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTgtMDYtMjkg
IEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViIEFuaW1h
dGlvbnNdIE1ha2UgV1BUIHRlc3QgYXQgdGltaW5nLW1vZGVsL3RpbWVsaW5lcy9kb2N1bWVudC10
aW1lbGluZXMuaHRtbCBwYXNzIHJlbGlhYmx5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NwZWxsaW5nL3RleHQtcmVwbGFjZW1lbnQtYWZ0ZXItdHlwaW5nLXRvLXdvcmQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy90ZXh0LXJlcGxhY2VtZW50LWFm
dGVyLXR5cGluZy10by13b3JkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODNlYjEwN2JmODE2
ODJlMjJkNjJhYThmMWJlZTJhMDRjOWI5ZmYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9zcGVsbGluZy90ZXh0LXJlcGxhY2VtZW50LWFmdGVyLXR5cGluZy10by13b3Jk
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK0JlZm9yZSBwcmVzc2luZyBlbnRlcjoKK1BB
U1MgZWRpdG9yLnRleHRDb250ZW50IGlzICdZVD8nCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK1lvdSB0aGVyZT8KKworCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3RleHQtcmVwbGFjZW1lbnQtYWZ0ZXItdHlwaW5nLXRv
LXdvcmQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvdGV4dC1yZXBsYWNlbWVu
dC1hZnRlci10eXBpbmctdG8td29yZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjOTQ5NWQ4NjYyZjA2ZmQ5
ZmYxN2MzNjA3NTJlNzQyZDMyOTJiZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3NwZWxsaW5nL3RleHQtcmVwbGFjZW1lbnQtYWZ0ZXItdHlwaW5nLXRvLXdvcmQuaHRt
bApAQCAtMCwwICsxLDYzIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZWRpdGlu
Zy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgoranNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1bmN0
aW9uIHplcm9EZWxheVRpbWVyKCkKK3sKKyAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9
PiBzZXRUaW1lb3V0KHJlc29sdmUsIDApKTsKK30KKworYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgp
Cit7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgaW50ZXJuYWxzLnNldHRp
bmdzLnNldFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQodHJ1ZSk7CisgICAgICAgIGludGVybmFs
cy5zZXR0aW5ncy5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChmYWxzZSk7Cisg
ICAgICAgIGludGVybmFscy5zZXRBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKHRydWUp
OworICAgICAgICBpbnRlcm5hbHMuc2V0QXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxl
ZCh0cnVlKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTcGVsbENoZWNrZXJUZXh0UmVwbGFjZW1l
bnRzKHsKKyAgICAgICAgICAgICJZVD8iOiB7CisgICAgICAgICAgICAgICAgInJlcGxhY2VtZW50
IjogIllvdSB0aGVyZT8iLAorICAgICAgICAgICAgICAgICJ0eXBlIjogInJlcGxhY2VtZW50IiwK
KyAgICAgICAgICAgICAgICAiZnJvbSI6IDAsCisgICAgICAgICAgICAgICAgInRvIjogMworICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICJZVD9cbiI6IHsKKyAgICAgICAgICAgICAgICAicmVw
bGFjZW1lbnQiOiAiWW91IHRoZXJlPyIsCisgICAgICAgICAgICAgICAgInR5cGUiOiAicmVwbGFj
ZW1lbnQiLAorICAgICAgICAgICAgICAgICJmcm9tIjogMCwKKyAgICAgICAgICAgICAgICAidG8i
OiAzCisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKworICAgIGNvbnN0IGVkaXRv
ciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlZGl0b3IiKTsKKyAgICBlZGl0b3IuZm9jdXMo
KTsKKyAgICBmb3IgKGNvbnN0IGNoYXJhY3RlciBvZiAiWVQ/IikKKyAgICAgICAgdHlwZUNoYXJh
Y3RlckNvbW1hbmQoY2hhcmFjdGVyKTsKKyAgICBhd2FpdCB6ZXJvRGVsYXlUaW1lcigpOworCisg
ICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICBkZXNjcmlwdGlvbi5pbm5lckhU
TUwgPSBgVG8gbWFudWFsbHkgdGVzdCwgYWRkIGFuIGF1dG9tYXRpYyB0ZXh0IHJlcGxhY2VtZW50
IG1hcHBpbmcgZnJvbSB0aGUgc3RyaW5nICJZVD8iIHRvCisgICAgICAgICJZb3UgdGhlcmU/Iiwg
YW5kIHRoZW4gdHlwZSB0aGUgc3RyaW5nICJZVD8iLiBJdCBzaG91bGQgbm90IGJlIGltbWVkaWF0
ZWx5IGNvcnJlY3RlZCB0byAiWW91IHRoZXJlPyIuCisgICAgICAgIEhvd2V2ZXIsIGVudGVyaW5n
IGEgbmV3bGluZSBzaG91bGQgc3Vic2VxdWVudGx5IHRyaWdnZXIgYXV0b2NvcnJlY3Rpb24uYDsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGRlYnVnKCJCZWZvcmUgcHJlc3NpbmcgZW50
ZXI6Iik7CisgICAgc2hvdWxkQmUoImVkaXRvci50ZXh0Q29udGVudCIsICInWVQ/JyIpOworICAg
IGluc2VydFBhcmFncmFwaENvbW1hbmQoKTsKKyAgICBhd2FpdCB6ZXJvRGVsYXlUaW1lcigpOwor
ICAgIGZpbmlzaEpTVGVzdCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9h
ZD0icnVuVGVzdCgpIj4KKyAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+CisgICAgPGRp
diBjb250ZW50ZWRpdGFibGUgc3R5bGU9Im1hcmdpbi1ib3R0b206IDFlbTsgYm9yZGVyOiAxcHgg
b3JhbmdlIGRhc2hlZDsiIGlkPSJlZGl0b3IiPjwvZGl2PgorICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggN2ZhYThkZDZh
MmNmMTM3NzNmNjVmMjc4MjU5YzAwNjQyYjNlZmU0ZC4uODA4ZGExMzllOWU2MDVhYzM5OTg2NWVi
YmM4MDJkODg4MmI0NWNmZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rl
c3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTExMCw2ICsxMTAsOSBAQCBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW1hcmtl
cnMtaW4tb3ZlcmxhcHBpbmctbGluZXMtbGFyZ2UtZm9udC5odG1sIFsgV29udEZpeAogZmFzdC93
cml0aW5nLW1vZGUvZW5nbGlzaC1idC10ZXh0LXdpdGgtc3BlbGxpbmctbWFya2VyLmh0bWwgWyBX
b250Rml4IF0KIGZhc3Qvd3JpdGluZy1tb2RlL2VuZ2xpc2gtcmwtdGV4dC13aXRoLXNwZWxsaW5n
LW1hcmtlci5odG1sIFsgV29udEZpeCBdCiAKKyMgUmVxdWlyZXMgc3VwcG9ydCBmb3IgdGVzdGlu
ZyB0ZXh0IHJlcGxhY2VtZW50CitlZGl0aW5nL3NwZWxsaW5nL3RleHQtcmVwbGFjZW1lbnQtYWZ0
ZXItdHlwaW5nLXRvLXdvcmQuaHRtbCBbIFNraXAgXQorCiAjIFVJS2l0IGRyYXdzIHNlbGVjdGlv
biBvbiBpT1MKIGZhc3Qvc2VsZWN0b3JzL2lucHV0LXdpdGgtc2VsZWN0aW9uLXBzZXVkby1lbGVt
ZW50Lmh0bWwgWyBXb250Rml4IF0KIGZhc3Qvc2VsZWN0b3JzL3NlbGVjdGlvbi13aW5kb3ctaW5h
Y3RpdmUuaHRtbCBbIFdvbnRGaXggXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDQzY2E3MTZhODRmMTQyMDQzNzZmZjEyMDFlMzMwODhmZGVm
YTk2MTMuLmIyMzRlMjA0MDAxZTY0NDQ0OTUyYTk5YmIxZGUzMTBhNTU1YTI3NzYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE4MCw2ICsx
ODAsNyBAQCB3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0
aC13aGl0ZXNwYWNlLXNlbGVjdGlvbi5odG1sCiB3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcv
c3BlbGxpbmcvZ3JhbW1hci5odG1sCiB3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvc3BlbGxp
bmcvbWFya2Vycy5odG1sCiB3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvc3BlbGxpbmcvcmV0
cm8tY29ycmVjdGlvbi1zcGVsbGluZy1tYXJrZXJzLmh0bWwKK3dlYmtpdC5vcmcvYi8xMDU2MTYg
ZWRpdGluZy9zcGVsbGluZy90ZXh0LXJlcGxhY2VtZW50LWFmdGVyLXR5cGluZy10by13b3JkLmh0
bWwKIHdlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tYXJrZXJz
LWFmdGVyLXBhc3Rpbmctc2VudGVuY2UuaHRtbAogd2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5n
L21hYy9zcGVsbGluZy9hdXRvY29ycmVjdGlvbi1kZWxldGUuaHRtbCBbIEZhaWx1cmUgXQogd2Vi
a2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL21hYy9zcGVsbGluZy9hdXRvY29ycmVjdGlvbi1yZW1v
dmluZy11bmRlcmxpbmUtYWZ0ZXItcGFzdGUuaHRtbCBbIEZhaWx1cmUgXQo=
</data>
<flag name="commit-queue"
          id="362116"
          type_id="3"
          status="-"
          setter="wenson_hsieh"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344065</attachid>
            <date>2018-07-01 17:08:54 -0700</date>
            <delta_ts>2018-07-01 17:47:55 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-187225-20180701170853.patch</filename>
            <type>text/plain</type>
            <size>71458</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzNDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWUyMjM5NDVhN2ZiNzU1
NWFiY2M5MmQ3MzhjNGEyZmJiM2E3MTdlMS4uNDNkNDNmOTY1MWNiODRiNjA1OTZkZTViYmVjNWUx
NGQ5MDY4YWUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE4LTA3LTAxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gVGV4
dCByZXBsYWNlbWVudHMgdGhhdCBlbmQgd2l0aCBzeW1ib2xzIGFyZSBleHBhbmRlZCBpbW1lZGlh
dGVseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3
MjI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MTExMjQzMz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBJbiBzaGlwcGluZyBTYWZhcmksIGVuYWJsaW5n
IGdyYW1tYXIgY29ycmVjdGlvbiBjYXVzZXMgdGV4dCBzaG9ydGN1dHMgdGhhdCBlbmQgd2l0aCBz
eW1ib2xzIG9yIHB1bmN0dWF0aW9uIG1hcmtzCisgICAgICAgIHRvIGltbWVkaWF0ZWx5IHRyaWdn
ZXIgd2hlbiB0eXBpbmc7IG5vcm1hbGx5LCB3aGVuIGdyYW1tYXIgY29ycmVjdGlvbiBpcyBvZmYs
IHRoaXMgaXMgb25seSB0cmlnZ2VyZWQgYWZ0ZXIgdGhlCisgICAgICAgIHVzZXIgaGFzIGFkZGl0
aW9uYWxseSBpbnNlcnRlZCBhIHB1bmN0dWF0aW9uIG1hcmsgb3Igd2hpdGVzcGFjZSBjaGFyYWN0
ZXIgYWZ0ZXIgdGhlIHJlcGxhY2VkIHRleHQuCisKKyAgICAgICAgVGhpcyBidWcgaGFwcGVucyBi
ZWNhdXNlIGVuYWJsaW5nIGdyYW1tYXIgY2hlY2tpbmcgY2F1c2VzIHRoZSBzcGVsbCBjaGVja2lu
ZyByYW5nZSB0byBleHBhbmQgdG8gdGhlIHJhbmdlIG9mIHRoZQorICAgICAgICBmdWxsIHNlbnRl
bmNlLCBzbyBhbnkgdGV4dCBjaGVja2luZyByZXN1bHRzIHRoYXQgcmVwbGFjZSBhbiBleGlzdGlu
ZyByYW5nZSBhcmUgdHJpZ2dlcmVkIGFzIGxvbmcgYXMgdGhleSBlbmQKKyAgICAgICAgYW55d2hl
cmUgaW4gdGhlIHNlbnRlbmNlLiBJbiBjb250cmFzdCwgd2hlbiBncmFtbWFyIGNoZWNraW5nIGlz
IGRpc2FibGVkLCB0aGUgc3BlbGwgY2hlY2tpbmcgcmFuZ2UgaXMgbGltaXRlZCB0bworICAgICAg
ICB0aGUgbmVhcmVzdCBhZGphY2VudCB3b3JkLCB3aGljaCBwcmV2ZW50cyB0ZXh0IHJlcGxhY2Vt
ZW50IGZyb20gb2NjdXJyaW5nIGVsc2V3aGVyZSBpbiB0aGUgc2VudGVuY2UuCisKKyAgICAgICAg
SG93ZXZlciwgYWZ0ZXIgcjIzMjUzMCwgd2Ugbm93IGFsd2F5cyBleHBhbmQgdGhlIHNwZWxsIGNo
ZWNraW5nIHJhbmdlIHRvIHRoZSBleHRlbnQgb2YgdGhlIHNlbnRlbmNlIHdoZW4gYSB3b3JkCisg
ICAgICAgIGlzIHR5cGVkIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBncmFtbWFyIGNoZWNraW5nIGlz
IGVuYWJsZWQsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIGlzc3VlIGRlc2NyaWJlZCBhYm92ZSBub3cK
KyAgICAgICAgaGFwcGVucyBldmVyeXdoZXJlLiBUbyBmaXggdGhpcyByZWNlbnQgcmVncmVzc2lv
biBhbmQgdGhlIGV4aXN0aW5nIGJ1Zywgd2U6CisKKyAgICAgICAgLSAgIEF1Z21lbnQgb3VyIHNw
ZWxsY2hlY2tpbmcgY29kZXBhdGhzIHRvIGluY2x1ZGUgYSBuZXcgYXV0b21hdGljIHRleHQgcmVw
bGFjZW1lbnQgcmFuZ2UsIGFsb25nc2lkZQorICAgICAgICAgICAgc3BlbGxjaGVja2luZyBhbmQg
cGFyYWdyYXBoIHJhbmdlcy4KKyAgICAgICAgLSAgIExldCB0aGlzIGF1dG9tYXRpYyB0ZXh0IHJl
cGxhY2VtZW50IHJhbmdlIGJlIHRoZSByYW5nZSBvZiB0aGUgYWRqYWNlbnQgd29yZCBpbiB0aGUg
Y2FzZSB3aGVyZSB0aGUgdXNlciBoYXMKKyAgICAgICAgICAgIGZpbmlzaGVkIHR5cGluZyBhIHdv
cmQuCisgICAgICAgIC0gICBXaGVuIG1hcmtpbmcgYW5kIHJlcGxhY2luZyB0ZXh0IGNoZWNraW5n
IHJlc3VsdHMsIGNvbnN1bHQgdGhpcyBuZXcgYXV0b21hdGljIHRleHQgcmVwbGFjZW1lbnQgaW5z
dGVhZCBvZiB0aGUKKyAgICAgICAgICAgIHNwZWxsY2hlY2tpbmcgcmFuZ2UuCisKKyAgICAgICAg
VGhpcyBrZWVwcyB0aGUgYmVoYXZpb3IgZ3JhbW1hciBhbmQgc2VudGVuY2UgcmV0cm8gY29ycmVj
dGlvbiByZXN1bHRzIGludGFjdCwgd2hpbGUgbGltaXRpbmcgdGhlIHNjb3BlIGluIHdoaWNoCisg
ICAgICAgIHRleHQgcmVwbGFjZW1lbnQgcmVzdWx0cyBhcmUgYXBwbGllZC4KKworICAgICAgICBU
ZXN0OiBlZGl0aW5nL3NwZWxsaW5nL3RleHQtcmVwbGFjZW1lbnQtYWZ0ZXItdHlwaW5nLXRvLXdv
cmQuaHRtbAorCisgICAgICAgICogZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnRpbWVyRmly
ZWQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6cmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZCk6CisKKyAgICAgICAgUGFz
cyBpbiB0aGUgYWRqYWNlbnQgd29yZCByYW5nZSBmb3IgdGhlIGBhdXRvbWF0aWNSZXBsYWNlbWVu
dFJhbmdlYCwgaW5zdGVhZCBvZiB0aGUgc3BlbGwgY2hlY2tpbmcgcmFuZ2UgKHdoaWNoCisgICAg
ICAgIG1heSBiZSBleHRlbmRlZCB0byB0aGUgZnVsbCByYW5nZSBvZiB0aGUgc2VudGVuY2UpLgor
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFt
bWFySW5SYW5nZXMpOgorCisgICAgICAgIEFkZCBhbiBgYXV0b21hdGljUmVwbGFjZW1lbnRSYW5n
ZWAgYXJndW1lbnQgdG8gbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcywg
YW5kIGFkanVzdCBjYWxsIHNpdGVzCisgICAgICAgIHRvIHBhc3MgaW4gYSByYW5nZSAoZ2VuZXJh
bGx5IHRoZSBzYW1lIGFzIHRoZSBzcGVsbCBjaGVja2luZyByYW5nZSwgYnV0IGluIHRoZSBjYXNl
IHdoZXJlIGEgd29yZCBoYXMgYmVlbiB0eXBlZCwKKyAgICAgICAgdGhpcyBpcyBhIG5hcnJvd2Vy
IHJhbmdlKS4KKworICAgICAgICAoV2ViQ29yZTo6Y29ycmVjdFNwZWxsY2hlY2tpbmdQcmVzZXJ2
aW5nVGV4dENoZWNraW5nUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFy
a0FuZFJlcGxhY2VGb3IpOgorCisgICAgICAgIFdoZW4gcmVwbGFjaW5nIHRleHQsIG9ubHkgYWxs
b3cgdGV4dCByZXBsYWNlbWVudCBpbiB0aGUgYXV0b21hdGljIHJlcGxhY2VtZW50IHJhbmdlIHJh
dGhlciB0aGFuIHRoZSBzcGVsbAorICAgICAgICBjaGVja2luZyByYW5nZS4KKworICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcik6CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrUmVxdWVzdDo6U3BlbGxDaGVja1JlcXVlc3Qp
OgorCisgICAgICAgIEFkZCBhIG5ldyB2ZXJzaW9uIG9mIHRoaXMgY29uc3RydWN0b3IgdGhhdCB0
YWtlcyBhIHNpbmdsZSBSYW5nZSByZXByZXNlbnRpbmcgYm90aCB0aGUgc3BlbGxjaGVja2luZyBy
YW5nZSBhbmQKKyAgICAgICAgdGhlIGF1dG9tYXRpYyB0ZXh0IHJlcGxhY2VtZW50IHJhbmdlLCBm
b3IgY29udmVuaWVuY2UuCisKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tSZXF1ZXN0Ojpj
cmVhdGUpOgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxDaGVja2VyLmg6CisKKyAgICAgICAgQWRk
IHBsdW1iaW5nIGZvciB0aGUgYXV0b21hdGljIHJlcGxhY2VtZW50IHJhbmdlLgorCisgICAgICAg
IChXZWJDb3JlOjpTcGVsbENoZWNrUmVxdWVzdDo6YXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSBj
b25zdCk6CisgICAgICAgICogZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwOgorCisgICAg
ICAgIEFkZCBwbHVtYmluZyBmb3IgdGhlIGF1dG9tYXRpYyByZXBsYWNlbWVudCByYW5nZSwgYW5k
IG5ldyBoZWxwZXJzIHRvIGxvY2F0ZSB0aGUgcmFuZ2UgYXMgb2Zmc2V0cyB3aXRoaW4gdGhlCisg
ICAgICAgIHRleHQgY2hlY2tpbmcgcGFyYWdyYXBoIHJhbmdlLgorCisgICAgICAgIChXZWJDb3Jl
OjpUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OlRleHRDaGVja2luZ1BhcmFncmFwaCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmludmFsaWRhdGVQYXJhZ3JhcGhSYW5n
ZVZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmF1dG9t
YXRpY1JlcGxhY2VtZW50U3RhcnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNr
aW5nUGFyYWdyYXBoOjphdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCBjb25zdCk6CisgICAgICAg
ICogZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuaDoKKwogMjAxOC0wNi0zMCAgWmFsYW4gQnVq
dGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdIERvIG5vdCBhZGQgdGhlIGNv
bnRhaW5pbmcgYmxvY2sncyBvZmZzZXQgd2hpbGUgY29tcHV0aW5nIHRoZSBvdXQtb2YtZmxvdyBz
dGF0aWMgcG9zaXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyLmNwcAppbmRleCBkNDUzZjY0NDBhZDQ2ZWJlMzBhMGNiYTllYWUy
MjI3NDFhNWFiZjQyLi5hOTQ2ZjUxMzZjNGFmMjVmMGEwNjJhOWE2YTM1NDkzZjVlN2M0NmRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlci5jcHAKQEAgLTI4Myw3ICsyODMsOCBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xs
ZXI6OnRpbWVyRmlyZWQoKQogICAgICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQoc2VsZWN0aW9u
LnN0YXJ0KCksIHNlbGVjdGlvbi5hZmZpbml0eSgpKTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9u
IHAgPSBzdGFydE9mV29yZChzdGFydCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpOwogICAgICAgICBW
aXNpYmxlU2VsZWN0aW9uIGFkamFjZW50V29yZHMgPSBWaXNpYmxlU2VsZWN0aW9uKHAsIHN0YXJ0
KTsKLSAgICAgICAgbV9mcmFtZS5lZGl0b3IoKS5tYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3Jh
bW1hckluUmFuZ2VzKFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyB8IFRleHRDaGVja2luZ1R5cGVS
ZXBsYWNlbWVudCB8IFRleHRDaGVja2luZ1R5cGVTaG93Q29ycmVjdGlvblBhbmVsLCBhZGphY2Vu
dFdvcmRzLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIDApOworICAgICAgICBhdXRvIGFkamFj
ZW50V29yZFJhbmdlID0gYWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6ZWRSYW5nZSgpOworICAgICAg
ICBtX2ZyYW1lLmVkaXRvcigpLm1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5n
ZXMoVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50
IHwgVGV4dENoZWNraW5nVHlwZVNob3dDb3JyZWN0aW9uUGFuZWwsIGFkamFjZW50V29yZFJhbmdl
LmdldCgpLCBhZGphY2VudFdvcmRSYW5nZS5nZXQoKSwgbnVsbHB0cik7CiAgICAgfQogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEFsdGVybmF0aXZlVGV4dFR5cGVSZXZlcnNpb246IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCAwYzcxNjMyODUzNDBhYTUxNDQ0MzJlYTYyNjQwNTgz
MjA5YzY4MGQ3Li4yZDUwYzFiZTg2NjcyYTRlOWIyODUxZDQ4OWMzOGI2MmUxNTRmZWE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC02NjcsNyArNjY3LDcgQEAgdm9pZCBFZGl0b3I6
OnJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQs
IGJvb2wgc2VsZWMKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byByYW5nZVRvQ2hlY2sgPSBS
YW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk5vZGUobm9kZVRvQ2hlY2sp
LCBsYXN0UG9zaXRpb25Jbk5vZGUobm9kZVRvQ2hlY2spKTsKLSAgICBpZiAoYXV0byByZXF1ZXN0
ID0gU3BlbGxDaGVja1JlcXVlc3Q6OmNyZWF0ZShyZXNvbHZlVGV4dENoZWNraW5nVHlwZU1hc2so
Km5vZGVUb0NoZWNrLCBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgfCBUZXh0Q2hlY2tpbmdUeXBl
R3JhbW1hciksIFRleHRDaGVja2luZ1Byb2Nlc3NCYXRjaCwgcmFuZ2VUb0NoZWNrLmNvcHlSZWYo
KSwgcmFuZ2VUb0NoZWNrLmNvcHlSZWYoKSkpCisgICAgaWYgKGF1dG8gcmVxdWVzdCA9IFNwZWxs
Q2hlY2tSZXF1ZXN0OjpjcmVhdGUocmVzb2x2ZVRleHRDaGVja2luZ1R5cGVNYXNrKCpub2RlVG9D
aGVjaywgVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZUdyYW1tYXIp
LCBUZXh0Q2hlY2tpbmdQcm9jZXNzQmF0Y2gsIHJhbmdlVG9DaGVjay5jb3B5UmVmKCksIHJhbmdl
VG9DaGVjay5jb3B5UmVmKCksIHJhbmdlVG9DaGVjay5jb3B5UmVmKCkpKQogICAgICAgICBtX3Nw
ZWxsQ2hlY2tlci0+cmVxdWVzdENoZWNraW5nRm9yKHJlcXVlc3QucmVsZWFzZU5vbk51bGwoKSk7
CiB9CiAKQEAgLTIzNDIsNyArMjM0Miw4IEBAIHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdz
QWZ0ZXJUeXBpbmdUb1dvcmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uICZ3b3JkU3RhcnQsCiAgICAg
ICAgIHJldHVybjsKIAogICAgIFZpc2libGVTZWxlY3Rpb24gYWRqYWNlbnRXb3JkcyA9IFZpc2li
bGVTZWxlY3Rpb24oc3RhcnRPZldvcmQod29yZFN0YXJ0LCBMZWZ0V29yZElmT25Cb3VuZGFyeSks
IGVuZE9mV29yZCh3b3JkU3RhcnQsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSkpOwotICAgIG1hcmtB
bGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywg
YWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBhZGphY2VudFdvcmRzLnRv
Tm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOworICAgIGF1dG8gYWRqYWNlbnRXb3JkUmFuZ2UgPSBh
ZGphY2VudFdvcmRzLnRvTm9ybWFsaXplZFJhbmdlKCk7CisgICAgbWFya0FsbE1pc3NwZWxsaW5n
c0FuZEJhZEdyYW1tYXJJblJhbmdlcyh0ZXh0Q2hlY2tpbmdPcHRpb25zLCBhZGphY2VudFdvcmRS
YW5nZS5nZXQoKSwgYWRqYWNlbnRXb3JkUmFuZ2UuZ2V0KCksIGFkamFjZW50V29yZFJhbmdlLmdl
dCgpKTsKICNlbHNlCiAjaWYgIVVTRShBVVRPTUFUSUNfVEVYVF9SRVBMQUNFTUVOVCkKICAgICBV
TlVTRURfUEFSQU0oZG9SZXBsYWNlbWVudCk7CkBAIC0yNDE3LDEzICsyNDE4LDE3IEBAIHZvaWQg
RWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1dvcmQoY29uc3QgVmlzaWJsZVBv
c2l0aW9uICZ3b3JkU3RhcnQsCiAgICAgICAgIGlmICghc3BlbGxDaGVja2luZ1JhbmdlKQogICAg
ICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIGF1dG8gYWRqYWNlbnRXb3JkUmFuZ2UgPSBWaXNp
YmxlU2VsZWN0aW9uKHN0YXJ0T2ZXb3JkKHdvcmRTdGFydCwgTGVmdFdvcmRJZk9uQm91bmRhcnkp
LCBlbmRPZldvcmQod29yZFN0YXJ0LCBSaWdodFdvcmRJZk9uQm91bmRhcnkpKS50b05vcm1hbGl6
ZWRSYW5nZSgpOworICAgICAgICBpZiAoIWFkamFjZW50V29yZFJhbmdlKQorICAgICAgICAgICAg
cmV0dXJuOworCiAgICAgICAgIC8vIFRoZSBzcGVsbGluZyBhbmQgZ3JhbW1hciBtYXJrZXJzIGlu
IHRoZXNlIHJhbmdlcyBhcmUgcmVjb21wdXRlZC4gVGhpcyBpcyBiZWNhdXNlIHR5cGluZyBhIHdv
cmQgbWF5CiAgICAgICAgIC8vIGNhdXNlIGFueSBvdGhlciBwYXJ0IG9mIHRoZSBjdXJyZW50IHNl
bnRlbmNlIHRvIGxvc2Ugb3IgZ2FpbiBzcGVsbGluZyBjb3JyZWN0aW9uIG1hcmtlcnMsIGR1ZSB0
bwogICAgICAgICAvLyBzZW50ZW5jZSByZXRybyBjb3JyZWN0aW9uLiBBcyBzdWNoLCB3ZSBleHBh
bmQgdGhlIHNwZWxsIGNoZWNraW5nIHJhbmdlIHRvIGVuY29tcGFzcyBhcyBtdWNoIG9mIHRoZQog
ICAgICAgICAvLyBmdWxsIHNlbnRlbmNlIGFzIHdlIGNhbiwgcmVzcGVjdGluZyBib3VuZGFyaWVz
IHdoZXJlIHNwZWxsY2hlY2tpbmcgaXMgZGlzYWJsZWQuCiAgICAgICAgIGZ1bGxTZW50ZW5jZVJh
bmdlLT5vd25lckRvY3VtZW50KCkubWFya2VycygpLnJlbW92ZU1hcmtlcnMoZnVsbFNlbnRlbmNl
UmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpHcmFtbWFyKTsKICAgICAgICAgc3BlbGxDaGVj
a2luZ1JhbmdlLT5vd25lckRvY3VtZW50KCkubWFya2VycygpLnJlbW92ZU1hcmtlcnMoc3BlbGxD
aGVja2luZ1JhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcpOwotICAgICAgICBt
YXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKHRleHRDaGVja2luZ09wdGlv
bnMsIHNwZWxsQ2hlY2tpbmdSYW5nZS5nZXQoKSwgZnVsbFNlbnRlbmNlUmFuZ2UuZ2V0KCkpOwor
ICAgICAgICBtYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKHRleHRDaGVj
a2luZ09wdGlvbnMsIHNwZWxsQ2hlY2tpbmdSYW5nZS5nZXQoKSwgYWRqYWNlbnRXb3JkUmFuZ2Uu
Z2V0KCksIGZ1bGxTZW50ZW5jZVJhbmdlLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMjU0Nyw3ICsyNTUyLDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtCYWRHcmFtbWFyKGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKICNlbmRpZgogfQogCi12b2lkIEVkaXRvcjo6
bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdUeXBl
TWFzayB0ZXh0Q2hlY2tpbmdPcHRpb25zLCBSYW5nZSogc3BlbGxpbmdSYW5nZSwgUmFuZ2UqIGdy
YW1tYXJSYW5nZSkKK3ZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1h
ckluUmFuZ2VzKFRleHRDaGVja2luZ1R5cGVNYXNrIHRleHRDaGVja2luZ09wdGlvbnMsIFJhbmdl
KiBzcGVsbGluZ1JhbmdlLCBSYW5nZSogYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSwgUmFuZ2Uq
IGdyYW1tYXJSYW5nZSkKIHsKICAgICBBU1NFUlQodW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCgp
KTsKIApAQCAtMjU3OSw3ICsyNTg0LDggQEAgdm9pZCBFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGlu
Z3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nVHlwZU1hc2sgdGV4dEMKIAogICAg
IC8vIEluIGFzeW5jaHJvbm91cyBtb2RlLCB3ZSBpbnRlbnRpb25hbGx5IGNoZWNrIHBhcmFncmFw
aC13aWRlIHNlbnRlbmNlLgogICAgIGNvbnN0IGF1dG8gcmVzb2x2ZWRPcHRpb25zID0gcmVzb2x2
ZVRleHRDaGVja2luZ1R5cGVNYXNrKGVkaXRhYmxlTm9kZSwgdGV4dENoZWNraW5nT3B0aW9ucyk7
Ci0gICAgYXV0byByZXF1ZXN0ID0gU3BlbGxDaGVja1JlcXVlc3Q6OmNyZWF0ZShyZXNvbHZlZE9w
dGlvbnMsIFRleHRDaGVja2luZ1Byb2Nlc3NJbmNyZW1lbnRhbCwgYXN5bmNocm9ub3VzID8gcGFy
YWdyYXBoUmFuZ2UuZ2V0KCkgOiByYW5nZVRvQ2hlY2ssIHBhcmFncmFwaFJhbmdlLmNvcHlSZWYo
KSk7CisgICAgYXV0byYgdGV4dFJlcGxhY2VtZW50UmFuZ2UgPSBhdXRvbWF0aWNSZXBsYWNlbWVu
dFJhbmdlID8gKmF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UgOiByYW5nZVRvQ2hlY2s7CisgICAg
YXV0byByZXF1ZXN0ID0gU3BlbGxDaGVja1JlcXVlc3Q6OmNyZWF0ZShyZXNvbHZlZE9wdGlvbnMs
IFRleHRDaGVja2luZ1Byb2Nlc3NJbmNyZW1lbnRhbCwgYXN5bmNocm9ub3VzID8gcGFyYWdyYXBo
UmFuZ2UuZ2V0KCkgOiByYW5nZVRvQ2hlY2ssIHRleHRSZXBsYWNlbWVudFJhbmdlLCBwYXJhZ3Jh
cGhSYW5nZS5jb3B5UmVmKCkpOwogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwog
CkBAIC0yNjI3LDcgKzI2MzMsOCBAQCBzdGF0aWMgdm9pZCBjb3JyZWN0U3BlbGxjaGVja2luZ1By
ZXNlcnZpbmdUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoVGV4dENoZWNraW5nUGFyYQogCiAgICAgUmVm
UHRyPFJhbmdlPiBuZXdQYXJhZ3JhcGhSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9j
YXRpb25BbmRMZW5ndGgoJnNjb3BlLCBwYXJhZ3JhcGhMb2NhdGlvbiwgcGFyYWdyYXBoTGVuZ3Ro
ICsgcmVwbGFjZW1lbnQubGVuZ3RoKCkgLSByZXN1bHRMZW5ndGgpOwogCi0gICAgcGFyYWdyYXBo
ID0gVGV4dENoZWNraW5nUGFyYWdyYXBoKFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKm5ld1BhcmFn
cmFwaFJhbmdlLCByZXN1bHRMb2NhdGlvbiwgcmVwbGFjZW1lbnQubGVuZ3RoKCkpLCBuZXdQYXJh
Z3JhcGhSYW5nZS5nZXQoKSk7CisgICAgYXV0byBzcGVsbENoZWNraW5nUmFuZ2UgPSBUZXh0SXRl
cmF0b3I6OnN1YnJhbmdlKCpuZXdQYXJhZ3JhcGhSYW5nZSwgcmVzdWx0TG9jYXRpb24sIHJlcGxh
Y2VtZW50Lmxlbmd0aCgpKTsKKyAgICBwYXJhZ3JhcGggPSBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgo
c3BlbGxDaGVja2luZ1JhbmdlLmNvcHlSZWYoKSwgc3BlbGxDaGVja2luZ1JhbmdlLmNvcHlSZWYo
KSwgbmV3UGFyYWdyYXBoUmFuZ2UuZ2V0KCkpOwogfQogCiB2b2lkIEVkaXRvcjo6bWFya0FuZFJl
cGxhY2VGb3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxU
ZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQpAQCAtMjYzNSw3ICsyNjQyLDcgQEAgdm9pZCBF
ZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNvbnN0IFNwZWxsQ2hlY2tSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBWZWN0b3I8VGUKICAgICBSZWY8RnJhbWU+IHByb3RlY3Rpb24obV9mcmFtZSk7CiAK
ICAgICBUZXh0Q2hlY2tpbmdUeXBlTWFzayB0ZXh0Q2hlY2tpbmdPcHRpb25zID0gcmVxdWVzdC5k
YXRhKCkubWFzaygpOwotICAgIFRleHRDaGVja2luZ1BhcmFncmFwaCBwYXJhZ3JhcGgocmVxdWVz
dC5jaGVja2luZ1JhbmdlKCksICZyZXF1ZXN0LnBhcmFncmFwaFJhbmdlKCkpOworICAgIFRleHRD
aGVja2luZ1BhcmFncmFwaCBwYXJhZ3JhcGgocmVxdWVzdC5jaGVja2luZ1JhbmdlKCksIHJlcXVl
c3QuYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSgpLCAmcmVxdWVzdC5wYXJhZ3JhcGhSYW5nZSgp
KTsKIAogICAgIGNvbnN0IGJvb2wgc2hvdWxkTWFya1NwZWxsaW5nID0gdGV4dENoZWNraW5nT3B0
aW9ucyAmIFRleHRDaGVja2luZ1R5cGVTcGVsbGluZzsKICAgICBjb25zdCBib29sIHNob3VsZE1h
cmtHcmFtbWFyID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIFRleHRDaGVja2luZ1R5cGVHcmFtbWFy
OwpAQCAtMjY3NSw2ICsyNjgyLDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNv
bnN0IFNwZWxsQ2hlY2tSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8VGUKICAgICAgICAg
Y29uc3QgaW50IHJlc3VsdExvY2F0aW9uID0gcmVzdWx0c1tpXS5sb2NhdGlvbiArIG9mZnNldER1
ZVRvUmVwbGFjZW1lbnQ7CiAgICAgICAgIGNvbnN0IGludCByZXN1bHRMZW5ndGggPSByZXN1bHRz
W2ldLmxlbmd0aDsKICAgICAgICAgY29uc3QgaW50IHJlc3VsdEVuZExvY2F0aW9uID0gcmVzdWx0
TG9jYXRpb24gKyByZXN1bHRMZW5ndGg7CisgICAgICAgIGNvbnN0IGludCBhdXRvbWF0aWNSZXBs
YWNlbWVudEVuZExvY2F0aW9uID0gcGFyYWdyYXBoLmF1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQo
KSArIHBhcmFncmFwaC5hdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCgpICsgb2Zmc2V0RHVlVG9S
ZXBsYWNlbWVudDsKICAgICAgICAgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCA9IHJlc3VsdHNb
aV0ucmVwbGFjZW1lbnQ7CiAgICAgICAgIGNvbnN0IGJvb2wgcmVzdWx0RW5kc0F0QW1iaWd1b3Vz
Qm91bmRhcnkgPSB1c2VBbWJpZ3VvdXNCb3VuZGFyeU9mZnNldCAmJiBzZWxlY3Rpb25PZmZzZXQg
LSAxIDw9IHJlc3VsdEVuZExvY2F0aW9uOwogCkBAIC0yNjk5LDEyICsyNzA3LDEyIEBAIHZvaWQg
RWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgVmVjdG9yPFRlCiAgICAgICAgICAgICAgICAgICAgIGJhZEdyYW1tYXJSYW5nZS0+
c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIoYmFkR3JhbW1h
clJhbmdlLnB0cigpLCBEb2N1bWVudE1hcmtlcjo6R3JhbW1hciwgZGV0YWlsLnVzZXJEZXNjcmlw
dGlvbik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2Ug
aWYgKHJlc3VsdEVuZExvY2F0aW9uIDw9IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQgJiYgcmVzdWx0
RW5kTG9jYXRpb24gPj0gcGFyYWdyYXBoLmNoZWNraW5nU3RhcnQoKQorICAgICAgICB9IGVsc2Ug
aWYgKHJlc3VsdEVuZExvY2F0aW9uIDw9IGF1dG9tYXRpY1JlcGxhY2VtZW50RW5kTG9jYXRpb24g
JiYgcmVzdWx0RW5kTG9jYXRpb24gPj0gcGFyYWdyYXBoLmF1dG9tYXRpY1JlcGxhY2VtZW50U3Rh
cnQoKQogICAgICAgICAgICAgJiYgaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRUeXBlKHJlc3Vs
dFR5cGUpKSB7Ci0gICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2UgdGhlIHJlc3VsdCByYW5nZSBq
dXN0IGhhcyB0byB0b3VjaCB0aGUgc3BlbGxpbmcgcmFuZ2UsIHNvIHdlIGNhbiBoYW5kbGUgcmVw
bGFjaW5nIG5vbi13b3JkIHRleHQgc3VjaCBhcyBwdW5jdHVhdGlvbi4KKyAgICAgICAgICAgIC8v
IEluIHRoaXMgY2FzZSB0aGUgcmVzdWx0IHJhbmdlIGp1c3QgaGFzIHRvIHRvdWNoIHRoZSBhdXRv
bWF0aWMgcmVwbGFjZW1lbnQgcmFuZ2UsIHNvIHdlIGNhbiBoYW5kbGUgcmVwbGFjaW5nIG5vbi13
b3JkIHRleHQgc3VjaCBhcyBwdW5jdHVhdGlvbi4KICAgICAgICAgICAgIEFTU0VSVChyZXN1bHRM
ZW5ndGggPiAwICYmIHJlc3VsdExvY2F0aW9uID49IDApOwogCi0gICAgICAgICAgICBpZiAoc2hv
dWxkU2hvd0NvcnJlY3Rpb25QYW5lbCAmJiAocmVzdWx0RW5kTG9jYXRpb24gPCBzcGVsbGluZ1Jh
bmdlRW5kT2Zmc2V0CisgICAgICAgICAgICBpZiAoc2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5lbCAm
JiAocmVzdWx0RW5kTG9jYXRpb24gPCBhdXRvbWF0aWNSZXBsYWNlbWVudEVuZExvY2F0aW9uCiAg
ICAgICAgICAgICAgICAgfHwgIShyZXN1bHRUeXBlICYgKFRleHRDaGVja2luZ1R5cGVSZXBsYWNl
bWVudCB8IFRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uKSkpKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogCkBAIC0yNzI4LDcgKzI3MzYsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxh
Y2VGb3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBpZiAoc2hvdWxkU2hvd0Nv
cnJlY3Rpb25QYW5lbCkgewotICAgICAgICAgICAgICAgIGlmIChyZXN1bHRFbmRMb2NhdGlvbiA9
PSBzcGVsbGluZ1JhbmdlRW5kT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdEVu
ZExvY2F0aW9uID09IGF1dG9tYXRpY1JlcGxhY2VtZW50RW5kTG9jYXRpb24pIHsKICAgICAgICAg
ICAgICAgICAgICAgLy8gV2Ugb25seSBzaG93IHRoZSBjb3JyZWN0aW9uIHBhbmVsIG9uIHRoZSBs
YXN0IHdvcmQuCiAgICAgICAgICAgICAgICAgICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
ci0+c2hvdyhyYW5nZVRvUmVwbGFjZSwgcmVwbGFjZW1lbnQpOwogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKQEAgLTI4MjksNyArMjgzNyw4IEBAIHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxp
bmdzQW5kQmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzcGVsbGluZ1NlbGVjCiAg
ICAgICAgIFRleHRDaGVja2luZ1R5cGVNYXNrIHRleHRDaGVja2luZ09wdGlvbnMgPSBUZXh0Q2hl
Y2tpbmdUeXBlU3BlbGxpbmc7CiAgICAgICAgIGlmIChtYXJrR3JhbW1hciAmJiBpc0dyYW1tYXJD
aGVja2luZ0VuYWJsZWQoKSkKICAgICAgICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMgfD0gVGV4
dENoZWNraW5nVHlwZUdyYW1tYXI7Ci0gICAgICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRH
cmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgc3BlbGxpbmdTZWxlY3Rpb24udG9O
b3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgZ3JhbW1hclNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5n
ZSgpLmdldCgpKTsKKyAgICAgICAgYXV0byBzcGVsbENoZWNraW5nUmFuZ2UgPSBzcGVsbGluZ1Nl
bGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpOworICAgICAgICBtYXJrQWxsTWlzc3BlbGxpbmdz
QW5kQmFkR3JhbW1hckluUmFuZ2VzKHRleHRDaGVja2luZ09wdGlvbnMsIHNwZWxsQ2hlY2tpbmdS
YW5nZS5nZXQoKSwgc3BlbGxDaGVja2luZ1JhbmdlLmdldCgpLCBncmFtbWFyU2VsZWN0aW9uLnRv
Tm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaAppbmRleCBlMTQxNDNmZWNlOTExMDdhNjUyZmZlOGZjNTE4ZjJjNzI1
ZmE5Y2Q3Li5iNGEwMTBmYjRlNzMyMGEyZWJkNzQ2NTNiYzc0ZTk0OTcxMDI3NGUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmgKQEAgLTI5Myw3ICsyOTMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c092ZXJ3cml0ZU1vZGVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9vdmVyd3JpdGVNb2RlRW5h
YmxlZDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdG9nZ2xlT3ZlcndyaXRlTW9kZUVuYWJs
ZWQoKTsKIAotICAgIHZvaWQgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdl
cyhUZXh0Q2hlY2tpbmdUeXBlTWFzaywgUmFuZ2UqIHNwZWxsaW5nUmFuZ2UsIFJhbmdlKiBncmFt
bWFyUmFuZ2UpOworICAgIHZvaWQgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJh
bmdlcyhUZXh0Q2hlY2tpbmdUeXBlTWFzaywgUmFuZ2UqIHNwZWxsaW5nUmFuZ2UsIFJhbmdlKiBh
dXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlLCBSYW5nZSogZ3JhbW1hclJhbmdlKTsKICNpZiBQTEFU
Rk9STShJT1MpCiAgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCmluZGV4IGE1YjYxNmQyNDhlMTFjODY0Mjc5NTI2
M2Q4OWNjNDBiMTNhOWNmZjkuLmMwNTRjNWFkZTU0MDkwNDIyM2I5MDkzYzE0MGEzNTg2NjY3OTYx
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKQEAgLTQwLDggKzQw
LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TcGVsbENoZWNrUmVxdWVzdDo6U3BlbGxD
aGVja1JlcXVlc3QoUmVmPFJhbmdlPiYmIGNoZWNraW5nUmFuZ2UsIFJlZjxSYW5nZT4mJiBwYXJh
Z3JhcGhSYW5nZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBUZXh0Q2hlY2tpbmdUeXBlTWFzayBtYXNr
LCBUZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSBwcm9jZXNzVHlwZSkKK1NwZWxsQ2hlY2tSZXF1ZXN0
OjpTcGVsbENoZWNrUmVxdWVzdChSZWY8UmFuZ2U+JiYgY2hlY2tpbmdSYW5nZSwgUmVmPFJhbmdl
PiYmIGF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UsIFJlZjxSYW5nZT4mJiBwYXJhZ3JhcGhSYW5n
ZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBUZXh0Q2hlY2tpbmdUeXBlTWFzayBtYXNrLCBUZXh0Q2hl
Y2tpbmdQcm9jZXNzVHlwZSBwcm9jZXNzVHlwZSkKICAgICA6IG1fY2hlY2tpbmdSYW5nZShXVEZN
b3ZlKGNoZWNraW5nUmFuZ2UpKQorICAgICwgbV9hdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlKFdU
Rk1vdmUoYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSkpCiAgICAgLCBtX3BhcmFncmFwaFJhbmdl
KFdURk1vdmUocGFyYWdyYXBoUmFuZ2UpKQogICAgICwgbV9yb290RWRpdGFibGVFbGVtZW50KG1f
Y2hlY2tpbmdSYW5nZS0+c3RhcnRDb250YWluZXIoKS5yb290RWRpdGFibGVFbGVtZW50KCkpCiAg
ICAgLCBtX3JlcXVlc3REYXRhKHVucmVxdWVzdGVkVGV4dENoZWNraW5nU2VxdWVuY2UsIHRleHQs
IG1hc2ssIHByb2Nlc3NUeXBlKQpAQCAtNTAsMTMgKzUxLDEzIEBAIFNwZWxsQ2hlY2tSZXF1ZXN0
OjpTcGVsbENoZWNrUmVxdWVzdChSZWY8UmFuZ2U+JiYgY2hlY2tpbmdSYW5nZSwgUmVmPFJhbmdl
PiYmIHBhCiAKIFNwZWxsQ2hlY2tSZXF1ZXN0Ojp+U3BlbGxDaGVja1JlcXVlc3QoKSA9IGRlZmF1
bHQ7CiAKLVJlZlB0cjxTcGVsbENoZWNrUmVxdWVzdD4gU3BlbGxDaGVja1JlcXVlc3Q6OmNyZWF0
ZShUZXh0Q2hlY2tpbmdUeXBlTWFzayB0ZXh0Q2hlY2tpbmdPcHRpb25zLCBUZXh0Q2hlY2tpbmdQ
cm9jZXNzVHlwZSBwcm9jZXNzVHlwZSwgUmVmPFJhbmdlPiYmIGNoZWNraW5nUmFuZ2UsIFJlZjxS
YW5nZT4mJiBwYXJhZ3JhcGhSYW5nZSkKK1JlZlB0cjxTcGVsbENoZWNrUmVxdWVzdD4gU3BlbGxD
aGVja1JlcXVlc3Q6OmNyZWF0ZShUZXh0Q2hlY2tpbmdUeXBlTWFzayB0ZXh0Q2hlY2tpbmdPcHRp
b25zLCBUZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSBwcm9jZXNzVHlwZSwgUmVmPFJhbmdlPiYmIGNo
ZWNraW5nUmFuZ2UsIFJlZjxSYW5nZT4mJiBhdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlLCBSZWY8
UmFuZ2U+JiYgcGFyYWdyYXBoUmFuZ2UpCiB7CiAgICAgU3RyaW5nIHRleHQgPSBjaGVja2luZ1Jh
bmdlLT50ZXh0KCk7CiAgICAgaWYgKCF0ZXh0Lmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNwZWxsQ2hlY2tSZXF1ZXN0KFdURk1v
dmUoY2hlY2tpbmdSYW5nZSksIFdURk1vdmUocGFyYWdyYXBoUmFuZ2UpLCB0ZXh0LCB0ZXh0Q2hl
Y2tpbmdPcHRpb25zLCBwcm9jZXNzVHlwZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNw
ZWxsQ2hlY2tSZXF1ZXN0KFdURk1vdmUoY2hlY2tpbmdSYW5nZSksIFdURk1vdmUoYXV0b21hdGlj
UmVwbGFjZW1lbnRSYW5nZSksIFdURk1vdmUocGFyYWdyYXBoUmFuZ2UpLCB0ZXh0LCB0ZXh0Q2hl
Y2tpbmdPcHRpb25zLCBwcm9jZXNzVHlwZSkpOwogfQogCiBjb25zdCBUZXh0Q2hlY2tpbmdSZXF1
ZXN0RGF0YSYgU3BlbGxDaGVja1JlcXVlc3Q6OmRhdGEoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvU3BlbGxDaGVja2VyLmgKaW5kZXggYTIzYzE4Y2MwZjE1ZmNhNTI2MDVlNDFhNzcxODg5ODYw
ZDg0NmEwMy4uMDU5NDUzNjZjYzk4MTQ0MDFjZDg4MmYwYzFkNzBlNTI2MjA3YzhmNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5oCkBAIC00NCwxMSArNDQsMTIgQEAgY2xhc3Mg
U3BlbGxDaGVja2VyOwogCiBjbGFzcyBTcGVsbENoZWNrUmVxdWVzdCA6IHB1YmxpYyBUZXh0Q2hl
Y2tpbmdSZXF1ZXN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFNwZWxsQ2hlY2tSZXF1
ZXN0PiBjcmVhdGUoVGV4dENoZWNraW5nVHlwZU1hc2ssIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBl
LCBSZWY8UmFuZ2U+JiYgY2hlY2tpbmdSYW5nZSwgUmVmPFJhbmdlPiYmIHBhcmFncmFwaFJhbmdl
KTsKKyAgICBzdGF0aWMgUmVmUHRyPFNwZWxsQ2hlY2tSZXF1ZXN0PiBjcmVhdGUoVGV4dENoZWNr
aW5nVHlwZU1hc2ssIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlLCBSZWY8UmFuZ2U+JiYgY2hlY2tp
bmdSYW5nZSwgUmVmPFJhbmdlPiYmIGF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UsIFJlZjxSYW5n
ZT4mJiBwYXJhZ3JhcGhSYW5nZSk7CiAgICAgdmlydHVhbCB+U3BlbGxDaGVja1JlcXVlc3QoKTsK
IAogICAgIFJhbmdlJiBjaGVja2luZ1JhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9jaGVja2luZ1Jh
bmdlLmdldCgpOyB9CiAgICAgUmFuZ2UmIHBhcmFncmFwaFJhbmdlKCkgY29uc3QgeyByZXR1cm4g
bV9wYXJhZ3JhcGhSYW5nZS5nZXQoKTsgfQorICAgIFJhbmdlJiBhdXRvbWF0aWNSZXBsYWNlbWVu
dFJhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9hdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlLmdldCgp
OyB9CiAgICAgRWxlbWVudCogcm9vdEVkaXRhYmxlRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
cm9vdEVkaXRhYmxlRWxlbWVudC5nZXQoKTsgfQogCiAgICAgdm9pZCBzZXRDaGVja2VyQW5kU2Vx
dWVuY2UoU3BlbGxDaGVja2VyKiwgaW50IHNlcXVlbmNlKTsKQEAgLTYwLDEwICs2MSwxMSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWRDYW5jZWwoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBT
cGVsbENoZWNrUmVxdWVzdChSZWY8UmFuZ2U+JiYgY2hlY2tpbmdSYW5nZSwgUmVmPFJhbmdlPiYm
IHBhcmFncmFwaFJhbmdlLCBjb25zdCBTdHJpbmcmLCBUZXh0Q2hlY2tpbmdUeXBlTWFzaywgVGV4
dENoZWNraW5nUHJvY2Vzc1R5cGUpOworICAgIFNwZWxsQ2hlY2tSZXF1ZXN0KFJlZjxSYW5nZT4m
JiBjaGVja2luZ1JhbmdlLCBSZWY8UmFuZ2U+JiYgYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSwg
UmVmPFJhbmdlPiYmIHBhcmFncmFwaFJhbmdlLCBjb25zdCBTdHJpbmcmLCBUZXh0Q2hlY2tpbmdU
eXBlTWFzaywgVGV4dENoZWNraW5nUHJvY2Vzc1R5cGUpOwogCiAgICAgU3BlbGxDaGVja2VyKiBt
X2NoZWNrZXIgeyBudWxscHRyIH07CiAgICAgUmVmPFJhbmdlPiBtX2NoZWNraW5nUmFuZ2U7Cisg
ICAgUmVmPFJhbmdlPiBtX2F1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2U7CiAgICAgUmVmPFJhbmdl
PiBtX3BhcmFncmFwaFJhbmdlOwogICAgIFJlZlB0cjxFbGVtZW50PiBtX3Jvb3RFZGl0YWJsZUVs
ZW1lbnQ7CiAgICAgVGV4dENoZWNraW5nUmVxdWVzdERhdGEgbV9yZXF1ZXN0RGF0YTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAppbmRleCBlZDliZWU0
OWNhNzIyZjNmODY4YTRhNTkyNWI4Yzk5NzRlMzBmYzkyLi5kN2M2YjY4ZGRlYTQyMGFjZjBiNTZj
ZDlmZmI4ZjUzYjAxNjllNjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRDaGVja2luZ0hlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hl
Y2tpbmdIZWxwZXIuY3BwCkBAIC0xMTcsMTIgKzExNywxNiBAQCBzdGF0aWMgUmVmPFJhbmdlPiBl
eHBhbmRUb1BhcmFncmFwaEJvdW5kYXJ5KFJhbmdlJiByYW5nZSkKICAgICByZXR1cm4gcGFyYWdy
YXBoUmFuZ2U7CiB9CiAKLVRleHRDaGVja2luZ1BhcmFncmFwaDo6VGV4dENoZWNraW5nUGFyYWdy
YXBoKFJlZjxSYW5nZT4mJiBjaGVja2luZ1JhbmdlLCBSYW5nZSogcGFyYWdyYXBoUmFuZ2UpCitU
ZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OlRleHRDaGVja2luZ1BhcmFncmFwaChSZWY8UmFuZ2U+JiYg
Y2hlY2tpbmdBbmRBdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlKQorICAgIDogbV9jaGVja2luZ1Jh
bmdlKGNoZWNraW5nQW5kQXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZS5jb3B5UmVmKCkpCisgICAg
LCBtX2F1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UoY2hlY2tpbmdBbmRBdXRvbWF0aWNSZXBsYWNl
bWVudFJhbmdlLmNvcHlSZWYoKSkKK3sKK30KKworVGV4dENoZWNraW5nUGFyYWdyYXBoOjpUZXh0
Q2hlY2tpbmdQYXJhZ3JhcGgoUmVmPFJhbmdlPiYmIGNoZWNraW5nUmFuZ2UsIFJlZjxSYW5nZT4m
JiBhdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlLCBSZWZQdHI8UmFuZ2U+JiYgcGFyYWdyYXBoUmFu
Z2UpCiAgICAgOiBtX2NoZWNraW5nUmFuZ2UoV1RGTW92ZShjaGVja2luZ1JhbmdlKSkKLSAgICAs
IG1fcGFyYWdyYXBoUmFuZ2UocGFyYWdyYXBoUmFuZ2UpCi0gICAgLCBtX2NoZWNraW5nU3RhcnQo
LTEpCi0gICAgLCBtX2NoZWNraW5nRW5kKC0xKQotICAgICwgbV9jaGVja2luZ0xlbmd0aCgtMSkK
KyAgICAsIG1fYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZShXVEZNb3ZlKGF1dG9tYXRpY1JlcGxh
Y2VtZW50UmFuZ2UpKQorICAgICwgbV9wYXJhZ3JhcGhSYW5nZShXVEZNb3ZlKHBhcmFncmFwaFJh
bmdlKSkKIHsKIH0KIApAQCAtMTM1LDYgKzEzOSw4IEBAIHZvaWQgVGV4dENoZWNraW5nUGFyYWdy
YXBoOjpleHBhbmRSYW5nZVRvTmV4dEVuZCgpCiB2b2lkIFRleHRDaGVja2luZ1BhcmFncmFwaDo6
aW52YWxpZGF0ZVBhcmFncmFwaFJhbmdlVmFsdWVzKCkKIHsKICAgICBtX2NoZWNraW5nU3RhcnQg
PSBtX2NoZWNraW5nRW5kID0gLTE7CisgICAgbV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0ID0g
LTE7CisgICAgbV9hdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCA9IC0xOwogICAgIG1fb2Zmc2V0
QXNSYW5nZSA9IG51bGxwdHI7CiAgICAgbV90ZXh0ID0gU3RyaW5nKCk7CiB9CkBAIC0yMTEsNiAr
MjE3LDI2IEBAIGludCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmNoZWNraW5nTGVuZ3RoKCkgY29u
c3QKICAgICByZXR1cm4gbV9jaGVja2luZ0xlbmd0aDsKIH0KIAoraW50IFRleHRDaGVja2luZ1Bh
cmFncmFwaDo6YXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpIGNvbnN0Cit7CisgICAgaWYgKG1f
YXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCAhPSAtMSkKKyAgICAgICAgcmV0dXJuIG1fYXV0b21h
dGljUmVwbGFjZW1lbnRTdGFydDsKKworICAgIGF1dG8gc3RhcnRPZmZzZXRSYW5nZSA9IFJhbmdl
OjpjcmVhdGUocGFyYWdyYXBoUmFuZ2UoKS5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIHBh
cmFncmFwaFJhbmdlKCkuc3RhcnRQb3NpdGlvbigpLCBtX2F1dG9tYXRpY1JlcGxhY2VtZW50UmFu
Z2UtPnN0YXJ0UG9zaXRpb24oKSk7CisgICAgbV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0ID0g
VGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFydE9mZnNldFJhbmdlLnB0cigpKTsKKyAgICBy
ZXR1cm4gbV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0OworfQorCitpbnQgVGV4dENoZWNraW5n
UGFyYWdyYXBoOjphdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCgpIGNvbnN0Cit7CisgICAgaWYg
KG1fYXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGggIT0gLTEpCisgICAgICAgIHJldHVybiBtX2F1
dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3RoOworCisgICAgYXV0byBlbmRPZmZzZXRSYW5nZSA9IFJh
bmdlOjpjcmVhdGUocGFyYWdyYXBoUmFuZ2UoKS5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCks
IHBhcmFncmFwaFJhbmdlKCkuc3RhcnRQb3NpdGlvbigpLCBtX2F1dG9tYXRpY1JlcGxhY2VtZW50
UmFuZ2UtPmVuZFBvc2l0aW9uKCkpOworICAgIG1fYXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGgg
PSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZE9mZnNldFJhbmdlLnB0cigpKSAtIGF1dG9t
YXRpY1JlcGxhY2VtZW50U3RhcnQoKTsKKyAgICByZXR1cm4gbV9hdXRvbWF0aWNSZXBsYWNlbWVu
dExlbmd0aDsKK30KKwogVGV4dENoZWNraW5nSGVscGVyOjpUZXh0Q2hlY2tpbmdIZWxwZXIoRWRp
dG9yQ2xpZW50JiBjbGllbnQsIFJhbmdlJiByYW5nZSkKICAgICA6IG1fY2xpZW50KGNsaWVudCkK
ICAgICAsIG1fcmFuZ2UocmFuZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRDaGVja2luZ0hlbHBlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tp
bmdIZWxwZXIuaAppbmRleCA2YjBmNDNmY2Y3NGFlYWU3MTU2Y2E5MjQ5ODYzYWQ3MmMwNTRkZDdl
Li5iYzc5YmFkNzA2NGU1MzhmZjExNWQyMDM0NjhmYmFiOWE2NGNjZTEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmgKQEAgLTMzLDcgKzMzLDggQEAgc3Ry
dWN0IFRleHRDaGVja2luZ1Jlc3VsdDsKIAogY2xhc3MgVGV4dENoZWNraW5nUGFyYWdyYXBoIHsK
IHB1YmxpYzoKLSAgICBleHBsaWNpdCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoUmVmPFJhbmdlPiYm
IGNoZWNraW5nUmFuZ2UsIFJhbmdlKiBwYXJhZ3JhcGhSYW5nZSA9IG51bGxwdHIpOworICAgIGV4
cGxpY2l0IFRleHRDaGVja2luZ1BhcmFncmFwaChSZWY8UmFuZ2U+JiYgY2hlY2tpbmdBbmRBdXRv
bWF0aWNSZXBsYWNlbWVudFJhbmdlKTsKKyAgICBleHBsaWNpdCBUZXh0Q2hlY2tpbmdQYXJhZ3Jh
cGgoUmVmPFJhbmdlPiYmIGNoZWNraW5nUmFuZ2UsIFJlZjxSYW5nZT4mJiBhdXRvbWF0aWNSZXBs
YWNlbWVudFJhbmdlLCBSZWZQdHI8UmFuZ2U+JiYgcGFyYWdyYXBoUmFuZ2UpOwogCiAgICAgaW50
IHJhbmdlTGVuZ3RoKCkgY29uc3Q7CiAgICAgUmVmPFJhbmdlPiBzdWJyYW5nZShpbnQgY2hhcmFj
dGVyT2Zmc2V0LCBpbnQgY2hhcmFjdGVyQ291bnQpIGNvbnN0OwpAQCAtNTUsNiArNTYsMTEgQEAg
cHVibGljOgogICAgIGludCBjaGVja2luZ0xlbmd0aCgpIGNvbnN0OwogICAgIFN0cmluZyBjaGVj
a2luZ1N1YnN0cmluZygpIGNvbnN0IHsgcmV0dXJuIHRleHRTdWJzdHJpbmcoY2hlY2tpbmdTdGFy
dCgpLCBjaGVja2luZ0xlbmd0aCgpKTsgfQogCisgICAgLy8gRGV0ZXJtaW5lcyB0aGUgcmFuZ2Ug
aW4gd2hpY2ggd2UgYWxsb3cgYXV0b21hdGljIHRleHQgcmVwbGFjZW1lbnQuIElmIGFuIGF1dG9t
YXRpYyByZXBsYWNlbWVudCByYW5nZSBpcyBub3QgcGFzc2VkIHRvIHRoZQorICAgIC8vIHRleHQg
Y2hlY2tpbmcgcGFyYWdyYXBoLCB0aGlzIGRlZmF1bHRzIHRvIHRoZSBzcGVsbCBjaGVja2luZyBy
YW5nZS4KKyAgICBpbnQgYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpIGNvbnN0OworICAgIGlu
dCBhdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCgpIGNvbnN0OworCiAgICAgYm9vbCBjaGVja2lu
Z1JhbmdlTWF0Y2hlcyhpbnQgbG9jYXRpb24sIGludCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJuIGxv
Y2F0aW9uID09IGNoZWNraW5nU3RhcnQoKSAmJiBsZW5ndGggPT0gY2hlY2tpbmdMZW5ndGgoKTsg
fQogICAgIGJvb2wgaXNDaGVja2luZ1JhbmdlQ292ZXJlZEJ5KGludCBsb2NhdGlvbiwgaW50IGxl
bmd0aCkgY29uc3QgeyByZXR1cm4gbG9jYXRpb24gPD0gY2hlY2tpbmdTdGFydCgpICYmIGxvY2F0
aW9uICsgbGVuZ3RoID49IGNoZWNraW5nU3RhcnQoKSArIGNoZWNraW5nTGVuZ3RoKCk7IH0KICAg
ICBib29sIGNoZWNraW5nUmFuZ2VDb3ZlcnMoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKSBjb25z
dCB7IHJldHVybiBsb2NhdGlvbiA8IGNoZWNraW5nRW5kKCkgJiYgbG9jYXRpb24gKyBsZW5ndGgg
PiBjaGVja2luZ1N0YXJ0KCk7IH0KQEAgLTY1LDEyICs3MSwxNSBAQCBwcml2YXRlOgogICAgIFJh
bmdlJiBvZmZzZXRBc1JhbmdlKCkgY29uc3Q7CiAKICAgICBSZWY8UmFuZ2U+IG1fY2hlY2tpbmdS
YW5nZTsKKyAgICBSZWY8UmFuZ2U+IG1fYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZTsKICAgICBt
dXRhYmxlIFJlZlB0cjxSYW5nZT4gbV9wYXJhZ3JhcGhSYW5nZTsKICAgICBtdXRhYmxlIFJlZlB0
cjxSYW5nZT4gbV9vZmZzZXRBc1JhbmdlOwogICAgIG11dGFibGUgU3RyaW5nIG1fdGV4dDsKLSAg
ICBtdXRhYmxlIGludCBtX2NoZWNraW5nU3RhcnQ7Ci0gICAgbXV0YWJsZSBpbnQgbV9jaGVja2lu
Z0VuZDsKLSAgICBtdXRhYmxlIGludCBtX2NoZWNraW5nTGVuZ3RoOworICAgIG11dGFibGUgaW50
IG1fY2hlY2tpbmdTdGFydCB7IC0xIH07CisgICAgbXV0YWJsZSBpbnQgbV9jaGVja2luZ0VuZCB7
IC0xIH07CisgICAgbXV0YWJsZSBpbnQgbV9jaGVja2luZ0xlbmd0aCB7IC0xIH07CisgICAgbXV0
YWJsZSBpbnQgbV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0IHsgLTEgfTsKKyAgICBtdXRhYmxl
IGludCBtX2F1dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3RoIHsgLTEgfTsKIH07CiAKIGNsYXNzIFRl
eHRDaGVja2luZ0hlbHBlciB7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggYzk2MWE3NjVjNDY2NWQ2MDZkMTY2MjVjOWU0YjdjOGQyNjI0MDBkMy4u
YmVjOWJmNWU2ZjA2ZTJjYTFjZDJhYmIyOWQ2NmQ1OGQ2ZDZjOWJlMiAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDE4
LTA3LTAxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAg
IFttYWNPU10gVGV4dCByZXBsYWNlbWVudHMgdGhhdCBlbmQgd2l0aCBzeW1ib2xzIGFyZSBleHBh
bmRlZCBpbW1lZGlhdGVseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTg3MjI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MTExMjQzMz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBBZGRzIHRlc3Rpbmcgc3Vw
cG9ydCBmb3IgbW9ja2luZyBOU1NwZWxsQ2hlY2tlcidzIHRleHQgY2hlY2tpbmcgcmVzdWx0cy4g
U2VlIGJlbG93IGZvciBtb3JlIGRldGFpbHMsIGFuZCB0aGUgbmV3CisgICAgICAgIGxheW91dCB0
ZXN0IGZvciBhbiBleGFtcGxlIG9mIGl0cyB1c2FnZS4KKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChzZXRTcGVsbENoZWNrZXJU
ZXh0UmVwbGFjZW1lbnRzQ2FsbGJhY2spOgorCisgICAgICAgIEFkZCBiaW5kaW5ncyBzdXBwb3J0
IGluIFRlc3RSdW5uZXIgdG8gc3BlY2lmeSBhIHNldCBvZiB0ZXh0IHJlcGxhY2VtZW50IG1hcHBp
bmdzLiBFYWNoIGVudHJ5IGluIHRoZSBkaWN0aW9uYXJ5CisgICAgICAgIG1hcHMgYSBzdHJpbmcg
cmVwcmVzZW50aW5nIGFuIGlucHV0IHRvIHRoZSBOU1NwZWxsQ2hlY2tlciB0byBzb21lIGluZm9y
bWF0aW9uIGRlc2NyaWJpbmcgdGhlIHNwZWxsIGNoZWNraW5nCisgICAgICAgIHJlc3VsdCB0aGF0
IExheW91dFRlc3RTcGVsbENoZWNrZXIgd2lsbCByZXR1cm4uCisKKyAgICAgICAgKFRlc3RSdW5u
ZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5l
ci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAg
ICAgICAgKHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZyk6CisKKyAg
ICAgICAgUmVzdG9yZSB0aGUgb3JpZ2luYWwgc2hhcmVkIE5TU3BlbGxjaGVja2VyIGJlZm9yZSB0
cmFuc2l0aW9uaW5nIHRvIHRoZSBuZXh0IGxheW91dCB0ZXN0LCBpZiBuZWVkZWQuCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW06IFJl
bW92ZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW06Cisg
ICAgICAgIChUZXN0UnVubmVyOjpzZXRTcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZCk6CisgICAg
ICAgIChUZXN0UnVubmVyOjpzZXRTcGVsbENoZWNrZXJUZXh0UmVwbGFjZW1lbnRzKToKKworICAg
ICAgICBUaGVzZSB0ZXN0UnVubmVyIG1ldGhvZHMgZW5zdXJlIHRoYXQgYC1bTlNTcGVsbENoZWNr
ZXIgc2hhcmVkU3BlbGxDaGVja2VyXWAgaXMgc3dpenpsZWQgdG8gcmV0dXJuIG91ciBtb2NrCisg
ICAgICAgIExheW91dFRlc3RTcGVsbENoZWNrZXIgaW5zdGFuY2UgYmVmb3JlIGNhbGxpbmcgaW50
byBpdC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcDoK
KyAgICAgICAgKFRlc3RSdW5uZXI6OnNldFNwZWxsQ2hlY2tlclRleHRSZXBsYWNlbWVudHMpOgor
ICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5o
OiBSZW5hbWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlU3Bl
bGxDaGVja2VyLmguCisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0
U3BlbGxDaGVja2VyLm1tOiBBZGRlZC4KKworICAgICAgICBNb3ZlZCBEdW1wUmVuZGVyVHJlZVNw
ZWxsQ2hlY2tlciB0byBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLCBhbmQgbWFkZSBpdCBjb21waWxl
IGZvciBib3RoIFdlYktpdFRlc3RSdW5uZXIKKyAgICAgICAgKG1vZGVybiBXZWJLaXQpIGFuZCBE
dW1wUmVuZGVyVHJlZSAobGVnYWN5IFdlYktpdCkgYnkgcHV0dGluZyBpdCBpbiBUZXN0UnVubmVy
U2hhcmVkLgorCisgICAgICAgIChleGlzdGluZ0dsb2JhbExheW91dFRlc3RTcGVsbENoZWNrZXIp
OgorICAgICAgICAoZW5zdXJlR2xvYmFsTGF5b3V0VGVzdFNwZWxsQ2hlY2tlcik6CisgICAgICAg
IChzdHJpbmdGb3JDb3JyZWN0aW9uUmVzcG9uc2UpOgorICAgICAgICAobnNUZXh0Q2hlY2tpbmdU
eXBlKToKKyAgICAgICAgKC1bTGF5b3V0VGVzdFRleHRDaGVja2luZ1Jlc3VsdCBpbml0V2l0aFR5
cGU6cmFuZ2U6cmVwbGFjZW1lbnQ6XSk6CisgICAgICAgICgtW0xheW91dFRlc3RUZXh0Q2hlY2tp
bmdSZXN1bHQgcmFuZ2VdKToKKyAgICAgICAgKC1bTGF5b3V0VGVzdFRleHRDaGVja2luZ1Jlc3Vs
dCByZXN1bHRUeXBlXSk6CisgICAgICAgICgtW0xheW91dFRlc3RUZXh0Q2hlY2tpbmdSZXN1bHQg
cmVwbGFjZW1lbnRTdHJpbmddKToKKyAgICAgICAgKC1bTGF5b3V0VGVzdFRleHRDaGVja2luZ1Jl
c3VsdCBkZXNjcmlwdGlvbl0pOgorCisgICAgICAgIExheW91dFRlc3RUZXh0Q2hlY2tpbmdSZXN1
bHQgcmVwcmVzZW50cyBhIGZha2UgTlNUZXh0Q2hlY2tpbmdSZXN1bHQgY29udGFpbmluZyBzcGVs
bCBjaGVja2luZyByZXN1bHRzIHN1cHBsaWVkCisgICAgICAgIGJ5IHRoZSBsYXlvdXQgdGVzdC4K
KworICAgICAgICAoK1tMYXlvdXRUZXN0U3BlbGxDaGVja2VyIGluc3RhbGxJZk5lY2Vzc2FyeV0p
OgorICAgICAgICAoK1tMYXlvdXRUZXN0U3BlbGxDaGVja2VyIHVuaW5zdGFsbEFuZFJlc2V0XSk6
CisKKyAgICAgICAgSGVscGVyIG1ldGhvZHMgdG8gYmVnaW4gYW5kIGVuZCBzd2l6emxpbmcgdGhl
IHNoYXJlZCBOU1NwZWxsQ2hlY2tlci4KKworICAgICAgICAoLVtMYXlvdXRUZXN0U3BlbGxDaGVj
a2VyIHJlc2V0XSk6CisKKyAgICAgICAgUmVzZXRzIHRoZSBzdGF0ZSBvZiB0aGUgTGF5b3V0VGVz
dFNwZWxsQ2hlY2tlciAodGhpcyBlbnRhaWxzIGNsZWFyaW5nIHRoZSBmYWtlIHJlcGxhY2VtZW50
cyBkaWN0aW9uYXJ5IGFuZAorICAgICAgICB0dXJuaW5nIG9mZiBsb2dnaW5nIGZvciByZWNvcmRl
ZCBzcGVsbGNoZWNraW5nIHJlc3BvbnNlcykuCisKKyAgICAgICAgKC1bTGF5b3V0VGVzdFNwZWxs
Q2hlY2tlciByZXBsYWNlbWVudHNdKToKKyAgICAgICAgKC1bTGF5b3V0VGVzdFNwZWxsQ2hlY2tl
ciBzZXRSZXBsYWNlbWVudHM6XSk6CisgICAgICAgICgtW0xheW91dFRlc3RTcGVsbENoZWNrZXIg
c2V0UmVwbGFjZW1lbnRzRnJvbUpTT2JqZWN0OmluQ29udGV4dDpdKToKKworICAgICAgICBIZWxw
ZXIgbWV0aG9kIHRvIHRha2UgYSBgSlNPYmplY3RSZWZgIHN1cHBsaWVkIGJ5IHRoZSB0ZXN0IHJ1
bm5lciBhbmQgdHJhbnNmb3JtIGl0IGludG8gYSBtYXAgb2Ygc3BlbGwgY2hlY2tpbmcKKyAgICAg
ICAgc3RyaW5nIGlucHV0cyB0byBMYXlvdXRUZXN0VGV4dENoZWNraW5nUmVzdWx0cy4KKworICAg
ICAgICAoLVtMYXlvdXRUZXN0U3BlbGxDaGVja2VyIGNoZWNrU3RyaW5nOnJhbmdlOnR5cGVzOm9w
dGlvbnM6aW5TcGVsbERvY3VtZW50V2l0aFRhZzpvcnRob2dyYXBoeTp3b3JkQ291bnQ6XSk6CisK
KyAgICAgICAgQ29uc3VsdCB0aGUgdGV4dCByZXBsYWNlbWVudCBtYXAgYW5kIGJhaWwgZWFybHkg
aWYgYSBtYXRjaCBpcyBmb3VuZCwgYmVmb3JlIGNhbGxpbmcgaW50byByZWFsIE5TU3BlbGxDaGVj
a2VyCisgICAgICAgIGxvZ2ljIHRvIHBlcmZvcm0gc3BlbGxjaGVja2luZy4KKworICAgICAgICAo
LVtMYXlvdXRUZXN0U3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlOnRvQ29ycmVjdGlvbjpmb3JX
b3JkOmxhbmd1YWdlOmluU3BlbGxEb2N1bWVudFdpdGhUYWc6XSk6CisKKyAgICAgICAgUmVpbXBs
ZW1lbnQgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uYWxpdHkgaW4gRHVtcFJlbmRlclRyZWVTcGVsbENo
ZWNrZXIgdG8gbWFrZSBgLXJlY29yZFJlc3BvbnNlOuKApmAgcHJpbnQgdG8gc3Rkb3V0CisgICAg
ICAgIGJ5IG92ZXJyaWRpbmcgdGhlIG1ldGhvZCBhbmQgcHJpbnRpbmcgaWYgdGhlIGAtc3BlbGxD
aGVja2VyTG9nZ2luZ0VuYWJsZWRgIHByb3BlcnR5IGhhcyBiZWVuIHNldCB0byBZRVMuCisKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKwogMjAxOC0wNi0zMCAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJv
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0NNYWtlXSBidWlsZC13ZWJraXQgc2hvdWxkIGJlIGFi
bGUgdG8gZW5hYmxlIGFkZHJlc3Mgc2FuaXRpemVyCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBkYzliOWZiOGI4NzMyMWY2NDM0ZTQ2NmY0NDBiMTdkNTY0YzhiYTYwLi4yODdkMjZhNjdj
MDg4Y2RiNjYxOGFlZTRlMTIwOWM1YjRmMDZkMTI5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTc3LDcgKzc3LDYgQEAKIAkJMjlDRkJBMkUxMjI3M0ExMDAwQkMzMEMwIC8qIEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMjlDRkJBMkQxMjI3M0ExMDAwQkMzMEMwIC8qIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyTWFjLm1tICovOyB9OwogCQkyQ0U4OEZBMjE3MTI0RDhDMDA3MzRGQzAgLyogSmF2
YVNjcmlwdFRocmVhZGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyQ0U4OEZBMTE3MTI0Q0VFMDA3MzRGQzAgLyogSmF2YVNjcmlwdFRocmVhZGlu
Zy5jcHAgKi87IH07CiAJCTJENDAzRjFCMTUwODcyMDkwMDUzNThEMiAvKiBMYXlvdXRUZXN0SGVs
cGVyLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDQw
M0VBMjE1MDg3MTQyMDA1MzU4RDIgLyogTGF5b3V0VGVzdEhlbHBlci5tICovOyB9OwotCQkyREEy
RTNBNTFFMUJBNTQxMDBBM0JCRDAgLyogRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREEyRTNBNDFFMUJB
NTQxMDBBM0JCRDAgLyogRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW0gKi87IH07CiAJCTMx
MTE3QjNEMTVEOUE1NkEwMDE2M0JDOCAvKiBNb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTExN0IzQjE1
RDlBNTZBMDAxNjNCQzggLyogTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tICovOyB9Owog
CQkzMTI5NDNGOTFFNzFGMkI0MDAxRUUyQ0MgLyogSU9TTGF5b3V0VGVzdENvbW11bmljYXRpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE0OEEw
NTUxRTZGOTBGNDAwRDNCMzE2IC8qIElPU0xheW91dFRlc3RDb21tdW5pY2F0aW9uLmNwcCAqLzsg
fTsKIAkJNDQ2NENBQkUxQzIwQTA4QjAwRTVCQjU1IC8qIER1bXBSZW5kZXJUcmVlQXBwTWFpbi5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NjRDQUJE
MUMyMEEwNzAwMEU1QkI1NSAvKiBEdW1wUmVuZGVyVHJlZUFwcE1haW4ubW0gKi87IH07CkBAIC0x
NDgsNiArMTQ3LDcgQEAKIAkJQzIzRUEyMDgxQkM5RjA1MTAwQzk4MEI3IC8qIEZvbnRXaXRoRmVh
dHVyZXMub3RmIGluIENvcHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMjNFQTIwNjFCQzlFQUJBMDBDOTgwQjcgLyogRm9udFdpdGhGZWF0dXJlcy5vdGYg
Ki87IH07CiAJCUMyM0VBMjA5MUJDOUYwNTEwMEM5ODBCNyAvKiBGb250V2l0aEZlYXR1cmVzLnR0
ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzIzRUEyMDcxQkM5RUFCQTAwQzk4MEI3IC8qIEZvbnRXaXRoRmVhdHVyZXMudHRmICovOyB9Owog
CQlFMUI3ODE2NTExQUYzMUI3MDA3RTFCQzIgLyogTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUI3ODA4NzEx
QUYxNjY5MDA3RTFCQzIgLyogTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIubW0gKi87IH07CisJCUY0
QzM1NzhEMjBFODQ0NEUwMEZBMDc0OCAvKiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRDMzU3ODgyMEU4NDQy
NzAwRkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIubW0gKi87IH07CiAJCUY0RDQyMzYx
MURENTA0ODIwMDY3ODI5MCAvKiBUZXh0SW5wdXRDb250cm9sbGVySU9TLm0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEQ0MjM1RjFERDUwNDUzMDA2Nzgy
OTAgLyogVGV4dElucHV0Q29udHJvbGxlcklPUy5tICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmls
ZSBzZWN0aW9uICovCiAKQEAgLTI4Miw4ICsyODIsNiBAQAogCQkyQ0U4OEZBMTE3MTI0Q0VFMDA3
MzRGQzAgLyogSmF2YVNjcmlwdFRocmVhZGluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKYXZhU2NyaXB0VGhyZWFkaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkQ0MDNFQTIxNTA4NzE0MjAwNTM1OEQyIC8qIExheW91dFRlc3RIZWxwZXIu
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBuYW1lID0gTGF5b3V0VGVzdEhlbHBlci5t
OyBwYXRoID0gbWFjL0xheW91dFRlc3RIZWxwZXIubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMkQ0MDNGMTkxNTA4NzFGOTAwNTM1OEQyIC8qIExheW91dFRlc3RIZWxwZXIgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNo
LW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IExheW91dFRlc3RIZWxw
ZXI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0JCTJEQTJFM0EzMUUxQkE1
NDEwMEEzQkJEMCAvKiBEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5oOyBwYXRoID0g
bWFjL0R1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTJEQTJFM0E0MUUxQkE1NDEwMEEzQkJEMCAvKiBEdW1wUmVuZGVyVHJlZVNwZWxsQ2hl
Y2tlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IER1bXBSZW5k
ZXJUcmVlU3BlbGxDaGVja2VyLm1tOyBwYXRoID0gbWFjL0R1bXBSZW5kZXJUcmVlU3BlbGxDaGVj
a2VyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRURFMERBQTFGNTEzMURFMDBE
NUY4REYgLyogQXBwS2l0VGVzdFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBcHBLaXRUZXN0U1BJLmg7
IHBhdGggPSBtYWMvQXBwS2l0VGVzdFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzMTExN0IzQTE1RDlBNTZBMDAxNjNCQzggLyogTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1vY2tXZWJOb3RpZmljYXRpb25Q
cm92aWRlci5oOyBwYXRoID0gbWFjL01vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTExN0IzQjE1RDlBNTZBMDAxNjNCQzggLyogTW9j
a1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBuYW1lID0gTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tOyBwYXRoID0gbWFjL01v
Y2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTQxMiw2ICs0MTAsOCBAQAogCQlDMjNFQTIwNzFCQzlFQUJBMDBDOTgwQjcgLyogRm9udFdp
dGhGZWF0dXJlcy50dGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBmaWxlOyBuYW1lID0gRm9udFdpdGhGZWF0dXJlcy50dGY7IHBhdGggPSBmb250cy9G
b250V2l0aEZlYXR1cmVzLnR0Zjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFCNzgw
ODUxMUFGMTY0MzAwN0UxQkMyIC8qIE1vY2tHZW9sb2NhdGlvblByb3ZpZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1vY2tHZW9sb2NhdGlvblByb3ZpZGVyLmg7IHBhdGgg
PSBtYWMvTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTFCNzgwODcxMUFGMTY2OTAwN0UxQkMyIC8qIE1vY2tHZW9sb2NhdGlvblByb3ZpZGVy
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gTW9ja0dlb2xvY2F0
aW9uUHJvdmlkZXIubW07IHBhdGggPSBtYWMvTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0QzM1Nzg4MjBFODQ0MjcwMEZBMDc0OCAvKiBM
YXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBuYW1lID0gTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbTsgcGF0aCA9IC4uL1Rlc3RSdW5uZXJT
aGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRjRDMzU3ODkyMEU4NDQyNzAwRkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENo
ZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGF5b3V0VGVzdFNwZWxs
Q2hlY2tlci5oOyBwYXRoID0gLi4vVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3Bl
bGxDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RDQyMzVGMURENTA0
NTMwMDY3ODI5MCAvKiBUZXh0SW5wdXRDb250cm9sbGVySU9TLm0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMub2JqYzsgbmFtZSA9IFRleHRJbnB1dENvbnRyb2xsZXJJT1MubTsgcGF0aCA9IGlvcy9U
ZXh0SW5wdXRDb250cm9sbGVySU9TLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0
RDQyMzYwMURENTA0NjkwMDY3ODI5MCAvKiBUZXh0SW5wdXRDb250cm9sbGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRJbnB1dENvbnRyb2xsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KQEAg
LTY4Nyw2ICs2ODcsNyBAQAogCQkzMTQ4QTA2NTFFNkY5MEY0MDBEM0IzMTYgLyogVGVzdFJ1bm5l
clNoYXJlZCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
RjRCNkMzMTgyMEU4NDM4MjAwOEFDMjI1IC8qIGNvY29hICovLAogCQkJCTMxNDhBMDU1MUU2Rjkw
RjQwMEQzQjMxNiAvKiBJT1NMYXlvdXRUZXN0Q29tbXVuaWNhdGlvbi5jcHAgKi8sCiAJCQkJMzE0
OEEwNTYxRTZGOTBGNDAwRDNCMzE2IC8qIElPU0xheW91dFRlc3RDb21tdW5pY2F0aW9uLmggKi8s
CiAJCQkpOwpAQCAtNzc5LDggKzc4MCw2IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlBOEI5MUFE
RjBDRjNCMzcyMDA4RjkxRkYgLyogRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLmggKi8sCiAJCQkJ
QThCOTFBRDcwQ0YzQjMyRjAwOEY5MUZGIC8qIER1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tbSAq
LywKLQkJCQkyREEyRTNBMzFFMUJBNTQxMDBBM0JCRDAgLyogRHVtcFJlbmRlclRyZWVTcGVsbENo
ZWNrZXIuaCAqLywKLQkJCQkyREEyRTNBNDFFMUJBNTQxMDBBM0JCRDAgLyogRHVtcFJlbmRlclRy
ZWVTcGVsbENoZWNrZXIubW0gKi8sCiAJCQkJQThCOTFBREQwQ0YzQjM3MjAwOEY5MUZGIC8qIER1
bXBSZW5kZXJUcmVlV2luZG93LmggKi8sCiAJCQkJQThCOTFBRDkwQ0YzQjMyRjAwOEY5MUZGIC8q
IER1bXBSZW5kZXJUcmVlV2luZG93Lm1tICovLAogCQkJKTsKQEAgLTgxNyw2ICs4MTYsMTUgQEAK
IAkJCW5hbWUgPSBQaXhlbER1bXA7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9Owor
CQlGNEI2QzMxODIwRTg0MzgyMDA4QUMyMjUgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhH
cm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUY0QzM1Nzg5MjBFODQ0MjcwMEZBMDc0OCAvKiBM
YXlvdXRUZXN0U3BlbGxDaGVja2VyLmggKi8sCisJCQkJRjRDMzU3ODgyMEU4NDQyNzAwRkEwNzQ4
IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIubW0gKi8sCisJCQkpOworCQkJbmFtZSA9IGNvY29h
OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJRjRENDIzNUQxREQ0Rjk5OTAw
Njc4MjkwIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CkBAIC0xMDgxLDcgKzEwODksNiBAQAogCQkJCUJDQTE4QjdCMEM5QjA4RjEwMDExNDM2OSAvKiBE
dW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mby5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4RDc5Q0VC
MEZDMjhCMkMwMDRBQzhGRSAvKiBEdW1wUmVuZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJjZS5tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQThCOTFBREEwQ0YzQjMyRjAwOEY5MUZGIC8qIER1bXBSZW5kZXJU
cmVlUGFzdGVib2FyZC5tbSBpbiBTb3VyY2VzICovLAotCQkJCTJEQTJFM0E1MUUxQkE1NDEwMEEz
QkJEMCAvKiBEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUE4QjkxQURDMENGM0IzMkYwMDhGOTFGRiAvKiBEdW1wUmVuZGVyVHJlZVdpbmRvdy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUJDQTE4QjYyMEM5QjA4QzIwMDExNDM2OSAvKiBFZGl0aW5nRGVsZWdh
dGUubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEI3MDBDOUIwOERCMDAxMTQzNjkgLyogRXZl
bnRTZW5kaW5nQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLApAQCAtMTA5Myw2ICsxMTAwLDcg
QEAKIAkJCQkyQ0U4OEZBMjE3MTI0RDhDMDA3MzRGQzAgLyogSmF2YVNjcmlwdFRocmVhZGluZy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjE4RTcwNjFENkJBMDIzMDAyN0U1NDcgLyogSlNVSVNj
cmlwdENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYxOEU3MTMxRDZCQzQzQTAw
MjdFNTQ3IC8qIEpTV3JhcHBlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGNEMzNTc4RDIwRTg0
NDRFMDBGQTA3NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUUxQjc4MTY1MTFBRjMxQjcwMDdFMUJDMiAvKiBNb2NrR2VvbG9jYXRpb25Qcm92aWRlci5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTMxMTE3QjNEMTVEOUE1NkEwMDE2M0JDOCAvKiBNb2NrV2Vi
Tm90aWZpY2F0aW9uUHJvdmlkZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEI3MjBDOUIw
OERCMDAxMTQzNjkgLyogTmF2aWdhdGlvbkNvbnRyb2xsZXIubSBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAppbmRleCBmOGFkOTUxNTE3NDBiNjZjNzQ2OTJhZDUy
ZDM3NGEzMDVkYTQ0NjcxLi43ZThlYzliZDQ1YjBiNzVmNGU4ZTkyNmJhNWM3ZDYzOGU2MjZlNDYz
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcApAQCAtMTc4OCw2ICsxNzg4LDE2IEBA
IHN0YXRpYyBKU1ZhbHVlUmVmIHNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRTcGVsbENoZWNrZXJUZXh0UmVw
bGFjZW1lbnRzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0
aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3Qg
SlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlm
IChhcmd1bWVudENvdW50IDwgMSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHQpOworCisgICAgYXV0byogcnVubmVyID0gc3RhdGljX2Nhc3Q8VGVzdFJ1bm5lcio+
KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgcnVubmVyLT5zZXRTcGVsbENo
ZWNrZXJUZXh0UmVwbGFjZW1lbnRzKGNvbnRleHQsIEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBh
cmd1bWVudHNbMF0sIG51bGxwdHIpKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQo
Y29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIHNldE9wZW5QYW5lbEZpbGVzQ2FsbGJh
Y2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJl
ZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1
bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIGlmIChhcmd1bWVudENvdW50
ID09IDEpCkBAIC0yMjU1LDYgKzIyNjUsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBUZXN0UnVubmVy
OjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJydW5VSVNjcmlwdCIsIHJ1blVJU2NyaXB0
Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiaW1hZ2VDb3VudEluR2VuZXJhbFBhc3RlYm9h
cmQiLCBpbWFnZUNvdW50SW5HZW5lcmFsUGFzdGVib2FyZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAg
ICAgIHsgInNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkIiwgc2V0U3BlbGxDaGVja2VyTG9n
Z2luZ0VuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzZXRTcGVsbENoZWNrZXJU
ZXh0UmVwbGFjZW1lbnRzIiwgc2V0U3BlbGxDaGVja2VyVGV4dFJlcGxhY2VtZW50c0NhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE9wZW5QYW5lbEZpbGVzIiwgc2V0T3BlblBhbmVsRmls
ZXNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJmb3JjZUltbWVkaWF0ZUNvbXBsZXRpb24i
LCBmb3JjZUltbWVkaWF0ZUNvbXBsZXRpb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7IDAs
IDAsIDAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCmluZGV4IDNlMzI4YjgyMjMyM2ZlYzRi
NGI1NGY3NzdhY2VkMjQzNDY0NmI2YzEuLmRiZjE0ZmViNjE3OGJjYWQ2Nzk2YTAxYzQ0NTdhYjI1
YmNkMjIxY2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgKQEAgLTM3Niw2ICszNzYsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBkdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoKSBjb25zdCB7IHJl
dHVybiBtX2R1bXBKU0NvbnNvbGVMb2dJblN0ZEVycjsgfQogCiAgICAgdm9pZCBzZXRTcGVsbENo
ZWNrZXJMb2dnaW5nRW5hYmxlZChib29sKTsKKyAgICB2b2lkIHNldFNwZWxsQ2hlY2tlclRleHRS
ZXBsYWNlbWVudHMoSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiByZXBsYWNlbWVudHMpOwogCiAg
ICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBvcGVuUGFuZWxGaWxlcygpIGNvbnN0
IHsgcmV0dXJuIG1fb3BlblBhbmVsRmlsZXM7IH0KICAgICB2b2lkIHNldE9wZW5QYW5lbEZpbGVz
KEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVt
cFJlbmRlclRyZWUubW0KaW5kZXggZDY5Njc3YmQ5ZWU3M2E4OWQyZjIwNjQ1MDQ4ZGM3MDJjOTZm
NzNiOS4uMmQ1OWRhNzhiNTIxMDgwODQ1NWY2NGY5NjlhOGM2MmVlMzc5Y2RkOCAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtMzQsMTMgKzM0LDEzIEBA
CiAjaW1wb3J0ICJEZWZhdWx0UG9saWN5RGVsZWdhdGUuaCIKICNpbXBvcnQgIkR1bXBSZW5kZXJU
cmVlRHJhZ2dpbmdJbmZvLmgiCiAjaW1wb3J0ICJEdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQuaCIK
LSNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLmgiCiAjaW1wb3J0ICJEdW1wUmVu
ZGVyVHJlZVdpbmRvdy5oIgogI2ltcG9ydCAiRWRpdGluZ0RlbGVnYXRlLmgiCiAjaW1wb3J0ICJF
dmVudFNlbmRpbmdDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJGcmFtZUxvYWREZWxlZ2F0ZS5oIgog
I2ltcG9ydCAiSGlzdG9yeURlbGVnYXRlLmgiCiAjaW1wb3J0ICJKYXZhU2NyaXB0VGhyZWFkaW5n
LmgiCisjaW1wb3J0ICJMYXlvdXRUZXN0U3BlbGxDaGVja2VyLmgiCiAjaW1wb3J0ICJNb2NrR2Vv
bG9jYXRpb25Qcm92aWRlci5oIgogI2ltcG9ydCAiTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVy
LmgiCiAjaW1wb3J0ICJOYXZpZ2F0aW9uQ29udHJvbGxlci5oIgpAQCAtMTg2OCw3ICsxODY4LDkg
QEAgc3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5n
KGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb24KIAogICAgIFttYWluRnJhbWUgX2NsZWFyT3BlbmVy
XTsKIAotICAgIHNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKGZhbHNlKTsKKyNpZiBQTEFU
Rk9STShNQUMpCisgICAgW0xheW91dFRlc3RTcGVsbENoZWNrZXIgdW5pbnN0YWxsQW5kUmVzZXRd
OworI2VuZGlmCiAKICAgICByZXNldEFjY3VtdWxhdGVkTG9ncygpOwogICAgIFdlYkNvcmVUZXN0
U3VwcG9ydDo6aW5pdGlhbGl6ZUxvZ0NoYW5uZWxzSWZOZWNlc3NhcnkoKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5oIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlM2ZkNzFjNDIxMWMwYjI3Yzc1YzkxZjE2NjFm
YjdjYzYxNDE4NGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLmgK
KysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotdm9pZCBzZXRTcGVs
bENoZWNrZXJMb2dnaW5nRW5hYmxlZChib29sKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5tbSBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5tbQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYmJiNGQ5NmRlOWUyYTFhMmQ3N2NjYjM1MjhiNzMxZDFiZGYwOWRmNy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW0KKysrIC9kZXYvbnVs
bApAQCAtMSw5MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1w
b3J0ICJEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5oIgotCi0jaWYgUExBVEZPUk0oTUFDKQot
Ci0jaW1wb3J0IDxBcHBLaXQvTlNTcGVsbENoZWNrZXIuaD4KLSNpbXBvcnQgPHd0Zi9Bc3NlcnRp
b25zLmg+Ci0jaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KLQotc3RhdGljIGJvb2wg
c3BlbGxDaGVja2VyTG9nZ2luZ0VuYWJsZWQ7Ci1zdGF0aWMgSU1QIGFwcEtpdFJlY29yZFJlc3Bv
bnNlSU1QOwotCi1zdGF0aWMgY29uc3QgY2hhciAqc3RyaW5nRm9yQ29ycmVjdGlvblJlc3BvbnNl
KE5TQ29ycmVjdGlvblJlc3BvbnNlIGNvcnJlY3Rpb25SZXNwb25zZSkKLXsKLSAgICBzd2l0Y2gg
KGNvcnJlY3Rpb25SZXNwb25zZSkgewotICAgIGNhc2UgTlNDb3JyZWN0aW9uUmVzcG9uc2VOb25l
OgotICAgICAgICByZXR1cm4gIm5vbmUiOwotICAgIGNhc2UgTlNDb3JyZWN0aW9uUmVzcG9uc2VB
Y2NlcHRlZDoKLSAgICAgICAgcmV0dXJuICJhY2NlcHRlZCI7Ci0gICAgY2FzZSBOU0NvcnJlY3Rp
b25SZXNwb25zZVJlamVjdGVkOgotICAgICAgICByZXR1cm4gInJlamVjdGVkIjsKLSAgICBjYXNl
IE5TQ29ycmVjdGlvblJlc3BvbnNlSWdub3JlZDoKLSAgICAgICAgcmV0dXJuICJpZ25vcmVkIjsK
LSAgICBjYXNlIE5TQ29ycmVjdGlvblJlc3BvbnNlRWRpdGVkOgotICAgICAgICByZXR1cm4gImVk
aXRlZCI7Ci0gICAgY2FzZSBOU0NvcnJlY3Rpb25SZXNwb25zZVJldmVydGVkOgotICAgICAgICBy
ZXR1cm4gInJldmVydGVkIjsKLSAgICB9Ci0KLSAgICByZXR1cm4gImludmFsaWQiOwotfQotCi1z
dGF0aWMgdm9pZCBkcnRfTlNTcGVsbENoZWNrZXJfcmVjb3JkUmVzcG9uc2VUb0NvcnJlY3Rpb24o
aWQgc2VsZiwgU0VMIF9jbWQsIE5TQ29ycmVjdGlvblJlc3BvbnNlIHJlc3BvbnNlLCBOU1N0cmlu
ZyAqY29ycmVjdGlvbiwgTlNTdHJpbmcgKndvcmQsIE5TU3RyaW5nICpsYW5ndWFnZSwgTlNJbnRl
Z2VyIHNwZWxsRG9jdW1lbnRUYWcpCi17Ci0gICAgaWYgKHNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFi
bGVkKQotICAgICAgICBwcmludGYoIk5TU3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlVG9Db3Jy
ZWN0aW9uOiAlcyAtPiAlcyAocmVzcG9uc2U6ICVzKVxuIiwgW3dvcmQgVVRGOFN0cmluZ10sIFtj
b3JyZWN0aW9uIFVURjhTdHJpbmddLCBzdHJpbmdGb3JDb3JyZWN0aW9uUmVzcG9uc2UocmVzcG9u
c2UpKTsKLQotICAgIHd0ZkNhbGxJTVA8dm9pZCwgTlNDb3JyZWN0aW9uUmVzcG9uc2UsIE5TU3Ry
aW5nICosIE5TU3RyaW5nICosIE5TU3RyaW5nICosIE5TSW50ZWdlcj4oYXBwS2l0UmVjb3JkUmVz
cG9uc2VJTVAsIHNlbGYsIF9jbWQsIHJlc3BvbnNlLCBjb3JyZWN0aW9uLCB3b3JkLCBsYW5ndWFn
ZSwgc3BlbGxEb2N1bWVudFRhZyk7Ci19Ci0KLXN0YXRpYyB2b2lkIHN3aXp6bGVOU1NwZWxsQ2hl
Y2tlck1ldGhvZHNJZk5lZWRlZCgpCi17Ci0gICAgc3RhdGljIGJvb2wgaGFzU3dpenpsZWQ7Ci0g
ICAgaWYgKGhhc1N3aXp6bGVkKQotICAgICAgICByZXR1cm47Ci0gICAgaGFzU3dpenpsZWQgPSB0
cnVlOwotCi0gICAgTWV0aG9kIHJlY29yZFJlc3BvbnNlTWV0aG9kID0gY2xhc3NfZ2V0SW5zdGFu
Y2VNZXRob2Qob2JqY19nZXRDbGFzcygiTlNTcGVsbENoZWNrZXIiKSwgQHNlbGVjdG9yKHJlY29y
ZFJlc3BvbnNlOnRvQ29ycmVjdGlvbjpmb3JXb3JkOmxhbmd1YWdlOmluU3BlbGxEb2N1bWVudFdp
dGhUYWc6KSk7Ci0KLSAgICBhcHBLaXRSZWNvcmRSZXNwb25zZUlNUCA9IG1ldGhvZF9zZXRJbXBs
ZW1lbnRhdGlvbihyZWNvcmRSZXNwb25zZU1ldGhvZCwgKElNUClkcnRfTlNTcGVsbENoZWNrZXJf
cmVjb3JkUmVzcG9uc2VUb0NvcnJlY3Rpb24pOwotfQotCi12b2lkIHNldFNwZWxsQ2hlY2tlckxv
Z2dpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKLXsKLSAgICBzd2l6emxlTlNTcGVsbENoZWNrZXJN
ZXRob2RzSWZOZWVkZWQoKTsKLQotICAgIHNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkID0gZW5h
YmxlZDsKLX0KLQotI2Vsc2UgLy8gUExBVEZPUk0oTUFDKQotCi12b2lkIHNldFNwZWxsQ2hlY2tl
ckxvZ2dpbmdFbmFibGVkKGJvb2wpCi17Ci19Ci0KLSNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbSBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCmluZGV4IDZlMDJmZjAzYTIz
OTI4MTMyNGY0ZmFhMmU1ZjFhN2RjNTFmMTg2OTQuLmRjMzMyYWU1MzljMmRlMTc3ZjE0MGMwNmRk
M2YxOWRkNjAwNzJlN2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0
UnVubmVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFj
Lm1tCkBAIC0zMSw4ICszMSw4IEBACiAjaW1wb3J0ICJUZXN0UnVubmVyLmgiCiAKICNpbXBvcnQg
IkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5oIgotI2ltcG9ydCAiRHVtcFJlbmRlclRyZWVTcGVsbENo
ZWNrZXIuaCIKICNpbXBvcnQgIkVkaXRpbmdEZWxlZ2F0ZS5oIgorI2ltcG9ydCAiTGF5b3V0VGVz
dFNwZWxsQ2hlY2tlci5oIgogI2ltcG9ydCAiTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIuaCIKICNp
bXBvcnQgIk1vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5oIgogI2ltcG9ydCAiUG9saWN5RGVs
ZWdhdGUuaCIKQEAgLTIxMiw3ICsyMTIsMjEgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRTdG9yYWdl
RGF0YWJhc2VJZGxlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQogCiB2b2lkIFRlc3RSdW5uZXI6
OnNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKLSAgICA6OnNl
dFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKGVuYWJsZWQpOworI2lmIFBMQVRGT1JNKE1BQykK
KyAgICBbTGF5b3V0VGVzdFNwZWxsQ2hlY2tlciBjaGVja2VyXS5zcGVsbENoZWNrZXJMb2dnaW5n
RW5hYmxlZCA9IGVuYWJsZWQ7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShlbmFibGVkKTsKKyNl
bmRpZgorfQorCit2b2lkIFRlc3RSdW5uZXI6OnNldFNwZWxsQ2hlY2tlclRleHRSZXBsYWNlbWVu
dHMoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHJlcGxhY2VtZW50cykKK3sKKyNp
ZiBQTEFURk9STShNQUMpCisgICAgW1tMYXlvdXRUZXN0U3BlbGxDaGVja2VyIGNoZWNrZXJdIHNl
dFJlcGxhY2VtZW50c0Zyb21KU09iamVjdDpyZXBsYWNlbWVudHMgaW5Db250ZXh0OmNvbnRleHRd
OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVwbGFjZW1lbnRzKTsKKyAgICBVTlVTRURfUEFS
QU0oY29udGV4dCk7CisjZW5kaWYKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpjbG9zZUlkbGVMb2Nh
bFN0b3JhZ2VEYXRhYmFzZXMoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L1Rlc3RSdW5uZXJXaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJX
aW4uY3BwCmluZGV4IDY5YzM1MTQyMTVhMDdlMjdjMWNmMzQ3YTY0NTAyNWYwMGExMDA2OWYuLjc4
MDMzMzExNmFhZDBkNTkzOWY4NzQ2ZjgwMmUyNzg1NmRiOWRiYTIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAKQEAgLTE0MDYsMyArMTQwNiw4IEBAIHZvaWQg
VGVzdFJ1bm5lcjo6c2V0U3BlbGxDaGVja2VyTG9nZ2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQog
ewogICAgIGZwcmludGYodGVzdFJlc3VsdCwgIkVSUk9SOiBUZXN0UnVubmVyOjpzZXRTcGVsbENo
ZWNrZXJMb2dnaW5nRW5hYmxlZCgpIG5vdCBpbXBsZW1lbnRlZFxuIik7CiB9CisKK3ZvaWQgVGVz
dFJ1bm5lcjo6c2V0U3BlbGxDaGVja2VyVGV4dFJlcGxhY2VtZW50cyhKU0NvbnRleHRSZWYsIEpT
T2JqZWN0UmVmKQoreworICAgIGZwcmludGYodGVzdFJlc3VsdCwgIkVSUk9SOiBUZXN0UnVubmVy
OjpzZXRTcGVsbENoZWNrZXJUZXh0UmVwbGFjZW1lbnRzKCkgbm90IGltcGxlbWVudGVkXG4iKTsK
K30KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNw
ZWxsQ2hlY2tlci5oIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3Bl
bGxDaGVja2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA3Y2U3ZmUyYzcxNTI4MTUzNDE4ZjAwN2RhZDdkZTY0
NGEzMWU5YQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2Ev
TGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuaD4K
KyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFBMQVRGT1JNKE1BQykKKworI2ltcG9y
dCA8QXBwS2l0L05TU3BlbGxDaGVja2VyLmg+CisKK0BjbGFzcyBMYXlvdXRUZXN0VGV4dENoZWNr
aW5nUmVzdWx0OworCitAaW50ZXJmYWNlIExheW91dFRlc3RTcGVsbENoZWNrZXIgOiBOU1NwZWxs
Q2hlY2tlciB7CitAcHJpdmF0ZQorICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk8TlNTdHJpbmcg
KiwgTGF5b3V0VGVzdFRleHRDaGVja2luZ1Jlc3VsdCAqPj4gX3JlcGxhY2VtZW50czsKKyAgICBC
T09MIF9zcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZDsKK30KKworKyAoaW5zdGFuY2V0eXBlKWNo
ZWNrZXI7CisrICh2b2lkKXVuaW5zdGFsbEFuZFJlc2V0OworCistICh2b2lkKXNldFJlcGxhY2Vt
ZW50c0Zyb21KU09iamVjdDooSlNPYmplY3RSZWYpcmVwbGFjZW1lbnRzIGluQ29udGV4dDooSlND
b250ZXh0UmVmKWNvbnRleHQ7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNEaWN0aW9u
YXJ5PE5TU3RyaW5nICosIExheW91dFRlc3RUZXh0Q2hlY2tpbmdSZXN1bHQgKj4gKnJlcGxhY2Vt
ZW50czsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFi
bGVkOworQGVuZAorCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tIGIvVG9vbHMv
VGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjM1Zjg2NWI4YTk1NGQ1MmUzODYxY2M2MTYzY2E5ZTYzMDkzMjA2NGEKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL0xheW91dFRlc3RTcGVsbENoZWNr
ZXIubW0KQEAgLTAsMCArMSwyNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KyNpbXBvcnQgIkxheW91dFRlc3RTcGVsbENoZWNrZXIuaCIKKworI2ltcG9ydCA8SmF2YVNjcmlw
dENvcmUvSlNSZXRhaW5QdHIuaD4KKyNpbXBvcnQgPG9iamMvcnVudGltZS5oPgorI2ltcG9ydCA8
d3RmL0Fzc2VydGlvbnMuaD4KKworI2lmIFBMQVRGT1JNKE1BQykKKworc3RhdGljIExheW91dFRl
c3RTcGVsbENoZWNrZXIgKmdsb2JhbFNwZWxsQ2hlY2tlciA9IG5pbDsKK3N0YXRpYyBCT09MIGhh
c1N3aXp6bGVkTGF5b3V0VGVzdFNwZWxsQ2hlY2tlciA9IE5POworc3RhdGljIElNUCBnbG9iYWxs
eVN3aXp6bGVkU2hhcmVkU3BlbGxDaGVja2VySW1wbGVtZW50YXRpb247CitzdGF0aWMgTWV0aG9k
IG9yaWdpbmFsU2hhcmVkU3BlbGxDaGVja2VyTWV0aG9kOworCitzdGF0aWMgTGF5b3V0VGVzdFNw
ZWxsQ2hlY2tlciAqZW5zdXJlR2xvYmFsTGF5b3V0VGVzdFNwZWxsQ2hlY2tlcigpCit7CisgICAg
c3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CisgICAgZGlzcGF0Y2hfb25jZSgmb25j
ZVRva2VuLCBeeworICAgICAgICBnbG9iYWxTcGVsbENoZWNrZXIgPSBbW0xheW91dFRlc3RTcGVs
bENoZWNrZXIgYWxsb2NdIGluaXRdOworICAgIH0pOworICAgIHJldHVybiBnbG9iYWxTcGVsbENo
ZWNrZXI7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICpzdHJpbmdGb3JDb3JyZWN0aW9uUmVzcG9u
c2UoTlNDb3JyZWN0aW9uUmVzcG9uc2UgY29ycmVjdGlvblJlc3BvbnNlKQoreworICAgIHN3aXRj
aCAoY29ycmVjdGlvblJlc3BvbnNlKSB7CisgICAgY2FzZSBOU0NvcnJlY3Rpb25SZXNwb25zZU5v
bmU6CisgICAgICAgIHJldHVybiAibm9uZSI7CisgICAgY2FzZSBOU0NvcnJlY3Rpb25SZXNwb25z
ZUFjY2VwdGVkOgorICAgICAgICByZXR1cm4gImFjY2VwdGVkIjsKKyAgICBjYXNlIE5TQ29ycmVj
dGlvblJlc3BvbnNlUmVqZWN0ZWQ6CisgICAgICAgIHJldHVybiAicmVqZWN0ZWQiOworICAgIGNh
c2UgTlNDb3JyZWN0aW9uUmVzcG9uc2VJZ25vcmVkOgorICAgICAgICByZXR1cm4gImlnbm9yZWQi
OworICAgIGNhc2UgTlNDb3JyZWN0aW9uUmVzcG9uc2VFZGl0ZWQ6CisgICAgICAgIHJldHVybiAi
ZWRpdGVkIjsKKyAgICBjYXNlIE5TQ29ycmVjdGlvblJlc3BvbnNlUmV2ZXJ0ZWQ6CisgICAgICAg
IHJldHVybiAicmV2ZXJ0ZWQiOworICAgIH0KKyAgICByZXR1cm4gImludmFsaWQiOworfQorCitz
dGF0aWMgTlNUZXh0Q2hlY2tpbmdUeXBlIG5zVGV4dENoZWNraW5nVHlwZShKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4mJiBqc1R5cGUpCit7CisgICAgYXV0byBjZlR5cGUgPSBhZG9wdENGKEpTU3Ry
aW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGpzVHlwZS5nZXQoKSkpOworICAg
IGlmIChDRlN0cmluZ0NvbXBhcmUoY2ZUeXBlLmdldCgpLCBDRlNUUigib3J0aG9ncmFwaHkiKSwg
a0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pCisgICAgICAg
IHJldHVybiBOU1RleHRDaGVja2luZ1R5cGVPcnRob2dyYXBoeTsKKworICAgIGlmIChDRlN0cmlu
Z0NvbXBhcmUoY2ZUeXBlLmdldCgpLCBDRlNUUigic3BlbGxpbmciKSwga0NGQ29tcGFyZUNhc2VJ
bnNlbnNpdGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pCisgICAgICAgIHJldHVybiBOU1RleHRD
aGVja2luZ1R5cGVTcGVsbGluZzsKKworICAgIGlmIChDRlN0cmluZ0NvbXBhcmUoY2ZUeXBlLmdl
dCgpLCBDRlNUUigiZ3JhbW1hciIpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSA9PSBrQ0ZD
b21wYXJlRXF1YWxUbykKKyAgICAgICAgcmV0dXJuIE5TVGV4dENoZWNraW5nVHlwZUdyYW1tYXI7
CisKKyAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGNmVHlwZS5nZXQoKSwgQ0ZTVFIoImRhdGUiKSwg
a0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pCisgICAgICAg
IHJldHVybiBOU1RleHRDaGVja2luZ1R5cGVEYXRlOworCisgICAgaWYgKENGU3RyaW5nQ29tcGFy
ZShjZlR5cGUuZ2V0KCksIENGU1RSKCJhZGRyZXNzIiksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRp
dmUpID09IGtDRkNvbXBhcmVFcXVhbFRvKQorICAgICAgICByZXR1cm4gTlNUZXh0Q2hlY2tpbmdU
eXBlQWRkcmVzczsKKworICAgIGlmIChDRlN0cmluZ0NvbXBhcmUoY2ZUeXBlLmdldCgpLCBDRlNU
UigibGluayIpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxU
bykKKyAgICAgICAgcmV0dXJuIE5TVGV4dENoZWNraW5nVHlwZUxpbms7CisKKyAgICBpZiAoQ0ZT
dHJpbmdDb21wYXJlKGNmVHlwZS5nZXQoKSwgQ0ZTVFIoInF1b3RlIiksIGtDRkNvbXBhcmVDYXNl
SW5zZW5zaXRpdmUpID09IGtDRkNvbXBhcmVFcXVhbFRvKQorICAgICAgICByZXR1cm4gTlNUZXh0
Q2hlY2tpbmdUeXBlUXVvdGU7CisKKyAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGNmVHlwZS5nZXQo
KSwgQ0ZTVFIoImRhc2giKSwga0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgPT0ga0NGQ29tcGFy
ZUVxdWFsVG8pCisgICAgICAgIHJldHVybiBOU1RleHRDaGVja2luZ1R5cGVEYXNoOworCisgICAg
aWYgKENGU3RyaW5nQ29tcGFyZShjZlR5cGUuZ2V0KCksIENGU1RSKCJyZXBsYWNlbWVudCIpLCBr
Q0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKKyAgICAgICAg
cmV0dXJuIE5TVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50OworCisgICAgaWYgKENGU3RyaW5n
Q29tcGFyZShjZlR5cGUuZ2V0KCksIENGU1RSKCJjb3JyZWN0aW9uIiksIGtDRkNvbXBhcmVDYXNl
SW5zZW5zaXRpdmUpID09IGtDRkNvbXBhcmVFcXVhbFRvKQorICAgICAgICByZXR1cm4gTlNUZXh0
Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbjsKKworICAgIGlmIChDRlN0cmluZ0NvbXBhcmUoY2ZUeXBl
LmdldCgpLCBDRlNUUigicmVndWxhci1leHByZXNzaW9uIiksIGtDRkNvbXBhcmVDYXNlSW5zZW5z
aXRpdmUpID09IGtDRkNvbXBhcmVFcXVhbFRvKQorICAgICAgICByZXR1cm4gTlNUZXh0Q2hlY2tp
bmdUeXBlUmVndWxhckV4cHJlc3Npb247CisKKyAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGNmVHlw
ZS5nZXQoKSwgQ0ZTVFIoInBob25lLW51bWJlciIpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZl
KSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKKyAgICAgICAgcmV0dXJuIE5TVGV4dENoZWNraW5nVHlw
ZVBob25lTnVtYmVyOworCisgICAgaWYgKENGU3RyaW5nQ29tcGFyZShjZlR5cGUuZ2V0KCksIENG
U1RSKCJ0cmFuc2l0LWluZm9ybWF0aW9uIiksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUpID09
IGtDRkNvbXBhcmVFcXVhbFRvKQorICAgICAgICByZXR1cm4gTlNUZXh0Q2hlY2tpbmdUeXBlVHJh
bnNpdEluZm9ybWF0aW9uOworCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IE5TVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOworfQorCitAaW50ZXJmYWNlIExheW91dFRlc3RU
ZXh0Q2hlY2tpbmdSZXN1bHQgOiBOU1RleHRDaGVja2luZ1Jlc3VsdCB7CitAcHJpdmF0ZQorICAg
IFJldGFpblB0cjxOU1N0cmluZz4gX3JlcGxhY2VtZW50OworICAgIE5TVGV4dENoZWNraW5nVHlw
ZSBfdHlwZTsKKyAgICBOU1JhbmdlIF9yYW5nZTsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoVHlwZTooTlNUZXh0Q2hlY2tpbmdUeXBlKXR5cGUgcmFuZ2U6KE5TUmFuZ2UpcmFuZ2UgcmVw
bGFjZW1lbnQ6KE5TU3RyaW5nICopcmVwbGFjZW1lbnQ7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlv
biBMYXlvdXRUZXN0VGV4dENoZWNraW5nUmVzdWx0CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0
aFR5cGU6KE5TVGV4dENoZWNraW5nVHlwZSl0eXBlIHJhbmdlOihOU1JhbmdlKXJhbmdlIHJlcGxh
Y2VtZW50OihOU1N0cmluZyAqKXJlcGxhY2VtZW50Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBl
ciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfdHlwZSA9IHR5cGU7CisgICAg
X3JhbmdlID0gcmFuZ2U7CisgICAgX3JlcGxhY2VtZW50ID0gcmVwbGFjZW1lbnQ7CisKKyAgICBy
ZXR1cm4gc2VsZjsKK30KKworLSAoTlNSYW5nZSlyYW5nZQoreworICAgIHJldHVybiBfcmFuZ2U7
Cit9CisKKy0gKE5TVGV4dENoZWNraW5nVHlwZSlyZXN1bHRUeXBlCit7CisgICAgcmV0dXJuIF90
eXBlOworfQorCistIChOU1N0cmluZyAqKXJlcGxhY2VtZW50U3RyaW5nCit7CisgICAgcmV0dXJu
IF9yZXBsYWNlbWVudC5nZXQoKTsKK30KKworLSAoTlNTdHJpbmcgKilkZXNjcmlwdGlvbgorewor
ICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwlQCAlcCB0eXBlPSV0dSBy
YW5nZT1bJXR1LCAldHVdIHJlcGxhY2VtZW50PSclQCc+Iiwgc2VsZi5jbGFzcywgc2VsZiwgX3R5
cGUsIF9yYW5nZS5sb2NhdGlvbiwgX3JhbmdlLmxvY2F0aW9uICsgX3JhbmdlLmxlbmd0aCwgX3Jl
cGxhY2VtZW50LmdldCgpXTsKK30KKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gTGF5b3V0VGVz
dFNwZWxsQ2hlY2tlcgorCitAc3ludGhlc2l6ZSBzcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZD1f
c3BlbGxDaGVja2VyTG9nZ2luZ0VuYWJsZWQ7CisKKysgKGluc3RhbmNldHlwZSljaGVja2VyCit7
CisgICAgYXV0byAqc3BlbGxDaGVja2VyID0gZW5zdXJlR2xvYmFsTGF5b3V0VGVzdFNwZWxsQ2hl
Y2tlcigpOworICAgIGlmIChoYXNTd2l6emxlZExheW91dFRlc3RTcGVsbENoZWNrZXIpCisgICAg
ICAgIHJldHVybiBzcGVsbENoZWNrZXI7CisKKyAgICBvcmlnaW5hbFNoYXJlZFNwZWxsQ2hlY2tl
ck1ldGhvZCA9IGNsYXNzX2dldENsYXNzTWV0aG9kKG9iamNfZ2V0TWV0YUNsYXNzKCJOU1NwZWxs
Q2hlY2tlciIpLCBAc2VsZWN0b3Ioc2hhcmVkU3BlbGxDaGVja2VyKSk7CisgICAgZ2xvYmFsbHlT
d2l6emxlZFNoYXJlZFNwZWxsQ2hlY2tlckltcGxlbWVudGF0aW9uID0gbWV0aG9kX3NldEltcGxl
bWVudGF0aW9uKG9yaWdpbmFsU2hhcmVkU3BlbGxDaGVja2VyTWV0aG9kLCByZWludGVycHJldF9j
YXN0PElNUD4oZW5zdXJlR2xvYmFsTGF5b3V0VGVzdFNwZWxsQ2hlY2tlcikpOworICAgIGhhc1N3
aXp6bGVkTGF5b3V0VGVzdFNwZWxsQ2hlY2tlciA9IFlFUzsKKyAgICByZXR1cm4gc3BlbGxDaGVj
a2VyOworfQorCisrICh2b2lkKXVuaW5zdGFsbEFuZFJlc2V0Cit7CisgICAgW2dsb2JhbFNwZWxs
Q2hlY2tlciByZXNldF07CisgICAgaWYgKCFoYXNTd2l6emxlZExheW91dFRlc3RTcGVsbENoZWNr
ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1ldGhvZF9zZXRJbXBsZW1lbnRhdGlvbihvcmln
aW5hbFNoYXJlZFNwZWxsQ2hlY2tlck1ldGhvZCwgZ2xvYmFsbHlTd2l6emxlZFNoYXJlZFNwZWxs
Q2hlY2tlckltcGxlbWVudGF0aW9uKTsKKyAgICBoYXNTd2l6emxlZExheW91dFRlc3RTcGVsbENo
ZWNrZXIgPSBOTzsKK30KKworLSAodm9pZClyZXNldAoreworICAgIHNlbGYucmVwbGFjZW1lbnRz
ID0gbmlsOworICAgIHNlbGYuc3BlbGxDaGVja2VyTG9nZ2luZ0VuYWJsZWQgPSBOTzsKK30KKwor
LSAoTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIExheW91dFRlc3RUZXh0Q2hlY2tpbmdSZXN1bHQg
Kj4gKilyZXBsYWNlbWVudHMKK3sKKyAgICByZXR1cm4gX3JlcGxhY2VtZW50cy5nZXQoKTsKK30K
KworLSAodm9pZClzZXRSZXBsYWNlbWVudHM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBMYXlv
dXRUZXN0VGV4dENoZWNraW5nUmVzdWx0ICo+ICopcmVwbGFjZW1lbnRzCit7CisgICAgX3JlcGxh
Y2VtZW50cyA9IGFkb3B0TlMocmVwbGFjZW1lbnRzLmNvcHkpOworfQorCistICh2b2lkKXNldFJl
cGxhY2VtZW50c0Zyb21KU09iamVjdDooSlNPYmplY3RSZWYpcmVwbGFjZW1lbnRzIGluQ29udGV4
dDooSlNDb250ZXh0UmVmKWNvbnRleHQKK3sKKyAgICBhdXRvIGZyb21Qcm9wZXJ0eU5hbWUgPSBh
ZG9wdChKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiZnJvbSIpKTsKKyAgICBhdXRvIHRv
UHJvcGVydHlOYW1lID0gYWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInRvIikp
OworICAgIGF1dG8gdHlwZVByb3BlcnR5TmFtZSA9IGFkb3B0KEpTU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJ0eXBlIikpOworICAgIGF1dG8gcmVwbGFjZW1lbnRQcm9wZXJ0eU5hbWUgPSBh
ZG9wdChKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygicmVwbGFjZW1lbnQiKSk7CisgICAg
YXV0byBwcm9wZXJ0aWVzID0gSlNPYmplY3RDb3B5UHJvcGVydHlOYW1lcyhjb250ZXh0LCByZXBs
YWNlbWVudHMpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25h
cnkgYWxsb2NdIGluaXRdKTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgSlNQ
cm9wZXJ0eU5hbWVBcnJheUdldENvdW50KHByb3BlcnRpZXMpOyArK2luZGV4KSB7CisgICAgICAg
IEpTU3RyaW5nUmVmIHdvcmRUb1JlcGxhY2UgPSBKU1Byb3BlcnR5TmFtZUFycmF5R2V0TmFtZUF0
SW5kZXgocHJvcGVydGllcywgaW5kZXgpOworICAgICAgICBKU09iamVjdFJlZiByZXBsYWNlbWVu
dCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQs
IHJlcGxhY2VtZW50cywgd29yZFRvUmVwbGFjZSwgbnVsbHB0ciksIG51bGxwdHIpOworICAgICAg
ICBsb25nIGZyb21WYWx1ZSA9IGxyb3VuZGwoSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIEpTT2Jq
ZWN0R2V0UHJvcGVydHkoY29udGV4dCwgcmVwbGFjZW1lbnQsIGZyb21Qcm9wZXJ0eU5hbWUuZ2V0
KCksIG51bGxwdHIpLCBudWxscHRyKSk7CisgICAgICAgIGxvbmcgdG9WYWx1ZSA9IGxyb3VuZGwo
SlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgcmVw
bGFjZW1lbnQsIHRvUHJvcGVydHlOYW1lLmdldCgpLCBudWxscHRyKSwgbnVsbHB0cikpOworICAg
ICAgICBhdXRvIHR5cGVWYWx1ZSA9IGFkb3B0KEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwg
SlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCByZXBsYWNlbWVudCwgdHlwZVByb3BlcnR5TmFt
ZS5nZXQoKSwgbnVsbHB0ciksIG51bGxwdHIpKTsKKyAgICAgICAgYXV0byByZXBsYWNlbWVudFZh
bHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCByZXBsYWNlbWVudCwgcmVwbGFjZW1l
bnRQcm9wZXJ0eU5hbWUuZ2V0KCksIG51bGxwdHIpOworICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IHJlcGxhY2VtZW50VGV4dDsKKyAgICAgICAgaWYgKCFKU1ZhbHVlSXNVbmRlZmluZWQo
Y29udGV4dCwgcmVwbGFjZW1lbnRWYWx1ZSkpIHsKKyAgICAgICAgICAgIGF1dG8gcmVwbGFjZW1l
bnRKU1N0cmluZyA9IGFkb3B0KEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgcmVwbGFjZW1l
bnRWYWx1ZSwgbnVsbHB0cikpOworICAgICAgICAgICAgcmVwbGFjZW1lbnRUZXh0ID0gYWRvcHRD
RihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCByZXBsYWNlbWVudEpT
U3RyaW5nLmdldCgpKSk7CisgICAgICAgIH0KKyAgICAgICAgYXV0byBzcGVsbENoZWNrUmVzdWx0
ID0gYWRvcHROUyhbW0xheW91dFRlc3RUZXh0Q2hlY2tpbmdSZXN1bHQgYWxsb2NdIGluaXRXaXRo
VHlwZTpuc1RleHRDaGVja2luZ1R5cGUoV1RGTW92ZSh0eXBlVmFsdWUpKSByYW5nZTpOU01ha2VS
YW5nZShmcm9tVmFsdWUsIHRvVmFsdWUgLSBmcm9tVmFsdWUpIHJlcGxhY2VtZW50OihOU1N0cmlu
ZyAqKXJlcGxhY2VtZW50VGV4dC5nZXQoKV0pOworICAgICAgICBhdXRvIGNmV29yZFRvUmVwbGFj
ZSA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgd29y
ZFRvUmVwbGFjZSkpOworICAgICAgICBbcmVzdWx0IHNldE9iamVjdDpzcGVsbENoZWNrUmVzdWx0
LmdldCgpIGZvcktleTooTlNTdHJpbmcgKiljZldvcmRUb1JlcGxhY2UuZ2V0KCldOworICAgIH0K
KyAgICBKU1Byb3BlcnR5TmFtZUFycmF5UmVsZWFzZShwcm9wZXJ0aWVzKTsKKworICAgIF9yZXBs
YWNlbWVudHMgPSBXVEZNb3ZlKHJlc3VsdCk7Cit9CisKKy0gKE5TQXJyYXk8TlNUZXh0Q2hlY2tp
bmdSZXN1bHQgKj4gKiljaGVja1N0cmluZzooTlNTdHJpbmcgKilzdHJpbmdUb0NoZWNrIHJhbmdl
OihOU1JhbmdlKXJhbmdlIHR5cGVzOihOU1RleHRDaGVja2luZ1R5cGVzKWNoZWNraW5nVHlwZXMg
b3B0aW9uczooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKW9wdGlvbnMgaW5TcGVsbERv
Y3VtZW50V2l0aFRhZzooTlNJbnRlZ2VyKXRhZyBvcnRob2dyYXBoeTooTlNPcnRob2dyYXBoeSAq
KilvcnRob2dyYXBoeSB3b3JkQ291bnQ6KE5TSW50ZWdlciAqKXdvcmRDb3VudAoreworICAgIGlm
IChhdXRvICpyZXN1bHQgPSBbX3JlcGxhY2VtZW50cyBvYmplY3RGb3JLZXk6c3RyaW5nVG9DaGVj
a10pCisgICAgICAgIHJldHVybiBAWyByZXN1bHQgXTsKKworICAgIHJldHVybiBbc3VwZXIgY2hl
Y2tTdHJpbmc6c3RyaW5nVG9DaGVjayByYW5nZTpyYW5nZSB0eXBlczpjaGVja2luZ1R5cGVzIG9w
dGlvbnM6b3B0aW9ucyBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOnRhZyBvcnRob2dyYXBoeTpvcnRo
b2dyYXBoeSB3b3JkQ291bnQ6d29yZENvdW50XTsKK30KKworLSAodm9pZClyZWNvcmRSZXNwb25z
ZTooTlNDb3JyZWN0aW9uUmVzcG9uc2UpcmVzcG9uc2UgdG9Db3JyZWN0aW9uOihOU1N0cmluZyAq
KWNvcnJlY3Rpb24gZm9yV29yZDooTlNTdHJpbmcgKil3b3JkIGxhbmd1YWdlOihOU1N0cmluZyAq
KWxhbmd1YWdlIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6KE5TSW50ZWdlcil0YWcKK3sKKyAgICBp
ZiAoX3NwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKQorICAgICAgICBwcmludGYoIk5TU3BlbGxD
aGVja2VyIHJlY29yZFJlc3BvbnNlVG9Db3JyZWN0aW9uOiAlcyAtPiAlcyAocmVzcG9uc2U6ICVz
KVxuIiwgW3dvcmQgVVRGOFN0cmluZ10sIFtjb3JyZWN0aW9uIFVURjhTdHJpbmddLCBzdHJpbmdG
b3JDb3JyZWN0aW9uUmVzcG9uc2UocmVzcG9uc2UpKTsKKworICAgIFtzdXBlciByZWNvcmRSZXNw
b25zZTpyZXNwb25zZSB0b0NvcnJlY3Rpb246Y29ycmVjdGlvbiBmb3JXb3JkOndvcmQgbGFuZ3Vh
Z2U6bGFuZ3VhZ2UgaW5TcGVsbERvY3VtZW50V2l0aFRhZzp0YWddOworfQorCitAZW5kCisKKyNl
bmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDhiYmExMGRiNmE1Y2RmMmYzZTJlMDM0Y2M0YzRlOTQzODhhZWMwNWIuLjE5NDBmNWJlNTM5
YTUwMjhlZDc0OTg5ODdiYjIzMTMxNDY4MDNjNjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xMzMsNiArMTMzLDcgQEAKIAkJRTEzMkFBM0QxN0NFNzc2RjAwNjExREYw
IC8qIFdlYktpdFRlc3RSdW5uZXJFdmVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUxMzJBQTNCMTdDRTc3NkYwMDYxMURGMCAvKiBXZWJLaXRUZXN0
UnVubmVyRXZlbnQubW0gKi87IH07CiAJCUUxQzY0MkMzMTdDQkNDNzMwMEQ2NkEzQyAvKiBQb3Nl
QXNDbGFzcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUxQzY0MkMxMTdDQkNDNzMwMEQ2NkEzQyAvKiBQb3NlQXNDbGFzcy5tbSAqLzsgfTsKIAkJRTFD
NjQyQzYxN0NCQ0Q0QzAwRDY2QTNDIC8qIFdlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFDNjQyQzQxN0NC
Q0Q0QzAwRDY2QTNDIC8qIFdlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tICovOyB9OworCQlG
NEMzNTc4QzIwRTg0NDQ2MDBGQTA3NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0QzM1NzhBMjBFODQ0
NDAwMEZBMDc0OCAvKiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tICovOyB9OwogLyogRW5kIFBC
WEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBz
ZWN0aW9uICovCkBAIC0zNzIsNiArMzczLDggQEAKIAkJRTFDNjQyQzIxN0NCQ0M3MzAwRDY2QTND
IC8qIFBvc2VBc0NsYXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvc2VB
c0NsYXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQzY0MkM0MTdDQkNENEMw
MEQ2NkEzQyAvKiBXZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUM2NDJDNTE3Q0JDRDRDMDBENjZBM0MgLyog
V2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRjRDMzU3OEEyMEU4NDQ0MDAwRkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNr
ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBMYXlvdXRUZXN0
U3BlbGxDaGVja2VyLm1tOyBwYXRoID0gLi4vVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRU
ZXN0U3BlbGxDaGVja2VyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNEMzNTc4
QjIwRTg0NDQwMDBGQTA3NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLmg7IHBhdGggPSAu
Li9UZXN0UnVubmVyU2hhcmVkL2NvY29hL0xheW91dFRlc3RTcGVsbENoZWNrZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8K
IAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtNDc5LDYg
KzQ4Miw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTBGMThF
NzFCMUQ2QkM0RTYwMDI3RTU0NyAvKiBCaW5kaW5ncyAqLywKKwkJCQlGNEI2QzMxNjIwRTg0MzY5
MDA4QUMyMjUgLyogY29jb2EgKi8sCiAJCQkJMEY3M0I1NDcxQkE3ODJGRTAwNEIzRUY0IC8qIFVJ
U2NyaXB0Q29udGV4dCAqLywKIAkJCQkzMTQ4QTA1MzFFNkY4NUI2MDBEM0IzMTYgLyogSU9TTGF5
b3V0VGVzdENvbW11bmljYXRpb24uY3BwICovLAogCQkJCTMxNDhBMDU0MUU2Rjg1QjYwMEQzQjMx
NiAvKiBJT1NMYXlvdXRUZXN0Q29tbXVuaWNhdGlvbi5oICovLApAQCAtODIyLDYgKzgyNiwxNSBA
QAogCQkJbmFtZSA9IFNoYXJlZDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJ
CUY0QjZDMzE2MjBFODQzNjkwMDhBQzIyNSAvKiBjb2NvYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdy
b3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJRjRDMzU3OEIyMEU4NDQ0MDAwRkEwNzQ4IC8qIExh
eW91dFRlc3RTcGVsbENoZWNrZXIuaCAqLywKKwkJCQlGNEMzNTc4QTIwRTg0NDQwMDBGQTA3NDgg
LyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbSAqLywKKwkJCSk7CisJCQluYW1lID0gY29jb2E7
CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogLyogRW5kIFBCWEdyb3VwIHNlY3Rp
b24gKi8KIAogLyogQmVnaW4gUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtMTA0
Niw2ICsxMDU5LDcgQEAKIAkJCQkzMURBOEEzRDFFNzIwNUNDMDBFMURGMkYgLyogSU9TTGF5b3V0
VGVzdENvbW11bmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3M0I1NTExQkE3ODk2
ODAwNEIzRUY0IC8qIEpTVUlTY3JpcHRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMThFNzE4MUQ2QkM0NTYwMDI3RTU0NyAvKiBKU1dyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJRjRDMzU3OEMyMEU4NDQ0NjAwRkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlBMTg1MTAzQzFCOUFFMEZFMDA3NDRBRUIgLyogT3B0aW9u
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTg1MTA0MDFCOUFFMTMxMDA3NDRBRUIgLyogUGl4
ZWxEdW1wU3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyREZBOTg0OTFEN0Y3MENGMDBB
RkYyQzkgLyogU2hhcmVkRXZlbnRTdHJlYW1zTWFjLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
ZjA3Yzg3OWNjNmY2YWFkYWI0OTZhNjM1YzcyMjFiYjZlNDA5ZGYzOC4uOTMzZjQyNDFiYzQ5N2Nk
Y2NkYWU2NTM3NzhhZmQzNTkwNTk0Y2Y2YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE4LTA3
LTAxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtt
YWNPU10gVGV4dCByZXBsYWNlbWVudHMgdGhhdCBlbmQgd2l0aCBzeW1ib2xzIGFyZSBleHBhbmRl
ZCBpbW1lZGlhdGVseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg3MjI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MTExMjQzMz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBBZGRzIGEgbGF5b3V0IHRlc3Qg
dG8gY2hlY2sgdGhhdCBpZiBhIHVzZXIgaGFzIGNvbmZpZ3VyZWQgYSB0ZXh0IHJlcGxhY2VtZW50
IHRoYXQgZW5kcyB3aXRoIHB1bmN0dWF0aW9uLCB0aGVuOgorICAgICAgICAxLiBUeXBpbmcgdGhh
dCB0ZXh0IHJlcGxhY2VtZW50IHdvbid0IGltbWVkaWF0ZWx5IHRyaWdnZXIgcmVwbGFjZW1lbnQu
CisgICAgICAgIDIuIFRleHQgcmVwbGFjZW1lbnQgaXMgdHJpZ2dlcmVkIGFmdGVyIHByZXNzaW5n
IGVudGVyLgorCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy90ZXh0LXJlcGxhY2VtZW50LWFm
dGVyLXR5cGluZy10by13b3JkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGlu
Zy9zcGVsbGluZy90ZXh0LXJlcGxhY2VtZW50LWFmdGVyLXR5cGluZy10by13b3JkLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxOC0wNi0yOSAgQW50b2lu
ZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWIgQW5pbWF0aW9uc10g
TWFrZSBXUFQgdGVzdCBhdCB0aW1pbmctbW9kZWwvdGltZWxpbmVzL2RvY3VtZW50LXRpbWVsaW5l
cy5odG1sIHBhc3MgcmVsaWFibHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3Bl
bGxpbmcvdGV4dC1yZXBsYWNlbWVudC1hZnRlci10eXBpbmctdG8td29yZC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3RleHQtcmVwbGFjZW1lbnQtYWZ0ZXItdHlw
aW5nLXRvLXdvcmQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4M2ViMTA3YmY4MTY4MmUyMmQ2
MmFhOGYxYmVlMmEwNGM5YjlmZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NwZWxsaW5nL3RleHQtcmVwbGFjZW1lbnQtYWZ0ZXItdHlwaW5nLXRvLXdvcmQtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorQmVmb3JlIHByZXNzaW5nIGVudGVyOgorUEFTUyBlZGl0
b3IudGV4dENvbnRlbnQgaXMgJ1lUPycKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorWW91IHRoZXJlPworCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2VkaXRpbmcvc3BlbGxpbmcvdGV4dC1yZXBsYWNlbWVudC1hZnRlci10eXBpbmctdG8td29yZC5o
dG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy90ZXh0LXJlcGxhY2VtZW50LWFmdGVy
LXR5cGluZy10by13b3JkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGM5NDk1ZDg2NjJmMDZmZDlmZjE3YzM2
MDc1MmU3NDJkMzI5MmJlNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcv
c3BlbGxpbmcvdGV4dC1yZXBsYWNlbWVudC1hZnRlci10eXBpbmctdG8td29yZC5odG1sCkBAIC0w
LDAgKzEsNjMgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9lZGl0aW5nLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworZnVuY3Rpb24gemVy
b0RlbGF5VGltZXIoKQoreworICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRp
bWVvdXQocmVzb2x2ZSwgMCkpOworfQorCithc3luYyBmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAg
ICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0
VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCh0cnVlKTsKKyAgICAgICAgaW50ZXJuYWxzLnNldHRp
bmdzLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGZhbHNlKTsKKyAgICAgICAg
aW50ZXJuYWxzLnNldEF1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQodHJ1ZSk7CisgICAg
ICAgIGludGVybmFscy5zZXRBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKHRydWUp
OworICAgICAgICB0ZXN0UnVubmVyLnNldFNwZWxsQ2hlY2tlclRleHRSZXBsYWNlbWVudHMoewor
ICAgICAgICAgICAgIllUPyI6IHsKKyAgICAgICAgICAgICAgICAicmVwbGFjZW1lbnQiOiAiWW91
IHRoZXJlPyIsCisgICAgICAgICAgICAgICAgInR5cGUiOiAicmVwbGFjZW1lbnQiLAorICAgICAg
ICAgICAgICAgICJmcm9tIjogMCwKKyAgICAgICAgICAgICAgICAidG8iOiAzCisgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgIllUP1xuIjogeworICAgICAgICAgICAgICAgICJyZXBsYWNlbWVu
dCI6ICJZb3UgdGhlcmU/IiwKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJyZXBsYWNlbWVudCIs
CisgICAgICAgICAgICAgICAgImZyb20iOiAwLAorICAgICAgICAgICAgICAgICJ0byI6IDMKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgY29uc3QgZWRpdG9yID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVkaXRvciIpOworICAgIGVkaXRvci5mb2N1cygpOworICAg
IGZvciAoY29uc3QgY2hhcmFjdGVyIG9mICJZVD8iKQorICAgICAgICB0eXBlQ2hhcmFjdGVyQ29t
bWFuZChjaGFyYWN0ZXIpOworICAgIGF3YWl0IHplcm9EZWxheVRpbWVyKCk7CisKKyAgICBpZiAo
IXdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIGRlc2NyaXB0aW9uLmlubmVySFRNTCA9IGBU
byBtYW51YWxseSB0ZXN0LCBhZGQgYW4gYXV0b21hdGljIHRleHQgcmVwbGFjZW1lbnQgbWFwcGlu
ZyBmcm9tIHRoZSBzdHJpbmcgIllUPyIgdG8KKyAgICAgICAgIllvdSB0aGVyZT8iLCBhbmQgdGhl
biB0eXBlIHRoZSBzdHJpbmcgIllUPyIuIEl0IHNob3VsZCBub3QgYmUgaW1tZWRpYXRlbHkgY29y
cmVjdGVkIHRvICJZb3UgdGhlcmU/Ii4KKyAgICAgICAgSG93ZXZlciwgZW50ZXJpbmcgYSBuZXds
aW5lIHNob3VsZCBzdWJzZXF1ZW50bHkgdHJpZ2dlciBhdXRvY29ycmVjdGlvbi5gOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgZGVidWcoIkJlZm9yZSBwcmVzc2luZyBlbnRlcjoiKTsK
KyAgICBzaG91bGRCZSgiZWRpdG9yLnRleHRDb250ZW50IiwgIidZVD8nIik7CisgICAgaW5zZXJ0
UGFyYWdyYXBoQ29tbWFuZCgpOworICAgIGF3YWl0IHplcm9EZWxheVRpbWVyKCk7CisgICAgZmlu
aXNoSlNUZXN0KCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5U
ZXN0KCkiPgorICAgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAgICA8ZGl2IGNvbnRl
bnRlZGl0YWJsZSBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMWVtOyBib3JkZXI6IDFweCBvcmFuZ2Ug
ZGFzaGVkOyIgaWQ9ImVkaXRvciI+PC9kaXY+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA3ZmFhOGRkNmEyY2YxMzc3
M2Y2NWYyNzgyNTljMDA2NDJiM2VmZTRkLi44MDhkYTEzOWU5ZTYwNWFjMzk5ODY1ZWJiYzgwMmQ4
ODgyYjQ1Y2ZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVj
dGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwpA
QCAtMTEwLDYgKzExMCw5IEBAIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbWFya2Vycy1pbi1v
dmVybGFwcGluZy1saW5lcy1sYXJnZS1mb250Lmh0bWwgWyBXb250Rml4CiBmYXN0L3dyaXRpbmct
bW9kZS9lbmdsaXNoLWJ0LXRleHQtd2l0aC1zcGVsbGluZy1tYXJrZXIuaHRtbCBbIFdvbnRGaXgg
XQogZmFzdC93cml0aW5nLW1vZGUvZW5nbGlzaC1ybC10ZXh0LXdpdGgtc3BlbGxpbmctbWFya2Vy
Lmh0bWwgWyBXb250Rml4IF0KIAorIyBSZXF1aXJlcyBzdXBwb3J0IGZvciB0ZXN0aW5nIHRleHQg
cmVwbGFjZW1lbnQKK2VkaXRpbmcvc3BlbGxpbmcvdGV4dC1yZXBsYWNlbWVudC1hZnRlci10eXBp
bmctdG8td29yZC5odG1sIFsgU2tpcCBdCisKICMgVUlLaXQgZHJhd3Mgc2VsZWN0aW9uIG9uIGlP
UwogZmFzdC9zZWxlY3RvcnMvaW5wdXQtd2l0aC1zZWxlY3Rpb24tcHNldWRvLWVsZW1lbnQuaHRt
bCBbIFdvbnRGaXggXQogZmFzdC9zZWxlY3RvcnMvc2VsZWN0aW9uLXdpbmRvdy1pbmFjdGl2ZS5o
dG1sIFsgV29udEZpeCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sy
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggNDNjYTcxNmE4NGYxNDIwNDM3NmZmMTIwMWUzMzA4OGZkZWZhOTYxMy4u
YjIzNGUyMDQwMDFlNjQ0NDQ5NTJhOTliYjFkZTMxMGE1NTVhMjc3NiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTgwLDYgKzE4MCw3IEBA
IHdlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXdoaXRl
c3BhY2Utc2VsZWN0aW9uLmh0bWwKIHdlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9zcGVsbGlu
Zy9ncmFtbWFyLmh0bWwKIHdlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9zcGVsbGluZy9tYXJr
ZXJzLmh0bWwKIHdlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9zcGVsbGluZy9yZXRyby1jb3Jy
ZWN0aW9uLXNwZWxsaW5nLW1hcmtlcnMuaHRtbAord2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5n
L3NwZWxsaW5nL3RleHQtcmVwbGFjZW1lbnQtYWZ0ZXItdHlwaW5nLXRvLXdvcmQuaHRtbAogd2Vi
a2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW1hcmtlcnMtYWZ0ZXIt
cGFzdGluZy1zZW50ZW5jZS5odG1sCiB3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvbWFjL3Nw
ZWxsaW5nL2F1dG9jb3JyZWN0aW9uLWRlbGV0ZS5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3Jn
L2IvMTA1NjE2IGVkaXRpbmcvbWFjL3NwZWxsaW5nL2F1dG9jb3JyZWN0aW9uLXJlbW92aW5nLXVu
ZGVybGluZS1hZnRlci1wYXN0ZS5odG1sIFsgRmFpbHVyZSBdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>