<?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>223204</bug_id>
          
          <creation_ts>2021-03-15 12:05:59 -0700</creation_ts>
          <short_desc>Refactor Pair.h to CSSValuePair.h</short_desc>
          <delta_ts>2021-03-29 11:49:46 -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>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>223205</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tyler Wilcock">twilco.o</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1739571</commentid>
    <comment_count>0</comment_count>
    <who name="Tyler Wilcock">twilco.o</who>
    <bug_when>2021-03-15 12:05:59 -0700</bug_when>
    <thetext>Tracking issue for refactoring Pair.h[1] to CSSValuePair.h.  Pair.h has a couple problems:

1. It&apos;s not a sub-class of CSSValue, making it awkward to use.
2. It can only contain CSSPrimitiveValues.

We should make a new pair class that doesn&apos;t have these shortcomings.

Some relevant FIXME-NEWPARSER comments:

https://github.com/WebKit/WebKit/blob/878494d4e4784e308ed3c21a5937a2818d5ee27d/Source/WebCore/css/parser/CSSPropertyParser.cpp#L66

&gt; // FIXME-NEWPARSER: Replace Pair and Rect with actual CSSValue subclasses (CSSValuePair and CSSQuadValue).

https://github.com/WebKit/WebKit/blob/878494d4e4784e308ed3c21a5937a2818d5ee27d/Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp#L647#L649

&gt; // FIXME-NEWPARSER: Eventually we&apos;d like this to use CSSCustomIdentValue, but we need
&gt; // to do other plumbing work first (like changing Pair to CSSValuePair and make it not
&gt; // use only primitive values).

[1]: https://github.com/WebKit/WebKit/blob/7e92dc9040eefad3bd0dadf86201eb601dfe82d3/Source/WebCore/css/Pair.h#L33</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742357</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-22 12:06:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/75702348&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743353</commentid>
    <comment_count>2</comment_count>
      <attachid>424143</attachid>
    <who name="Tyler Wilcock">twilco.o</who>
    <bug_when>2021-03-24 09:39:01 -0700</bug_when>
    <thetext>Created attachment 424143
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743473</commentid>
    <comment_count>3</comment_count>
      <attachid>424168</attachid>
    <who name="Tyler Wilcock">twilco.o</who>
    <bug_when>2021-03-24 12:31:08 -0700</bug_when>
    <thetext>Created attachment 424168
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743617</commentid>
    <comment_count>4</comment_count>
      <attachid>424205</attachid>
    <who name="Tyler Wilcock">twilco.o</who>
    <bug_when>2021-03-24 17:27:29 -0700</bug_when>
    <thetext>Created attachment 424205
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743888</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-25 13:19:04 -0700</bug_when>
    <thetext>Antti, is this the direction we want to take things like this? Is there a memory cost / issue we should consider?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744343</commentid>
    <comment_count>6</comment_count>
    <who name="Tyler Wilcock">twilco.o</who>
    <bug_when>2021-03-26 15:04:49 -0700</bug_when>
    <thetext>Here are the results of Tools/Scripts/dump-class-layout on Pair and CSSValuePair.  There might be more to it than this, but they&apos;re equal in this regard at least.  If there&apos;s more information that would be useful to gather I&apos;d be happy to do that too.

$ Tools/Scripts/dump-class-layout -c Release WebCore Pair
  +0 &lt; 24&gt; WebCore::Pair
  +0 &lt;  4&gt;     WTF::RefCounted&lt;WebCore::Pair, std::__1::default_delete&lt;WebCore::Pair&gt; &gt; WTF::RefCounted&lt;WebCore::Pair, std::__1::default_delete&lt;WebCore::Pair&gt; &gt;
  +0 &lt;  4&gt;         WTF::RefCountedBase WTF::RefCountedBase
  +0 &lt;  4&gt;           unsigned int m_refCount
  +4 &lt;  1&gt;   WebCore::Pair::IdenticalValueEncoding m_encoding
  +5 &lt;  3&gt;   &lt;PADDING: 3 bytes&gt;
  +8 &lt;  8&gt;     WTF::RefPtr&lt;WebCore::CSSPrimitiveValue, WTF::RawPtrTraits&lt;WebCore::CSSPrimitiveValue&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::CSSPrimitiveValue&gt; &gt; m_first
  +8 &lt;  8&gt;       WTF::RawPtrTraits&lt;WebCore::CSSPrimitiveValue&gt;::StorageType m_ptr
 +16 &lt;  8&gt;     WTF::RefPtr&lt;WebCore::CSSPrimitiveValue, WTF::RawPtrTraits&lt;WebCore::CSSPrimitiveValue&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::CSSPrimitiveValue&gt; &gt; m_second
 +16 &lt;  8&gt;       WTF::RawPtrTraits&lt;WebCore::CSSPrimitiveValue&gt;::StorageType m_ptr
Total byte size: 24
Total pad bytes: 3
Padding percentage: 12.50 %

$ Tools/Scripts/dump-class-layout -c Release WebCore CSSValuePair
  +0 &lt; 24&gt; WebCore::CSSValuePair
  +0 &lt;  8&gt;     WebCore::CSSValue WebCore::CSSValue
  +0 &lt;  4&gt;       unsigned int m_refCount
  +4 &lt; :7&gt;       unsigned int m_primitiveUnitType : 7
  +4 &lt; :1&gt;       unsigned int m_hasCachedCSSText : 1
  +5 &lt; :2&gt;       unsigned int m_valueSeparator : 2
  +5 &lt; :6&gt;       unsigned int m_classType : 6
  +6 &lt;  1&gt;   WebCore::CSSValuePair::IdenticalValueEncoding m_encoding
  +7 &lt;  1&gt;   &lt;PADDING: 1 byte&gt;
  +8 &lt;  8&gt;     WTF::RefPtr&lt;WebCore::CSSValue, WTF::RawPtrTraits&lt;WebCore::CSSValue&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::CSSValue&gt; &gt; m_first
  +8 &lt;  8&gt;       WTF::RawPtrTraits&lt;WebCore::CSSValue&gt;::StorageType m_ptr
 +16 &lt;  8&gt;     WTF::RefPtr&lt;WebCore::CSSValue, WTF::RawPtrTraits&lt;WebCore::CSSValue&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::CSSValue&gt; &gt; m_second
 +16 &lt;  8&gt;       WTF::RawPtrTraits&lt;WebCore::CSSValue&gt;::StorageType m_ptr
Total byte size: 24
Total pad bytes: 1
Padding percentage: 4.17 %</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744475</commentid>
    <comment_count>7</comment_count>
      <attachid>424205</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-03-27 03:30:27 -0700</bug_when>
    <thetext>Comment on attachment 424205
Patch

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

I&apos;m going to say r- until it is better understood what the benefits are.

&gt; Source/WebCore/css/CSSBasicShapes.h:141
&gt; -    CSSPrimitiveValue* centerX() const { return m_centerX.get(); }
&gt; -    CSSPrimitiveValue* centerY() const { return m_centerY.get(); }
&gt; +    CSSValue* centerX() const { return m_centerX.get(); }
&gt; +    CSSValue* centerY() const { return m_centerY.get(); }
&gt;      CSSPrimitiveValue* radius() const { return m_radius.get(); }
&gt;  
&gt; -    void setCenterX(Ref&lt;CSSPrimitiveValue&gt;&amp;&amp; centerX) { m_centerX = WTFMove(centerX); }
&gt; -    void setCenterY(Ref&lt;CSSPrimitiveValue&gt;&amp;&amp; centerY) { m_centerY = WTFMove(centerY); }
&gt; +    void setCenterX(Ref&lt;CSSValue&gt;&amp;&amp; centerX) { m_centerX = WTFMove(centerX); }
&gt; +    void setCenterY(Ref&lt;CSSValue&gt;&amp;&amp; centerY) { m_centerY = WTFMove(centerY); }

The practical result of of this refactoring appears to be to weaken typing in many places. This is not a desirable direction. 

Can you explain what concrete benefits there are that would outweigh this regression?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744476</commentid>
    <comment_count>8</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-03-27 03:38:35 -0700</bug_when>
    <thetext>I guess that could be avoided by having a common base class for Primitive/Pair/Quad or by starting to use Variant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744512</commentid>
    <comment_count>9</comment_count>
      <attachid>424205</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-27 09:40:45 -0700</bug_when>
    <thetext>Comment on attachment 424205
Patch

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

Thanks for looking into this Tyler.

&gt; Source/WebCore/ChangeLog:11
&gt; +        1. It&apos;s not a sub-class of CSSValue, making it awkward to use.
&gt; +        2. It can only contain CSSPrimitiveValues.

Would it be possible / practical to have a type, like, CSSPrimitiveValuePair.h which *is* a subclass of CSSValue, but only has CSSPrimitiveValues items for the cases where we don&apos;t need to store arbitrary CSSValues as the items? Perhaps even as a subclass of CSSValuePair?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744814</commentid>
    <comment_count>10</comment_count>
    <who name="Tyler Wilcock">twilco.o</who>
    <bug_when>2021-03-29 11:49:46 -0700</bug_when>
    <thetext>Thank you both for the review!

&gt; The practical result of this refactoring appears to be to weaken typing
&gt; in many places.
You&apos;re right, this patch is not worth the weaker typing it brings.

&gt; I guess that could be avoided by having a common base class for Primitive/Pair/Quad or by starting to use Variant.

&gt; Would it be possible / practical to have a type, like, CSSPrimitiveValuePair.h which *is* a subclass of CSSValue, but only has CSSPrimitiveValues items for the cases where we don&apos;t need to store arbitrary CSSValues as the items? Perhaps even as a subclass of CSSValuePair?
Thanks for these suggestions.  I&apos;ll see if I can come up with something that addresses the original problems without weakening (ideally strengthening) the types.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424143</attachid>
            <date>2021-03-24 09:39:01 -0700</date>
            <delta_ts>2021-03-24 12:31:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223204-20210324113900.patch</filename>
            <type>text/plain</type>
            <size>103103</size>
            <attacher name="Tyler Wilcock">twilco.o</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0OTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQwMWQ3MzZiZWY2M2M5
YzNlODQ1N2E3ZjdiNDliMDA5OTBjZjNhMS4uMDljZmU1YTBkZTEyMzM3OGIzMmNjNDYwY2ZhZGUw
OGVhNWEyMzEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MSBAQAorMjAyMS0wMy0yNCAgVHls
ZXIgV2lsY29jayAgPHR3aWxjby5vQHByb3Rvbm1haWwuY29tPgorCisgICAgICAgIFJlZmFjdG9y
IFBhaXIuaCB0byBDU1NWYWx1ZVBhaXIuaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIzMjA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUGFpci5oIGhhcyBhIGNvdXBsZSBwcm9ibGVtczoKKworICAgICAg
ICAxLiBJdCdzIG5vdCBhIHN1Yi1jbGFzcyBvZiBDU1NWYWx1ZSwgbWFraW5nIGl0IGF3a3dhcmQg
dG8gdXNlLgorICAgICAgICAyLiBJdCBjYW4gb25seSBjb250YWluIENTU1ByaW1pdGl2ZVZhbHVl
cy4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgQ1NTVmFsdWVQYWlyIGNs
YXNzLCB3aGljaCBmaXhlcyBib3RoIG9mCisgICAgICAgIHRoZXNlIHNob3J0Y29taW5ncy4gIFRo
aXMgYWxsb3dzIHVzIHRvIHByb3Blcmx5IHJlcHJlc2VudCBwYWlyIHZhbHVlcworICAgICAgICB3
aGVyZSB3ZSBvdGhlcndpc2UgY291bGRuJ3QgKGJlY2F1c2UgdGhlIHZhbHVlcyB3ZSB3YW50ZWQg
dG8gcGFpciB3ZXJlCisgICAgICAgIG5vdCBDU1NQcmltaXRpdmVWYWx1ZXMpLgorCisgICAgICAg
IFBhaXIuaCBhbmQgYW55IGNvZGUgcmVsYXRlZCB0byBwYWlycyBpbiBDU1NQcmltaXRpdmVWYWx1
ZSBhcmUgcmVtb3ZlZAorICAgICAgICB3aXRoIHRoaXMgcGF0Y2ggKGluY2x1ZGluZyB0aGUgQ1NT
X1BBSVIgQ1NTIHVuaXQgdHlwZSkuCisKKyAgICAgICAgQ2hhbmdlcyBhcmUgY292ZXJlZCBieSBl
eGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGNzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yQ2VudGVyQ29vcmRpbmF0ZSk6CisgICAgICAgIFJl
dHVybiBDU1NWYWx1ZSBpbnN0ZWFkIG9mIENTU1ByaW1pdGl2ZVZhbHVlLgorICAgICAgICAoV2Vi
Q29yZTo6dmFsdWVGb3JCYXNpY1NoYXBlKToKKyAgICAgICAgQ3JlYXRlIENTU1ZhbHVlUGFpciBp
bnN0ZWFkIG9mIENTU1ByaW1pdGl2ZVZhbHVlIHBhaXIuCisgICAgICAgIChXZWJDb3JlOjpjb252
ZXJ0VG9MZW5ndGhTaXplKToKKyAgICAgICAgQWNjZXB0IENTU1ZhbHVlUGFpciBpbnN0ZWFkIG9m
IENTU1ByaW1pdGl2ZVZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvQ2VudGVyQ29v
cmRpbmF0ZSk6CisgICAgICAgIEFjY2VwdCBDU1NWYWx1ZSBpbnN0ZWFkIG9mIENTU1ByaW1pdGl2
ZVZhbHVlLgorCisgICAgICAgICogY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNlcmlhbGl6ZVBvc2l0aW9uT2Zmc2V0KToKKyAgICAgICAgQWNjZXB0IENTU1ZhbHVl
UGFpciBpbnN0ZWFkIG9mIFBhaXIuCisgICAgICAgIChXZWJDb3JlOjpidWlsZFNlcmlhbGl6YWJs
ZVBvc2l0aW9uT2Zmc2V0KToKKyAgICAgICAgQWNjZXB0IENTU1ZhbHVlIGluc3RhZCBvZiBDU1NQ
cmltaXRpdmVWYWx1ZS4KKyAgICAgICAgUmV0dXJuIENTU1ZhbHVlUGFpciBpbnN0ZWFkIG9mIENT
U1ByaW1pdGl2ZVZhbHVlIHBhaXIuCisgICAgICAgIChXZWJDb3JlOjpDU1NCYXNpY1NoYXBlQ2ly
Y2xlOjpjc3NUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hhcGVFbGxp
cHNlOjpjc3NUZXh0IGNvbnN0KToKKyAgICAgICAgU2VyaWFsaXplIENTU1ZhbHVlUGFpciBpbnN0
ZWFkIG9mIENTU1ByaW1pdGl2ZVZhbHVlIHBhaXIuCisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVD
b3JuZXJSYWRpdXNXaWR0aEFuZEhlaWdodCk6CisgICAgICAgIEFjY2VwdCBDU1NWYWx1ZVBhaXIg
aW5zdGVhZCBvZiBDU1NQcmltaXRpdmVWYWx1ZSBwYWlyLgorCisgICAgICAgICogY3NzL0NTU0Jh
c2ljU2hhcGVzLmg6CisgICAgICAgIENoYW5nZSBzZXZlcmFsIHByb3BlcnRpZXMgYW5kIGFzc29j
aWF0ZWQgZ2V0dGVycyBhbmQgc2V0dGVycyB0byBkZWFsIGluCisgICAgICAgIENTU1ZhbHVlUGFp
ciBpbnN0ZWFkIG9mIENTU1ByaW1pdGl2ZVZhbHVlIHBhaXJzLgorCisgICAgICAgICogY3NzL0NT
U0NhbGN1bGF0aW9uVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFzRG91YmxlVmFsdWUp
OgorICAgICAgICBSZW1vdmUgQ1NTX1BBSVIgZnJvbSBzd2l0Y2guCisKKyAgICAgICAgKiBjc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVl
Rm9yTmluZVBpZWNlSW1hZ2VSZXBlYXQpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHls
ZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eUluU3R5bGUpOgorICAgICAgICBDcmVhdGUgQ1NT
VmFsdWVQYWlyIGluc3RlYWQgb2YgQ1NTUHJpbWl0aXZlVmFsdWUgcGFpci4KKworICAgICAgICAq
IGNzcy9DU1NHcmFkaWVudFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBvc2l0aW9uRnJv
bVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVFbmRQb2ludCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0xpbmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KToK
KyAgICAgICAgSGFuZGxlIENTU1ZhbHVlIChzbyBDU1NWYWx1ZVBhaXIgb3IgQ1NTUHJpbWl0aXZl
VmFsdWUpIHJhdGhlciB0aGFuCisgICAgICAgIG9ubHkgZGVhbGluZyBpbiBDU1NQcmltaXRpdmVW
YWx1ZXMuCisKKyAgICAgICAgKiBjc3MvQ1NTR3JhZGllbnRWYWx1ZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTR3JhZGllbnRWYWx1ZTo6c2V0Rmlyc3RYKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0dyYWRpZW50VmFsdWU6OnNldEZpcnN0WSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NHcmFkaWVu
dFZhbHVlOjpzZXRTZWNvbmRYKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyYWRpZW50VmFsdWU6
OnNldFNlY29uZFkpOgorICAgICAgICBEZWFsIGluIENTU1ZhbHVlcyBpbnN0ZWFkIG9mIENTU1By
aW1pdGl2ZVZhbHVlLgorCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmlzVmFsaWRDU1NVbml0VHlwZUZvckRvdWJsZUNvbnZlcnNpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6aXNTdHJpbmdUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
aW1pdGl2ZVZhbHVlOjpjbGVhbnVwKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZh
bHVlOjp1bml0VHlwZVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1
ZTo6Zm9ybWF0TnVtYmVyRm9yQ3VzdG9tQ1NTVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQcmltaXRpdmVWYWx1ZTo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgUmVtb3ZlIGFsbCBQ
YWlyIGFuZCBDU1NfUEFJUiByZWxhdGVkIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBjc3Mv
Q1NTUHJpbWl0aXZlVmFsdWUuaDoKKyAgICAgICAgUmVtb3ZlIGFsbCBQYWlyIGFuZCBDU1NfUEFJ
UiByZWxhdGVkIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBjc3MvQ1NTVG9TdHlsZU1hcC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9MZW5ndGhTaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1RvU3R5bGVNYXA6Om1hcEZpbGxYUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9T
dHlsZU1hcDo6bWFwRmlsbFlQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxl
TWFwOjptYXBOaW5lUGllY2VJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFw
OjptYXBOaW5lUGllY2VJbWFnZVJlcGVhdCk6CisgICAgICAgIEhhbmRsZSBDU1NWYWx1ZXMgKENT
U1ZhbHVlUGFpcnMgb3IgQ1NTUHJpbWl0aXZlVmFsdWVzKSByYXRoZXIgdGhhbgorICAgICAgICBz
dHJpY3RseSBDU1NQcmltaXRpdmVWYWx1ZXMuCisKKyAgICAgICAgKiBjc3MvQ1NTVW5pdHMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgIFJlbW92ZSBDU1NfUEFJ
UiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogY3NzL0NTU1VuaXRzLmg6CisgICAgICAgIFJl
bW92ZSBDU1NfUEFJUiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogY3NzL0NTU1ZhbHVlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjplcXVhbHMgY29uc3QpOgorICAgICAgICBI
YW5kbGUgbmV3IFZhbHVlUGFpckNsYXNzLgorCisgICAgICAgICogY3NzL0NTU1ZhbHVlUGFpci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZVBhaXI6OmZpcnN0QXNQcmltaXRpdmUgY29u
c3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUGFpcjo6c2Vjb25kQXNQcmlt
aXRpdmUgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUGFpcjo6Zmly
c3RBc1ZhbHVlSUQgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUGFp
cjo6c2Vjb25kQXNWYWx1ZUlEIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NW
YWx1ZVBhaXI6OmN1c3RvbUNTU1RleHQgY29uc3QpOgorICAgICAgICBIYW5kbGUgbnVsbCB2YWx1
ZXMgYXBwcm9wcmlhdGVseS4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUGFpcjo6ZXF1YWxz
IGNvbnN0KToKKyAgICAgICAgQ2hlY2sgSWRlbnRpY2FsVmFsdWVFbmNvZGluZyBmaWVsZCB3aGVu
IGRldGVybWluaW5nIGVxdWFsaXR5LgorCisgICAgICAgICogY3NzL0NTU1ZhbHVlUGFpci5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQYWlyOjpjcmVhdGUpOgorICAgICAgICBBZGRlZCBz
b21lIG1vcmUgY3JlYXRpb24gbWV0aG9kcy4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUGFp
cjo6Zmlyc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQYWlyOjpzZWNvbmQg
Y29uc3QpOgorICAgICAgICBSZXR1cm4gUmVmUHRycyBpbnN0ZWFkIG9mIFJlZnMuCisgICAgICAg
IChXZWJDb3JlOjpDU1NWYWx1ZVBhaXI6OkNTU1ZhbHVlUGFpcik6CisgICAgICAgIEFjY2VwdCBS
ZWZQdHJzIGluc3RlYWQgb2YgUmVmcy4KKworICAgICAgICAqIGNzcy9DU1NWYWx1ZVBvb2wuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUG9vbDo6Y3JlYXRlVmFsdWUpOgorICAgICAgICBS
ZW1vdmUgY3JlYXRlVmFsdWUoY29uc3QgTGVuZ3RoU2l6ZSYsIGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSkuCisKKyAgICAgICAgKiBjc3MvUGFpci5oOiBSZW1vdmVkLgorCisgICAgICAgICogY3Nz
L3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1l
Q291bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lQm9yZGVyUmFkaXVzQ29ybmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVCYXNpY1NoYXBlSW5zZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6Z2V0QmFzZWxpbmVLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVCYXNl
bGluZUtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZUJvcmRlckltYWdlUmVwZWF0
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVCYWNrZ3JvdW5kU2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpjb25zdW1lU2VsZlBvc2l0aW9uT3ZlcmZsb3dQb3NpdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpjb25zdW1lSnVzdGlmeUl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVJ
bml0aWFsTGV0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpwYXJz
ZVNob3J0aGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIp
OiBEZWxldGVkLgorICAgICAgICBSZW1vdmUgYWxsIGluc3RhbmNlcyBvZiBDU1NQcmltaXRpdmVW
YWx1ZSBwYWlyIGNyZWF0aW9uLgorICAgICAgICBIYW5kbGUgbmV3IENTU1ZhbHVlUGFpciB2YWx1
ZSBpbiBzZXZlcmFsIGxvY2F0aW9ucy4KKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVy
dHlQYXJzZXJIZWxwZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2Vy
SGVscGVyczo6cG9zaXRpb25Gcm9tT25lVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzOjpwb3NpdGlvbkZyb21Ud29WYWx1ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpiYWNrZ3JvdW5kUG9zaXRpb25Gcm9tVGhy
ZWVWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpw
b3NpdGlvbkZyb21Gb3VyVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFy
c2VySGVscGVyczo6Y29uc3VtZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3Bl
cnR5UGFyc2VySGVscGVyczo6Y29uc3VtZVJhZGlhbEdyYWRpZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzSW50
ZXJuYWw6OmNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcik6IERlbGV0ZWQuCisgICAgICAgIFJlbW92
ZSBhbGwgaW5zdGFuY2VzIG9mIENTU1ByaW1pdGl2ZVZhbHVlIHBhaXIgY3JlYXRpb24uCisgICAg
ICAgIEhhbmRsZSBuZXcgQ1NTVmFsdWVQYWlyIHZhbHVlIGluIHNldmVyYWwgbG9jYXRpb25zLgor
CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaDoKKyAgICAg
ICAgUG9zaXRpb25Db29yZGluYXRlcyBub3cgaG9sZHMgQ1NTVmFsdWVzIGZvciAneCcgYW5kICd5
JyByYXRoZXIgdGhhbgorICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZXMuCisKKyAgICAgICAgKiBz
dHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UmFkaXVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25Db21wb25lbnRYKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25Db21wb25l
bnRZKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
UG9zaXRpb25Db21wb25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRPYmplY3RQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEluaXRpYWxMZXR0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTZWxmT3JEZWZhdWx0QWxpZ25tZW50
RGF0YSk6CisgICAgICAgIEhhbmRsZSBuZXcgQ1NTVmFsdWVQYWlyIHZhbHVlIGluIHNldmVyYWwg
bG9jYXRpb25zLgorCisgICAgICAgICogc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNvdW50ZXIpOgor
ICAgICAgICBVc2UgQ1NTVmFsdWVQYWlyIGluc3RlYWQgb2Ygbm93LWRlbGV0ZWQgUGFpci4KKwor
ICAgICAgICAqIHN0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICBSZW1vdmUgI2luY2x1
ZGUgIlBhaXIuIgorCiAyMDIxLTAzLTI0ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQu
b3JnPgogCiAgICAgICAgIFN1cHBvcnQgYW5pbWF0aW9uIG9mIHRoZSB0YWItc2l6ZSBDU1MgcHJv
cGVydHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25z
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcAppbmRleCAx
YWFhZTk2YjE5NWJiMWU0M2EyYzExZWUxYTU5NTcxZDE3OWQxYjg2Li5kMzliMjhkYTE2ZDczY2My
ZDFhNzM5YjcyYTVkY2EyNDFkZGVmNDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
QmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hh
cGVGdW5jdGlvbnMuY3BwCkBAIC0zMywyMSArMzMsMjAgQEAKICNpbmNsdWRlICJCYXNpY1NoYXBl
cy5oIgogI2luY2x1ZGUgIkNTU0Jhc2ljU2hhcGVzLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZl
VmFsdWVNYXBwaW5ncy5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlUGFpci5oIgogI2luY2x1ZGUgIkNT
U1ZhbHVlUG9vbC5oIgotI2luY2x1ZGUgIlBhaXIuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5o
IgogI2luY2x1ZGUgIlNWR1BhdGhCeXRlU3RyZWFtLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsdWVGb3JDZW50ZXJDb29yZGluYXRl
KENTU1ZhbHVlUG9vbCYgcG9vbCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBCYXNp
Y1NoYXBlQ2VudGVyQ29vcmRpbmF0ZSYgY2VudGVyLCBCb3hPcmllbnQgb3JpZW50YXRpb24pCitz
dGF0aWMgUmVmPENTU1ZhbHVlPiB2YWx1ZUZvckNlbnRlckNvb3JkaW5hdGUoQ1NTVmFsdWVQb29s
JiBwb29sLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEJhc2ljU2hhcGVDZW50ZXJD
b29yZGluYXRlJiBjZW50ZXIsIEJveE9yaWVudCBvcmllbnRhdGlvbikKIHsKICAgICBpZiAoY2Vu
dGVyLmRpcmVjdGlvbigpID09IEJhc2ljU2hhcGVDZW50ZXJDb29yZGluYXRlOjpUb3BMZWZ0KQog
ICAgICAgICByZXR1cm4gcG9vbC5jcmVhdGVWYWx1ZShjZW50ZXIubGVuZ3RoKCksIHN0eWxlKTsK
IAogICAgIENTU1ZhbHVlSUQga2V5d29yZCA9IG9yaWVudGF0aW9uID09IEJveE9yaWVudDo6SG9y
aXpvbnRhbCA/IENTU1ZhbHVlUmlnaHQgOiBDU1NWYWx1ZUJvdHRvbTsKLQotICAgIHJldHVybiBw
b29sLmNyZWF0ZVZhbHVlKFBhaXI6OmNyZWF0ZShwb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShr
ZXl3b3JkKSwgcG9vbC5jcmVhdGVWYWx1ZShjZW50ZXIubGVuZ3RoKCksIHN0eWxlKSkpOworICAg
IHJldHVybiBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShwb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShr
ZXl3b3JkKSwgcG9vbC5jcmVhdGVWYWx1ZShjZW50ZXIubGVuZ3RoKCksIHN0eWxlKSk7CiB9CiAK
IHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGJhc2ljU2hhcGVSYWRpdXNUb0NTU1ZhbHVl
KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgQ1NTVmFsdWVQb29sJiBwb29sLCBjb25zdCBCYXNp
Y1NoYXBlUmFkaXVzJiByYWRpdXMpCkBAIC0xMjMsMTAgKzEyMiwxMCBAQCBSZWY8Q1NTUHJpbWl0
aXZlVmFsdWU+IHZhbHVlRm9yQmFzaWNTaGFwZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNv
bnN0IEJhc2ljUwogICAgICAgICBpbnNldFZhbHVlLT5zZXRCb3R0b20oY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKGluc2V0LmJvdHRvbSgpLCBzdHlsZSkpOwogICAgICAgICBpbnNldFZhbHVlLT5z
ZXRMZWZ0KGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShpbnNldC5sZWZ0KCksIHN0eWxlKSk7CiAK
LSAgICAgICAgaW5zZXRWYWx1ZS0+c2V0VG9wTGVmdFJhZGl1cyhjc3NWYWx1ZVBvb2wuY3JlYXRl
VmFsdWUoaW5zZXQudG9wTGVmdFJhZGl1cygpLCBzdHlsZSkpOwotICAgICAgICBpbnNldFZhbHVl
LT5zZXRUb3BSaWdodFJhZGl1cyhjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoaW5zZXQudG9wUmln
aHRSYWRpdXMoKSwgc3R5bGUpKTsKLSAgICAgICAgaW5zZXRWYWx1ZS0+c2V0Qm90dG9tUmlnaHRS
YWRpdXMoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGluc2V0LmJvdHRvbVJpZ2h0UmFkaXVzKCks
IHN0eWxlKSk7Ci0gICAgICAgIGluc2V0VmFsdWUtPnNldEJvdHRvbUxlZnRSYWRpdXMoY3NzVmFs
dWVQb29sLmNyZWF0ZVZhbHVlKGluc2V0LmJvdHRvbUxlZnRSYWRpdXMoKSwgc3R5bGUpKTsKKyAg
ICAgICAgaW5zZXRWYWx1ZS0+c2V0VG9wTGVmdFJhZGl1cyhDU1NWYWx1ZVBhaXI6OmNyZWF0ZShp
bnNldC50b3BMZWZ0UmFkaXVzKCksIHN0eWxlKSk7CisgICAgICAgIGluc2V0VmFsdWUtPnNldFRv
cFJpZ2h0UmFkaXVzKENTU1ZhbHVlUGFpcjo6Y3JlYXRlKGluc2V0LnRvcFJpZ2h0UmFkaXVzKCks
IHN0eWxlKSk7CisgICAgICAgIGluc2V0VmFsdWUtPnNldEJvdHRvbVJpZ2h0UmFkaXVzKENTU1Zh
bHVlUGFpcjo6Y3JlYXRlKGluc2V0LmJvdHRvbVJpZ2h0UmFkaXVzKCksIHN0eWxlKSk7CisgICAg
ICAgIGluc2V0VmFsdWUtPnNldEJvdHRvbUxlZnRSYWRpdXMoQ1NTVmFsdWVQYWlyOjpjcmVhdGUo
aW5zZXQuYm90dG9tTGVmdFJhZGl1cygpLCBzdHlsZSkpOwogCiAgICAgICAgIGJhc2ljU2hhcGVW
YWx1ZSA9IFdURk1vdmUoaW5zZXRWYWx1ZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTQxLDI4ICsx
NDAsMzEgQEAgc3RhdGljIExlbmd0aCBjb252ZXJ0VG9MZW5ndGgoY29uc3QgQ1NTVG9MZW5ndGhD
b252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIGMKICAgICByZXR1cm4gdmFsdWUtPmNvbnZl
cnRUb0xlbmd0aDxGaXhlZEludGVnZXJDb252ZXJzaW9uIHwgRml4ZWRGbG9hdENvbnZlcnNpb24g
fCBQZXJjZW50Q29udmVyc2lvbiB8IENhbGN1bGF0ZWRDb252ZXJzaW9uPihjb252ZXJzaW9uRGF0
YSk7CiB9CiAKLXN0YXRpYyBMZW5ndGhTaXplIGNvbnZlcnRUb0xlbmd0aFNpemUoY29uc3QgQ1NT
VG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIGNvbnN0IENTU1ByaW1pdGl2
ZVZhbHVlKiB2YWx1ZSkKK3N0YXRpYyBMZW5ndGhTaXplIGNvbnZlcnRUb0xlbmd0aFNpemUoY29u
c3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIGNvbnN0IENTU1Zh
bHVlUGFpciogcGFpcikKIHsKLSAgICBpZiAoIXZhbHVlKQorICAgIGlmICghcGFpcikKICAgICAg
ICAgcmV0dXJuIHsgeyAwLCBMZW5ndGhUeXBlOjpGaXhlZCB9LCB7IDAsIExlbmd0aFR5cGU6OkZp
eGVkIH0gfTsKIAotICAgIGF1dG8mIHBhaXIgPSAqdmFsdWUtPnBhaXJWYWx1ZSgpOwotICAgIHJl
dHVybiB7IGNvbnZlcnRUb0xlbmd0aChjb252ZXJzaW9uRGF0YSwgcGFpci5maXJzdCgpKSwgY29u
dmVydFRvTGVuZ3RoKGNvbnZlcnNpb25EYXRhLCBwYWlyLnNlY29uZCgpKSB9OworICAgIHJldHVy
biB7IGNvbnZlcnRUb0xlbmd0aChjb252ZXJzaW9uRGF0YSwgcGFpci0+Zmlyc3RBc1ByaW1pdGl2
ZSgpLmdldCgpKSwgY29udmVydFRvTGVuZ3RoKGNvbnZlcnNpb25EYXRhLCBwYWlyLT5zZWNvbmRB
c1ByaW1pdGl2ZSgpLmdldCgpKSB9OwogfQogCi1zdGF0aWMgQmFzaWNTaGFwZUNlbnRlckNvb3Jk
aW5hdGUgY29udmVydFRvQ2VudGVyQ29vcmRpbmF0ZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNp
b25EYXRhJiBjb252ZXJzaW9uRGF0YSwgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlKQorc3RhdGlj
IEJhc2ljU2hhcGVDZW50ZXJDb29yZGluYXRlIGNvbnZlcnRUb0NlbnRlckNvb3JkaW5hdGUoY29u
c3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIENTU1ZhbHVlKiB2
YWx1ZSkKIHsKICAgICBDU1NWYWx1ZUlEIGtleXdvcmQgPSBDU1NWYWx1ZVRvcDsKICAgICBMZW5n
dGggb2Zmc2V0IHsgMCwgTGVuZ3RoVHlwZTo6Rml4ZWQgfTsKICAgICBpZiAoIXZhbHVlKQogICAg
ICAgICBrZXl3b3JkID0gQ1NTVmFsdWVDZW50ZXI7Ci0gICAgZWxzZSBpZiAodmFsdWUtPmlzVmFs
dWVJRCgpKQotICAgICAgICBrZXl3b3JkID0gdmFsdWUtPnZhbHVlSUQoKTsKLSAgICBlbHNlIGlm
IChQYWlyKiBwYWlyID0gdmFsdWUtPnBhaXJWYWx1ZSgpKSB7Ci0gICAgICAgIGtleXdvcmQgPSBw
YWlyLT5maXJzdCgpLT52YWx1ZUlEKCk7Ci0gICAgICAgIG9mZnNldCA9IGNvbnZlcnRUb0xlbmd0
aChjb252ZXJzaW9uRGF0YSwgcGFpci0+c2Vjb25kKCkpOwotICAgIH0gZWxzZQotICAgICAgICBv
ZmZzZXQgPSBjb252ZXJ0VG9MZW5ndGgoY29udmVyc2lvbkRhdGEsIHZhbHVlKTsKKyAgICBlbHNl
IGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIGF1dG8qIHByaW1pdGl2
ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKKyAgICAgICAgaWYg
KHByaW1pdGl2ZVZhbHVlLT5pc1ZhbHVlSUQoKSkKKyAgICAgICAgICAgIGtleXdvcmQgPSBwcmlt
aXRpdmVWYWx1ZS0+dmFsdWVJRCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBvZmZzZXQg
PSBjb252ZXJ0VG9MZW5ndGgoY29udmVyc2lvbkRhdGEsIHByaW1pdGl2ZVZhbHVlKTsKKyAgICB9
IGVsc2UgaWYgKHZhbHVlLT5pc1ZhbHVlUGFpcigpKSB7CisgICAgICAgIGF1dG8mIHBhaXIgPSBk
b3duY2FzdDxDU1NWYWx1ZVBhaXI+KCp2YWx1ZSk7CisgICAgICAgIGtleXdvcmQgPSBwYWlyLmZp
cnN0QXNWYWx1ZUlEKCk7CisgICAgICAgIG9mZnNldCA9IGNvbnZlcnRUb0xlbmd0aChjb252ZXJz
aW9uRGF0YSwgcGFpci5zZWNvbmRBc1ByaW1pdGl2ZSgpLmdldCgpKTsKKyAgICB9CiAKICAgICBC
YXNpY1NoYXBlQ2VudGVyQ29vcmRpbmF0ZTo6RGlyZWN0aW9uIGRpcmVjdGlvbjsKICAgICBzd2l0
Y2ggKGtleXdvcmQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1No
YXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuY3BwCmluZGV4IDdl
ZThhZWQxYWMzMjI0ZDdiN2NjNWQwNzdjYzYyNmRlMTc0YjA1MmEuLjk3YjZjNTY4YzViOWIxYzU2
ZTI2ODQ5ZDhiOGM5MWNjNWQwY2VkNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NCYXNpY1NoYXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVz
LmNwcApAQCAtMzMsMzUgKzMzLDQwIEBACiAjaW5jbHVkZSAiQ1NTTWFya3VwLmgiCiAjaW5jbHVk
ZSAiQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlUG9vbC5o
IgotI2luY2x1ZGUgIlBhaXIuaCIKICNpbmNsdWRlICJTVkdQYXRoQnl0ZVN0cmVhbS5oIgogI2lu
Y2x1ZGUgIlNWR1BhdGhVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIFN0cmluZyBzZXJpYWxpemVQ
b3NpdGlvbk9mZnNldChjb25zdCBQYWlyJiBvZmZzZXQsIGNvbnN0IFBhaXImIG90aGVyKQorc3Rh
dGljIFN0cmluZyBzZXJpYWxpemVQb3NpdGlvbk9mZnNldChjb25zdCBDU1NWYWx1ZVBhaXImIG9m
ZnNldCwgY29uc3QgQ1NTVmFsdWVQYWlyJiBvdGhlcikKIHsKLSAgICBpZiAoKG9mZnNldC5maXJz
dCgpLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVMZWZ0ICYmIG90aGVyLmZpcnN0KCktPnZhbHVlSUQo
KSA9PSBDU1NWYWx1ZVRvcCkKLSAgICAgICAgfHwgKG9mZnNldC5maXJzdCgpLT52YWx1ZUlEKCkg
PT0gQ1NTVmFsdWVUb3AgJiYgb3RoZXIuZmlyc3QoKS0+dmFsdWVJRCgpID09IENTU1ZhbHVlTGVm
dCkpCisgICAgYXV0byBvZmZzZXRWYWx1ZUlEID0gb2Zmc2V0LmZpcnN0QXNWYWx1ZUlEKCk7Cisg
ICAgYXV0byBvdGhlclZhbHVlSUQgPSBvdGhlci5maXJzdEFzVmFsdWVJRCgpOworICAgIGlmICgo
b2Zmc2V0VmFsdWVJRCA9PSBDU1NWYWx1ZUxlZnQgJiYgb3RoZXJWYWx1ZUlEID09IENTU1ZhbHVl
VG9wKQorICAgICAgICB8fCAob2Zmc2V0VmFsdWVJRCA9PSBDU1NWYWx1ZVRvcCAmJiBvdGhlclZh
bHVlSUQgPT0gQ1NTVmFsdWVMZWZ0KSkKICAgICAgICAgcmV0dXJuIG9mZnNldC5zZWNvbmQoKS0+
Y3NzVGV4dCgpOwotICAgIHJldHVybiBvZmZzZXQuY3NzVGV4dCgpOworICAgIHJldHVybiBvZmZz
ZXQuY3VzdG9tQ1NTVGV4dCgpOwogfQogCi1zdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBi
dWlsZFNlcmlhbGl6YWJsZVBvc2l0aW9uT2Zmc2V0KENTU1ByaW1pdGl2ZVZhbHVlKiBvZmZzZXQs
IENTU1ZhbHVlSUQgZGVmYXVsdFNpZGUpCitzdGF0aWMgUmVmPENTU1ZhbHVlUGFpcj4gYnVpbGRT
ZXJpYWxpemFibGVQb3NpdGlvbk9mZnNldChDU1NWYWx1ZSogb2Zmc2V0LCBDU1NWYWx1ZUlEIGRl
ZmF1bHRTaWRlKQogewogICAgIENTU1ZhbHVlSUQgc2lkZSA9IGRlZmF1bHRTaWRlOwogICAgIFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gYW1vdW50OwogCiAgICAgaWYgKCFvZmZzZXQpCiAgICAg
ICAgIHNpZGUgPSBDU1NWYWx1ZUNlbnRlcjsKLSAgICBlbHNlIGlmIChvZmZzZXQtPmlzVmFsdWVJ
RCgpKQotICAgICAgICBzaWRlID0gb2Zmc2V0LT52YWx1ZUlEKCk7Ci0gICAgZWxzZSBpZiAoUGFp
ciogcGFpciA9IG9mZnNldC0+cGFpclZhbHVlKCkpIHsKLSAgICAgICAgc2lkZSA9IHBhaXItPmZp
cnN0KCktPnZhbHVlSUQoKTsKLSAgICAgICAgYW1vdW50ID0gcGFpci0+c2Vjb25kKCk7Ci0gICAg
fSBlbHNlCi0gICAgICAgIGFtb3VudCA9IG9mZnNldDsKKyAgICBlbHNlIGlmIChvZmZzZXQtPmlz
UHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBhdXRvKiBwcmltaXRpdmVWYWx1ZSA9IGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPihvZmZzZXQpOworICAgICAgICBpZiAocHJpbWl0aXZlVmFs
dWUtPmlzVmFsdWVJRCgpKQorICAgICAgICAgICAgc2lkZSA9IHByaW1pdGl2ZVZhbHVlLT52YWx1
ZUlEKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFtb3VudCA9IHByaW1pdGl2ZVZhbHVl
OworICAgIH0gZWxzZSBpZiAob2Zmc2V0LT5pc1ZhbHVlUGFpcigpKSB7CisgICAgICAgIGF1dG8m
IHBhaXIgPSBkb3duY2FzdDxDU1NWYWx1ZVBhaXI+KCpvZmZzZXQpOworICAgICAgICBzaWRlID0g
cGFpci5maXJzdEFzVmFsdWVJRCgpOworICAgICAgICBhbW91bnQgPSBwYWlyLnNlY29uZEFzUHJp
bWl0aXZlKCk7CisgICAgfQogCiAgICAgYXV0byYgY3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQb29s
OjpzaW5nbGV0b24oKTsKICAgICBpZiAoIWFtb3VudCkKQEAgLTgxLDcgKzg2LDcgQEAgc3RhdGlj
IFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gYnVpbGRTZXJpYWxpemFibGVQb3NpdGlvbk9mZnNldChD
U1NQcmltaXRpdmVWYWx1ZSoKICAgICAgICAgc2lkZSA9IGRlZmF1bHRTaWRlOwogICAgIH0KIAot
ICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoUGFpcjo6Y3JlYXRlKGNzc1ZhbHVl
UG9vbC5jcmVhdGVWYWx1ZShzaWRlKSwgV1RGTW92ZShhbW91bnQpKSk7CisgICAgcmV0dXJuIENT
U1ZhbHVlUGFpcjo6Y3JlYXRlKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzaWRlKSwgV1RGTW92
ZShhbW91bnQpKTsKIH0KIAogc3RhdGljIFN0cmluZyBidWlsZENpcmNsZVN0cmluZyhjb25zdCBT
dHJpbmcmIHJhZGl1cywgY29uc3QgU3RyaW5nJiBjZW50ZXJYLCBjb25zdCBTdHJpbmcmIGNlbnRl
clkpCkBAIC0xMDEsMTYgKzEwNiwxNiBAQCBzdGF0aWMgU3RyaW5nIGJ1aWxkQ2lyY2xlU3RyaW5n
KGNvbnN0IFN0cmluZyYgcmFkaXVzLCBjb25zdCBTdHJpbmcmIGNlbnRlclgsIGNvbgogCiBTdHJp
bmcgQ1NTQmFzaWNTaGFwZUNpcmNsZTo6Y3NzVGV4dCgpIGNvbnN0CiB7Ci0gICAgUmVmPENTU1By
aW1pdGl2ZVZhbHVlPiBub3JtYWxpemVkQ1ggPSBidWlsZFNlcmlhbGl6YWJsZVBvc2l0aW9uT2Zm
c2V0KG1fY2VudGVyWC5nZXQoKSwgQ1NTVmFsdWVMZWZ0KTsKLSAgICBSZWY8Q1NTUHJpbWl0aXZl
VmFsdWU+IG5vcm1hbGl6ZWRDWSA9IGJ1aWxkU2VyaWFsaXphYmxlUG9zaXRpb25PZmZzZXQobV9j
ZW50ZXJZLmdldCgpLCBDU1NWYWx1ZVRvcCk7CisgICAgUmVmPENTU1ZhbHVlUGFpcj4gbm9ybWFs
aXplZENYID0gYnVpbGRTZXJpYWxpemFibGVQb3NpdGlvbk9mZnNldChtX2NlbnRlclguZ2V0KCks
IENTU1ZhbHVlTGVmdCk7CisgICAgUmVmPENTU1ZhbHVlUGFpcj4gbm9ybWFsaXplZENZID0gYnVp
bGRTZXJpYWxpemFibGVQb3NpdGlvbk9mZnNldChtX2NlbnRlclkuZ2V0KCksIENTU1ZhbHVlVG9w
KTsKIAogICAgIFN0cmluZyByYWRpdXM7CiAgICAgaWYgKG1fcmFkaXVzICYmIG1fcmFkaXVzLT52
YWx1ZUlEKCkgIT0gQ1NTVmFsdWVDbG9zZXN0U2lkZSkKICAgICAgICAgcmFkaXVzID0gbV9yYWRp
dXMtPmNzc1RleHQoKTsKIAogICAgIHJldHVybiBidWlsZENpcmNsZVN0cmluZyhyYWRpdXMsCi0g
ICAgICAgIHNlcmlhbGl6ZVBvc2l0aW9uT2Zmc2V0KCpub3JtYWxpemVkQ1gtPnBhaXJWYWx1ZSgp
LCAqbm9ybWFsaXplZENZLT5wYWlyVmFsdWUoKSksCi0gICAgICAgIHNlcmlhbGl6ZVBvc2l0aW9u
T2Zmc2V0KCpub3JtYWxpemVkQ1ktPnBhaXJWYWx1ZSgpLCAqbm9ybWFsaXplZENYLT5wYWlyVmFs
dWUoKSkpOworICAgICAgICBzZXJpYWxpemVQb3NpdGlvbk9mZnNldChub3JtYWxpemVkQ1gsIG5v
cm1hbGl6ZWRDWSksCisgICAgICAgIHNlcmlhbGl6ZVBvc2l0aW9uT2Zmc2V0KG5vcm1hbGl6ZWRD
WSwgbm9ybWFsaXplZENYKSk7CiB9CiAKIGJvb2wgQ1NTQmFzaWNTaGFwZUNpcmNsZTo6ZXF1YWxz
KGNvbnN0IENTU0Jhc2ljU2hhcGUmIHNoYXBlKSBjb25zdApAQCAtMTUwLDggKzE1NSw4IEBAIHN0
YXRpYyBTdHJpbmcgYnVpbGRFbGxpcHNlU3RyaW5nKGNvbnN0IFN0cmluZyYgcmFkaXVzWCwgY29u
c3QgU3RyaW5nJiByYWRpdXNZLCBjCiAKIFN0cmluZyBDU1NCYXNpY1NoYXBlRWxsaXBzZTo6Y3Nz
VGV4dCgpIGNvbnN0CiB7Ci0gICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBub3JtYWxpemVkQ1gg
PSBidWlsZFNlcmlhbGl6YWJsZVBvc2l0aW9uT2Zmc2V0KG1fY2VudGVyWC5nZXQoKSwgQ1NTVmFs
dWVMZWZ0KTsKLSAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IG5vcm1hbGl6ZWRDWSA9IGJ1aWxk
U2VyaWFsaXphYmxlUG9zaXRpb25PZmZzZXQobV9jZW50ZXJZLmdldCgpLCBDU1NWYWx1ZVRvcCk7
CisgICAgUmVmPENTU1ZhbHVlUGFpcj4gbm9ybWFsaXplZENYID0gYnVpbGRTZXJpYWxpemFibGVQ
b3NpdGlvbk9mZnNldChtX2NlbnRlclguZ2V0KCksIENTU1ZhbHVlTGVmdCk7CisgICAgUmVmPENT
U1ZhbHVlUGFpcj4gbm9ybWFsaXplZENZID0gYnVpbGRTZXJpYWxpemFibGVQb3NpdGlvbk9mZnNl
dChtX2NlbnRlclkuZ2V0KCksIENTU1ZhbHVlVG9wKTsKIAogICAgIFN0cmluZyByYWRpdXNYOwog
ICAgIFN0cmluZyByYWRpdXNZOwpAQCAtMTY1LDggKzE3MCw4IEBAIFN0cmluZyBDU1NCYXNpY1No
YXBlRWxsaXBzZTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJu
IGJ1aWxkRWxsaXBzZVN0cmluZyhyYWRpdXNYLCByYWRpdXNZLAotICAgICAgICBzZXJpYWxpemVQ
b3NpdGlvbk9mZnNldCgqbm9ybWFsaXplZENYLT5wYWlyVmFsdWUoKSwgKm5vcm1hbGl6ZWRDWS0+
cGFpclZhbHVlKCkpLAotICAgICAgICBzZXJpYWxpemVQb3NpdGlvbk9mZnNldCgqbm9ybWFsaXpl
ZENZLT5wYWlyVmFsdWUoKSwgKm5vcm1hbGl6ZWRDWC0+cGFpclZhbHVlKCkpKTsKKyAgICAgICAg
c2VyaWFsaXplUG9zaXRpb25PZmZzZXQobm9ybWFsaXplZENYLCBub3JtYWxpemVkQ1kpLAorICAg
ICAgICBzZXJpYWxpemVQb3NpdGlvbk9mZnNldChub3JtYWxpemVkQ1ksIG5vcm1hbGl6ZWRDWCkp
OwogfQogCiBib29sIENTU0Jhc2ljU2hhcGVFbGxpcHNlOjplcXVhbHMoY29uc3QgQ1NTQmFzaWNT
aGFwZSYgc2hhcGUpIGNvbnN0CkBAIC0zMzksMTIgKzM0NCwxMSBAQCBzdGF0aWMgU3RyaW5nIGJ1
aWxkSW5zZXRTdHJpbmcoY29uc3QgU3RyaW5nJiB0b3AsIGNvbnN0IFN0cmluZyYgcmlnaHQsIGNv
bnN0IFN0cgogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKIH0KIAotc3RhdGljIGlubGlu
ZSB2b2lkIHVwZGF0ZUNvcm5lclJhZGl1c1dpZHRoQW5kSGVpZ2h0KENTU1ByaW1pdGl2ZVZhbHVl
KiBjb3JuZXIsIFN0cmluZyYgd2lkdGgsIFN0cmluZyYgaGVpZ2h0KQorc3RhdGljIGlubGluZSB2
b2lkIHVwZGF0ZUNvcm5lclJhZGl1c1dpZHRoQW5kSGVpZ2h0KENTU1ZhbHVlUGFpciogcmFkaXVz
LCBTdHJpbmcmIHdpZHRoLCBTdHJpbmcmIGhlaWdodCkKIHsKLSAgICBpZiAoIWNvcm5lcikKKyAg
ICBpZiAoIXJhZGl1cykKICAgICAgICAgcmV0dXJuOwogCi0gICAgUGFpciogcmFkaXVzID0gY29y
bmVyLT5wYWlyVmFsdWUoKTsKICAgICB3aWR0aCA9IHJhZGl1cy0+Zmlyc3QoKSA/IHJhZGl1cy0+
Zmlyc3QoKS0+Y3NzVGV4dCgpIDogIjAiX3N0cjsKICAgICBpZiAocmFkaXVzLT5zZWNvbmQoKSkK
ICAgICAgICAgaGVpZ2h0ID0gcmFkaXVzLT5zZWNvbmQoKS0+Y3NzVGV4dCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQmFzaWNTaGFwZXMuaAppbmRleCAxMDVjNDYwOTQxZDY3NDRlNTdiZTdhMzVkNmIwNGZj
NzNmYWJiYmVjLi5hYzZhMTk0NzljZDhkNDhkOTZhZGE1NDFjZGEzNzE3MDVhOGYyN2RhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaApAQCAtMjksNiArMjksNyBAQAogCiAjcHJhZ21h
IG9uY2UKIAorI2luY2x1ZGUgIkNTU1ZhbHVlUGFpci5oIgogI2luY2x1ZGUgIldpbmRSdWxlLmgi
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KQEAg
LTM4LDYgKzM5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTUHJpbWl0aXZl
VmFsdWU7CitjbGFzcyBDU1NWYWx1ZTsKIGNsYXNzIFNWR1BhdGhCeXRlU3RyZWFtOwogCiBjbGFz
cyBDU1NCYXNpY1NoYXBlIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTQmFzaWNTaGFwZT4gewpAQCAt
NzEsMTAgKzczLDEwIEBAIHB1YmxpYzoKICAgICBDU1NQcmltaXRpdmVWYWx1ZSogYm90dG9tKCkg
Y29uc3QgeyByZXR1cm4gbV9ib3R0b20uZ2V0KCk7IH0KICAgICBDU1NQcmltaXRpdmVWYWx1ZSog
bGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVmdC5nZXQoKTsgfQogCi0gICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHRvcExlZnRSYWRpdXMoKSBjb25zdCB7IHJldHVybiBtX3RvcExlZnRSYWRpdXMuZ2V0
KCk7IH0KLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogdG9wUmlnaHRSYWRpdXMoKSBjb25zdCB7IHJl
dHVybiBtX3RvcFJpZ2h0UmFkaXVzLmdldCgpOyB9Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGJv
dHRvbVJpZ2h0UmFkaXVzKCkgY29uc3QgeyByZXR1cm4gbV9ib3R0b21SaWdodFJhZGl1cy5nZXQo
KTsgfQotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBib3R0b21MZWZ0UmFkaXVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9ib3R0b21MZWZ0UmFkaXVzLmdldCgpOyB9CisgICAgQ1NTVmFsdWVQYWlyKiB0b3BM
ZWZ0UmFkaXVzKCkgY29uc3QgeyByZXR1cm4gbV90b3BMZWZ0UmFkaXVzLmdldCgpOyB9CisgICAg
Q1NTVmFsdWVQYWlyKiB0b3BSaWdodFJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIG1fdG9wUmlnaHRS
YWRpdXMuZ2V0KCk7IH0KKyAgICBDU1NWYWx1ZVBhaXIqIGJvdHRvbVJpZ2h0UmFkaXVzKCkgY29u
c3QgeyByZXR1cm4gbV9ib3R0b21SaWdodFJhZGl1cy5nZXQoKTsgfQorICAgIENTU1ZhbHVlUGFp
ciogYm90dG9tTGVmdFJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIG1fYm90dG9tTGVmdFJhZGl1cy5n
ZXQoKTsgfQogCiAgICAgdm9pZCBzZXRUb3AoUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiYmIHRvcCkg
eyBtX3RvcCA9IFdURk1vdmUodG9wKTsgfQogICAgIHZvaWQgc2V0UmlnaHQoUmVmPENTU1ByaW1p
dGl2ZVZhbHVlPiYmIHJpZ2h0KSB7IG1fcmlnaHQgPSBXVEZNb3ZlKHJpZ2h0KTsgfQpAQCAtMTA0
LDEwICsxMDYsMTAgQEAgcHVibGljOgogICAgICAgICB1cGRhdGVTaGFwZVNpemU0VmFsdWVzKFdU
Rk1vdmUodmFsdWUxKSwgdmFsdWUyLmNvcHlSZWYoKSwgV1RGTW92ZSh2YWx1ZTMpLCB2YWx1ZTIu
Y29weVJlZigpKTsKICAgICB9CiAKLSAgICB2b2lkIHNldFRvcExlZnRSYWRpdXMoUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiYmIHJhZGl1cykgeyBtX3RvcExlZnRSYWRpdXMgPSBXVEZNb3ZlKHJh
ZGl1cyk7IH0KLSAgICB2b2lkIHNldFRvcFJpZ2h0UmFkaXVzKFJlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4mJiByYWRpdXMpIHsgbV90b3BSaWdodFJhZGl1cyA9IFdURk1vdmUocmFkaXVzKTsgfQot
ICAgIHZvaWQgc2V0Qm90dG9tUmlnaHRSYWRpdXMoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYm
IHJhZGl1cykgeyBtX2JvdHRvbVJpZ2h0UmFkaXVzID0gV1RGTW92ZShyYWRpdXMpOyB9Ci0gICAg
dm9pZCBzZXRCb3R0b21MZWZ0UmFkaXVzKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mJiByYWRp
dXMpIHsgbV9ib3R0b21MZWZ0UmFkaXVzID0gV1RGTW92ZShyYWRpdXMpOyB9CisgICAgdm9pZCBz
ZXRUb3BMZWZ0UmFkaXVzKFJlZlB0cjxDU1NWYWx1ZVBhaXI+JiYgcmFkaXVzKSB7IG1fdG9wTGVm
dFJhZGl1cyA9IFdURk1vdmUocmFkaXVzKTsgfQorICAgIHZvaWQgc2V0VG9wUmlnaHRSYWRpdXMo
UmVmUHRyPENTU1ZhbHVlUGFpcj4mJiByYWRpdXMpIHsgbV90b3BSaWdodFJhZGl1cyA9IFdURk1v
dmUocmFkaXVzKTsgfQorICAgIHZvaWQgc2V0Qm90dG9tUmlnaHRSYWRpdXMoUmVmUHRyPENTU1Zh
bHVlUGFpcj4mJiByYWRpdXMpIHsgbV9ib3R0b21SaWdodFJhZGl1cyA9IFdURk1vdmUocmFkaXVz
KTsgfQorICAgIHZvaWQgc2V0Qm90dG9tTGVmdFJhZGl1cyhSZWZQdHI8Q1NTVmFsdWVQYWlyPiYm
IHJhZGl1cykgeyBtX2JvdHRvbUxlZnRSYWRpdXMgPSBXVEZNb3ZlKHJhZGl1cyk7IH0KIAogcHJp
dmF0ZToKICAgICBDU1NCYXNpY1NoYXBlSW5zZXQoKSA9IGRlZmF1bHQ7CkBAIC0xMjEsMjIgKzEy
MywyMiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9ib3R0b207
CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBtX2xlZnQ7CiAKLSAgICBSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IG1fdG9wTGVmdFJhZGl1czsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IG1fdG9wUmlnaHRSYWRpdXM7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBt
X2JvdHRvbVJpZ2h0UmFkaXVzOwotICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9ib3R0
b21MZWZ0UmFkaXVzOworICAgIFJlZlB0cjxDU1NWYWx1ZVBhaXI+IG1fdG9wTGVmdFJhZGl1czsK
KyAgICBSZWZQdHI8Q1NTVmFsdWVQYWlyPiBtX3RvcFJpZ2h0UmFkaXVzOworICAgIFJlZlB0cjxD
U1NWYWx1ZVBhaXI+IG1fYm90dG9tUmlnaHRSYWRpdXM7CisgICAgUmVmUHRyPENTU1ZhbHVlUGFp
cj4gbV9ib3R0b21MZWZ0UmFkaXVzOwogfTsKIAogY2xhc3MgQ1NTQmFzaWNTaGFwZUNpcmNsZSBm
aW5hbCA6IHB1YmxpYyBDU1NCYXNpY1NoYXBlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPENT
U0Jhc2ljU2hhcGVDaXJjbGU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTQmFz
aWNTaGFwZUNpcmNsZSk7IH0KIAotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjZW50ZXJYKCkgY29u
c3QgeyByZXR1cm4gbV9jZW50ZXJYLmdldCgpOyB9Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNl
bnRlclkoKSBjb25zdCB7IHJldHVybiBtX2NlbnRlclkuZ2V0KCk7IH0KKyAgICBDU1NWYWx1ZSog
Y2VudGVyWCgpIGNvbnN0IHsgcmV0dXJuIG1fY2VudGVyWC5nZXQoKTsgfQorICAgIENTU1ZhbHVl
KiBjZW50ZXJZKCkgY29uc3QgeyByZXR1cm4gbV9jZW50ZXJZLmdldCgpOyB9CiAgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIHJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIG1fcmFkaXVzLmdldCgpOyB9CiAK
LSAgICB2b2lkIHNldENlbnRlclgoUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiYmIGNlbnRlclgpIHsg
bV9jZW50ZXJYID0gV1RGTW92ZShjZW50ZXJYKTsgfQotICAgIHZvaWQgc2V0Q2VudGVyWShSZWY8
Q1NTUHJpbWl0aXZlVmFsdWU+JiYgY2VudGVyWSkgeyBtX2NlbnRlclkgPSBXVEZNb3ZlKGNlbnRl
clkpOyB9CisgICAgdm9pZCBzZXRDZW50ZXJYKFJlZjxDU1NWYWx1ZT4mJiBjZW50ZXJYKSB7IG1f
Y2VudGVyWCA9IFdURk1vdmUoY2VudGVyWCk7IH0KKyAgICB2b2lkIHNldENlbnRlclkoUmVmPENT
U1ZhbHVlPiYmIGNlbnRlclkpIHsgbV9jZW50ZXJZID0gV1RGTW92ZShjZW50ZXJZKTsgfQogICAg
IHZvaWQgc2V0UmFkaXVzKFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4mJiByYWRpdXMpIHsgbV9yYWRp
dXMgPSBXVEZNb3ZlKHJhZGl1cyk7IH0KIAogcHJpdmF0ZToKQEAgLTE0Niw4ICsxNDgsOCBAQCBw
cml2YXRlOgogICAgIFN0cmluZyBjc3NUZXh0KCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBlcXVh
bHMoY29uc3QgQ1NTQmFzaWNTaGFwZSYpIGNvbnN0IGZpbmFsOwogCi0gICAgUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBtX2NlbnRlclg7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBt
X2NlbnRlclk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBtX2NlbnRlclg7CisgICAgUmVmUHRyPENT
U1ZhbHVlPiBtX2NlbnRlclk7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBtX3JhZGl1
czsKIH07CiAKQEAgLTE1NSwxMyArMTU3LDEzIEBAIGNsYXNzIENTU0Jhc2ljU2hhcGVFbGxpcHNl
IGZpbmFsIDogcHVibGljIENTU0Jhc2ljU2hhcGUgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8
Q1NTQmFzaWNTaGFwZUVsbGlwc2U+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NT
QmFzaWNTaGFwZUVsbGlwc2UpOyB9CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogY2VudGVyWCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2VudGVyWC5nZXQoKTsgfQotICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBjZW50ZXJZKCkgY29uc3QgeyByZXR1cm4gbV9jZW50ZXJZLmdldCgpOyB9CisgICAgQ1NTVmFs
dWUqIGNlbnRlclgoKSBjb25zdCB7IHJldHVybiBtX2NlbnRlclguZ2V0KCk7IH0KKyAgICBDU1NW
YWx1ZSogY2VudGVyWSgpIGNvbnN0IHsgcmV0dXJuIG1fY2VudGVyWS5nZXQoKTsgfQogICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiByYWRpdXNYKCkgY29uc3QgeyByZXR1cm4gbV9yYWRpdXNYLmdldCgp
OyB9CiAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHJhZGl1c1koKSBjb25zdCB7IHJldHVybiBtX3Jh
ZGl1c1kuZ2V0KCk7IH0KIAotICAgIHZvaWQgc2V0Q2VudGVyWChSZWY8Q1NTUHJpbWl0aXZlVmFs
dWU+JiYgY2VudGVyWCkgeyBtX2NlbnRlclggPSBXVEZNb3ZlKGNlbnRlclgpOyB9Ci0gICAgdm9p
ZCBzZXRDZW50ZXJZKFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4mJiBjZW50ZXJZKSB7IG1fY2VudGVy
WSA9IFdURk1vdmUoY2VudGVyWSk7IH0KKyAgICB2b2lkIHNldENlbnRlclgoUmVmPENTU1ZhbHVl
PiYmIGNlbnRlclgpIHsgbV9jZW50ZXJYID0gV1RGTW92ZShjZW50ZXJYKTsgfQorICAgIHZvaWQg
c2V0Q2VudGVyWShSZWY8Q1NTVmFsdWU+JiYgY2VudGVyWSkgeyBtX2NlbnRlclkgPSBXVEZNb3Zl
KGNlbnRlclkpOyB9CiAgICAgdm9pZCBzZXRSYWRpdXNYKFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4m
JiByYWRpdXNYKSB7IG1fcmFkaXVzWCA9IFdURk1vdmUocmFkaXVzWCk7IH0KICAgICB2b2lkIHNl
dFJhZGl1c1koUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiYmIHJhZGl1c1kpIHsgbV9yYWRpdXNZID0g
V1RGTW92ZShyYWRpdXNZKTsgfQogCkBAIC0xNzIsOCArMTc0LDggQEAgcHJpdmF0ZToKICAgICBT
dHJpbmcgY3NzVGV4dCgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU0Jh
c2ljU2hhcGUmKSBjb25zdCBmaW5hbDsKIAotICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
bV9jZW50ZXJYOwotICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9jZW50ZXJZOworICAg
IFJlZlB0cjxDU1NWYWx1ZT4gbV9jZW50ZXJYOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gbV9jZW50
ZXJZOwogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9yYWRpdXNYOwogICAgIFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9yYWRpdXNZOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDYWxjdWxhdGlvblZhbHVlLmNwcAppbmRleCBlMjExYWVkMWZlMzk0NWIzNWZmNmMzZjVjZDQ5
NGM5YWQ4YmJhZDc2Li45YTRmYzNmYjY3NWI3ZmVjMDA4ZmE3MzcwZDlhZTdmMDA1YTM5OGZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCkBAIC0yMTEsNyAr
MjExLDYgQEAgc3RhdGljIGJvb2wgaGFzRG91YmxlVmFsdWUoQ1NTVW5pdFR5cGUgdHlwZSkKICAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ09VTlRFUjoKICAgICBjYXNlIENTU1VuaXRUeXBlOjpD
U1NfUkVDVDoKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkdCQ09MT1I6Ci0gICAgY2FzZSBD
U1NVbml0VHlwZTo6Q1NTX1BBSVI6CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1VOSUNPREVf
UkFOR0U6CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NPVU5URVJfTkFNRToKICAgICBjYXNl
IENTU1VuaXRUeXBlOjpDU1NfU0hBUEU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDZkZGI2Y2IwYzhlYzZhYzVmMzM4Mzdk
MmVmYzdjZDZmMTM4MDE3NWEuLmUxZGQ1MjQ2NzE1MWE3OTY1MDQ3NzI5MzEzOGY1OWU0MTQ0ODNk
NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiQ1NTU2hhZG93VmFsdWUuaCIK
ICNpbmNsdWRlICJDU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVM
aXN0LmgiCisjaW5jbHVkZSAiQ1NTVmFsdWVQYWlyLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVQb29s
LmgiCiAjaW5jbHVkZSAiQ29tcG9zZWRUcmVlQW5jZXN0b3JJdGVyYXRvci5oIgogI2luY2x1ZGUg
IkNvbnRlbnREYXRhLmgiCkBAIC01Nyw3ICs1OCw2IEBACiAjaW5jbHVkZSAiRm9udFNlbGVjdGlv
blZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkZvbnRUYWdnZWRTZXR0aW5ncy5oIgogI2luY2x1
ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgotI2luY2x1ZGUgIlBhaXIuaCIKICNpbmNsdWRlICJRdW90
ZXNEYXRhLmgiCiAjaW5jbHVkZSAiUmVjdC5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCkBA
IC0yMTksNyArMjE5LDcgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JOaW5lUGllY2VJ
bWFnZVJlcGVhdChjb25zdCBOaW5lUGllY2VJbWFnZSYgaW1hZ2UpCiAgICAgICAgIHZlcnRpY2Fs
UmVwZWF0ID0gaG9yaXpvbnRhbFJlcGVhdC5jb3B5UmVmKCk7CiAgICAgZWxzZQogICAgICAgICB2
ZXJ0aWNhbFJlcGVhdCA9IGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUodmFsdWVG
b3JSZXBlYXRSdWxlKGltYWdlLnZlcnRpY2FsUnVsZSgpKSk7Ci0gICAgcmV0dXJuIGNzc1ZhbHVl
UG9vbC5jcmVhdGVWYWx1ZShQYWlyOjpjcmVhdGUoV1RGTW92ZShob3Jpem9udGFsUmVwZWF0KSwg
V1RGTW92ZSh2ZXJ0aWNhbFJlcGVhdCkpKTsKKyAgICByZXR1cm4gQ1NTVmFsdWVQYWlyOjpjcmVh
dGUoV1RGTW92ZShob3Jpem9udGFsUmVwZWF0KSwgV1RGTW92ZSh2ZXJ0aWNhbFJlcGVhdCkpOwog
fQogCiBzdGF0aWMgUmVmPENTU1ZhbHVlPiB2YWx1ZUZvck5pbmVQaWVjZUltYWdlKGNvbnN0IE5p
bmVQaWVjZUltYWdlJiBpbWFnZSkKQEAgLTM1MzUsNyArMzUzNSw3IEBAIFJlZlB0cjxDU1NWYWx1
ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eUluU3R5bGUoY29uc3Qg
UmVuZGVyU3R5CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRJbml0aWFsTGV0dGVyOiB7
CiAgICAgICAgICAgICBhdXRvIGRyb3AgPSAhc3R5bGUuaW5pdGlhbExldHRlckRyb3AoKSA/IGNz
c1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpIDogY3NzVmFs
dWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLmluaXRpYWxMZXR0ZXJEcm9wKCksIENTU1VuaXRUeXBl
OjpDU1NfTlVNQkVSKTsKICAgICAgICAgICAgIGF1dG8gc2l6ZSA9ICFzdHlsZS5pbml0aWFsTGV0
dGVySGVpZ2h0KCkgPyBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
Tm9ybWFsKSA6IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5pbml0aWFsTGV0dGVySGVp
Z2h0KCksIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKLSAgICAgICAgICAgIHJldHVybiBjc3NW
YWx1ZVBvb2wuY3JlYXRlVmFsdWUoUGFpcjo6Y3JlYXRlKFdURk1vdmUoZHJvcCksIFdURk1vdmUo
c2l6ZSkpKTsKKyAgICAgICAgICAgIHJldHVybiBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShXVEZNb3Zl
KGRyb3ApLCBXVEZNb3ZlKHNpemUpKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2U6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0dyYWRpZW50VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFs
dWUuY3BwCmluZGV4IGYyZjFkMGE1Y2IzNzFkZGZhMWRmNDQ4YTVjMjcyYWVlZjQyNWQ1NDYuLmNj
YmExN2Y2YjE4ZWM2YThmNjU0YTliZDA0MTQ3MjY3YTY3NjY5YTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKQEAgLTI5LDEwICsyOSwxMCBAQAogI2luY2x1ZGUgIkNT
U0NhbGN1bGF0aW9uVmFsdWUuaCIKICNpbmNsdWRlICJDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRh
LmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlUGFp
ci5oIgogI2luY2x1ZGUgIkNvbG9yQmxlbmRpbmcuaCIKICNpbmNsdWRlICJHcmFkaWVudEltYWdl
LmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCi0jaW5jbHVkZSAiUGFpci5oIgogI2lu
Y2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVk
ZSAiU3R5bGVCdWlsZGVyU3RhdGUuaCIKQEAgLTU2Myw3ICs1NjMsNyBAQCBHcmFkaWVudDo6Q29s
b3JTdG9wVmVjdG9yIENTU0dyYWRpZW50VmFsdWU6OmNvbXB1dGVTdG9wcyhHcmFkaWVudEFkYXB0
ZXImIGdyYWRpZQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBmbG9hdCBwb3NpdGlv
bkZyb21WYWx1ZShjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVu
Z3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBjb25zdCBGbG9hdFNpemUmIHNpemUs
IGJvb2wgaXNIb3Jpem9udGFsKQorc3RhdGljIGZsb2F0IHBvc2l0aW9uRnJvbVZhbHVlKGNvbnN0
IENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVy
c2lvbkRhdGEsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgYm9vbCBpc0hvcml6b250YWwpCiB7CiAg
ICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC01NzIsMjggKzU3MiwzMSBAQCBz
dGF0aWMgZmxvYXQgcG9zaXRpb25Gcm9tVmFsdWUoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUqIHZh
bHVlLCBjb25zdCBDU1NUb0xlbmd0aAogICAgIGZsb2F0IHNpZ24gPSAxOwogICAgIGZsb2F0IGVk
Z2VEaXN0YW5jZSA9IGlzSG9yaXpvbnRhbCA/IHNpemUud2lkdGgoKSA6IHNpemUuaGVpZ2h0KCk7
CiAKKyAgICBjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWU7CiAgICAgLy8g
SW4gdGhpcyBjYXNlIHRoZSBjZW50ZXIgb2YgdGhlIGdyYWRpZW50IGlzIGdpdmVuIHJlbGF0aXZl
IHRvIGFuIGVkZ2UgaW4gdGhlCiAgICAgLy8gZm9ybSBvZjogWyB0b3AgfCBib3R0b20gfCByaWdo
dCB8IGxlZnQgXSBbIDxwZXJjZW50YWdlPiB8IDxsZW5ndGg+IF0uCi0gICAgaWYgKHZhbHVlLT5p
c1BhaXIoKSkgewotICAgICAgICBDU1NWYWx1ZUlEIG9yaWdpbklEID0gdmFsdWUtPnBhaXJWYWx1
ZSgpLT5maXJzdCgpLT52YWx1ZUlEKCk7CisgICAgaWYgKHZhbHVlLT5pc1ZhbHVlUGFpcigpKSB7
CisgICAgICAgIGF1dG8mIHBhaXIgPSBkb3duY2FzdDxDU1NWYWx1ZVBhaXI+KCp2YWx1ZSk7Cisg
ICAgICAgIENTU1ZhbHVlSUQgb3JpZ2luSUQgPSBwYWlyLmZpcnN0QXNWYWx1ZUlEKCk7CiAgICAg
ICAgIGlmIChvcmlnaW5JRCA9PSBDU1NWYWx1ZVJpZ2h0IHx8IG9yaWdpbklEID09IENTU1ZhbHVl
Qm90dG9tKSB7CiAgICAgICAgICAgICAvLyBGb3IgcmlnaHQvYm90dG9tLCB0aGUgb2Zmc2V0IGlz
IHJlbGF0aXZlIHRvIHRoZSBmYXIgZWRnZS4KICAgICAgICAgICAgIG9yaWdpbiA9IGVkZ2VEaXN0
YW5jZTsKICAgICAgICAgICAgIHNpZ24gPSAtMTsKICAgICAgICAgfQotICAgICAgICB2YWx1ZSA9
IHZhbHVlLT5wYWlyVmFsdWUoKS0+c2Vjb25kKCk7Ci0gICAgfQorICAgICAgICBwcmltaXRpdmVW
YWx1ZSA9IHBhaXIuc2Vjb25kQXNQcmltaXRpdmUoKS5nZXQoKTsKKyAgICB9IGVsc2UgaWYgKHZh
bHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgIHByaW1pdGl2ZVZhbHVlID0gZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKIAotICAgIGlmICh2YWx1ZS0+aXNOdW1iZXIo
KSkKLSAgICAgICAgcmV0dXJuIG9yaWdpbiArIHNpZ24gKiB2YWx1ZS0+ZmxvYXRWYWx1ZSgpICog
Y29udmVyc2lvbkRhdGEuem9vbSgpOworICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNOdW1iZXIo
KSkKKyAgICAgICAgcmV0dXJuIG9yaWdpbiArIHNpZ24gKiBwcmltaXRpdmVWYWx1ZS0+ZmxvYXRW
YWx1ZSgpICogY29udmVyc2lvbkRhdGEuem9vbSgpOwogCi0gICAgaWYgKHZhbHVlLT5pc1BlcmNl
bnRhZ2UoKSkKLSAgICAgICAgcmV0dXJuIG9yaWdpbiArIHNpZ24gKiB2YWx1ZS0+ZmxvYXRWYWx1
ZSgpIC8gMTAwICogZWRnZURpc3RhbmNlOworICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNQZXJj
ZW50YWdlKCkpCisgICAgICAgIHJldHVybiBvcmlnaW4gKyBzaWduICogcHJpbWl0aXZlVmFsdWUt
PmZsb2F0VmFsdWUoKSAvIDEwMCAqIGVkZ2VEaXN0YW5jZTsKIAotICAgIGlmICh2YWx1ZS0+aXND
YWxjdWxhdGVkUGVyY2VudGFnZVdpdGhMZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIG9yaWdpbiAr
IHNpZ24gKiB2YWx1ZS0+Y3NzQ2FsY1ZhbHVlKCktPmNyZWF0ZUNhbGN1bGF0aW9uVmFsdWUoY29u
dmVyc2lvbkRhdGEpLT5ldmFsdWF0ZShlZGdlRGlzdGFuY2UpOworICAgIGlmIChwcmltaXRpdmVW
YWx1ZS0+aXNDYWxjdWxhdGVkUGVyY2VudGFnZVdpdGhMZW5ndGgoKSkKKyAgICAgICAgcmV0dXJu
IG9yaWdpbiArIHNpZ24gKiBwcmltaXRpdmVWYWx1ZS0+Y3NzQ2FsY1ZhbHVlKCktPmNyZWF0ZUNh
bGN1bGF0aW9uVmFsdWUoY29udmVyc2lvbkRhdGEpLT5ldmFsdWF0ZShlZGdlRGlzdGFuY2UpOwog
Ci0gICAgc3dpdGNoICh2YWx1ZS0+dmFsdWVJRCgpKSB7CisgICAgc3dpdGNoIChwcmltaXRpdmVW
YWx1ZS0+dmFsdWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1ZVRvcDoKICAgICAgICAgQVNTRVJU
KCFpc0hvcml6b250YWwpOwogICAgICAgICByZXR1cm4gMDsKQEAgLTYxMiwxMSArNjE1LDExIEBA
IHN0YXRpYyBmbG9hdCBwb3NpdGlvbkZyb21WYWx1ZShjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSog
dmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHJl
dHVybiBvcmlnaW4gKyBzaWduICogdmFsdWUtPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KGNvbnZlcnNp
b25EYXRhKTsKKyAgICByZXR1cm4gb3JpZ2luICsgc2lnbiAqIHByaW1pdGl2ZVZhbHVlLT5jb21w
dXRlTGVuZ3RoPGZsb2F0Pihjb252ZXJzaW9uRGF0YSk7CiB9CiAKIC8vIFJlc29sdmUgcG9pbnRz
L3JhZGlpIHRvIGZyb250IGVuZCB2YWx1ZXMuCi1zdGF0aWMgRmxvYXRQb2ludCBjb21wdXRlRW5k
UG9pbnQoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUqIGhvcml6b250YWwsIGNvbnN0IENTU1ByaW1p
dGl2ZVZhbHVlKiB2ZXJ0aWNhbCwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29u
dmVyc2lvbkRhdGEsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK3N0YXRpYyBGbG9hdFBvaW50IGNv
bXB1dGVFbmRQb2ludChjb25zdCBDU1NWYWx1ZSogaG9yaXpvbnRhbCwgY29uc3QgQ1NTVmFsdWUq
IHZlcnRpY2FsLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0
YSwgY29uc3QgRmxvYXRTaXplJiBzaXplKQogewogICAgIHJldHVybiB7IHBvc2l0aW9uRnJvbVZh
bHVlKGhvcml6b250YWwsIGNvbnZlcnNpb25EYXRhLCBzaXplLCB0cnVlKSwgcG9zaXRpb25Gcm9t
VmFsdWUodmVydGljYWwsIGNvbnZlcnNpb25EYXRhLCBzaXplLCBmYWxzZSkgfTsKIH0KQEAgLTcx
MywxMCArNzE2LDExIEBAIFN0cmluZyBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjdXN0b21DU1NU
ZXh0KCkgY29uc3QKIAogICAgICAgICBib29sIHdyb3RlU29tZXRoaW5nID0gZmFsc2U7CiAKKyAg
ICAgICAgYXV0byBmaXJzdFlWYWx1ZUlEID0gZmlyc3RZKCkgJiYgZmlyc3RZKCktPmlzUHJpbWl0
aXZlVmFsdWUoKSA/IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqZmlyc3RZKCkpLnZhbHVl
SUQoKSA6IENTU1ZhbHVlSW52YWxpZDsKICAgICAgICAgaWYgKG1fYW5nbGUgJiYgbV9hbmdsZS0+
Y29tcHV0ZURlZ3JlZXMoKSAhPSAxODApIHsKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobV9h
bmdsZS0+Y3NzVGV4dCgpKTsKICAgICAgICAgICAgIHdyb3RlU29tZXRoaW5nID0gdHJ1ZTsKLSAg
ICAgICAgfSBlbHNlIGlmICgoZmlyc3RYKCkgfHwgZmlyc3RZKCkpICYmICEoIWZpcnN0WCgpICYm
IGZpcnN0WSgpICYmIGZpcnN0WSgpLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVCb3R0b20pKSB7Cisg
ICAgICAgIH0gZWxzZSBpZiAoKGZpcnN0WCgpIHx8IGZpcnN0WSgpKSAmJiAhKCFmaXJzdFgoKSAm
JiBmaXJzdFlWYWx1ZUlEID09IENTU1ZhbHVlQm90dG9tKSkgewogICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZExpdGVyYWwoInRvICIpOwogICAgICAgICAgICAgYXBwZW5kU3BhY2VTZXBhcmF0ZWRP
cHRpb25hbENTU1B0clRleHQocmVzdWx0LCBmaXJzdFgoKSwgZmlyc3RZKCkpOwogICAgICAgICAg
ICAgd3JvdGVTb21ldGhpbmcgPSB0cnVlOwpAQCAtODQyLDkgKzg0NiwxMSBAQCBSZWY8R3JhZGll
bnQ+IENTU0xpbmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KFJlbmRlckVsZW1lbnQm
IHJlbmRlcmVyLCBjbwogICAgICAgICAgICAgICAgIC8vICJNYWdpYyIgY29ybmVycywgc28gdGhl
IDUwJSBsaW5lIHRvdWNoZXMgdHdvIGNvcm5lcnMuCiAgICAgICAgICAgICAgICAgZmxvYXQgcmlz
ZSA9IHNpemUud2lkdGgoKTsKICAgICAgICAgICAgICAgICBmbG9hdCBydW4gPSBzaXplLmhlaWdo
dCgpOwotICAgICAgICAgICAgICAgIGlmIChmaXJzdFgoKSAmJiBmaXJzdFgoKS0+dmFsdWVJRCgp
ID09IENTU1ZhbHVlTGVmdCkKKyAgICAgICAgICAgICAgICBhdXRvIGZpcnN0WFZhbHVlSUQgPSBm
aXJzdFgoKSAmJiBmaXJzdFgoKS0+aXNQcmltaXRpdmVWYWx1ZSgpID8gZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KCpmaXJzdFgoKSkudmFsdWVJRCgpIDogQ1NTVmFsdWVJbnZhbGlkOworICAg
ICAgICAgICAgICAgIGF1dG8gZmlyc3RZVmFsdWVJRCA9IGZpcnN0WSgpICYmIGZpcnN0WSgpLT5p
c1ByaW1pdGl2ZVZhbHVlKCkgPyBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKmZpcnN0WSgp
KS52YWx1ZUlEKCkgOiBDU1NWYWx1ZUludmFsaWQ7CisgICAgICAgICAgICAgICAgaWYgKGZpcnN0
WFZhbHVlSUQgPT0gQ1NTVmFsdWVMZWZ0KQogICAgICAgICAgICAgICAgICAgICBydW4gKj0gLTE7
Ci0gICAgICAgICAgICAgICAgaWYgKGZpcnN0WSgpICYmIGZpcnN0WSgpLT52YWx1ZUlEKCkgPT0g
Q1NTVmFsdWVCb3R0b20pCisgICAgICAgICAgICAgICAgaWYgKGZpcnN0WVZhbHVlSUQgPT0gQ1NT
VmFsdWVCb3R0b20pCiAgICAgICAgICAgICAgICAgICAgIHJpc2UgKj0gLTE7CiAgICAgICAgICAg
ICAgICAgLy8gQ29tcHV0ZSBhbmdsZSwgYW5kIGZsaXAgaXQgYmFjayB0byAiYmVhcmluZyBhbmds
ZSIgZGVncmVlcy4KICAgICAgICAgICAgICAgICBmbG9hdCBhbmdsZSA9IDkwIC0gcmFkMmRlZyhh
dGFuMihyaXNlLCBydW4pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFk
aWVudFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCmluZGV4
IDQwNjk3OTg0NjdkZThhODJlZDM0NTJmNDJkZTY0YzAzMmNhZTFhMzMuLjMyZWQwZTU5NDkzYTRk
NjlmY2JhOTBiZDgzY2IyZTEyNjBmOTUzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NHcmFkaWVudFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50
VmFsdWUuaApAQCAtNTksMTAgKzU5LDEwIEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3Qg
Q1NTR3JhZGllbnRDb2xvclN0b3AmIGEsIGNvbnN0IENTU0dyYWRpZW50Q29sb3JTdG9wCiAKIGNs
YXNzIENTU0dyYWRpZW50VmFsdWUgOiBwdWJsaWMgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSB7CiBw
dWJsaWM6Ci0gICAgdm9pZCBzZXRGaXJzdFgoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYmIHZh
bHVlKSB7IG1fZmlyc3RYID0gV1RGTW92ZSh2YWx1ZSk7IH0KLSAgICB2b2lkIHNldEZpcnN0WShS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiYgdmFsdWUpIHsgbV9maXJzdFkgPSBXVEZNb3ZlKHZh
bHVlKTsgfQotICAgIHZvaWQgc2V0U2Vjb25kWChSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiYg
dmFsdWUpIHsgbV9zZWNvbmRYID0gV1RGTW92ZSh2YWx1ZSk7IH0KLSAgICB2b2lkIHNldFNlY29u
ZFkoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYmIHZhbHVlKSB7IG1fc2Vjb25kWSA9IFdURk1v
dmUodmFsdWUpOyB9CisgICAgdm9pZCBzZXRGaXJzdFgoUmVmUHRyPENTU1ZhbHVlPiYmIHZhbHVl
KSB7IG1fZmlyc3RYID0gV1RGTW92ZSh2YWx1ZSk7IH0KKyAgICB2b2lkIHNldEZpcnN0WShSZWZQ
dHI8Q1NTVmFsdWU+JiYgdmFsdWUpIHsgbV9maXJzdFkgPSBXVEZNb3ZlKHZhbHVlKTsgfQorICAg
IHZvaWQgc2V0U2Vjb25kWChSZWZQdHI8Q1NTVmFsdWU+JiYgdmFsdWUpIHsgbV9zZWNvbmRYID0g
V1RGTW92ZSh2YWx1ZSk7IH0KKyAgICB2b2lkIHNldFNlY29uZFkoUmVmUHRyPENTU1ZhbHVlPiYm
IHZhbHVlKSB7IG1fc2Vjb25kWSA9IFdURk1vdmUodmFsdWUpOyB9CiAgICAgdm9pZCBhZGRTdG9w
KENTU0dyYWRpZW50Q29sb3JTdG9wJiYgc3RvcCkgeyBtX3N0b3BzLmFwcGVuZChXVEZNb3ZlKHN0
b3ApKTsgfQogICAgIHZvaWQgZG9uZUFkZGluZ1N0b3BzKCkgeyBtX3N0b3BzLnNocmlua1RvRml0
KCk7IH0KICAgICBib29sIGhhc0F0TGVhc3RUd29TdG9wcygpIGNvbnN0IHsgcmV0dXJuIG1fc3Rv
cHMuc2l6ZSgpID49IDI7IH0KQEAgLTExNiwxMCArMTE2LDEwIEBAIHByaXZhdGU6CiAgICAgYm9v
bCBoYXNDb2xvckRlcml2ZWRGcm9tRWxlbWVudCgpIGNvbnN0OwogICAgIGJvb2wgaXNDYWNoZWFi
bGUoKSBjb25zdDsKIAotICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9maXJzdFg7Ci0g
ICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBtX2ZpcnN0WTsKLSAgICBSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IG1fc2Vjb25kWDsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IG1f
c2Vjb25kWTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IG1fZmlyc3RYOworICAgIFJlZlB0cjxDU1NW
YWx1ZT4gbV9maXJzdFk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBtX3NlY29uZFg7CisgICAgUmVm
UHRyPENTU1ZhbHVlPiBtX3NlY29uZFk7CiAgICAgVmVjdG9yPENTU0dyYWRpZW50Q29sb3JTdG9w
LCAyPiBtX3N0b3BzOwogICAgIENTU0dyYWRpZW50VHlwZSBtX2dyYWRpZW50VHlwZTsKICAgICBi
b29sIG1fcmVwZWF0aW5nIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuY3BwCmluZGV4IDU1YmRmNzc4NWI0ZjBkNzI0YzM3NmRkMzAyNzBmMzI1OWE5ZDk4ZjEu
LjI4Zjk4NTM5ZGVlNjcxOTcxNGZkMmEyYmEwZTg0Mjk3MzFmYjUxMTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUg
IkRlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiRm9udENhc2NhZGUu
aCIKICNpbmNsdWRlICJOb2RlLmgiCi0jaW5jbHVkZSAiUGFpci5oIgogI2luY2x1ZGUgIlJlY3Qu
aCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKQEAg
LTkzLDcgKzkyLDYgQEAgc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRDU1NVbml0VHlwZUZvckRv
dWJsZUNvbnZlcnNpb24oQ1NTVW5pdFR5cGUgdW5pdFR5cGUpCiAgICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q1NTX0NPVU5URVJfTkFNRToKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRk9OVF9GQU1J
TFk6CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0lERU5UOgotICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OkNTU19QQUlSOgogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QUk9QRVJUWV9JRDoKICAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUVVBRDoKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
UkVDVDoKQEAgLTE0NCw3ICsxNDIsNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTdHJpbmdUeXBl
KENTU1VuaXRUeXBlIHR5cGUpCiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX01NOgogICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19NUzoKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVS
OgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QQUlSOgogICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkNTU19QQzoKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRToKICAgICBjYXNl
IENTU1VuaXRUeXBlOjpDU1NfUFJPUEVSVFlfSUQ6CkBAIC0zMDYsMTIgKzMwMyw2IEBAIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShjb25zdCBMZW5ndGgmIGxlbmd0aCwgY29u
c3QgUmVuZGVyU3R5bGUmIHN0CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLUNTU1By
aW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShjb25zdCBMZW5ndGhTaXplJiBsZW5ndGhT
aXplLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCi0gICAgOiBDU1NWYWx1ZShQcmltaXRpdmVD
bGFzcykKLXsKLSAgICBpbml0KGxlbmd0aFNpemUsIHN0eWxlKTsKLX0KLQogQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFN0YXRpY0NTU1ZhbHVlVGFnLCBDU1NWYWx1ZUlEIHZh
bHVlSUQpCiAgICAgOiBDU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZUlEKQogewpAQCAtMzc5LDEzICsz
NzAsNiBAQCB2b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjppbml0KGNvbnN0IExlbmd0aCYgbGVuZ3Ro
KQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIENTU1ByaW1pdGl2ZVZhbHVl
Ojppbml0KGNvbnN0IExlbmd0aFNpemUmIGxlbmd0aFNpemUsIGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSkKLXsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1BBSVIp
OwotICAgIG1faGFzQ2FjaGVkQ1NTVGV4dCA9IGZhbHNlOwotICAgIG1fdmFsdWUucGFpciA9ICZQ
YWlyOjpjcmVhdGUoY3JlYXRlKGxlbmd0aFNpemUud2lkdGgsIHN0eWxlKSwgY3JlYXRlKGxlbmd0
aFNpemUuaGVpZ2h0LCBzdHlsZSkpLmxlYWtSZWYoKTsKLX0KLQogdm9pZCBDU1NQcmltaXRpdmVW
YWx1ZTo6aW5pdChSZWY8Q291bnRlcj4mJiBjb3VudGVyKQogewogICAgIHNldFByaW1pdGl2ZVVu
aXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfQ09VTlRFUik7CkBAIC00MDcsMTMgKzM5MSw2IEBAIHZv
aWQgQ1NTUHJpbWl0aXZlVmFsdWU6OmluaXQoUmVmPFF1YWQ+JiYgcXVhZCkKICAgICBtX3ZhbHVl
LnF1YWQgPSAmcXVhZC5sZWFrUmVmKCk7CiB9CiAKLXZvaWQgQ1NTUHJpbWl0aXZlVmFsdWU6Omlu
aXQoUmVmPFBhaXI+JiYgcCkKLXsKLSAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlw
ZTo6Q1NTX1BBSVIpOwotICAgIG1faGFzQ2FjaGVkQ1NTVGV4dCA9IGZhbHNlOwotICAgIG1fdmFs
dWUucGFpciA9ICZwLmxlYWtSZWYoKTsKLX0KLQogdm9pZCBDU1NQcmltaXRpdmVWYWx1ZTo6aW5p
dChSZWY8Q1NTQmFzaWNTaGFwZT4mJiBzaGFwZSkKIHsKICAgICBzZXRQcmltaXRpdmVVbml0VHlw
ZShDU1NVbml0VHlwZTo6Q1NTX1NIQVBFKTsKQEAgLTQ1NCw5ICs0MzEsNiBAQCB2b2lkIENTU1By
aW1pdGl2ZVZhbHVlOjpjbGVhbnVwKCkKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUVVBRDoK
ICAgICAgICAgbV92YWx1ZS5xdWFkLT5kZXJlZigpOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IENTU1VuaXRUeXBlOjpDU1NfUEFJUjoKLSAgICAgICAgbV92YWx1ZS5wYWlyLT5kZXJlZigpOwot
ICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0FMQzoKICAgICAgICAg
aWYgKG1fdmFsdWUuY2FsYykKICAgICAgICAgICAgIG1fdmFsdWUuY2FsYy0+ZGVyZWYoKTsKQEAg
LTk5Myw3ICs5NjcsNiBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OnVuaXRUeXBlU3RyaW5n
KENTU1VuaXRUeXBlIHVuaXRUeXBlKQogICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ09V
TlRFUjoKICAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JFQ1Q6CiAgICAgICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkNTU19SR0JDT0xPUjoKLSAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NT
X1BBSVI6CiAgICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19VTklDT0RFX1JBTkdFOgogICAg
ICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ09VTlRFUl9OQU1FOgogICAgICAgICBjYXNlIENT
U1VuaXRUeXBlOjpDU1NfU0hBUEU6CkBAIC0xMTE2LDggKzEwODksNiBAQCBBTFdBWVNfSU5MSU5F
IFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Zm9ybWF0TnVtYmVyRm9yQ3VzdG9tQ1NTVGV4dCgp
IGNvbnN0CiAgICAgICAgIHJldHVybiBxdWFkVmFsdWUoKS0+Y3NzVGV4dCgpOwogICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkNTU19SR0JDT0xPUjoKICAgICAgICAgcmV0dXJuIHNlcmlhbGl6YXRpb25G
b3JDU1MoY29sb3IoKSk7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BBSVI6Ci0gICAgICAg
IHJldHVybiBwYWlyVmFsdWUoKS0+Y3NzVGV4dCgpOwogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNT
U19DQUxDOgogICAgICAgICBpZiAoIW1fdmFsdWUuY2FsYykKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMTIyMCw4ICsxMTkxLDYgQEAgYm9vbCBDU1NQcmltaXRpdmVWYWx1ZTo6ZXF1YWxzKGNvbnN0
IENTU1ByaW1pdGl2ZVZhbHVlJiBvdGhlcikgY29uc3QKICAgICAgICAgcmV0dXJuIG1fdmFsdWUu
cXVhZCAmJiBvdGhlci5tX3ZhbHVlLnF1YWQgJiYgbV92YWx1ZS5xdWFkLT5lcXVhbHMoKm90aGVy
Lm1fdmFsdWUucXVhZCk7CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JHQkNPTE9SOgogICAg
ICAgICByZXR1cm4gY29sb3IoKSA9PSBvdGhlci5jb2xvcigpOwotICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OkNTU19QQUlSOgotICAgICAgICByZXR1cm4gbV92YWx1ZS5wYWlyICYmIG90aGVyLm1fdmFs
dWUucGFpciAmJiBtX3ZhbHVlLnBhaXItPmVxdWFscygqb3RoZXIubV92YWx1ZS5wYWlyKTsKICAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0FMQzoKICAgICAgICAgcmV0dXJuIG1fdmFsdWUuY2Fs
YyAmJiBvdGhlci5tX3ZhbHVlLmNhbGMgJiYgbV92YWx1ZS5jYWxjLT5lcXVhbHMoKm90aGVyLm1f
dmFsdWUuY2FsYyk7CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1NIQVBFOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAppbmRleCBkNjg2Y2MxYmE5NTc0MjE1MGUwY2Q1NmM4
MGEwYWQ4MTY5NjBmMjA1Li4xYmI3MzM1ZTM0MzdmM2QxZTRlZTlhODc4ZjhkNTgxMmY1ZDc0NWI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaApAQCAtNDEsNyArNDEsNiBA
QCBjbGFzcyBDb3VudGVyOwogY2xhc3MgRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWU7CiBj
bGFzcyBGb250Q2FzY2FkZURlc2NyaXB0aW9uOwogY2xhc3MgRm9udE1ldHJpY3M7Ci1jbGFzcyBQ
YWlyOwogY2xhc3MgUXVhZDsKIGNsYXNzIFJHQkNvbG9yOwogY2xhc3MgUmVjdDsKQEAgLTk3LDcg
Kzk2LDYgQEAgcHVibGljOgogICAgIGJvb2wgaXNQZXJjZW50YWdlKCkgY29uc3QgeyByZXR1cm4g
cHJpbWl0aXZlVHlwZSgpID09IENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRTsgfQogICAgIGJv
b2wgaXNQeCgpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVR5cGUoKSA9PSBDU1NVbml0VHlwZTo6
Q1NTX1BYOyB9CiAgICAgYm9vbCBpc1JlY3QoKSBjb25zdCB7IHJldHVybiBwcmltaXRpdmVVbml0
VHlwZSgpID09IENTU1VuaXRUeXBlOjpDU1NfUkVDVDsgfQotICAgIGJvb2wgaXNQYWlyKCkgY29u
c3QgeyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6Q1NTX1BBSVI7
IH0KICAgICBib29sIGlzUHJvcGVydHlJRCgpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVVuaXRU
eXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19QUk9QRVJUWV9JRDsgfQogICAgIGJvb2wgaXNSR0JD
b2xvcigpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6
OkNTU19SR0JDT0xPUjsgfQogICAgIGJvb2wgaXNTaGFwZSgpIGNvbnN0IHsgcmV0dXJuIHByaW1p
dGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19TSEFQRTsgfQpAQCAtMTI3LDcgKzEy
NSw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGUo
ZG91YmxlIHZhbHVlLCBDU1NVbml0VHlwZSB0eXBlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKHZhbHVlLCB0eXBlKSk7IH0KICAgICBzdGF0aWMgUmVmPENTU1ByaW1p
dGl2ZVZhbHVlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB2YWx1ZSwgQ1NTVW5pdFR5cGUgdHlwZSkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSwgdHlwZSkpOyB9
CiAgICAgc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlKGNvbnN0IExlbmd0aCYg
dmFsdWUsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBD
U1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSwgc3R5bGUpKTsgfQotICAgIHN0YXRpYyBSZWY8Q1NTUHJp
bWl0aXZlVmFsdWU+IGNyZWF0ZShjb25zdCBMZW5ndGhTaXplJiB2YWx1ZSwgY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHZh
bHVlLCBzdHlsZSkpOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgUmVmPENT
U1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGUoVCYmKTsKIApAQCAtMTc1LDcgKzE3Miw2IEBAIHB1Ymxp
YzoKICAgICBDb3VudGVyKiBjb3VudGVyVmFsdWUoKSBjb25zdCB7IHJldHVybiBwcmltaXRpdmVV
bml0VHlwZSgpICE9IENTU1VuaXRUeXBlOjpDU1NfQ09VTlRFUiA/IG51bGxwdHIgOiBtX3ZhbHVl
LmNvdW50ZXI7IH0KICAgICBDU1NDYWxjVmFsdWUqIGNzc0NhbGNWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkgIT0gQ1NTVW5pdFR5cGU6OkNTU19DQUxDID8gbnVsbHB0
ciA6IG1fdmFsdWUuY2FsYzsgfQogICAgIGNvbnN0IENTU0ZvbnRGYW1pbHkmIGZvbnRGYW1pbHko
KSBjb25zdCB7IEFTU0VSVChwcmltaXRpdmVVbml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpDU1Nf
Rk9OVF9GQU1JTFkpOyByZXR1cm4gKm1fdmFsdWUuZm9udEZhbWlseTsgfQotICAgIFBhaXIqIHBh
aXJWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkgIT0gQ1NTVW5pdFR5
cGU6OkNTU19QQUlSID8gbnVsbHB0ciA6IG1fdmFsdWUucGFpcjsgfQogICAgIENTU1Byb3BlcnR5
SUQgcHJvcGVydHlJRCgpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NT
VW5pdFR5cGU6OkNTU19QUk9QRVJUWV9JRCA/IG1fdmFsdWUucHJvcGVydHlJRCA6IENTU1Byb3Bl
cnR5SW52YWxpZDsgfQogICAgIFF1YWQqIHF1YWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHByaW1p
dGl2ZVVuaXRUeXBlKCkgIT0gQ1NTVW5pdFR5cGU6OkNTU19RVUFEID8gbnVsbHB0ciA6IG1fdmFs
dWUucXVhZDsgfQogICAgIFJlY3QqIHJlY3RWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2
ZVVuaXRUeXBlKCkgIT0gQ1NTVW5pdFR5cGU6OkNTU19SRUNUID8gbnVsbHB0ciA6IG1fdmFsdWUu
cmVjdDsgfQpAQCAtMjEwLDcgKzIwNiw2IEBAIHByaXZhdGU6CiAgICAgQ1NTUHJpbWl0aXZlVmFs
dWUoY29uc3QgQ29sb3ImKTsKICAgICBDU1NQcmltaXRpdmVWYWx1ZShjb25zdCBMZW5ndGgmKTsK
ICAgICBDU1NQcmltaXRpdmVWYWx1ZShjb25zdCBMZW5ndGgmLCBjb25zdCBSZW5kZXJTdHlsZSYp
OwotICAgIENTU1ByaW1pdGl2ZVZhbHVlKGNvbnN0IExlbmd0aFNpemUmLCBjb25zdCBSZW5kZXJT
dHlsZSYpOwogICAgIENTU1ByaW1pdGl2ZVZhbHVlKGNvbnN0IFN0cmluZyYsIENTU1VuaXRUeXBl
KTsKICAgICBDU1NQcmltaXRpdmVWYWx1ZShkb3VibGUsIENTU1VuaXRUeXBlKTsKIApAQCAtMjI3
LDExICsyMjIsOSBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IG9wZXJhdG9y
IFQqKCk7IC8vIGNvbXBpbGUtdGltZSBndWFyZAogCiAgICAgdm9pZCBpbml0KGNvbnN0IExlbmd0
aCYpOwotICAgIHZvaWQgaW5pdChjb25zdCBMZW5ndGhTaXplJiwgY29uc3QgUmVuZGVyU3R5bGUm
KTsKICAgICB2b2lkIGluaXQoUmVmPENTU0Jhc2ljU2hhcGU+JiYpOwogICAgIHZvaWQgaW5pdChS
ZWZQdHI8Q1NTQ2FsY1ZhbHVlPiYmKTsKICAgICB2b2lkIGluaXQoUmVmPENvdW50ZXI+JiYpOwot
ICAgIHZvaWQgaW5pdChSZWY8UGFpcj4mJik7CiAgICAgdm9pZCBpbml0KFJlZjxRdWFkPiYmKTsK
ICAgICB2b2lkIGluaXQoUmVmPFJlY3Q+JiYpOwogCkBAIC0yNTQsNyArMjQ3LDYgQEAgcHJpdmF0
ZToKICAgICAgICAgUmVjdCogcmVjdDsKICAgICAgICAgUXVhZCogcXVhZDsKICAgICAgICAgY29u
c3QgQ29sb3IqIGNvbG9yOwotICAgICAgICBQYWlyKiBwYWlyOwogICAgICAgICBDU1NCYXNpY1No
YXBlKiBzaGFwZTsKICAgICAgICAgQ1NTQ2FsY1ZhbHVlKiBjYWxjOwogICAgICAgICBjb25zdCBD
U1NGb250RmFtaWx5KiBmb250RmFtaWx5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1RvU3R5bGVNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3Bw
CmluZGV4IDEyZWQ2YTRjMTNmMTkxNzJkNzJlZDcwYzQxZTk1OTExZGM4Yjk1NDguLjEzYWNjYWRl
NjMyOTdmNGM3ZGI5ZWE4YTZiYzg4MjBlZTAwNzk3YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9T
dHlsZU1hcC5jcHAKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJDU1NUaW1pbmdGdW5jdGlv
blZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkZpbGxM
YXllci5oIgotI2luY2x1ZGUgIlBhaXIuaCIKICNpbmNsdWRlICJSZWN0LmgiCiAjaW5jbHVkZSAi
U3R5bGVCdWlsZGVyQ29udmVydGVyLmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgpAQCAt
MTc4LDEzICsxNzcsMTQgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsUmVwZWF0WShDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5SUQsIEZpbGxMYXllciYgbGF5ZXIsIGMKICAgICBsYXllci5zZXRS
ZXBlYXRZKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpOwogfQogCi1zdGF0aWMg
aW5saW5lIGJvb2wgY29udmVydFRvTGVuZ3RoU2l6ZShjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYg
cHJpbWl0aXZlVmFsdWUsIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgY29udmVyc2lvbkRhdGEs
IExlbmd0aFNpemUmIHNpemUpCitzdGF0aWMgaW5saW5lIGJvb2wgY29udmVydFRvTGVuZ3RoU2l6
ZShjb25zdCBDU1NWYWx1ZSYgdmFsdWUsIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgY29udmVy
c2lvbkRhdGEsIExlbmd0aFNpemUmIHNpemUpCiB7Ci0gICAgaWYgKGF1dG8qIHBhaXIgPSBwcmlt
aXRpdmVWYWx1ZS5wYWlyVmFsdWUoKSkgewotICAgICAgICBzaXplLndpZHRoID0gcGFpci0+Zmly
c3QoKS0+Y29udmVydFRvTGVuZ3RoPEFueUNvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKTsKLSAg
ICAgICAgc2l6ZS5oZWlnaHQgPSBwYWlyLT5zZWNvbmQoKS0+Y29udmVydFRvTGVuZ3RoPEFueUNv
bnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKTsKKyAgICBpZiAodmFsdWUuaXNWYWx1ZVBhaXIoKSkg
eworICAgICAgICBhdXRvJiBwYWlyID0gZG93bmNhc3Q8Q1NTVmFsdWVQYWlyPih2YWx1ZSk7Cisg
ICAgICAgIHNpemUud2lkdGggPSBwYWlyLmZpcnN0QXNQcmltaXRpdmUoKS0+Y29udmVydFRvTGVu
Z3RoPEFueUNvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKTsKKyAgICAgICAgc2l6ZS5oZWlnaHQg
PSBwYWlyLnNlY29uZEFzUHJpbWl0aXZlKCktPmNvbnZlcnRUb0xlbmd0aDxBbnlDb252ZXJzaW9u
Pihjb252ZXJzaW9uRGF0YSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHNpemUud2lkdGggPSBwcmlt
aXRpdmVWYWx1ZS5jb252ZXJ0VG9MZW5ndGg8QW55Q29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEp
OworICAgICAgICBzaXplLndpZHRoID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KS5jb252ZXJ0VG9MZW5ndGg8QW55Q29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpOwogICAgIHJl
dHVybiAhc2l6ZS53aWR0aC5pc1VuZGVmaW5lZCgpICYmICFzaXplLmhlaWdodC5pc1VuZGVmaW5l
ZCgpOwogfQogCkBAIC0xOTUsMTIgKzE5NSw5IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwRmls
bFNpemUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBGaWxsTGF5ZXImIGxheWVyLCBjb25zCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPih2
YWx1ZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKKyAgICBhdXRvIHZhbHVlSUQgPSB2YWx1
ZS5pc1ByaW1pdGl2ZVZhbHVlKCkgPyBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUp
LnZhbHVlSUQoKSA6IENTU1ZhbHVlSW52YWxpZDsKICAgICBGaWxsU2l6ZSBmaWxsU2l6ZTsKLSAg
ICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSkgeworICAgIHN3aXRjaCAodmFsdWVJ
RCkgewogICAgIGNhc2UgQ1NTVmFsdWVDb250YWluOgogICAgICAgICBmaWxsU2l6ZS50eXBlID0g
RmlsbFNpemVUeXBlOjpDb250YWluOwogICAgICAgICBicmVhazsKQEAgLTIwOSw3ICsyMDYsNyBA
QCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxTaXplKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJ
RCwgRmlsbExheWVyJiBsYXllciwgY29ucwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0Ogog
ICAgICAgICBBU1NFUlQoZmlsbFNpemUudHlwZSA9PSBGaWxsU2l6ZVR5cGU6OlNpemUpOwotICAg
ICAgICBpZiAoIWNvbnZlcnRUb0xlbmd0aFNpemUocHJpbWl0aXZlVmFsdWUsIG1fYnVpbGRlclN0
YXRlLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKSwgZmlsbFNpemUuc2l6ZSkpCisgICAgICAg
IGlmICghY29udmVydFRvTGVuZ3RoU2l6ZSh2YWx1ZSwgbV9idWlsZGVyU3RhdGUuY3NzVG9MZW5n
dGhDb252ZXJzaW9uRGF0YSgpLCBmaWxsU2l6ZS5zaXplKSkKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjIyLDIyICsyMTksMTcgQEAgdm9pZCBDU1NUb1N0
eWxlTWFwOjptYXBGaWxsWFBvc2l0aW9uKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgRmlsbExh
eWVyJiBsYXllciwKICAgICAgICAgbGF5ZXIuc2V0WFBvc2l0aW9uKEZpbGxMYXllcjo6aW5pdGlh
bEZpbGxYUG9zaXRpb24obGF5ZXIudHlwZSgpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0K
LSAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGF1dG8qIHByaW1pdGl2ZVZhbHVlID0gJmRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Pih2YWx1ZSk7Ci0gICAgUGFpciogcGFpciA9IHByaW1pdGl2ZVZhbHVlLT5wYWlyVmFsdWUoKTsK
KyAgICAKICAgICBMZW5ndGggbGVuZ3RoOwotICAgIGlmIChwYWlyKSB7CisgICAgaWYgKHZhbHVl
LmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgbGVuZ3RoID0gU3R5bGU6OkJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudFgobV9idWlsZGVyU3RhdGUsIGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpOworICAgIGVsc2UgaWYgKHZhbHVlLmlzVmFsdWVQ
YWlyKCkpIHsKKyAgICAgICAgYXV0byYgcGFpciA9IGRvd25jYXN0PENTU1ZhbHVlUGFpcj4odmFs
dWUpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHByb3BlcnR5SUQsIHByb3BlcnR5SUQgPT0gQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YIHx8IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlX
ZWJraXRNYXNrUG9zaXRpb25YKTsKLSAgICAgICAgbGVuZ3RoID0gU3R5bGU6OkJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRMZW5ndGgobV9idWlsZGVyU3RhdGUsICpwYWlyLT5zZWNvbmQoKSk7Ci0g
ICAgfSBlbHNlCi0gICAgICAgIGxlbmd0aCA9IFN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0UG9zaXRpb25Db21wb25lbnRYKG1fYnVpbGRlclN0YXRlLCB2YWx1ZSk7Ci0KKyAgICAgICAg
bGF5ZXIuc2V0QmFja2dyb3VuZFhPcmlnaW4oKnBhaXIuZmlyc3RBc1ByaW1pdGl2ZSgpKTsKKyAg
ICAgICAgbGVuZ3RoID0gU3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGgobV9i
dWlsZGVyU3RhdGUsICpwYWlyLnNlY29uZCgpKTsKKyAgICB9CiAgICAgbGF5ZXIuc2V0WFBvc2l0
aW9uKGxlbmd0aCk7Ci0gICAgaWYgKHBhaXIpCi0gICAgICAgIGxheWVyLnNldEJhY2tncm91bmRY
T3JpZ2luKCpwYWlyLT5maXJzdCgpKTsKIH0KIAogdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxs
WVBvc2l0aW9uKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgRmlsbExheWVyJiBsYXllciwgY29u
c3QgQ1NTVmFsdWUmIHZhbHVlKQpAQCAtMjQ3LDIxICsyMzksMTYgQEAgdm9pZCBDU1NUb1N0eWxl
TWFwOjptYXBGaWxsWVBvc2l0aW9uKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgRmlsbExheWVy
JiBsYXllciwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghaXM8Q1NTUHJpbWl0
aXZlVmFsdWU+KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byogcHJpbWl0aXZl
VmFsdWUgPSAmZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBQYWlyKiBw
YWlyID0gcHJpbWl0aXZlVmFsdWUtPnBhaXJWYWx1ZSgpOwogICAgIExlbmd0aCBsZW5ndGg7Ci0g
ICAgaWYgKHBhaXIpIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChwcm9wZXJ0eUlELCBwcm9wZXJ0
eUlEID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSB8fCBwcm9wZXJ0eUlEID09IENT
U1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWSk7Ci0gICAgICAgIGxlbmd0aCA9IFN0eWxlOjpC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3RoKG1fYnVpbGRlclN0YXRlLCAqcGFpci0+c2Vj
b25kKCkpOwotICAgIH0gZWxzZQorICAgIGlmICh2YWx1ZS5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAg
ICAgICAgIGxlbmd0aCA9IFN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25D
b21wb25lbnRZKG1fYnVpbGRlclN0YXRlLCB2YWx1ZSk7Ci0gICAgCisgICAgZWxzZSBpZiAodmFs
dWUuaXNWYWx1ZVBhaXIoKSkgeworICAgICAgICBhdXRvJiBwYWlyID0gZG93bmNhc3Q8Q1NTVmFs
dWVQYWlyPih2YWx1ZSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQocHJvcGVydHlJRCwgcHJvcGVy
dHlJRCA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblkgfHwgcHJvcGVydHlJRCA9PSBD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblkpOworICAgICAgICBsYXllci5zZXRCYWNrZ3Jv
dW5kWU9yaWdpbigqcGFpci5maXJzdEFzUHJpbWl0aXZlKCkpOworICAgICAgICBsZW5ndGggPSBT
dHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExlbmd0aChtX2J1aWxkZXJTdGF0ZSwgKnBh
aXIuc2Vjb25kKCkpOworICAgIH0KICAgICBsYXllci5zZXRZUG9zaXRpb24obGVuZ3RoKTsKLSAg
ICBpZiAocGFpcikKLSAgICAgICAgbGF5ZXIuc2V0QmFja2dyb3VuZFlPcmlnaW4oKnBhaXItPmZp
cnN0KCkpOwogfQogCiB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxNYXNrU291cmNlVHlwZShD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIEZpbGxMYXllciYgbGF5ZXIsIGNvbnN0IENTU1ZhbHVl
JiB2YWx1ZSkKQEAgLTUyNCw3ICs1MTEsNyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcE5pbmVQ
aWVjZUltYWdlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU1ZhbHVlKiB2YWx1ZSwgTgogICAg
ICAgICAgICAgLy8gTWFwIGluIHRoZSBvdXRzZXQuCiAgICAgICAgICAgICBpZiAoc2xhc2hMaXN0
Lml0ZW0oMikpCiAgICAgICAgICAgICAgICAgaW1hZ2Uuc2V0T3V0c2V0KG1hcE5pbmVQaWVjZUlt
YWdlUXVhZCgqc2xhc2hMaXN0Lml0ZW0oMikpKTsKLSAgICAgICAgfSBlbHNlIGlmIChpczxDU1NQ
cmltaXRpdmVWYWx1ZT4oY3VycmVudCkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChpczxDU1NWYWx1
ZVBhaXI+KGN1cnJlbnQpKSB7CiAgICAgICAgICAgICAvLyBTZXQgdGhlIGFwcHJvcHJpYXRlIHJ1
bGVzIGZvciBzdHJldGNoL3JvdW5kL3JlcGVhdCBvZiB0aGUgc2xpY2VzLgogICAgICAgICAgICAg
bWFwTmluZVBpZWNlSW1hZ2VSZXBlYXQoY3VycmVudCwgaW1hZ2UpOwogICAgICAgICB9CkBAIC02
MjUsMTYgKzYxMiwxNSBAQCBMZW5ndGhCb3ggQ1NTVG9TdHlsZU1hcDo6bWFwTmluZVBpZWNlSW1h
Z2VRdWFkKENTU1ZhbHVlJiB2YWx1ZSkKIAogdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGll
Y2VJbWFnZVJlcGVhdChDU1NWYWx1ZSYgdmFsdWUsIE5pbmVQaWVjZUltYWdlJiBpbWFnZSkKIHsK
LSAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpCisgICAgaWYgKCF2YWx1ZS5p
c1ZhbHVlUGFpcigpKQogICAgICAgICByZXR1cm47Ci0KLSAgICBDU1NQcmltaXRpdmVWYWx1ZSYg
cHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwotICAg
IFBhaXIqIHBhaXIgPSBwcmltaXRpdmVWYWx1ZS5wYWlyVmFsdWUoKTsKLSAgICBpZiAoIXBhaXIg
fHwgIXBhaXItPmZpcnN0KCkgfHwgIXBhaXItPnNlY29uZCgpKQorICAgIAorICAgIGF1dG8mIHBh
aXIgPSBkb3duY2FzdDxDU1NWYWx1ZVBhaXI+KHZhbHVlKTsKKyAgICBpZiAoIXBhaXIuZmlyc3Qo
KSB8fCAhcGFpci5zZWNvbmQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ1NTVmFsdWVJRCBm
aXJzdElkZW50aWZpZXIgPSBwYWlyLT5maXJzdCgpLT52YWx1ZUlEKCk7Ci0gICAgQ1NTVmFsdWVJ
RCBzZWNvbmRJZGVudGlmaWVyID0gcGFpci0+c2Vjb25kKCktPnZhbHVlSUQoKTsKKyAgICBDU1NW
YWx1ZUlEIGZpcnN0SWRlbnRpZmllciA9IHBhaXIuZmlyc3RBc1ByaW1pdGl2ZSgpLT52YWx1ZUlE
KCk7CisgICAgQ1NTVmFsdWVJRCBzZWNvbmRJZGVudGlmaWVyID0gcGFpci5zZWNvbmRBc1ByaW1p
dGl2ZSgpLT52YWx1ZUlEKCk7CiAKICAgICBOaW5lUGllY2VJbWFnZVJ1bGUgaG9yaXpvbnRhbFJ1
bGU7CiAgICAgc3dpdGNoIChmaXJzdElkZW50aWZpZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NVbml0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pdHMuY3Bw
CmluZGV4IDFkNGQyMTE3OTQ3ZmNlNjRmZWMzNDczNDMwMDNiMDBiNmM3M2MyZmYuLjZlOWIxMDQ3
MDUzOTIwNmM1NDE2NzFlMmMxMzhjMTZiZTNlZmM1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NVbml0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaXRzLmNw
cApAQCAtMTQ0LDcgKzE0NCw2IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIENTU1VuaXRUeXBlIHVuaXRUeXBlKQogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19ROiB0
cyA8PCAicSI7IGJyZWFrOwogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19MSFM6IHRzIDw8ICJs
aCI7IGJyZWFrOwogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19STEhTOiB0cyA8PCAicmxoIjsg
YnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BBSVI6IHRzIDw8ICJwYWlyIjsgYnJl
YWs7CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1VOSUNPREVfUkFOR0U6IHRzIDw8ICJ1bmlj
b2RlX3JhbmdlIjsgYnJlYWs7CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1RVUk46IHRzIDw8
ICJ0dXJuIjsgYnJlYWs7CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JFTVM6IHRzIDw8ICJy
ZW1zIjsgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pdHMuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbml0cy5oCmluZGV4IGYwNjMzZDA4MzA2Y2RjNGYxYjAw
MWM1NGYyMjMzZDhjZjhjOWVjZjcuLjFlZDQwMTQyZWY5MjA2N2JiZjY0ODNjMzg2MzUzZTQxZDhl
ZDFlOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbml0cy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NVbml0cy5oCkBAIC02NSw3ICs2NSw2IEBAIGVudW0gY2xhc3Mg
Q1NTVW5pdFR5cGUgOiB1aW50OF90IHsKICAgICBDU1NfUSA9IDM0LAogICAgIENTU19MSFMgPSAz
NSwKICAgICBDU1NfUkxIUyA9IDM2LAotICAgIENTU19QQUlSID0gMTAwLCAvLyBXZSBlbnZpc2lv
biB0aGlzIGJlaW5nIGV4cG9zZWQgYXMgYSBtZWFucyBvZiBnZXR0aW5nIGNvbXB1dGVkIHN0eWxl
IHZhbHVlcyBmb3IgcGFpcnMgKGJvcmRlci1zcGFjaW5nL3JhZGl1cywgYmFja2dyb3VuZC1wb3Np
dGlvbiwgZXRjLikKICAgICBDU1NfVU5JQ09ERV9SQU5HRSA9IDEwMiwKICAgICBDU1NfVFVSTiA9
IDEwNywKICAgICBDU1NfUkVNUyA9IDEwOCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCmluZGV4IGIw
OGVmZTg2MzQ2YjJlOGJkZTE2NmY5NmU5Zjc2MTYzNTlhNmY4ZjguLmE1NDk3YTM2NTM4MTA3ZmVh
MDI0MzhjNjdlYmU0MWMxMjI1ZjYzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcApAQCAtMjEz
LDYgKzIxMyw4IEBAIGJvb2wgQ1NTVmFsdWU6OmVxdWFscyhjb25zdCBDU1NWYWx1ZSYgb3RoZXIp
IGNvbnN0CiAgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NVbmljb2RlUmFu
Z2VWYWx1ZT4oKnRoaXMsIG90aGVyKTsKICAgICAgICAgY2FzZSBWYWx1ZUxpc3RDbGFzczoKICAg
ICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENTU1ZhbHVlTGlzdD4oKnRoaXMsIG90
aGVyKTsKKyAgICAgICAgY2FzZSBWYWx1ZVBhaXJDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBj
b21wYXJlQ1NTVmFsdWVzPENTU1ZhbHVlUGFpcj4oKnRoaXMsIG90aGVyKTsKICAgICAgICAgY2Fz
ZSBMaW5lQm94Q29udGFpbkNsYXNzOgogICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1
ZXM8Q1NTTGluZUJveENvbnRhaW5WYWx1ZT4oKnRoaXMsIG90aGVyKTsKICAgICAgICAgY2FzZSBD
YWxjdWxhdGlvbkNsYXNzOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVl
UGFpci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQYWlyLmNwcAppbmRleCBiMmRi
ZTEwYjIzYzJmYWExZGQyOWM1ZmU0NGZjNDFhNTA2ZWY5ZjM5Li5hNWNiNGQzN2Q2NzAwNTNhMzE1
OTE1NWEyNzU1ZGUwNjMzMTkwYzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWVQYWlyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQYWlyLmNwcApA
QCAtMjYsMTQgKzI2LDM5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTVmFs
dWVQYWlyLmgiCiAKKyNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1JlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gQ1NTVmFsdWVQYWlyOjpmaXJzdEFzUHJpbWl0aXZlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9maXJzdCAmJiBtX2ZpcnN0LT5pc1ByaW1pdGl2ZVZhbHVlKCkgPyBk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4obV9maXJzdC5nZXQoKSkgOiBudWxscHRyOworfQor
CitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1ZhbHVlUGFpcjo6c2Vjb25kQXNQcmltaXRp
dmUoKSBjb25zdAoreworICAgIHJldHVybiBtX3NlY29uZCAmJiBtX3NlY29uZC0+aXNQcmltaXRp
dmVWYWx1ZSgpID8gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KG1fc2Vjb25kLmdldCgpKSA6
IG51bGxwdHI7Cit9CisKK0NTU1ZhbHVlSUQgQ1NTVmFsdWVQYWlyOjpmaXJzdEFzVmFsdWVJRCgp
IGNvbnN0Cit7CisgICAgYXV0byBwcmltaXRpdmUgPSBmaXJzdEFzUHJpbWl0aXZlKCk7CisgICAg
cmV0dXJuIHByaW1pdGl2ZSA/IHByaW1pdGl2ZS0+dmFsdWVJRCgpIDogQ1NTVmFsdWVJbnZhbGlk
OworfQorCitDU1NWYWx1ZUlEIENTU1ZhbHVlUGFpcjo6c2Vjb25kQXNWYWx1ZUlEKCkgY29uc3QK
K3sKKyAgICBhdXRvIHByaW1pdGl2ZSA9IHNlY29uZEFzUHJpbWl0aXZlKCk7CisgICAgcmV0dXJu
IHByaW1pdGl2ZSA/IHByaW1pdGl2ZS0+dmFsdWVJRCgpIDogQ1NTVmFsdWVJbnZhbGlkOworfQor
CiBTdHJpbmcgQ1NTVmFsdWVQYWlyOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKIHsKLSAgICBTdHJp
bmcgZmlyc3QgPSB0aGlzLT5maXJzdCgpLT5jc3NUZXh0KCk7Ci0gICAgU3RyaW5nIHNlY29uZCA9
IHRoaXMtPnNlY29uZCgpLT5jc3NUZXh0KCk7CisgICAgYXV0byBmaXJzdCA9IHRoaXMtPmZpcnN0
KCkgPyB0aGlzLT5maXJzdCgpLT5jc3NUZXh0KCkgOiBTdHJpbmcoKTsKKyAgICBhdXRvIHNlY29u
ZCA9IHRoaXMtPnNlY29uZCgpID8gdGhpcy0+c2Vjb25kKCktPmNzc1RleHQoKSA6IFN0cmluZygp
OworICAgIGlmIChmaXJzdC5pc0VtcHR5KCkgJiYgc2Vjb25kLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIFN0cmluZygpOwogICAgIGlmIChtX2VuY29kaW5nID09IElkZW50aWNhbFZhbHVlRW5j
b2Rpbmc6OkNvYWxlc2NlICYmIGZpcnN0ID09IHNlY29uZCkKICAgICAgICAgcmV0dXJuIGZpcnN0
OwogICAgIHJldHVybiBtYWtlU3RyaW5nKGZpcnN0LCBzZXBhcmF0b3JDU1NUZXh0KCksIHNlY29u
ZCk7CkBAIC00MSw3ICs2NiwxMCBAQCBTdHJpbmcgQ1NTVmFsdWVQYWlyOjpjdXN0b21DU1NUZXh0
KCkgY29uc3QKIAogYm9vbCBDU1NWYWx1ZVBhaXI6OmVxdWFscyhjb25zdCBDU1NWYWx1ZVBhaXIg
Jm90aGVyKSBjb25zdAogewotICAgIHJldHVybiBtX3ZhbHVlU2VwYXJhdG9yID09IG90aGVyLm1f
dmFsdWVTZXBhcmF0b3IgJiYgbV9maXJzdC5nZXQoKS5lcXVhbHMob3RoZXIubV9maXJzdCkgJiYg
bV9zZWNvbmQuZ2V0KCkuZXF1YWxzKG90aGVyLm1fc2Vjb25kKTsKKyAgICByZXR1cm4gbV92YWx1
ZVNlcGFyYXRvciA9PSBvdGhlci5tX3ZhbHVlU2VwYXJhdG9yCisgICAgICAgICYmIG1fZW5jb2Rp
bmcgPT0gb3RoZXIubV9lbmNvZGluZworICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQdHIobV9m
aXJzdCwgb3RoZXIubV9maXJzdCkKKyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyKG1fc2Vj
b25kLCBvdGhlci5tX3NlY29uZCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBhaXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYWx1ZVBhaXIuaAppbmRleCBkMGM0ZjlmNDU5NTU1ZDM4ZTFiYjVmYjkyZTQxNWZi
YTQxMWVmODg0Li41ZWZiMmViZGY4Y2QxZTc4NGU0MzYxYzc5NmMxOTNhZjgxZGFmMzZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQYWlyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhbHVlUGFpci5oCkBAIC0yNSw3ICsyNSw5IEBACiAKICNwcmFnbWEgb25j
ZQogCisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NWYWx1ZS5o
IgorI2luY2x1ZGUgIkxlbmd0aFNpemUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0z
OSwyMyArNDEsMzUgQEAgcHVibGljOgogICAgICAgICBDb2FsZXNjZQogICAgIH07CiAKLSAgICBz
dGF0aWMgUmVmPENTU1ZhbHVlUGFpcj4gY3JlYXRlKFJlZjxDU1NWYWx1ZT4mJiBmaXJzdCwgUmVm
PENTU1ZhbHVlPiYmIHNlY29uZCwgVmFsdWVTZXBhcmF0b3Igc2VwYXJhdG9yKQorICAgIHN0YXRp
YyBSZWY8Q1NTVmFsdWVQYWlyPiBjcmVhdGUoUmVmUHRyPENTU1ZhbHVlPiYmIGZpcnN0LCBSZWZQ
dHI8Q1NTVmFsdWU+JiYgc2Vjb25kLCBWYWx1ZVNlcGFyYXRvciBzZXBhcmF0b3IgPSBTcGFjZVNl
cGFyYXRvcikKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ZhbHVlUGFp
cihXVEZNb3ZlKGZpcnN0KSwgV1RGTW92ZShzZWNvbmQpLCBzZXBhcmF0b3IpKTsKICAgICB9Ci0g
ICAgc3RhdGljIFJlZjxDU1NWYWx1ZVBhaXI+IGNyZWF0ZShSZWY8Q1NTVmFsdWU+JiYgZmlyc3Qs
IFJlZjxDU1NWYWx1ZT4mJiBzZWNvbmQsIFZhbHVlU2VwYXJhdG9yIHNlcGFyYXRvciwgSWRlbnRp
Y2FsVmFsdWVFbmNvZGluZyBlbmNvZGluZykKKyAgICBzdGF0aWMgUmVmPENTU1ZhbHVlUGFpcj4g
Y3JlYXRlKGNvbnN0IExlbmd0aFNpemUmIGxlbmd0aFNpemUsIGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSwgVmFsdWVTZXBhcmF0b3Igc2VwYXJhdG9yID0gU3BhY2VTZXBhcmF0b3IpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NWYWx1ZVBhaXIobGVuZ3RoU2l6ZSwgc3R5
bGUsIHNlcGFyYXRvcikpOworICAgIH0KKyAgICBzdGF0aWMgUmVmPENTU1ZhbHVlUGFpcj4gY3Jl
YXRlKFJlZlB0cjxDU1NWYWx1ZT4mJiBmaXJzdCwgUmVmUHRyPENTU1ZhbHVlPiYmIHNlY29uZCwg
SWRlbnRpY2FsVmFsdWVFbmNvZGluZyBlbmNvZGluZykKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IENTU1ZhbHVlUGFpcihXVEZNb3ZlKGZpcnN0KSwgV1RGTW92ZShzZWNvbmQp
LCBTcGFjZVNlcGFyYXRvciwgZW5jb2RpbmcpKTsKKyAgICB9CisgICAgc3RhdGljIFJlZjxDU1NW
YWx1ZVBhaXI+IGNyZWF0ZShSZWZQdHI8Q1NTVmFsdWU+JiYgZmlyc3QsIFJlZlB0cjxDU1NWYWx1
ZT4mJiBzZWNvbmQsIFZhbHVlU2VwYXJhdG9yIHNlcGFyYXRvciwgSWRlbnRpY2FsVmFsdWVFbmNv
ZGluZyBlbmNvZGluZykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1Zh
bHVlUGFpcihXVEZNb3ZlKGZpcnN0KSwgV1RGTW92ZShzZWNvbmQpLCBzZXBhcmF0b3IsIGVuY29k
aW5nKSk7CiAgICAgfQogCi0gICAgUmVmPENTU1ZhbHVlPiBmaXJzdCgpIGNvbnN0IHsgcmV0dXJu
IG1fZmlyc3Q7IH0KLSAgICBSZWY8Q1NTVmFsdWU+IHNlY29uZCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2Vjb25kOyB9CisgICAgUmVmUHRyPENTU1ZhbHVlPiBmaXJzdCgpIGNvbnN0IHsgcmV0dXJuIG1f
Zmlyc3Q7IH0KKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHNlY29uZCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2Vjb25kOyB9CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBmaXJzdEFzUHJpbWl0aXZl
KCkgY29uc3Q7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzZWNvbmRBc1ByaW1pdGl2
ZSgpIGNvbnN0OworICAgIENTU1ZhbHVlSUQgZmlyc3RBc1ZhbHVlSUQoKSBjb25zdDsKKyAgICBD
U1NWYWx1ZUlEIHNlY29uZEFzVmFsdWVJRCgpIGNvbnN0OwogCiAgICAgU3RyaW5nIGN1c3RvbUNT
U1RleHQoKSBjb25zdDsKICAgICBib29sIGVxdWFscyhjb25zdCBDU1NWYWx1ZVBhaXImIG90aGVy
KSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBDU1NWYWx1ZVBhaXIoUmVmPENTU1Zh
bHVlPiYmIGZpcnN0LCBSZWY8Q1NTVmFsdWU+JiYgc2Vjb25kLCBWYWx1ZVNlcGFyYXRvciBzZXBh
cmF0b3IpCisgICAgZXhwbGljaXQgQ1NTVmFsdWVQYWlyKFJlZlB0cjxDU1NWYWx1ZT4mJiBmaXJz
dCwgUmVmUHRyPENTU1ZhbHVlPiYmIHNlY29uZCwgVmFsdWVTZXBhcmF0b3Igc2VwYXJhdG9yKQog
ICAgICAgICA6IENTU1ZhbHVlKFZhbHVlUGFpckNsYXNzKQogICAgICAgICAsIG1fZmlyc3QoV1RG
TW92ZShmaXJzdCkpCiAgICAgICAgICwgbV9zZWNvbmQoV1RGTW92ZShzZWNvbmQpKQpAQCAtNjMs
NyArNzcsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgbV92YWx1ZVNlcGFyYXRvciA9IHNlcGFyYXRv
cjsKICAgICB9CiAKLSAgICBleHBsaWNpdCBDU1NWYWx1ZVBhaXIoUmVmPENTU1ZhbHVlPiYmIGZp
cnN0LCBSZWY8Q1NTVmFsdWU+JiYgc2Vjb25kLCBWYWx1ZVNlcGFyYXRvciBzZXBhcmF0b3IsIElk
ZW50aWNhbFZhbHVlRW5jb2RpbmcgZW5jb2RpbmcpCisgICAgZXhwbGljaXQgQ1NTVmFsdWVQYWly
KGNvbnN0IExlbmd0aFNpemUmIGxlbmd0aFNpemUsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwg
VmFsdWVTZXBhcmF0b3Igc2VwYXJhdG9yKQorICAgICAgICA6IENTU1ZhbHVlKFZhbHVlUGFpckNs
YXNzKQorICAgIHsKKyAgICAgICAgbV9maXJzdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
bGVuZ3RoU2l6ZS53aWR0aCwgc3R5bGUpOworICAgICAgICBtX3NlY29uZCA9IENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUobGVuZ3RoU2l6ZS5oZWlnaHQsIHN0eWxlKTsKKyAgICAgICAgbV92YWx1
ZVNlcGFyYXRvciA9IHNlcGFyYXRvcjsKKyAgICB9CisKKyAgICBleHBsaWNpdCBDU1NWYWx1ZVBh
aXIoUmVmUHRyPENTU1ZhbHVlPiYmIGZpcnN0LCBSZWZQdHI8Q1NTVmFsdWU+JiYgc2Vjb25kLCBW
YWx1ZVNlcGFyYXRvciBzZXBhcmF0b3IsIElkZW50aWNhbFZhbHVlRW5jb2RpbmcgZW5jb2Rpbmcp
CiAgICAgICAgIDogQ1NTVmFsdWUoVmFsdWVQYWlyQ2xhc3MpCiAgICAgICAgICwgbV9lbmNvZGlu
ZyhlbmNvZGluZykKICAgICAgICAgLCBtX2ZpcnN0KFdURk1vdmUoZmlyc3QpKQpAQCAtNzMsOCAr
OTUsOCBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIElkZW50aWNhbFZhbHVlRW5jb2RpbmcgbV9l
bmNvZGluZyB7IElkZW50aWNhbFZhbHVlRW5jb2Rpbmc6OkNvYWxlc2NlIH07Ci0gICAgUmVmPENT
U1ZhbHVlPiBtX2ZpcnN0OwotICAgIFJlZjxDU1NWYWx1ZT4gbV9zZWNvbmQ7CisgICAgUmVmUHRy
PENTU1ZhbHVlPiBtX2ZpcnN0OworICAgIFJlZlB0cjxDU1NWYWx1ZT4gbV9zZWNvbmQ7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWVQb29sLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmgKaW5kZXgg
MTVjZGZjMDZkZTg5Mjk1ZTI3NWY5NGQ1NWMxZjk5OWFiYzJmMTY0OS4uYzk1NDc5Yzc5ZjFiNGFl
MmQxODEyZGZiZTQxMmRhODE0YmI1MWNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuaApA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNTU1JldmVydFZhbHVlLmgiCiAjaW5jbHVkZSAi
Q1NTVW5zZXRWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKKyNpbmNsdWRl
ICJDU1NWYWx1ZVBhaXIuaCIKICNpbmNsdWRlICJDb2xvckhhc2guaCIKICNpbmNsdWRlIDx1dGls
aXR5PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC05NSw3ICs5Niw2IEBAIHB1YmxpYzoK
ICAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVZhbHVlKGRvdWJsZSB2YWx1ZSwgQ1NT
VW5pdFR5cGUpOwogICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlVmFsdWUoY29uc3Qg
U3RyaW5nJiB2YWx1ZSwgQ1NTVW5pdFR5cGUgdHlwZSkgeyByZXR1cm4gQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZSh2YWx1ZSwgdHlwZSk7IH0KICAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNy
ZWF0ZVZhbHVlKGNvbnN0IExlbmd0aCYgdmFsdWUsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkg
eyByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZSwgc3R5bGUpOyB9Ci0gICAg
UmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVWYWx1ZShjb25zdCBMZW5ndGhTaXplJiB2YWx1
ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSB7IHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlKHZhbHVlLCBzdHlsZSk7IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMg
UmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVWYWx1ZShUJiYgdmFsdWUpIHsgcmV0dXJuIENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3RkOjpmb3J3YXJkPFQ+KHZhbHVlKSk7IH0KIAogICAg
IHZvaWQgZHJhaW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWlyLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvUGFpci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBl
MGVmNDUyNzE3YmEyYzIxNzUyODEwNWNhYmE2ZmRiYWU1ZWZkMDE2Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWlyLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi0vKgotICogKEMpIDE5OTktMjAwMyBMYXJz
IEtub2xsIChrbm9sbEBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
LCAyMDE1IEFwcGxlIEluYy4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENTU1ByaW1pdGl2ZVZhbHVlOwot
Ci0vLyBBIHByaW1pdGl2ZSB2YWx1ZSByZXByZXNlbnRpbmcgYSBwYWlyLiAgVGhpcyBpcyB1c2Vm
dWwgZm9yIHByb3BlcnRpZXMgbGlrZSBib3JkZXItcmFkaXVzLCBiYWNrZ3JvdW5kLXNpemUvcG9z
aXRpb24sCi0vLyBhbmQgYm9yZGVyLXNwYWNpbmcgKGFsbCBvZiB3aGljaCBhcmUgc3BhY2Utc2Vw
YXJhdGVkIHNldHMgb2YgdHdvIHZhbHVlcykuICBBdCB0aGUgbW9tZW50IHdlIGFyZSBvbmx5IHVz
aW5nIGl0IGZvcgotLy8gYm9yZGVyLXJhZGl1cyBhbmQgYmFja2dyb3VuZC1zaXplLCBidXQgKEZJ
WE1FKSBib3JkZXItc3BhY2luZyBhbmQgYmFja2dyb3VuZC1wb3NpdGlvbiBjb3VsZCBiZSBjb252
ZXJ0ZWQgb3ZlciB0byB1c2UKLS8vIGl0IChlbGltaW5hdGluZyBzb21lIGV4dHJhIC13ZWJraXQt
IGludGVybmFsIHByb3BlcnRpZXMpLgotY2xhc3MgUGFpciA6IHB1YmxpYyBSZWZDb3VudGVkPFBh
aXI+IHsKLXB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIElkZW50aWNhbFZhbHVlRW5jb2RpbmcgOiB1
aW50OF90IHsKLSAgICAgICAgRG9Ob3RDb2FsZXNjZSwKLSAgICAgICAgQ29hbGVzY2UKLSAgICB9
OwotCi0gICAgc3RhdGljIFJlZjxQYWlyPiBjcmVhdGUoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiYmIGZpcnN0LCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiYgc2Vjb25kKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGFpcihXVEZNb3ZlKGZpcnN0KSwgV1RGTW92ZShz
ZWNvbmQpKSk7Ci0gICAgfQotICAgIHN0YXRpYyBSZWY8UGFpcj4gY3JlYXRlKFJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4mJiBmaXJzdCwgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYmIHNlY29u
ZCwgSWRlbnRpY2FsVmFsdWVFbmNvZGluZyBlbmNvZGluZykKLSAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFBhaXIoV1RGTW92ZShmaXJzdCksIFdURk1vdmUoc2Vjb25kKSwgZW5j
b2RpbmcpKTsKLSAgICB9Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9maXJzdC5nZXQoKTsgfQotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzZWNvbmQoKSBj
b25zdCB7IHJldHVybiBtX3NlY29uZC5nZXQoKTsgfQotCi0gICAgU3RyaW5nIGNzc1RleHQoKSBj
b25zdAotICAgIHsKLSAgICAgICAgU3RyaW5nIGZpcnN0ID0gdGhpcy0+Zmlyc3QoKS0+Y3NzVGV4
dCgpOwotICAgICAgICBTdHJpbmcgc2Vjb25kID0gdGhpcy0+c2Vjb25kKCktPmNzc1RleHQoKTsK
LSAgICAgICAgaWYgKG1fZW5jb2RpbmcgPT0gSWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6Q29hbGVz
Y2UgJiYgZmlyc3QgPT0gc2Vjb25kKQotICAgICAgICAgICAgcmV0dXJuIGZpcnN0OwotICAgICAg
ICByZXR1cm4gZmlyc3QgKyAnICcgKyBzZWNvbmQ7Ci0gICAgfQotCi0gICAgYm9vbCBlcXVhbHMo
Y29uc3QgUGFpciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZVB0cihtX2Zp
cnN0LCBvdGhlci5tX2ZpcnN0KSAmJiBjb21wYXJlQ1NTVmFsdWVQdHIobV9zZWNvbmQsIG90aGVy
Lm1fc2Vjb25kKTsgfQotCi1wcml2YXRlOgotICAgIFBhaXIoUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiYmIGZpcnN0LCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiYgc2Vjb25kKQotICAgICAg
ICA6IG1fZmlyc3QoV1RGTW92ZShmaXJzdCkpCi0gICAgICAgICwgbV9zZWNvbmQoV1RGTW92ZShz
ZWNvbmQpKQotICAgIHsgfQotCi0gICAgUGFpcihSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiYg
Zmlyc3QsIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mJiBzZWNvbmQsIElkZW50aWNhbFZhbHVl
RW5jb2RpbmcgZW5jb2RpbmcpCi0gICAgICAgIDogbV9lbmNvZGluZyhlbmNvZGluZykKLSAgICAg
ICAgLCBtX2ZpcnN0KFdURk1vdmUoZmlyc3QpKQotICAgICAgICAsIG1fc2Vjb25kKFdURk1vdmUo
c2Vjb25kKSkKLSAgICB7IH0KLQotICAgIElkZW50aWNhbFZhbHVlRW5jb2RpbmcgbV9lbmNvZGlu
ZyB7IElkZW50aWNhbFZhbHVlRW5jb2Rpbmc6OkNvYWxlc2NlIH07Ci0gICAgUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBtX2ZpcnN0OwotICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9z
ZWNvbmQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAppbmRleCA2ZWEzYzdkMzhmMWI2ZDVjNzM3NjU5MjMx
ODJkNTI5MmNkYjI0N2M4Li42MjZhOTZhZDlhZjAyMTZmZWEzYjg4NTg1OWRlZmYxY2MyNWM0NmRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNw
cApAQCAtNTgsMTMgKzU4LDEzIEBACiAjaW5jbHVkZSAiQ1NTU2hhZG93VmFsdWUuaCIKICNpbmNs
dWRlICJDU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTVW5pY29kZVJhbmdl
VmFsdWUuaCIKKyNpbmNsdWRlICJDU1NWYWx1ZVBhaXIuaCIKICNpbmNsdWRlICJDU1NWYXJpYWJs
ZVBhcnNlci5oIgogI2luY2x1ZGUgIkNTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUuaCIKICNpbmNs
dWRlICJDb3VudGVyLmgiCiAjaW5jbHVkZSAiRm9udEZhY2UuaCIKICNpbmNsdWRlICJIYXNoVG9v
bHMuaCIKLS8vIEZJWE1FLU5FV1BBUlNFUjogUmVwbGFjZSBQYWlyIGFuZCBSZWN0IHdpdGggYWN0
dWFsIENTU1ZhbHVlIHN1YmNsYXNzZXMgKENTU1ZhbHVlUGFpciBhbmQgQ1NTUXVhZFZhbHVlKS4K
LSNpbmNsdWRlICJQYWlyLmgiCisvLyBGSVhNRS1ORVdQQVJTRVI6IFJlcGxhY2UgUmVjdCB3aXRo
IGFuIGFjdHVhbCBDU1NWYWx1ZSBzdWJjbGFzcyAoQ1NTUXVhZFZhbHVlKS4KICNpbmNsdWRlICJS
ZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmgiCkBAIC0xMTA2LDEzICsxMTA2LDYgQEAgc3RhdGljIFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gY29uc3VtZUxpbmVIZWlnaHQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Us
IEMKICAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9k
ZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJn
cz4KLXN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFp
cihBcmdzJiYuLi4gYXJncykKLXsKLSAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5jcmVhdGVWYWx1ZShQYWlyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7
Ci19Ci0KLQogc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUNvdW50ZXIoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UsIGludCBkZWZhdWx0VmFsdWUpCiB7CiAgICAgaWYgKHJhbmdlLnBl
ZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKQEAgLTExMjYsNyArMTExOSw3IEBAIHN0YXRpYyBS
ZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVDb3VudGVyKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
LCBpbnQgZGVmYXVsdFZhCiAgICAgICAgIGludCBpID0gZGVmYXVsdFZhbHVlOwogICAgICAgICBp
ZiAoYXV0byBjb3VudGVyVmFsdWUgPSBjb25zdW1lSW50ZWdlclJhdyhyYW5nZSkpCiAgICAgICAg
ICAgICBpID0gKmNvdW50ZXJWYWx1ZTsKLSAgICAgICAgbGlzdC0+YXBwZW5kKGNyZWF0ZVByaW1p
dGl2ZVZhbHVlUGFpcihjb3VudGVyTmFtZS5yZWxlYXNlTm9uTnVsbCgpLCBDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlKGksIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKSwgUGFpcjo6SWRlbnRpY2Fs
VmFsdWVFbmNvZGluZzo6Q29hbGVzY2UpKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVl
UGFpcjo6Y3JlYXRlKGNvdW50ZXJOYW1lLnJlbGVhc2VOb25OdWxsKCksIENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGUoaSwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpKSk7CiAgICAgfSB3aGlsZSAo
IXJhbmdlLmF0RW5kKCkpOwogICAgIHJldHVybiBsaXN0OwogfQpAQCAtMjU1MCw3ICsyNTQzLDcg
QEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUJvcmRlclJhZGl1c0Nvcm5lcihDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1MKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IHBhcnNlZFZhbHVlMiA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1v
ZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CiAgICAgaWYgKCFwYXJzZWRWYWx1ZTIpCiAgICAg
ICAgIHBhcnNlZFZhbHVlMiA9IHBhcnNlZFZhbHVlMTsKLSAgICByZXR1cm4gY3JlYXRlUHJpbWl0
aXZlVmFsdWVQYWlyKHBhcnNlZFZhbHVlMS5yZWxlYXNlTm9uTnVsbCgpLCBwYXJzZWRWYWx1ZTIu
cmVsZWFzZU5vbk51bGwoKSwgUGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6Q29hbGVzY2Up
OworICAgIHJldHVybiBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShwYXJzZWRWYWx1ZTEucmVsZWFzZU5v
bk51bGwoKSwgcGFyc2VkVmFsdWUyLnJlbGVhc2VOb25OdWxsKCkpOwogfQogCiBzdGF0aWMgUmVm
UHRyPENTU1ZhbHVlPiBjb25zdW1lVGV4dFVuZGVybGluZU9mZnNldChDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQpAQCAtMjc0MSwxMCArMjcz
NCwxMCBAQCBzdGF0aWMgUmVmUHRyPENTU0Jhc2ljU2hhcGVJbnNldD4gY29uc3VtZUJhc2ljU2hh
cGVJbnNldChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcgogICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IHZlcnRpY2FsUmFkaWlbNF0gPSB7IDAgfTsKICAgICAgICAgaWYgKCFjb25zdW1l
UmFkaWkoaG9yaXpvbnRhbFJhZGlpLCB2ZXJ0aWNhbFJhZGlpLCBhcmdzLCBjb250ZXh0Lm1vZGUs
IGZhbHNlKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBzaGFwZS0+c2V0
VG9wTGVmdFJhZGl1cyhjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIoaG9yaXpvbnRhbFJhZGlpWzBd
LnJlbGVhc2VOb25OdWxsKCksIHZlcnRpY2FsUmFkaWlbMF0ucmVsZWFzZU5vbk51bGwoKSwgUGFp
cjo6SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6Q29hbGVzY2UpKTsKLSAgICAgICAgc2hhcGUtPnNl
dFRvcFJpZ2h0UmFkaXVzKGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihob3Jpem9udGFsUmFkaWlb
MV0ucmVsZWFzZU5vbk51bGwoKSwgdmVydGljYWxSYWRpaVsxXS5yZWxlYXNlTm9uTnVsbCgpLCBQ
YWlyOjpJZGVudGljYWxWYWx1ZUVuY29kaW5nOjpDb2FsZXNjZSkpOwotICAgICAgICBzaGFwZS0+
c2V0Qm90dG9tUmlnaHRSYWRpdXMoY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKGhvcml6b250YWxS
YWRpaVsyXS5yZWxlYXNlTm9uTnVsbCgpLCB2ZXJ0aWNhbFJhZGlpWzJdLnJlbGVhc2VOb25OdWxs
KCksIFBhaXI6OklkZW50aWNhbFZhbHVlRW5jb2Rpbmc6OkNvYWxlc2NlKSk7Ci0gICAgICAgIHNo
YXBlLT5zZXRCb3R0b21MZWZ0UmFkaXVzKGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihob3Jpem9u
dGFsUmFkaWlbM10ucmVsZWFzZU5vbk51bGwoKSwgdmVydGljYWxSYWRpaVszXS5yZWxlYXNlTm9u
TnVsbCgpLCBQYWlyOjpJZGVudGljYWxWYWx1ZUVuY29kaW5nOjpDb2FsZXNjZSkpOworICAgICAg
ICBzaGFwZS0+c2V0VG9wTGVmdFJhZGl1cyhDU1NWYWx1ZVBhaXI6OmNyZWF0ZShob3Jpem9udGFs
UmFkaWlbMF0ucmVsZWFzZU5vbk51bGwoKSwgdmVydGljYWxSYWRpaVswXS5yZWxlYXNlTm9uTnVs
bCgpKSk7CisgICAgICAgIHNoYXBlLT5zZXRUb3BSaWdodFJhZGl1cyhDU1NWYWx1ZVBhaXI6OmNy
ZWF0ZShob3Jpem9udGFsUmFkaWlbMV0ucmVsZWFzZU5vbk51bGwoKSwgdmVydGljYWxSYWRpaVsx
XS5yZWxlYXNlTm9uTnVsbCgpKSk7CisgICAgICAgIHNoYXBlLT5zZXRCb3R0b21SaWdodFJhZGl1
cyhDU1NWYWx1ZVBhaXI6OmNyZWF0ZShob3Jpem9udGFsUmFkaWlbMl0ucmVsZWFzZU5vbk51bGwo
KSwgdmVydGljYWxSYWRpaVsyXS5yZWxlYXNlTm9uTnVsbCgpKSk7CisgICAgICAgIHNoYXBlLT5z
ZXRCb3R0b21MZWZ0UmFkaXVzKENTU1ZhbHVlUGFpcjo6Y3JlYXRlKGhvcml6b250YWxSYWRpaVsz
XS5yZWxlYXNlTm9uTnVsbCgpLCB2ZXJ0aWNhbFJhZGlpWzNdLnJlbGVhc2VOb25OdWxsKCkpKTsK
ICAgICB9CiAgICAgcmV0dXJuIHNoYXBlOwogfQpAQCAtMjg4MSwxMyArMjg3NCwxMiBAQCBzdGF0
aWMgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lT3ZlcmZsb3dQb3NpdGlvbktleXdv
cmQoQ1NTUGFyc2VyVG9rZW5SYQogCiBzdGF0aWMgQ1NTVmFsdWVJRCBnZXRCYXNlbGluZUtleXdv
cmQoUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSkKIHsKLSAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9
IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpOwotICAgIGlmIChwcmltaXRpdmVW
YWx1ZS5wYWlyVmFsdWUoKSkgewotICAgICAgICBBU1NFUlQocHJpbWl0aXZlVmFsdWUucGFpclZh
bHVlKCktPmZpcnN0KCktPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUxhc3QpOwotICAgICAgICBBU1NF
UlQocHJpbWl0aXZlVmFsdWUucGFpclZhbHVlKCktPnNlY29uZCgpLT52YWx1ZUlEKCkgPT0gQ1NT
VmFsdWVCYXNlbGluZSk7CisgICAgaWYgKHZhbHVlICYmIHZhbHVlLT5pc1ZhbHVlUGFpcigpKSB7
CisgICAgICAgIEFTU0VSVChkb3duY2FzdDxDU1NWYWx1ZVBhaXI+KCp2YWx1ZSkuZmlyc3RBc1Zh
bHVlSUQoKSA9PSBDU1NWYWx1ZUxhc3QpOworICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTVmFs
dWVQYWlyPigqdmFsdWUpLnNlY29uZEFzVmFsdWVJRCgpID09IENTU1ZhbHVlQmFzZWxpbmUpOwog
ICAgICAgICByZXR1cm4gQ1NTVmFsdWVMYXN0QmFzZWxpbmU7CiAgICAgfQotICAgIEFTU0VSVChw
cmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVCYXNlbGluZSk7CisgICAgQVNTRVJU
KGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1
ZUJhc2VsaW5lKTsKICAgICByZXR1cm4gQ1NTVmFsdWVCYXNlbGluZTsKIH0KIApAQCAtMjg5OCw3
ICsyODkwLDcgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUJhc2VsaW5lS2V5d29y
ZChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKICAgICBpZiAoIWJhc2VsaW5lKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAocHJlZmVyZW5jZSAmJiBwcmVmZXJlbmNlLT52YWx1
ZUlEKCkgPT0gQ1NTVmFsdWVMYXN0KQotICAgICAgICByZXR1cm4gY3JlYXRlUHJpbWl0aXZlVmFs
dWVQYWlyKHByZWZlcmVuY2UucmVsZWFzZU5vbk51bGwoKSwgYmFzZWxpbmUucmVsZWFzZU5vbk51
bGwoKSwgUGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6Q29hbGVzY2UpOworICAgICAgICBy
ZXR1cm4gQ1NTVmFsdWVQYWlyOjpjcmVhdGUocHJlZmVyZW5jZS5yZWxlYXNlTm9uTnVsbCgpLCBi
YXNlbGluZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICByZXR1cm4gYmFzZWxpbmU7CiB9CiAKQEAg
LTI5NDEsNyArMjkzMyw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVCb3JkZXJJ
bWFnZVJlcGVhdChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKICAgICBSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IHZlcnRpY2FsID0gY29uc3VtZUJvcmRlckltYWdlUmVwZWF0S2V5d29yZChy
YW5nZSk7CiAgICAgaWYgKCF2ZXJ0aWNhbCkKICAgICAgICAgdmVydGljYWwgPSBob3Jpem9udGFs
OwotICAgIHJldHVybiBjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIoaG9yaXpvbnRhbC5yZWxlYXNl
Tm9uTnVsbCgpLCB2ZXJ0aWNhbC5yZWxlYXNlTm9uTnVsbCgpLCBQYWlyOjpJZGVudGljYWxWYWx1
ZUVuY29kaW5nOjpDb2FsZXNjZSk7CisgICAgcmV0dXJuIENTU1ZhbHVlUGFpcjo6Y3JlYXRlKGhv
cml6b250YWwucmVsZWFzZU5vbk51bGwoKSwgdmVydGljYWwucmVsZWFzZU5vbk51bGwoKSk7CiB9
CiAKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVCb3JkZXJJbWFnZVNsaWNlKENTU1By
b3BlcnR5SUQgcHJvcGVydHksIENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQpAQCAtMzE2MCw3
ICszMTUyLDcgQEAgc3RhdGljIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVByZWZp
eGVkQmFja2dyb3VuZEJveChDU1NQcm9wZXJ0eUlEIHByb3AKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAotc3RhdGljIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUJhY2tncm91bmRT
aXplKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBD
U1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCitzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25z
dW1lQmFja2dyb3VuZFNpemUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKIHsKICAgICBpZiAoaWRl
bnRNYXRjaGVzPENTU1ZhbHVlQ29udGFpbiwgQ1NTVmFsdWVDb3Zlcj4ocmFuZ2UucGVlaygpLmlk
KCkpKQogICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKQEAgLTMxODMsNyArMzE3
NSw4IEBAIHN0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVCYWNrZ3JvdW5k
U2l6ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDCiAgICAgfQogICAgIGlmICghdmVydGljYWwp
CiAgICAgICAgIHJldHVybiBob3Jpem9udGFsOwotICAgIHJldHVybiBjcmVhdGVQcmltaXRpdmVW
YWx1ZVBhaXIoaG9yaXpvbnRhbC5yZWxlYXNlTm9uTnVsbCgpLCB2ZXJ0aWNhbC5yZWxlYXNlTm9u
TnVsbCgpLCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRTaXplID8gUGFp
cjo6SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6Q29hbGVzY2UgOiBQYWlyOjpJZGVudGljYWxWYWx1
ZUVuY29kaW5nOjpEb05vdENvYWxlc2NlKTsKKyAgICBhdXRvIHZhbHVlQ29hbGVzY2VuY2UgPSBw
cm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRTaXplID8gQ1NTVmFsdWVQYWly
OjpJZGVudGljYWxWYWx1ZUVuY29kaW5nOjpDb2FsZXNjZSA6IENTU1ZhbHVlUGFpcjo6SWRlbnRp
Y2FsVmFsdWVFbmNvZGluZzo6RG9Ob3RDb2FsZXNjZTsKKyAgICByZXR1cm4gQ1NTVmFsdWVQYWly
OjpjcmVhdGUoaG9yaXpvbnRhbC5yZWxlYXNlTm9uTnVsbCgpLCB2ZXJ0aWNhbC5yZWxlYXNlTm9u
TnVsbCgpLCB2YWx1ZUNvYWxlc2NlbmNlKTsKIH0KIAogc3RhdGljIFJlZlB0cjxDU1NWYWx1ZUxp
c3Q+IGNvbnN1bWVHcmlkQXV0b0Zsb3coQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCkBAIC0z
Mjk3LDcgKzMyOTAsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lU2VsZlBvc2l0
aW9uT3ZlcmZsb3dQb3NpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJgogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNlbGZQb3NpdGlvbiA9IGNv
bnN1bWVJZGVudChyYW5nZSk7CiAgICAgaWYgKG92ZXJmbG93UG9zaXRpb24pCi0gICAgICAgIHJl
dHVybiBjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIob3ZlcmZsb3dQb3NpdGlvbi5yZWxlYXNlTm9u
TnVsbCgpLCBzZWxmUG9zaXRpb24ucmVsZWFzZU5vbk51bGwoKSwgUGFpcjo6SWRlbnRpY2FsVmFs
dWVFbmNvZGluZzo6Q29hbGVzY2UpOworICAgICAgICByZXR1cm4gQ1NTVmFsdWVQYWlyOjpjcmVh
dGUob3ZlcmZsb3dQb3NpdGlvbi5yZWxlYXNlTm9uTnVsbCgpLCBzZWxmUG9zaXRpb24ucmVsZWFz
ZU5vbk51bGwoKSk7CiAgICAgcmV0dXJuIHNlbGZQb3NpdGlvbjsKIH0KIApAQCAtMzMyMiw3ICsz
MzE1LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUp1c3RpZnlJdGVtcyhDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSkKICAgICBpZiAobGVnYWN5KSB7CiAgICAgICAgIHJhbmdl
ID0gcmFuZ2VDb3B5OwogICAgICAgICBpZiAocG9zaXRpb25LZXl3b3JkKQotICAgICAgICAgICAg
cmV0dXJuIGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihsZWdhY3kucmVsZWFzZU5vbk51bGwoKSwg
cG9zaXRpb25LZXl3b3JkLnJlbGVhc2VOb25OdWxsKCksIFBhaXI6OklkZW50aWNhbFZhbHVlRW5j
b2Rpbmc6OkNvYWxlc2NlKTsKKyAgICAgICAgICAgIHJldHVybiBDU1NWYWx1ZVBhaXI6OmNyZWF0
ZShsZWdhY3kucmVsZWFzZU5vbk51bGwoKSwgcG9zaXRpb25LZXl3b3JkLnJlbGVhc2VOb25OdWxs
KCkpOwogICAgICAgICByZXR1cm4gbGVnYWN5OwogICAgIH0KICAgICByZXR1cm4gY29uc3VtZVNl
bGZQb3NpdGlvbk92ZXJmbG93UG9zaXRpb24ocmFuZ2UsIGlzU2VsZlBvc2l0aW9uT3JMZWZ0T3JS
aWdodEtleXdvcmQpOwpAQCAtMzc3MSw3ICszNzY0LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1
ZT4gY29uc3VtZUluaXRpYWxMZXR0ZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiAgICAg
fSBlbHNlCiAgICAgICAgIHBvc2l0aW9uID0gaGVpZ2h0LmNvcHlSZWYoKTsKICAgICAKLSAgICBy
ZXR1cm4gY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKHBvc2l0aW9uLnJlbGVhc2VOb25OdWxsKCks
IFdURk1vdmUoaGVpZ2h0KSk7CisgICAgcmV0dXJuIENTU1ZhbHVlUGFpcjo6Y3JlYXRlKHBvc2l0
aW9uLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoaGVpZ2h0KSk7CiB9CiAKIHN0YXRpYyBSZWZQ
dHI8Q1NTVmFsdWU+IGNvbnN1bWVTcGVha0FzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQpA
QCAtNTk4OCwxMCArNTk4MSwxMCBAQCBib29sIENTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVNob3J0
aGFuZChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBib29sIGltcG9ydGFudCkKICAgICAgICAgUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2ZXJ0aWNhbFJhZGlpWzRdOwogICAgICAgICBpZiAoIWNv
bnN1bWVSYWRpaShob3Jpem9udGFsUmFkaWksIHZlcnRpY2FsUmFkaWksIG1fcmFuZ2UsIG1fY29u
dGV4dC5tb2RlLCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclJhZGl1cykpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5
Qm9yZGVyVG9wTGVmdFJhZGl1cywgQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXMsIGNyZWF0ZVByaW1p
dGl2ZVZhbHVlUGFpcihob3Jpem9udGFsUmFkaWlbMF0ucmVsZWFzZU5vbk51bGwoKSwgdmVydGlj
YWxSYWRpaVswXS5yZWxlYXNlTm9uTnVsbCgpLCBQYWlyOjpJZGVudGljYWxWYWx1ZUVuY29kaW5n
OjpDb2FsZXNjZSksIGltcG9ydGFudCk7Ci0gICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5
Qm9yZGVyVG9wUmlnaHRSYWRpdXMsIENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVzLCBjcmVhdGVQcmlt
aXRpdmVWYWx1ZVBhaXIoaG9yaXpvbnRhbFJhZGlpWzFdLnJlbGVhc2VOb25OdWxsKCksIHZlcnRp
Y2FsUmFkaWlbMV0ucmVsZWFzZU5vbk51bGwoKSwgUGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNvZGlu
Zzo6Q29hbGVzY2UpLCBpbXBvcnRhbnQpOwotICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0
eUJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzLCBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1cywgY3JlYXRl
UHJpbWl0aXZlVmFsdWVQYWlyKGhvcml6b250YWxSYWRpaVsyXS5yZWxlYXNlTm9uTnVsbCgpLCB2
ZXJ0aWNhbFJhZGlpWzJdLnJlbGVhc2VOb25OdWxsKCksIFBhaXI6OklkZW50aWNhbFZhbHVlRW5j
b2Rpbmc6OkNvYWxlc2NlKSwgaW1wb3J0YW50KTsKLSAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzLCBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1cywgY3Jl
YXRlUHJpbWl0aXZlVmFsdWVQYWlyKGhvcml6b250YWxSYWRpaVszXS5yZWxlYXNlTm9uTnVsbCgp
LCB2ZXJ0aWNhbFJhZGlpWzNdLnJlbGVhc2VOb25OdWxsKCksIFBhaXI6OklkZW50aWNhbFZhbHVl
RW5jb2Rpbmc6OkNvYWxlc2NlKSwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NT
UHJvcGVydHlCb3JkZXJUb3BMZWZ0UmFkaXVzLCBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1cywgQ1NT
VmFsdWVQYWlyOjpjcmVhdGUoaG9yaXpvbnRhbFJhZGlpWzBdLnJlbGVhc2VOb25OdWxsKCksIHZl
cnRpY2FsUmFkaWlbMF0ucmVsZWFzZU5vbk51bGwoKSksIGltcG9ydGFudCk7CisgICAgICAgIGFk
ZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXMsIENTU1Byb3BlcnR5Qm9y
ZGVyUmFkaXVzLCBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShob3Jpem9udGFsUmFkaWlbMV0ucmVsZWFz
ZU5vbk51bGwoKSwgdmVydGljYWxSYWRpaVsxXS5yZWxlYXNlTm9uTnVsbCgpKSwgaW1wb3J0YW50
KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1
cywgQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXMsIENTU1ZhbHVlUGFpcjo6Y3JlYXRlKGhvcml6b250
YWxSYWRpaVsyXS5yZWxlYXNlTm9uTnVsbCgpLCB2ZXJ0aWNhbFJhZGlpWzJdLnJlbGVhc2VOb25O
dWxsKCkpLCBpbXBvcnRhbnQpOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRl
ckJvdHRvbUxlZnRSYWRpdXMsIENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVzLCBDU1NWYWx1ZVBhaXI6
OmNyZWF0ZShob3Jpem9udGFsUmFkaWlbM10ucmVsZWFzZU5vbk51bGwoKSwgdmVydGljYWxSYWRp
aVszXS5yZWxlYXNlTm9uTnVsbCgpKSwgaW1wb3J0YW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xvcjoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAppbmRl
eCA3NzZiODgyMTExYjlmYjgzOWRhOWVlMThkNGNmZmU1OTFhY2VlMDJmLi5iMzg2Nzg4MmE1NjQx
Y2U2NzI5MGZhMDFkNDRmMDc3MGNjOWZkYTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCkBAIC00MCwxMCArNDAs
MTAgQEAKICNpbmNsdWRlICJDU1NOYW1lZEltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQYWlu
dEltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQYXJzZXJJZGlvbXMuaCIKKyNpbmNsdWRlICJD
U1NWYWx1ZVBhaXIuaCIKICNpbmNsdWRlICJDU1NWYWx1ZVBvb2wuaCIKICNpbmNsdWRlICJDb2xv
ckNvbnZlcnNpb24uaCIKICNpbmNsdWRlICJDb2xvckx1bWluYW5jZS5oIgotI2luY2x1ZGUgIlBh
aXIuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU3R5
bGVDb2xvci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5o
PgpAQCAtNjQ0LDkgKzY0NCw4IEBAIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUlk
ZW50UmFuZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1ZhbHVlCiAgICAgcmV0dXJu
IGNvbnN1bWVJZGVudChyYW5nZSk7CiB9CiAKLS8vIEZJWE1FLU5FV1BBUlNFUjogRXZlbnR1YWxs
eSB3ZSdkIGxpa2UgdGhpcyB0byB1c2UgQ1NTQ3VzdG9tSWRlbnRWYWx1ZSwgYnV0IHdlIG5lZWQK
LS8vIHRvIGRvIG90aGVyIHBsdW1iaW5nIHdvcmsgZmlyc3QgKGxpa2UgY2hhbmdpbmcgUGFpciB0
byBDU1NWYWx1ZVBhaXIgYW5kIG1ha2UgaXQgbm90Ci0vLyB1c2Ugb25seSBwcmltaXRpdmUgdmFs
dWVzKS4KKy8vIEZJWE1FLU5FV1BBUlNFUjogV2Ugc2hvdWxkIHJlZmFjdG9yIHRoaXMgdG8gcmV0
dXJuIGEgQ1NTQ3VzdG9tSWRlbnRWYWx1ZSBpbnN0ZWFkIG9mIGEgQ1NTUHJpbWl0aXZlVmFsdWUg
b2YgdHlwZQorLy8gQ1NTX1NUUklORy4KIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3Vt
ZUN1c3RvbUlkZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogewogICAgIGlmIChyYW5n
ZS5wZWVrKCkudHlwZSgpICE9IElkZW50VG9rZW4gfHwgaXNDU1NXaWRlS2V5d29yZChyYW5nZS5w
ZWVrKCkuaWQoKSkpCkBAIC0yMDc0LDggKzIwNzMsOCBAQCBzdGF0aWMgUG9zaXRpb25Db29yZGlu
YXRlcyBwb3NpdGlvbkZyb21PbmVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUpCiB7CiAg
ICAgYm9vbCB2YWx1ZUFwcGxpZXNUb1lBeGlzT25seSA9IGlzVmVydGljYWxQb3NpdGlvbktleXdv
cmRPbmx5KHZhbHVlKTsKICAgICBpZiAodmFsdWVBcHBsaWVzVG9ZQXhpc09ubHkpCi0gICAgICAg
IHJldHVybiB7IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlQ2Vu
dGVyKSwgdmFsdWUgfTsKLSAgICByZXR1cm4geyB2YWx1ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVDZW50ZXIpIH07CisgICAgICAgIHJldHVybiB7IENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlQ2VudGVyKSwgbWFrZVJlZih2
YWx1ZSkgfTsKKyAgICByZXR1cm4geyBtYWtlUmVmKHZhbHVlKSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVDZW50ZXIpIH07CiB9CiAKIHN0YXRpYyBPcHRpb25h
bDxQb3NpdGlvbkNvb3JkaW5hdGVzPiBwb3NpdGlvbkZyb21Ud29WYWx1ZXMoQ1NTUHJpbWl0aXZl
VmFsdWUmIHZhbHVlMSwgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlMikKQEAgLTIwODUsMTYgKzIw
ODQsOCBAQCBzdGF0aWMgT3B0aW9uYWw8UG9zaXRpb25Db29yZGluYXRlcz4gcG9zaXRpb25Gcm9t
VHdvVmFsdWVzKENTU1ByaW1pdGl2ZVZhbHVlJiB2YQogICAgIGlmIChtdXN0T3JkZXJBc1hZICYm
IG11c3RPcmRlckFzWVgpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKG11
c3RPcmRlckFzWVgpCi0gICAgICAgIHJldHVybiBQb3NpdGlvbkNvb3JkaW5hdGVzIHsgdmFsdWUy
LCB2YWx1ZTEgfTsKLSAgICByZXR1cm4gUG9zaXRpb25Db29yZGluYXRlcyB7IHZhbHVlMSwgdmFs
dWUyIH07Ci19Ci0KLW5hbWVzcGFjZSBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnNJbnRlcm5hbCB7
Ci10ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPgotc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1
ZT4gY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKEFyZ3MmJi4uLiBhcmdzKQotewotICAgIHJldHVy
biBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKFBhaXI6OmNyZWF0ZShzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKLX0KKyAgICAgICAgcmV0dXJuIFBvc2l0aW9uQ29v
cmRpbmF0ZXMgeyBtYWtlUmVmKHZhbHVlMiksIG1ha2VSZWYodmFsdWUxKSB9OworICAgIHJldHVy
biBQb3NpdGlvbkNvb3JkaW5hdGVzIHsgbWFrZVJlZih2YWx1ZTEpLCBtYWtlUmVmKHZhbHVlMikg
fTsKIH0KIAogLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1iYWNrZ3JvdW5kcy0zLyNw
cm9wZGVmLWJhY2tncm91bmQtcG9zaXRpb24KQEAgLTIxMDksOCArMjEwMCw4IEBAIHN0YXRpYyBS
ZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihBcmdzJiYuLi4g
YXJncykKIC8vCiBzdGF0aWMgT3B0aW9uYWw8UG9zaXRpb25Db29yZGluYXRlcz4gYmFja2dyb3Vu
ZFBvc2l0aW9uRnJvbVRocmVlVmFsdWVzKGNvbnN0IHN0ZDo6YXJyYXk8Q1NTUHJpbWl0aXZlVmFs
dWUqLCA1PiYgdmFsdWVzKQogewotICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmVzdWx0
WDsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJlc3VsdFk7CisgICAgUmVmUHRyPENT
U1ZhbHVlPiByZXN1bHRYOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gcmVzdWx0WTsKIAogICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBjZW50ZXIgPSBudWxscHRyOwogICAgIGZvciAoaW50IGkgPSAwOyB2
YWx1ZXNbaV07IGkrKykgewpAQCAtMjEyNiw5ICsyMTE3LDkgQEAgc3RhdGljIE9wdGlvbmFsPFBv
c2l0aW9uQ29vcmRpbmF0ZXM+IGJhY2tncm91bmRQb3NpdGlvbkZyb21UaHJlZVZhbHVlcyhjb25z
dCBzdGQKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiByZXN1bHQ7CisgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gcmVz
dWx0OwogICAgICAgICBpZiAodmFsdWVzW2kgKyAxXSAmJiAhdmFsdWVzW2kgKyAxXS0+aXNWYWx1
ZUlEKCkpCi0gICAgICAgICAgICByZXN1bHQgPSBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnNJbnRl
cm5hbDo6Y3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKGN1cnJlbnRWYWx1ZSwgdmFsdWVzWysraV0p
OworICAgICAgICAgICAgcmVzdWx0ID0gQ1NTVmFsdWVQYWlyOjpjcmVhdGUoY3VycmVudFZhbHVl
LCB2YWx1ZXNbKytpXSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlc3VsdCA9IGN1cnJl
bnRWYWx1ZTsKIApAQCAtMjE3MCw4ICsyMTYxLDggQEAgc3RhdGljIE9wdGlvbmFsPFBvc2l0aW9u
Q29vcmRpbmF0ZXM+IGJhY2tncm91bmRQb3NpdGlvbkZyb21UaHJlZVZhbHVlcyhjb25zdCBzdGQK
IC8vCiBzdGF0aWMgT3B0aW9uYWw8UG9zaXRpb25Db29yZGluYXRlcz4gcG9zaXRpb25Gcm9tRm91
clZhbHVlcyhjb25zdCBzdGQ6OmFycmF5PENTU1ByaW1pdGl2ZVZhbHVlKiwgNT4mIHZhbHVlcykK
IHsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJlc3VsdFg7Ci0gICAgUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiByZXN1bHRZOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gcmVzdWx0WDsK
KyAgICBSZWZQdHI8Q1NTVmFsdWU+IHJlc3VsdFk7CiAKICAgICBmb3IgKGludCBpID0gMDsgdmFs
dWVzW2ldOyBpKyspIHsKICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGN1cnJlbnRWYWx1ZSA9
IHZhbHVlc1tpXTsKQEAgLTIxODIsOSArMjE3Myw5IEBAIHN0YXRpYyBPcHRpb25hbDxQb3NpdGlv
bkNvb3JkaW5hdGVzPiBwb3NpdGlvbkZyb21Gb3VyVmFsdWVzKGNvbnN0IHN0ZDo6YXJyYXk8Q1NT
CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUNlbnRlcikKICAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAKLSAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByZXN1bHQ7
CisgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gcmVzdWx0OwogICAgICAgICBpZiAodmFsdWVzW2kg
KyAxXSAmJiAhdmFsdWVzW2kgKyAxXS0+aXNWYWx1ZUlEKCkpCi0gICAgICAgICAgICByZXN1bHQg
PSBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnNJbnRlcm5hbDo6Y3JlYXRlUHJpbWl0aXZlVmFsdWVQ
YWlyKGN1cnJlbnRWYWx1ZSwgdmFsdWVzWysraV0pOworICAgICAgICAgICAgcmVzdWx0ID0gQ1NT
VmFsdWVQYWlyOjpjcmVhdGUoY3VycmVudFZhbHVlLCB2YWx1ZXNbKytpXSk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIHJlc3VsdCA9IGN1cnJlbnRWYWx1ZTsKIApAQCAtMjIzOSwxMCArMjIz
MCwxMCBAQCBPcHRpb25hbDxQb3NpdGlvbkNvb3JkaW5hdGVzPiBjb25zdW1lUG9zaXRpb25Db29y
ZGluYXRlcyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYQogICAgIHJldHVybiBiYWNrZ3JvdW5kUG9z
aXRpb25Gcm9tVGhyZWVWYWx1ZXModmFsdWVzKTsKIH0KIAotUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBjb25zdW1lUG9zaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNl
ck1vZGUgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcywgUG9zaXRpb25TeW50
YXggcG9zaXRpb25TeW50YXgpCitSZWZQdHI8Q1NTVmFsdWVQYWlyPiBjb25zdW1lUG9zaXRpb24o
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwg
VW5pdGxlc3NRdWlyayB1bml0bGVzcywgUG9zaXRpb25TeW50YXggcG9zaXRpb25TeW50YXgpCiB7
CiAgICAgaWYgKGF1dG8gY29vcmRpbmF0ZXMgPSBjb25zdW1lUG9zaXRpb25Db29yZGluYXRlcyhy
YW5nZSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxlc3MsIHBvc2l0aW9uU3ludGF4KSkKLSAgICAgICAg
cmV0dXJuIENTU1Byb3BlcnR5UGFyc2VySGVscGVyc0ludGVybmFsOjpjcmVhdGVQcmltaXRpdmVW
YWx1ZVBhaXIoV1RGTW92ZShjb29yZGluYXRlcy0+eCksIFdURk1vdmUoY29vcmRpbmF0ZXMtPnkp
KTsKKyAgICAgICAgcmV0dXJuIENTU1ZhbHVlUGFpcjo6Y3JlYXRlKFdURk1vdmUoY29vcmRpbmF0
ZXMtPngpLCBXVEZNb3ZlKGNvb3JkaW5hdGVzLT55KSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKQEAgLTI1MTcsOCArMjUwOCw4IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVS
YWRpYWxHcmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBjb25zdCBDCiAgICAgICAg
IHx8ICh2ZXJ0aWNhbFNpemUgJiYgdmVydGljYWxTaXplLT5pc0NhbGN1bGF0ZWRQZXJjZW50YWdl
V2l0aExlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IGNlbnRlclg7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBj
ZW50ZXJZOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gY2VudGVyWDsKKyAgICBSZWZQdHI8Q1NTVmFs
dWU+IGNlbnRlclk7CiAgICAgaWYgKGFyZ3MucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVBdCkgewog
ICAgICAgICBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CiAgICAgICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBl
cnMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJz
LmgKaW5kZXggOTEzYzEwOGYzYWM5NDNmNGIwYTU0OTJiNGVjNWQxOWFlMGRhNjM0ZS4uZTdiMGFk
YTk0Njk4NTIwYWZhZTg3MDM4Y2QwMDJmNTU2OTBmYzc0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5oCkBAIC0xMTEsMTEg
KzExMSwxMSBAQCBlbnVtIGNsYXNzIFBvc2l0aW9uU3ludGF4IHsKIH07CiAKIHN0cnVjdCBQb3Np
dGlvbkNvb3JkaW5hdGVzIHsKLSAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHg7Ci0gICAgUmVm
PENTU1ByaW1pdGl2ZVZhbHVlPiB5OworICAgIFJlZjxDU1NWYWx1ZT4geDsKKyAgICBSZWY8Q1NT
VmFsdWU+IHk7CiB9OwogCi1SZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVQb3NpdGlv
bihDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyaywgUG9z
aXRpb25TeW50YXgpOworUmVmUHRyPENTU1ZhbHVlUGFpcj4gY29uc3VtZVBvc2l0aW9uKENTU1Bh
cnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrLCBQb3NpdGlvblN5
bnRheCk7CiBPcHRpb25hbDxQb3NpdGlvbkNvb3JkaW5hdGVzPiBjb25zdW1lUG9zaXRpb25Db29y
ZGluYXRlcyhDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWly
aywgUG9zaXRpb25TeW50YXgpOwogT3B0aW9uYWw8UG9zaXRpb25Db29yZGluYXRlcz4gY29uc3Vt
ZU9uZU9yVHdvVmFsdWVkUG9zaXRpb25Db29yZGluYXRlcyhDU1NQYXJzZXJUb2tlblJhbmdlJiwg
Q1NTUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVCdWlsZGVyQ29udmVydGVyLmgKaW5kZXggNmY3MTZhNzQ4N2QzMTQ2ZTkzODZiZTUxYzYw
NWY4M2M2ZTFlNTI4My4uOGEyZWNlZmJhYTYxOWNjMTBkMTYzY2MwNmI4YWIyYzJkNzVhMGYyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKQEAgLTQy
LDExICs0MiwxMSBAQAogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAi
Q1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIgogI2luY2x1ZGUgIkNTU1JlZmxlY3RWYWx1ZS5o
IgorI2luY2x1ZGUgIkNTU1ZhbHVlUGFpci5oIgogI2luY2x1ZGUgIkZvbnRTZWxlY3Rpb25WYWx1
ZUlubGluZXMuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkdyaWRQb3NpdGlvbnNS
ZXNvbHZlci5oIgogI2luY2x1ZGUgIkxlbmd0aC5oIgotI2luY2x1ZGUgIlBhaXIuaCIKICNpbmNs
dWRlICJRdW90ZXNEYXRhLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgog
I2luY2x1ZGUgIlNWR1VSSVJlZmVyZW5jZS5oIgpAQCAtMTgzLDcgKzE4Myw3IEBAIHByaXZhdGU6
CiAjZW5kaWYKIAogICAgIHN0YXRpYyBMZW5ndGggY29udmVydFRvMTAwUGVyY2VudE1pbnVzTGVu
Z3RoKGNvbnN0IExlbmd0aCYpOwotICAgIHRlbXBsYXRlPENTU1ZhbHVlSUQsIENTU1ZhbHVlSUQ+
IHN0YXRpYyBMZW5ndGggY29udmVydFBvc2l0aW9uQ29tcG9uZW50KEJ1aWxkZXJTdGF0ZSYsIGNv
bnN0IENTU1ByaW1pdGl2ZVZhbHVlJik7CisgICAgdGVtcGxhdGU8Q1NTVmFsdWVJRCwgQ1NTVmFs
dWVJRD4gc3RhdGljIExlbmd0aCBjb252ZXJ0UG9zaXRpb25Db21wb25lbnQoQnVpbGRlclN0YXRl
JiwgY29uc3QgQ1NTVmFsdWUmKTsKIAogICAgIHN0YXRpYyBHcmlkTGVuZ3RoIGNyZWF0ZUdyaWRU
cmFja0JyZWFkdGgoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmLCBCdWlsZGVyU3RhdGUmKTsKICAg
ICBzdGF0aWMgR3JpZFRyYWNrU2l6ZSBjcmVhdGVHcmlkVHJhY2tTaXplKGNvbnN0IENTU1ZhbHVl
JiwgQnVpbGRlclN0YXRlJik7CkBAIC0zMjgsMTcgKzMyOCwyMyBAQCBpbmxpbmUgTGVuZ3RoIEJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUb1JhZGl1c0xlbmd0aChDU1NUb0xlbmd0aENvbnZlcnNp
b25EYXRhJgogCiBpbmxpbmUgTGVuZ3RoU2l6ZSBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UmFk
aXVzKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7
Ci0gICAgYXV0byogcGFpciA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkucGFp
clZhbHVlKCk7Ci0gICAgaWYgKCFwYWlyIHx8ICFwYWlyLT5maXJzdCgpIHx8ICFwYWlyLT5zZWNv
bmQoKSkKLSAgICAgICAgcmV0dXJuIHsgeyAwLCBMZW5ndGhUeXBlOjpGaXhlZCB9LCB7IDAsIExl
bmd0aFR5cGU6OkZpeGVkIH0gfTsKKyAgICBMZW5ndGhTaXplIGZhbGxiYWNrTGVuZ3RoU2l6ZSA9
IHsgeyAwLCBMZW5ndGhUeXBlOjpGaXhlZCB9LCB7IDAsIExlbmd0aFR5cGU6OkZpeGVkIH0gfTsK
KyAgICBpZiAoIXZhbHVlLmlzVmFsdWVQYWlyKCkpCisgICAgICAgIHJldHVybiBmYWxsYmFja0xl
bmd0aFNpemU7CisgICAgCisgICAgYXV0byYgcGFpciA9IGRvd25jYXN0PENTU1ZhbHVlUGFpcj4o
dmFsdWUpOworICAgIGF1dG8gZmlyc3QgPSBwYWlyLmZpcnN0QXNQcmltaXRpdmUoKTsKKyAgICBh
dXRvIHNlY29uZCA9IHBhaXIuc2Vjb25kQXNQcmltaXRpdmUoKTsKKyAgICBpZiAoIWZpcnN0IHx8
ICFzZWNvbmQpCisgICAgICAgIHJldHVybiBmYWxsYmFja0xlbmd0aFNpemU7CiAKICAgICBDU1NU
b0xlbmd0aENvbnZlcnNpb25EYXRhIGNvbnZlcnNpb25EYXRhID0gYnVpbGRlclN0YXRlLmNzc1Rv
TGVuZ3RoQ29udmVyc2lvbkRhdGEoKTsKLSAgICBMZW5ndGhTaXplIHJhZGl1cyB7IGNvbnZlcnRU
b1JhZGl1c0xlbmd0aChjb252ZXJzaW9uRGF0YSwgKnBhaXItPmZpcnN0KCkpLCBjb252ZXJ0VG9S
YWRpdXNMZW5ndGgoY29udmVyc2lvbkRhdGEsICpwYWlyLT5zZWNvbmQoKSkgfTsKKyAgICBMZW5n
dGhTaXplIHJhZGl1cyB7IGNvbnZlcnRUb1JhZGl1c0xlbmd0aChjb252ZXJzaW9uRGF0YSwgKmZp
cnN0KSwgY29udmVydFRvUmFkaXVzTGVuZ3RoKGNvbnZlcnNpb25EYXRhLCAqc2Vjb25kKSB9Owog
CiAgICAgQVNTRVJUKCFyYWRpdXMud2lkdGguaXNOZWdhdGl2ZSgpKTsKICAgICBBU1NFUlQoIXJh
ZGl1cy5oZWlnaHQuaXNOZWdhdGl2ZSgpKTsKICAgICBpZiAocmFkaXVzLndpZHRoLmlzWmVybygp
IHx8IHJhZGl1cy5oZWlnaHQuaXNaZXJvKCkpCi0gICAgICAgIHJldHVybiB7IHsgMCwgTGVuZ3Ro
VHlwZTo6Rml4ZWQgfSwgeyAwLCBMZW5ndGhUeXBlOjpGaXhlZCB9IH07CisgICAgICAgIHJldHVy
biBmYWxsYmFja0xlbmd0aFNpemU7CiAKICAgICByZXR1cm4gcmFkaXVzOwogfQpAQCAtMzU5LDM5
ICszNjUsNDEgQEAgaW5saW5lIExlbmd0aCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VG8xMDBQ
ZXJjZW50TWludXNMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW4KIAogaW5saW5lIExlbmd0aCBCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25Db21wb25lbnRYKEJ1aWxkZXJTdGF0ZSYgYnVp
bGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGNvbnZlcnRQ
b3NpdGlvbkNvbXBvbmVudDxDU1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQ+KGJ1aWxkZXJTdGF0
ZSwgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSk7CisgICAgcmV0dXJuIGNvbnZl
cnRQb3NpdGlvbkNvbXBvbmVudDxDU1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQ+KGJ1aWxkZXJT
dGF0ZSwgdmFsdWUpOwogfQogCiBpbmxpbmUgTGVuZ3RoIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRQb3NpdGlvbkNvbXBvbmVudFkoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENT
U1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gY29udmVydFBvc2l0aW9uQ29tcG9uZW50PENT
U1ZhbHVlVG9wLCBDU1NWYWx1ZUJvdHRvbT4oYnVpbGRlclN0YXRlLCBkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4odmFsdWUpKTsKKyAgICByZXR1cm4gY29udmVydFBvc2l0aW9uQ29tcG9uZW50
PENTU1ZhbHVlVG9wLCBDU1NWYWx1ZUJvdHRvbT4oYnVpbGRlclN0YXRlLCB2YWx1ZSk7CiB9CiAK
IHRlbXBsYXRlPENTU1ZhbHVlSUQgY3NzVmFsdWVGb3IwLCBDU1NWYWx1ZUlEIGNzc1ZhbHVlRm9y
MTAwPgotaW5saW5lIExlbmd0aCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25Db21w
b25lbnQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVl
JiB2YWx1ZSkKK2lubGluZSBMZW5ndGggQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBvc2l0aW9u
Q29tcG9uZW50KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFs
dWUpCiB7CiAgICAgTGVuZ3RoIGxlbmd0aDsKIAogICAgIGF1dG8qIGxlbmd0aFZhbHVlID0gJnZh
bHVlOwogICAgIGJvb2wgcmVsYXRpdmVUb1RyYWlsaW5nRWRnZSA9IGZhbHNlOwogICAgIAotICAg
IGlmICh2YWx1ZS5pc1BhaXIoKSkgewotICAgICAgICBhdXRvJiBmaXJzdCA9ICp2YWx1ZS5wYWly
VmFsdWUoKS0+Zmlyc3QoKTsKLSAgICAgICAgaWYgKGZpcnN0LnZhbHVlSUQoKSA9PSBDU1NWYWx1
ZVJpZ2h0IHx8IGZpcnN0LnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUJvdHRvbSkKKyAgICBpZiAodmFs
dWUuaXNWYWx1ZVBhaXIoKSkgeworICAgICAgICBhdXRvJiBwYWlyID0gZG93bmNhc3Q8Q1NTVmFs
dWVQYWlyPih2YWx1ZSk7CisgICAgICAgIGF1dG8gZmlyc3QgPSBwYWlyLmZpcnN0QXNWYWx1ZUlE
KCk7CisgICAgICAgIGlmIChmaXJzdCA9PSBDU1NWYWx1ZVJpZ2h0IHx8IGZpcnN0ID09IENTU1Zh
bHVlQm90dG9tKQogICAgICAgICAgICAgcmVsYXRpdmVUb1RyYWlsaW5nRWRnZSA9IHRydWU7Ci0g
ICAgICAgIGxlbmd0aFZhbHVlID0gdmFsdWUucGFpclZhbHVlKCktPnNlY29uZCgpOwotICAgIH0K
LSAgICAKLSAgICBpZiAodmFsdWUuaXNWYWx1ZUlEKCkpIHsKLSAgICAgICAgc3dpdGNoICh2YWx1
ZS52YWx1ZUlEKCkpIHsKLSAgICAgICAgY2FzZSBjc3NWYWx1ZUZvcjA6Ci0gICAgICAgICAgICBy
ZXR1cm4gTGVuZ3RoKDAsIExlbmd0aFR5cGU6OlBlcmNlbnQpOwotICAgICAgICBjYXNlIGNzc1Zh
bHVlRm9yMTAwOgotICAgICAgICAgICAgcmV0dXJuIExlbmd0aCgxMDAsIExlbmd0aFR5cGU6OlBl
cmNlbnQpOwotICAgICAgICBjYXNlIENTU1ZhbHVlQ2VudGVyOgotICAgICAgICAgICAgcmV0dXJu
IExlbmd0aCg1MCwgTGVuZ3RoVHlwZTo6UGVyY2VudCk7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgbGVuZ3RoVmFsdWUgPSBwYWly
LnNlY29uZEFzUHJpbWl0aXZlKCkuZ2V0KCk7CisgICAgfSBlbHNlIGlmICh2YWx1ZS5pc1ByaW1p
dGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNW
YWx1ZUlEKCkpIHsKKyAgICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgp
KSB7CisgICAgICAgICAgICBjYXNlIGNzc1ZhbHVlRm9yMDoKKyAgICAgICAgICAgICAgICByZXR1
cm4gTGVuZ3RoKDAsIExlbmd0aFR5cGU6OlBlcmNlbnQpOworICAgICAgICAgICAgY2FzZSBjc3NW
YWx1ZUZvcjEwMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gTGVuZ3RoKDEwMCwgTGVuZ3RoVHlw
ZTo6UGVyY2VudCk7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlQ2VudGVyOgorICAgICAgICAg
ICAgICAgIHJldHVybiBMZW5ndGgoNTAsIExlbmd0aFR5cGU6OlBlcmNlbnQpOworICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICAgICAgCkBAIC00MDUsMTMgKzQxMywxNyBA
QCBpbmxpbmUgTGVuZ3RoIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbkNvbXBvbmVu
dChCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdAogCiBpbmxpbmUgTGVuZ3RoUG9pbnQgQnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydE9iamVjdFBvc2l0aW9uKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
LCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwotICAgIFBhaXIqIHBhaXIgPSBwcmlt
aXRpdmVWYWx1ZS5wYWlyVmFsdWUoKTsKLSAgICBpZiAoIXBhaXIgfHwgIXBhaXItPmZpcnN0KCkg
fHwgIXBhaXItPnNlY29uZCgpKQorICAgIGlmICghdmFsdWUuaXNWYWx1ZVBhaXIoKSkKKyAgICAg
ICAgcmV0dXJuIFJlbmRlclN0eWxlOjppbml0aWFsT2JqZWN0UG9zaXRpb24oKTsKKyAgICAKKyAg
ICBhdXRvJiBwYWlyID0gZG93bmNhc3Q8Q1NTVmFsdWVQYWlyPih2YWx1ZSk7CisgICAgYXV0byBm
aXJzdCA9IHBhaXIuZmlyc3QoKTsKKyAgICBhdXRvIHNlY29uZCA9IHBhaXIuc2Vjb25kKCk7Cisg
ICAgaWYgKCFmaXJzdCB8fCAhc2Vjb25kKQogICAgICAgICByZXR1cm4gUmVuZGVyU3R5bGU6Omlu
aXRpYWxPYmplY3RQb3NpdGlvbigpOwogCi0gICAgTGVuZ3RoIGxlbmd0aFggPSBjb252ZXJ0UG9z
aXRpb25Db21wb25lbnQ8Q1NTVmFsdWVMZWZ0LCBDU1NWYWx1ZVJpZ2h0PihidWlsZGVyU3RhdGUs
ICpwYWlyLT5maXJzdCgpKTsKLSAgICBMZW5ndGggbGVuZ3RoWSA9IGNvbnZlcnRQb3NpdGlvbkNv
bXBvbmVudDxDU1NWYWx1ZVRvcCwgQ1NTVmFsdWVCb3R0b20+KGJ1aWxkZXJTdGF0ZSwgKnBhaXIt
PnNlY29uZCgpKTsKKyAgICBMZW5ndGggbGVuZ3RoWCA9IGNvbnZlcnRQb3NpdGlvbkNvbXBvbmVu
dDxDU1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQ+KGJ1aWxkZXJTdGF0ZSwgKmZpcnN0KTsKKyAg
ICBMZW5ndGggbGVuZ3RoWSA9IGNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudDxDU1NWYWx1ZVRvcCwg
Q1NTVmFsdWVCb3R0b20+KGJ1aWxkZXJTdGF0ZSwgKnNlY29uZCk7CiAKICAgICByZXR1cm4gTGVu
Z3RoUG9pbnQobGVuZ3RoWCwgbGVuZ3RoWSk7CiB9CkBAIC03NzMsMTcgKzc4NSwxNiBAQCBpbmxp
bmUgUmVmUHRyPFN0eWxlUmVmbGVjdGlvbj4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFJlZmxl
Y3Rpb24oQnVpbGRlclN0YXRlJgogCiBpbmxpbmUgSW50U2l6ZSBCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0SW5pdGlhbExldHRlcihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUp
CiB7Ci0gICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpOwotCi0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1
ZU5vcm1hbCkKKyAgICBpZiAodmFsdWUuaXNQcmltaXRpdmVWYWx1ZSgpICYmIGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKQogICAg
ICAgICByZXR1cm4gSW50U2l6ZSgpOwogCi0gICAgUGFpciogcGFpciA9IHByaW1pdGl2ZVZhbHVl
LnBhaXJWYWx1ZSgpOwotICAgIEFTU0VSVChwYWlyKTsKLSAgICBBU1NFUlQocGFpci0+Zmlyc3Qo
KSk7Ci0gICAgQVNTRVJUKHBhaXItPnNlY29uZCgpKTsKKyAgICBhdXRvJiBwYWlyID0gZG93bmNh
c3Q8Q1NTVmFsdWVQYWlyPih2YWx1ZSk7CisgICAgYXV0byBmaXJzdCA9IHBhaXIuZmlyc3RBc1By
aW1pdGl2ZSgpOworICAgIGF1dG8gc2Vjb25kID0gcGFpci5zZWNvbmRBc1ByaW1pdGl2ZSgpOwor
ICAgIEFTU0VSVChmaXJzdCk7CisgICAgQVNTRVJUKHNlY29uZCk7CiAKLSAgICByZXR1cm4gSW50
U2l6ZShwYWlyLT5maXJzdCgpLT5pbnRWYWx1ZSgpLCBwYWlyLT5zZWNvbmQoKS0+aW50VmFsdWUo
KSk7CisgICAgcmV0dXJuIEludFNpemUoZmlyc3QtPmludFZhbHVlKCksIHNlY29uZC0+aW50VmFs
dWUoKSk7CiB9CiAKIGlubGluZSBmbG9hdCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dFN0
cm9rZVdpZHRoKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFs
dWUpCkBAIC0xNDgwLDIxICsxNDkxLDI0IEBAIGlubGluZSBDb2xvciBCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0U1ZHQ29sb3IoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0CiBpbmxp
bmUgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U2VsZk9y
RGVmYXVsdEFsaWdubWVudERhdGEoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVl
KQogewogICAgIFN0eWxlU2VsZkFsaWdubWVudERhdGEgYWxpZ25tZW50RGF0YSA9IFJlbmRlclN0
eWxlOjppbml0aWFsU2VsZkFsaWdubWVudCgpOwotICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0g
ZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBpZiAoUGFpciogcGFpclZh
bHVlID0gcHJpbWl0aXZlVmFsdWUucGFpclZhbHVlKCkpIHsKLSAgICAgICAgaWYgKHBhaXJWYWx1
ZS0+Zmlyc3QoKS0+dmFsdWVJRCgpID09IENTU1ZhbHVlTGVnYWN5KSB7CisgICAgaWYgKHZhbHVl
LmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgYWxpZ25tZW50RGF0YS5zZXRQb3NpdGlvbihk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKTsKKyAgICBlbHNlIGlmICh2YWx1ZS5p
c1ZhbHVlUGFpcigpKSB7CisgICAgICAgIGF1dG8mIHBhaXIgPSBkb3duY2FzdDxDU1NWYWx1ZVBh
aXI+KHZhbHVlKTsKKyAgICAgICAgYXV0byBmaXJzdEFzVmFsdWVJRCA9IHBhaXIuZmlyc3RBc1Zh
bHVlSUQoKTsKKyAgICAgICAgaWYgKGZpcnN0QXNWYWx1ZUlEID09IENTU1ZhbHVlTGVnYWN5KSB7
CiAgICAgICAgICAgICBhbGlnbm1lbnREYXRhLnNldFBvc2l0aW9uVHlwZShJdGVtUG9zaXRpb25U
eXBlOjpMZWdhY3kpOwotICAgICAgICAgICAgYWxpZ25tZW50RGF0YS5zZXRQb3NpdGlvbigqcGFp
clZhbHVlLT5zZWNvbmQoKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAocGFpclZhbHVlLT5maXJzdCgp
LT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVGaXJzdCkKKyAgICAgICAgICAgIGFsaWdubWVudERhdGEu
c2V0UG9zaXRpb24oKnBhaXIuc2Vjb25kQXNQcmltaXRpdmUoKSk7CisgICAgICAgIH0gZWxzZSBp
ZiAoZmlyc3RBc1ZhbHVlSUQgPT0gQ1NTVmFsdWVGaXJzdCkKICAgICAgICAgICAgIGFsaWdubWVu
dERhdGEuc2V0UG9zaXRpb24oSXRlbVBvc2l0aW9uOjpCYXNlbGluZSk7Ci0gICAgICAgIGVsc2Ug
aWYgKHBhaXJWYWx1ZS0+Zmlyc3QoKS0+dmFsdWVJRCgpID09IENTU1ZhbHVlTGFzdCkKKyAgICAg
ICAgZWxzZSBpZiAoZmlyc3RBc1ZhbHVlSUQgPT0gQ1NTVmFsdWVMYXN0KQogICAgICAgICAgICAg
YWxpZ25tZW50RGF0YS5zZXRQb3NpdGlvbihJdGVtUG9zaXRpb246Okxhc3RCYXNlbGluZSk7CiAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgYWxpZ25tZW50RGF0YS5zZXRPdmVyZmxvdygqcGFp
clZhbHVlLT5maXJzdCgpKTsKLSAgICAgICAgICAgIGFsaWdubWVudERhdGEuc2V0UG9zaXRpb24o
KnBhaXJWYWx1ZS0+c2Vjb25kKCkpOworICAgICAgICAgICAgYWxpZ25tZW50RGF0YS5zZXRPdmVy
ZmxvdygqcGFpci5maXJzdEFzUHJpbWl0aXZlKCkpOworICAgICAgICAgICAgYWxpZ25tZW50RGF0
YS5zZXRQb3NpdGlvbigqcGFpci5zZWNvbmRBc1ByaW1pdGl2ZSgpKTsKICAgICAgICAgfQotICAg
IH0gZWxzZQotICAgICAgICBhbGlnbm1lbnREYXRhLnNldFBvc2l0aW9uKHByaW1pdGl2ZVZhbHVl
KTsKKyAgICB9CisgICAgCiAgICAgcmV0dXJuIGFsaWdubWVudERhdGE7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckN1c3RvbS5oIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKaW5kZXggNWZmY2U1ZmIwYjVkYzAyZWUx
Y2JjMTk1MzY3Nzk2ODNlMDUyYWJkNi4uZDk4ODk5MjQyMzBkZjU5YzUyZDA3MTYxNzE4YWJjY2Qx
MTMxNWFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3Vz
dG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKQEAg
LTEzMTYsOSArMTMxNiw5IEBAIGlubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVD
b3VudGVyKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1CiAgICAgICAgIHJldHVy
bjsKIAogICAgIGZvciAoYXV0byYgaXRlbSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUp
KSB7Ci0gICAgICAgIFBhaXIqIHBhaXIgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oaXRl
bS5nZXQoKSkucGFpclZhbHVlKCk7Ci0gICAgICAgIEF0b21TdHJpbmcgaWRlbnRpZmllciA9IHBh
aXItPmZpcnN0KCktPnN0cmluZ1ZhbHVlKCk7Ci0gICAgICAgIGludCB2YWx1ZSA9IHBhaXItPnNl
Y29uZCgpLT5pbnRWYWx1ZSgpOworICAgICAgICBhdXRvJiBwYWlyID0gZG93bmNhc3Q8Q1NTVmFs
dWVQYWlyPihpdGVtLmdldCgpKTsKKyAgICAgICAgQXRvbVN0cmluZyBpZGVudGlmaWVyID0gcGFp
ci5maXJzdEFzUHJpbWl0aXZlKCktPnN0cmluZ1ZhbHVlKCk7CisgICAgICAgIGludCB2YWx1ZSA9
IHBhaXIuc2Vjb25kQXNQcmltaXRpdmUoKS0+aW50VmFsdWUoKTsKICAgICAgICAgYXV0byYgZGly
ZWN0aXZlcyA9IG1hcC5hZGQoaWRlbnRpZmllciwgQ291bnRlckRpcmVjdGl2ZXMgeyB9KS5pdGVy
YXRvci0+dmFsdWU7CiAgICAgICAgIGlmIChjb3VudGVyQmVoYXZpb3IgPT0gUmVzZXQpCiAgICAg
ICAgICAgICBkaXJlY3RpdmVzLnJlc2V0VmFsdWUgPSB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVSZXNvbHZlci5jcHAKaW5kZXggMzRlODAyZmFmYzE3YTc1N2YyMjc2MTJjMzBmMmM4YzIw
ZTlhOTg3NS4uYzY2YWE2MGEyNzVkOGEyNjdkY2NhZGE5MTYxYmU1MTBkMGU2ZWNlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTUxLDcgKzUxLDYgQEAKICNpbmNs
dWRlICJNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgi
CiAjaW5jbHVkZSAiUGFnZVJ1bGVDb2xsZWN0b3IuaCIKLSNpbmNsdWRlICJQYWlyLmgiCiAjaW5j
bHVkZSAiUmVuZGVyU2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMu
aCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTBmY2NhNWIzY2NmYjI4NWVhNTgw
OTI3ZGQ1NDE0MDAzNTM0MTk0Yy4uZTRlZDNhYjc5ODY0NDJlZTdlMTdhNDViNDAzNTEyOTVkOTE5
MTU2YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTAzLTI0ICBUeWxlciBXaWxjb2NrICA8
dHdpbGNvLm9AcHJvdG9ubWFpbC5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgUGFpci5oIHRvIENT
U1ZhbHVlUGFpci5oCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjMyMDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBQYWlyIHZhbHVlcyB1c2VkIHRvIGJlIHJlcHJlc2VudGVkIGJ5IENTU1ByaW1pdGl2ZVZh
bHVlcywgYnV0IG5vdworICAgICAgICBhcmUgcmVwcmVzZW50ZWQgYnkgQ1NTVmFsdWVQYWlyLiAg
Q2hhbmdlIHRlc3QgZXhwZWN0YXRpb25zIHRvIGV4cGVjdAorICAgICAgICBDU1NWYWx1ZVBhaXIn
cyBwYXJlbnQgY2xhc3MsIENTU1ZhbHVlLgorCisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9zdmcv
Y3NzL2dldENvbXB1dGVkU3R5bGUtYmFzaWMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9zdmcvY3NzL2dldENvbXB1dGVkU3R5bGUtYmFzaWMtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9zdmcvY3NzL2dldENvbXB1dGVkU3R5bGUtYmFzaWMtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHN2Zy9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS1iYXNpYy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgIEV4cGVjdCBDU1NWYWx1ZSBpbnN0ZWFkIG9mIENTU1ZhbHVlUGFpciBm
b3IgcHJvcGVydGllcyB3aG9zZQorICAgICAgICB2YWx1ZXMgYXJlIHBhaXJzLgorCiAyMDIxLTAz
LTI0ICBDaHJpcyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR0xJQl0gaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9vZmZzY3JlZW4vbWFudWFs
L2RyYXctZ2VuZXJpYy1mYW1pbHkvMmQudGV4dC5kcmF3LmdlbmVyaWMuZmFtaWx5LncuaHRtbCBp
cyBmbGFreSBmYWlsaW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL3N2
Zy9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS1iYXNpYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9nbGliL3N2Zy9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS1iYXNpYy1leHBlY3RlZC50eHQK
aW5kZXggNGVmOTkxNzIyNDIwNTE5NjY5N2ZlODJmN2Y2YjU4NjYwZTBmYWRiZS4uYmQyNjhhNDYz
NzU2NWQyM2I4ZDA1M2Y4MWUxMzQxN2I3ZjUxYTE1MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ2xpYi9zdmcvY3NzL2dldENvbXB1dGVkU3R5bGUtYmFzaWMtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvc3ZnL2Nzcy9nZXRDb21wdXRlZFN0eWxl
LWJhc2ljLWV4cGVjdGVkLnR4dApAQCAtMzcsNyArMzcsNyBAQCByZWN0OiBzdHlsZS5nZXRQcm9w
ZXJ0eUNTU1ZhbHVlKGJvcmRlci1jb2xsYXBzZSkgOiBbb2JqZWN0IENTU1ByaW1pdGl2ZVZhbHVl
XQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShib3JkZXItaW1hZ2Utb3V0c2V0KSA6IDAK
IHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoYm9yZGVyLWltYWdlLW91dHNldCkgOiBb
b2JqZWN0IENTU1ByaW1pdGl2ZVZhbHVlXQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShi
b3JkZXItaW1hZ2UtcmVwZWF0KSA6IHN0cmV0Y2gKLXJlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NT
VmFsdWUoYm9yZGVyLWltYWdlLXJlcGVhdCkgOiBbb2JqZWN0IENTU1ByaW1pdGl2ZVZhbHVlXQor
cmVjdDogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShib3JkZXItaW1hZ2UtcmVwZWF0KSA6IFtv
YmplY3QgQ1NTVmFsdWVdCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGJvcmRlci1pbWFn
ZS1zbGljZSkgOiAxMDAlCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKGJvcmRlci1p
bWFnZS1zbGljZSkgOiBbb2JqZWN0IENTU1ZhbHVlXQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlW
YWx1ZShib3JkZXItaW1hZ2Utc291cmNlKSA6IG5vbmUKQEAgLTQ3MSw3ICs0NzEsNyBAQCByZWN0
OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2UpIDogW29i
amVjdCBDU1NQcmltaXRpdmVWYQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0
LW1hc2stYm94LWltYWdlLW91dHNldCkgOiAwCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1Zh
bHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2Utb3V0c2V0KSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZl
VmFsdWVdCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1h
Z2UtcmVwZWF0KSA6IHN0cmV0Y2gKLXJlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoLXdl
YmtpdC1tYXNrLWJveC1pbWFnZS1yZXBlYXQpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0K
K3JlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1y
ZXBlYXQpIDogW29iamVjdCBDU1NWYWx1ZV0KIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUo
LXdlYmtpdC1tYXNrLWJveC1pbWFnZS1zbGljZSkgOiAwIGZpbGwKIHJlY3Q6IHN0eWxlLmdldFBy
b3BlcnR5Q1NTVmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1zbGljZSkgOiBbb2JqZWN0IENT
U1ZhbHVlXQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0LW1hc2stYm94LWlt
YWdlLXNvdXJjZSkgOiBub25lCkBAIC01NjEsNyArNTYxLDcgQEAgZzogc3R5bGUuZ2V0UHJvcGVy
dHlDU1NWYWx1ZShib3JkZXItY29sbGFwc2UpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0K
IGc6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoYm9yZGVyLWltYWdlLW91dHNldCkgOiAwCiBnOiBz
dHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKGJvcmRlci1pbWFnZS1vdXRzZXQpIDogW29iamVjdCBD
U1NQcmltaXRpdmVWYWx1ZV0KIGc6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoYm9yZGVyLWltYWdl
LXJlcGVhdCkgOiBzdHJldGNoCi1nOiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKGJvcmRlci1p
bWFnZS1yZXBlYXQpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KK2c6IHN0eWxlLmdldFBy
b3BlcnR5Q1NTVmFsdWUoYm9yZGVyLWltYWdlLXJlcGVhdCkgOiBbb2JqZWN0IENTU1ZhbHVlXQog
Zzogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShib3JkZXItaW1hZ2Utc2xpY2UpIDogMTAwJQogZzog
c3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShib3JkZXItaW1hZ2Utc2xpY2UpIDogW29iamVjdCBD
U1NWYWx1ZV0KIGc6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoYm9yZGVyLWltYWdlLXNvdXJjZSkg
OiBub25lCkBAIC05OTUsNyArOTk1LDcgQEAgZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgt
d2Via2l0LW1hc2stYm94LWltYWdlKSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmFsdWUKIGc6IHN0
eWxlLmdldFByb3BlcnR5VmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1vdXRzZXQpIDogMAog
Zzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdlLW91dHNl
dCkgOiBbb2JqZWN0IENTU1ByaW1pdGl2ZVZhbHVlXQogZzogc3R5bGUuZ2V0UHJvcGVydHlWYWx1
ZSgtd2Via2l0LW1hc2stYm94LWltYWdlLXJlcGVhdCkgOiBzdHJldGNoCi1nOiBzdHlsZS5nZXRQ
cm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2UtcmVwZWF0KSA6IFtvYmplY3Qg
Q1NTUHJpbWl0aXZlVmFsdWVdCitnOiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQt
bWFzay1ib3gtaW1hZ2UtcmVwZWF0KSA6IFtvYmplY3QgQ1NTVmFsdWVdCiBnOiBzdHlsZS5nZXRQ
cm9wZXJ0eVZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2Utc2xpY2UpIDogMCBmaWxsCiBnOiBz
dHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2Utc2xpY2UpIDog
W29iamVjdCBDU1NWYWx1ZV0KIGc6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoLXdlYmtpdC1tYXNr
LWJveC1pbWFnZS1zb3VyY2UpIDogbm9uZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vaW9zL3N2Zy9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS1iYXNpYy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9pb3Mvc3ZnL2Nzcy9nZXRDb21wdXRlZFN0eWxlLWJhc2ljLWV4cGVj
dGVkLnR4dAppbmRleCA0ZWY5OTE3MjI0MjA1MTk2Njk3ZmU4MmY3ZjZiNTg2NjBlMGZhZGJlLi5i
ZDI2OGE0NjM3NTY1ZDIzYjhkMDUzZjgxZTEzNDE3YjdmNTFhMTUyIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9pb3Mvc3ZnL2Nzcy9nZXRDb21wdXRlZFN0eWxlLWJhc2ljLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mvc3ZnL2Nzcy9nZXRDb21wdXRl
ZFN0eWxlLWJhc2ljLWV4cGVjdGVkLnR4dApAQCAtMzcsNyArMzcsNyBAQCByZWN0OiBzdHlsZS5n
ZXRQcm9wZXJ0eUNTU1ZhbHVlKGJvcmRlci1jb2xsYXBzZSkgOiBbb2JqZWN0IENTU1ByaW1pdGl2
ZVZhbHVlXQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShib3JkZXItaW1hZ2Utb3V0c2V0
KSA6IDAKIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoYm9yZGVyLWltYWdlLW91dHNl
dCkgOiBbb2JqZWN0IENTU1ByaW1pdGl2ZVZhbHVlXQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlW
YWx1ZShib3JkZXItaW1hZ2UtcmVwZWF0KSA6IHN0cmV0Y2gKLXJlY3Q6IHN0eWxlLmdldFByb3Bl
cnR5Q1NTVmFsdWUoYm9yZGVyLWltYWdlLXJlcGVhdCkgOiBbb2JqZWN0IENTU1ByaW1pdGl2ZVZh
bHVlXQorcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShib3JkZXItaW1hZ2UtcmVwZWF0
KSA6IFtvYmplY3QgQ1NTVmFsdWVdCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGJvcmRl
ci1pbWFnZS1zbGljZSkgOiAxMDAlCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKGJv
cmRlci1pbWFnZS1zbGljZSkgOiBbb2JqZWN0IENTU1ZhbHVlXQogcmVjdDogc3R5bGUuZ2V0UHJv
cGVydHlWYWx1ZShib3JkZXItaW1hZ2Utc291cmNlKSA6IG5vbmUKQEAgLTQ3MSw3ICs0NzEsNyBA
QCByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2Up
IDogW29iamVjdCBDU1NQcmltaXRpdmVWYQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgt
d2Via2l0LW1hc2stYm94LWltYWdlLW91dHNldCkgOiAwCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0
eUNTU1ZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2Utb3V0c2V0KSA6IFtvYmplY3QgQ1NTUHJp
bWl0aXZlVmFsdWVdCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtbWFzay1i
b3gtaW1hZ2UtcmVwZWF0KSA6IHN0cmV0Y2gKLXJlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFs
dWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1yZXBlYXQpIDogW29iamVjdCBDU1NQcmltaXRpdmVW
YWx1ZV0KK3JlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoLXdlYmtpdC1tYXNrLWJveC1p
bWFnZS1yZXBlYXQpIDogW29iamVjdCBDU1NWYWx1ZV0KIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5
VmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1zbGljZSkgOiAwIGZpbGwKIHJlY3Q6IHN0eWxl
LmdldFByb3BlcnR5Q1NTVmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1zbGljZSkgOiBbb2Jq
ZWN0IENTU1ZhbHVlXQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0LW1hc2st
Ym94LWltYWdlLXNvdXJjZSkgOiBub25lCkBAIC01NjEsNyArNTYxLDcgQEAgZzogc3R5bGUuZ2V0
UHJvcGVydHlDU1NWYWx1ZShib3JkZXItY29sbGFwc2UpIDogW29iamVjdCBDU1NQcmltaXRpdmVW
YWx1ZV0KIGc6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoYm9yZGVyLWltYWdlLW91dHNldCkgOiAw
CiBnOiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKGJvcmRlci1pbWFnZS1vdXRzZXQpIDogW29i
amVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KIGc6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoYm9yZGVy
LWltYWdlLXJlcGVhdCkgOiBzdHJldGNoCi1nOiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKGJv
cmRlci1pbWFnZS1yZXBlYXQpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KK2c6IHN0eWxl
LmdldFByb3BlcnR5Q1NTVmFsdWUoYm9yZGVyLWltYWdlLXJlcGVhdCkgOiBbb2JqZWN0IENTU1Zh
bHVlXQogZzogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShib3JkZXItaW1hZ2Utc2xpY2UpIDogMTAw
JQogZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShib3JkZXItaW1hZ2Utc2xpY2UpIDogW29i
amVjdCBDU1NWYWx1ZV0KIGc6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoYm9yZGVyLWltYWdlLXNv
dXJjZSkgOiBub25lCkBAIC05OTUsNyArOTk1LDcgQEAgZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NW
YWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdlKSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmFsdWUK
IGc6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1vdXRzZXQp
IDogMAogZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdl
LW91dHNldCkgOiBbb2JqZWN0IENTU1ByaW1pdGl2ZVZhbHVlXQogZzogc3R5bGUuZ2V0UHJvcGVy
dHlWYWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdlLXJlcGVhdCkgOiBzdHJldGNoCi1nOiBzdHls
ZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2UtcmVwZWF0KSA6IFtv
YmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVdCitnOiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13
ZWJraXQtbWFzay1ib3gtaW1hZ2UtcmVwZWF0KSA6IFtvYmplY3QgQ1NTVmFsdWVdCiBnOiBzdHls
ZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2Utc2xpY2UpIDogMCBmaWxs
CiBnOiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2Utc2xp
Y2UpIDogW29iamVjdCBDU1NWYWx1ZV0KIGc6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoLXdlYmtp
dC1tYXNrLWJveC1pbWFnZS1zb3VyY2UpIDogbm9uZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL3N2Zy9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS1iYXNpYy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2Nzcy9nZXRDb21wdXRlZFN0eWxlLWJhc2lj
LWV4cGVjdGVkLnR4dAppbmRleCA0ZWY5OTE3MjI0MjA1MTk2Njk3ZmU4MmY3ZjZiNTg2NjBlMGZh
ZGJlLi5iZDI2OGE0NjM3NTY1ZDIzYjhkMDUzZjgxZTEzNDE3YjdmNTFhMTUyIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2Nzcy9nZXRDb21wdXRlZFN0eWxlLWJhc2lj
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2Nzcy9nZXRD
b21wdXRlZFN0eWxlLWJhc2ljLWV4cGVjdGVkLnR4dApAQCAtMzcsNyArMzcsNyBAQCByZWN0OiBz
dHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKGJvcmRlci1jb2xsYXBzZSkgOiBbb2JqZWN0IENTU1By
aW1pdGl2ZVZhbHVlXQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShib3JkZXItaW1hZ2Ut
b3V0c2V0KSA6IDAKIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoYm9yZGVyLWltYWdl
LW91dHNldCkgOiBbb2JqZWN0IENTU1ByaW1pdGl2ZVZhbHVlXQogcmVjdDogc3R5bGUuZ2V0UHJv
cGVydHlWYWx1ZShib3JkZXItaW1hZ2UtcmVwZWF0KSA6IHN0cmV0Y2gKLXJlY3Q6IHN0eWxlLmdl
dFByb3BlcnR5Q1NTVmFsdWUoYm9yZGVyLWltYWdlLXJlcGVhdCkgOiBbb2JqZWN0IENTU1ByaW1p
dGl2ZVZhbHVlXQorcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShib3JkZXItaW1hZ2Ut
cmVwZWF0KSA6IFtvYmplY3QgQ1NTVmFsdWVdCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVl
KGJvcmRlci1pbWFnZS1zbGljZSkgOiAxMDAlCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1Zh
bHVlKGJvcmRlci1pbWFnZS1zbGljZSkgOiBbb2JqZWN0IENTU1ZhbHVlXQogcmVjdDogc3R5bGUu
Z2V0UHJvcGVydHlWYWx1ZShib3JkZXItaW1hZ2Utc291cmNlKSA6IG5vbmUKQEAgLTQ3MSw3ICs0
NzEsNyBAQCByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtbWFzay1ib3gt
aW1hZ2UpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlW
YWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdlLW91dHNldCkgOiAwCiByZWN0OiBzdHlsZS5nZXRQ
cm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2Utb3V0c2V0KSA6IFtvYmplY3Qg
Q1NTUHJpbWl0aXZlVmFsdWVdCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQt
bWFzay1ib3gtaW1hZ2UtcmVwZWF0KSA6IHN0cmV0Y2gKLXJlY3Q6IHN0eWxlLmdldFByb3BlcnR5
Q1NTVmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1yZXBlYXQpIDogW29iamVjdCBDU1NQcmlt
aXRpdmVWYWx1ZV0KK3JlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoLXdlYmtpdC1tYXNr
LWJveC1pbWFnZS1yZXBlYXQpIDogW29iamVjdCBDU1NWYWx1ZV0KIHJlY3Q6IHN0eWxlLmdldFBy
b3BlcnR5VmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1zbGljZSkgOiAwIGZpbGwKIHJlY3Q6
IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1zbGljZSkg
OiBbb2JqZWN0IENTU1ZhbHVlXQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0
LW1hc2stYm94LWltYWdlLXNvdXJjZSkgOiBub25lCkBAIC01NjEsNyArNTYxLDcgQEAgZzogc3R5
bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShib3JkZXItY29sbGFwc2UpIDogW29iamVjdCBDU1NQcmlt
aXRpdmVWYWx1ZV0KIGc6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoYm9yZGVyLWltYWdlLW91dHNl
dCkgOiAwCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKGJvcmRlci1pbWFnZS1vdXRzZXQp
IDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KIGc6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUo
Ym9yZGVyLWltYWdlLXJlcGVhdCkgOiBzdHJldGNoCi1nOiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1Zh
bHVlKGJvcmRlci1pbWFnZS1yZXBlYXQpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KK2c6
IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoYm9yZGVyLWltYWdlLXJlcGVhdCkgOiBbb2JqZWN0
IENTU1ZhbHVlXQogZzogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShib3JkZXItaW1hZ2Utc2xpY2Up
IDogMTAwJQogZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShib3JkZXItaW1hZ2Utc2xpY2Up
IDogW29iamVjdCBDU1NWYWx1ZV0KIGc6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoYm9yZGVyLWlt
YWdlLXNvdXJjZSkgOiBub25lCkBAIC05OTUsNyArOTk1LDcgQEAgZzogc3R5bGUuZ2V0UHJvcGVy
dHlDU1NWYWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdlKSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZl
VmFsdWUKIGc6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1v
dXRzZXQpIDogMAogZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0LW1hc2stYm94
LWltYWdlLW91dHNldCkgOiBbb2JqZWN0IENTU1ByaW1pdGl2ZVZhbHVlXQogZzogc3R5bGUuZ2V0
UHJvcGVydHlWYWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdlLXJlcGVhdCkgOiBzdHJldGNoCi1n
OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2UtcmVwZWF0
KSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVdCitnOiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1Zh
bHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2UtcmVwZWF0KSA6IFtvYmplY3QgQ1NTVmFsdWVdCiBn
OiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2Utc2xpY2UpIDog
MCBmaWxsCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1h
Z2Utc2xpY2UpIDogW29iamVjdCBDU1NWYWx1ZV0KIGc6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUo
LXdlYmtpdC1tYXNrLWJveC1pbWFnZS1zb3VyY2UpIDogbm9uZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3ZnL2Nzcy9nZXRDb21wdXRlZFN0eWxlLWJhc2ljLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3N2Zy9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS1iYXNpYy1leHBlY3RlZC50eHQKaW5kZXgg
NDAwNjdjMzA5NDE1ZjIyMjBhYTYzODk3YThmMGE2Mzc4NzRhZWUyNi4uODhlNDUwMmI2NzE1NWZl
ZmQxNjk2OTRhMTQ2ZGNiOGZiNTQ5MjFjYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3ZnL2Nz
cy9nZXRDb21wdXRlZFN0eWxlLWJhc2ljLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9z
dmcvY3NzL2dldENvbXB1dGVkU3R5bGUtYmFzaWMtZXhwZWN0ZWQudHh0CkBAIC0zNyw3ICszNyw3
IEBAIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoYm9yZGVyLWNvbGxhcHNlKSA6IFtv
YmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVdCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGJv
cmRlci1pbWFnZS1vdXRzZXQpIDogMHB4CiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVl
KGJvcmRlci1pbWFnZS1vdXRzZXQpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KIHJlY3Q6
IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoYm9yZGVyLWltYWdlLXJlcGVhdCkgOiBzdHJldGNoCi1y
ZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKGJvcmRlci1pbWFnZS1yZXBlYXQpIDogW29i
amVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KK3JlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUo
Ym9yZGVyLWltYWdlLXJlcGVhdCkgOiBbb2JqZWN0IENTU1ZhbHVlXQogcmVjdDogc3R5bGUuZ2V0
UHJvcGVydHlWYWx1ZShib3JkZXItaW1hZ2Utc2xpY2UpIDogMTAwJQogcmVjdDogc3R5bGUuZ2V0
UHJvcGVydHlDU1NWYWx1ZShib3JkZXItaW1hZ2Utc2xpY2UpIDogW29iamVjdCBDU1NWYWx1ZV0K
IHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoYm9yZGVyLWltYWdlLXNvdXJjZSkgOiBub25l
CkBAIC00NjksNyArNDY5LDcgQEAgcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgtd2Vi
a2l0LW1hc2stYm94LWltYWdlKSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmEKIHJlY3Q6IHN0eWxl
LmdldFByb3BlcnR5VmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1vdXRzZXQpIDogMHB4CiBy
ZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2Utb3V0
c2V0KSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVdCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0
eVZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2UtcmVwZWF0KSA6IHN0cmV0Y2gKLXJlY3Q6IHN0
eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1yZXBlYXQpIDog
W29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KK3JlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFs
dWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1yZXBlYXQpIDogW29iamVjdCBDU1NWYWx1ZV0KIHJl
Y3Q6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1zbGljZSkg
OiAwIGZpbGwKIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoLXdlYmtpdC1tYXNrLWJv
eC1pbWFnZS1zbGljZSkgOiBbb2JqZWN0IENTU1ZhbHVlXQogcmVjdDogc3R5bGUuZ2V0UHJvcGVy
dHlWYWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdlLXNvdXJjZSkgOiBub25lCkBAIC01NTksNyAr
NTU5LDcgQEAgZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShib3JkZXItY29sbGFwc2UpIDog
W29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KIGc6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoYm9y
ZGVyLWltYWdlLW91dHNldCkgOiAwcHgKIGc6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoYm9y
ZGVyLWltYWdlLW91dHNldCkgOiBbb2JqZWN0IENTU1ByaW1pdGl2ZVZhbHVlXQogZzogc3R5bGUu
Z2V0UHJvcGVydHlWYWx1ZShib3JkZXItaW1hZ2UtcmVwZWF0KSA6IHN0cmV0Y2gKLWc6IHN0eWxl
LmdldFByb3BlcnR5Q1NTVmFsdWUoYm9yZGVyLWltYWdlLXJlcGVhdCkgOiBbb2JqZWN0IENTU1By
aW1pdGl2ZVZhbHVlXQorZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShib3JkZXItaW1hZ2Ut
cmVwZWF0KSA6IFtvYmplY3QgQ1NTVmFsdWVdCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGJv
cmRlci1pbWFnZS1zbGljZSkgOiAxMDAlCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKGJv
cmRlci1pbWFnZS1zbGljZSkgOiBbb2JqZWN0IENTU1ZhbHVlXQogZzogc3R5bGUuZ2V0UHJvcGVy
dHlWYWx1ZShib3JkZXItaW1hZ2Utc291cmNlKSA6IG5vbmUKQEAgLTk5NSw3ICs5OTUsNyBAQCBn
OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2UtcmVwZWF0
KSA6IFtvYmplY3QgQ1NTUHJpbWl0aQogZzogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0
LW1hc2stYm94LWltYWdlLXNsaWNlKSA6IDAgZmlsbAogZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NW
YWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdlLXNsaWNlKSA6IFtvYmplY3QgQ1NTVmFsdWVdCiBn
OiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2Utc291cmNlKSA6
IG5vbmUKLWc6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFn
ZS1zb3VyY2UpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KK2c6IHN0eWxlLmdldFByb3Bl
cnR5Q1NTVmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1zb3VyY2UpIDogW29iamVjdCBDU1NW
YWx1ZV0KIGc6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS13
aWR0aCkgOiBhdXRvCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtbWFzay1i
b3gtaW1hZ2Utd2lkdGgpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KIGc6IHN0eWxlLmdl
dFByb3BlcnR5VmFsdWUoLXdlYmtpdC1tYXNrLWNsaXApIDogYm9yZGVyLWJveAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424168</attachid>
            <date>2021-03-24 12:31:08 -0700</date>
            <delta_ts>2021-03-24 17:27:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223204-20210324143107.patch</filename>
            <type>text/plain</type>
            <size>109235</size>
            <attacher name="Tyler Wilcock">twilco.o</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0OTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQwMWQ3MzZiZWY2M2M5
YzNlODQ1N2E3ZjdiNDliMDA5OTBjZjNhMS4uMDljZmU1YTBkZTEyMzM3OGIzMmNjNDYwY2ZhZGUw
OGVhNWEyMzEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MSBAQAorMjAyMS0wMy0yNCAgVHls
ZXIgV2lsY29jayAgPHR3aWxjby5vQHByb3Rvbm1haWwuY29tPgorCisgICAgICAgIFJlZmFjdG9y
IFBhaXIuaCB0byBDU1NWYWx1ZVBhaXIuaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIzMjA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUGFpci5oIGhhcyBhIGNvdXBsZSBwcm9ibGVtczoKKworICAgICAg
ICAxLiBJdCdzIG5vdCBhIHN1Yi1jbGFzcyBvZiBDU1NWYWx1ZSwgbWFraW5nIGl0IGF3a3dhcmQg
dG8gdXNlLgorICAgICAgICAyLiBJdCBjYW4gb25seSBjb250YWluIENTU1ByaW1pdGl2ZVZhbHVl
cy4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgQ1NTVmFsdWVQYWlyIGNs
YXNzLCB3aGljaCBmaXhlcyBib3RoIG9mCisgICAgICAgIHRoZXNlIHNob3J0Y29taW5ncy4gIFRo
aXMgYWxsb3dzIHVzIHRvIHByb3Blcmx5IHJlcHJlc2VudCBwYWlyIHZhbHVlcworICAgICAgICB3
aGVyZSB3ZSBvdGhlcndpc2UgY291bGRuJ3QgKGJlY2F1c2UgdGhlIHZhbHVlcyB3ZSB3YW50ZWQg
dG8gcGFpciB3ZXJlCisgICAgICAgIG5vdCBDU1NQcmltaXRpdmVWYWx1ZXMpLgorCisgICAgICAg
IFBhaXIuaCBhbmQgYW55IGNvZGUgcmVsYXRlZCB0byBwYWlycyBpbiBDU1NQcmltaXRpdmVWYWx1
ZSBhcmUgcmVtb3ZlZAorICAgICAgICB3aXRoIHRoaXMgcGF0Y2ggKGluY2x1ZGluZyB0aGUgQ1NT
X1BBSVIgQ1NTIHVuaXQgdHlwZSkuCisKKyAgICAgICAgQ2hhbmdlcyBhcmUgY292ZXJlZCBieSBl
eGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGNzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yQ2VudGVyQ29vcmRpbmF0ZSk6CisgICAgICAgIFJl
dHVybiBDU1NWYWx1ZSBpbnN0ZWFkIG9mIENTU1ByaW1pdGl2ZVZhbHVlLgorICAgICAgICAoV2Vi
Q29yZTo6dmFsdWVGb3JCYXNpY1NoYXBlKToKKyAgICAgICAgQ3JlYXRlIENTU1ZhbHVlUGFpciBp
bnN0ZWFkIG9mIENTU1ByaW1pdGl2ZVZhbHVlIHBhaXIuCisgICAgICAgIChXZWJDb3JlOjpjb252
ZXJ0VG9MZW5ndGhTaXplKToKKyAgICAgICAgQWNjZXB0IENTU1ZhbHVlUGFpciBpbnN0ZWFkIG9m
IENTU1ByaW1pdGl2ZVZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvQ2VudGVyQ29v
cmRpbmF0ZSk6CisgICAgICAgIEFjY2VwdCBDU1NWYWx1ZSBpbnN0ZWFkIG9mIENTU1ByaW1pdGl2
ZVZhbHVlLgorCisgICAgICAgICogY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNlcmlhbGl6ZVBvc2l0aW9uT2Zmc2V0KToKKyAgICAgICAgQWNjZXB0IENTU1ZhbHVl
UGFpciBpbnN0ZWFkIG9mIFBhaXIuCisgICAgICAgIChXZWJDb3JlOjpidWlsZFNlcmlhbGl6YWJs
ZVBvc2l0aW9uT2Zmc2V0KToKKyAgICAgICAgQWNjZXB0IENTU1ZhbHVlIGluc3RhZCBvZiBDU1NQ
cmltaXRpdmVWYWx1ZS4KKyAgICAgICAgUmV0dXJuIENTU1ZhbHVlUGFpciBpbnN0ZWFkIG9mIENT
U1ByaW1pdGl2ZVZhbHVlIHBhaXIuCisgICAgICAgIChXZWJDb3JlOjpDU1NCYXNpY1NoYXBlQ2ly
Y2xlOjpjc3NUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hhcGVFbGxp
cHNlOjpjc3NUZXh0IGNvbnN0KToKKyAgICAgICAgU2VyaWFsaXplIENTU1ZhbHVlUGFpciBpbnN0
ZWFkIG9mIENTU1ByaW1pdGl2ZVZhbHVlIHBhaXIuCisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVD
b3JuZXJSYWRpdXNXaWR0aEFuZEhlaWdodCk6CisgICAgICAgIEFjY2VwdCBDU1NWYWx1ZVBhaXIg
aW5zdGVhZCBvZiBDU1NQcmltaXRpdmVWYWx1ZSBwYWlyLgorCisgICAgICAgICogY3NzL0NTU0Jh
c2ljU2hhcGVzLmg6CisgICAgICAgIENoYW5nZSBzZXZlcmFsIHByb3BlcnRpZXMgYW5kIGFzc29j
aWF0ZWQgZ2V0dGVycyBhbmQgc2V0dGVycyB0byBkZWFsIGluCisgICAgICAgIENTU1ZhbHVlUGFp
ciBpbnN0ZWFkIG9mIENTU1ByaW1pdGl2ZVZhbHVlIHBhaXJzLgorCisgICAgICAgICogY3NzL0NT
U0NhbGN1bGF0aW9uVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFzRG91YmxlVmFsdWUp
OgorICAgICAgICBSZW1vdmUgQ1NTX1BBSVIgZnJvbSBzd2l0Y2guCisKKyAgICAgICAgKiBjc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVl
Rm9yTmluZVBpZWNlSW1hZ2VSZXBlYXQpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHls
ZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eUluU3R5bGUpOgorICAgICAgICBDcmVhdGUgQ1NT
VmFsdWVQYWlyIGluc3RlYWQgb2YgQ1NTUHJpbWl0aXZlVmFsdWUgcGFpci4KKworICAgICAgICAq
IGNzcy9DU1NHcmFkaWVudFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBvc2l0aW9uRnJv
bVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVFbmRQb2ludCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0xpbmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KToK
KyAgICAgICAgSGFuZGxlIENTU1ZhbHVlIChzbyBDU1NWYWx1ZVBhaXIgb3IgQ1NTUHJpbWl0aXZl
VmFsdWUpIHJhdGhlciB0aGFuCisgICAgICAgIG9ubHkgZGVhbGluZyBpbiBDU1NQcmltaXRpdmVW
YWx1ZXMuCisKKyAgICAgICAgKiBjc3MvQ1NTR3JhZGllbnRWYWx1ZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTR3JhZGllbnRWYWx1ZTo6c2V0Rmlyc3RYKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0dyYWRpZW50VmFsdWU6OnNldEZpcnN0WSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NHcmFkaWVu
dFZhbHVlOjpzZXRTZWNvbmRYKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyYWRpZW50VmFsdWU6
OnNldFNlY29uZFkpOgorICAgICAgICBEZWFsIGluIENTU1ZhbHVlcyBpbnN0ZWFkIG9mIENTU1By
aW1pdGl2ZVZhbHVlLgorCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmlzVmFsaWRDU1NVbml0VHlwZUZvckRvdWJsZUNvbnZlcnNpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6aXNTdHJpbmdUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
aW1pdGl2ZVZhbHVlOjpjbGVhbnVwKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZh
bHVlOjp1bml0VHlwZVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1
ZTo6Zm9ybWF0TnVtYmVyRm9yQ3VzdG9tQ1NTVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQcmltaXRpdmVWYWx1ZTo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgUmVtb3ZlIGFsbCBQ
YWlyIGFuZCBDU1NfUEFJUiByZWxhdGVkIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBjc3Mv
Q1NTUHJpbWl0aXZlVmFsdWUuaDoKKyAgICAgICAgUmVtb3ZlIGFsbCBQYWlyIGFuZCBDU1NfUEFJ
UiByZWxhdGVkIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBjc3MvQ1NTVG9TdHlsZU1hcC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9MZW5ndGhTaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1RvU3R5bGVNYXA6Om1hcEZpbGxYUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9T
dHlsZU1hcDo6bWFwRmlsbFlQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxl
TWFwOjptYXBOaW5lUGllY2VJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFw
OjptYXBOaW5lUGllY2VJbWFnZVJlcGVhdCk6CisgICAgICAgIEhhbmRsZSBDU1NWYWx1ZXMgKENT
U1ZhbHVlUGFpcnMgb3IgQ1NTUHJpbWl0aXZlVmFsdWVzKSByYXRoZXIgdGhhbgorICAgICAgICBz
dHJpY3RseSBDU1NQcmltaXRpdmVWYWx1ZXMuCisKKyAgICAgICAgKiBjc3MvQ1NTVW5pdHMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgIFJlbW92ZSBDU1NfUEFJ
UiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogY3NzL0NTU1VuaXRzLmg6CisgICAgICAgIFJl
bW92ZSBDU1NfUEFJUiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogY3NzL0NTU1ZhbHVlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjplcXVhbHMgY29uc3QpOgorICAgICAgICBI
YW5kbGUgbmV3IFZhbHVlUGFpckNsYXNzLgorCisgICAgICAgICogY3NzL0NTU1ZhbHVlUGFpci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZVBhaXI6OmZpcnN0QXNQcmltaXRpdmUgY29u
c3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUGFpcjo6c2Vjb25kQXNQcmlt
aXRpdmUgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUGFpcjo6Zmly
c3RBc1ZhbHVlSUQgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUGFp
cjo6c2Vjb25kQXNWYWx1ZUlEIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NW
YWx1ZVBhaXI6OmN1c3RvbUNTU1RleHQgY29uc3QpOgorICAgICAgICBIYW5kbGUgbnVsbCB2YWx1
ZXMgYXBwcm9wcmlhdGVseS4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUGFpcjo6ZXF1YWxz
IGNvbnN0KToKKyAgICAgICAgQ2hlY2sgSWRlbnRpY2FsVmFsdWVFbmNvZGluZyBmaWVsZCB3aGVu
IGRldGVybWluaW5nIGVxdWFsaXR5LgorCisgICAgICAgICogY3NzL0NTU1ZhbHVlUGFpci5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQYWlyOjpjcmVhdGUpOgorICAgICAgICBBZGRlZCBz
b21lIG1vcmUgY3JlYXRpb24gbWV0aG9kcy4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUGFp
cjo6Zmlyc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQYWlyOjpzZWNvbmQg
Y29uc3QpOgorICAgICAgICBSZXR1cm4gUmVmUHRycyBpbnN0ZWFkIG9mIFJlZnMuCisgICAgICAg
IChXZWJDb3JlOjpDU1NWYWx1ZVBhaXI6OkNTU1ZhbHVlUGFpcik6CisgICAgICAgIEFjY2VwdCBS
ZWZQdHJzIGluc3RlYWQgb2YgUmVmcy4KKworICAgICAgICAqIGNzcy9DU1NWYWx1ZVBvb2wuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUG9vbDo6Y3JlYXRlVmFsdWUpOgorICAgICAgICBS
ZW1vdmUgY3JlYXRlVmFsdWUoY29uc3QgTGVuZ3RoU2l6ZSYsIGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSkuCisKKyAgICAgICAgKiBjc3MvUGFpci5oOiBSZW1vdmVkLgorCisgICAgICAgICogY3Nz
L3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1l
Q291bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lQm9yZGVyUmFkaXVzQ29ybmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVCYXNpY1NoYXBlSW5zZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6Z2V0QmFzZWxpbmVLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVCYXNl
bGluZUtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZUJvcmRlckltYWdlUmVwZWF0
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVCYWNrZ3JvdW5kU2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpjb25zdW1lU2VsZlBvc2l0aW9uT3ZlcmZsb3dQb3NpdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpjb25zdW1lSnVzdGlmeUl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVJ
bml0aWFsTGV0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpwYXJz
ZVNob3J0aGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIp
OiBEZWxldGVkLgorICAgICAgICBSZW1vdmUgYWxsIGluc3RhbmNlcyBvZiBDU1NQcmltaXRpdmVW
YWx1ZSBwYWlyIGNyZWF0aW9uLgorICAgICAgICBIYW5kbGUgbmV3IENTU1ZhbHVlUGFpciB2YWx1
ZSBpbiBzZXZlcmFsIGxvY2F0aW9ucy4KKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVy
dHlQYXJzZXJIZWxwZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2Vy
SGVscGVyczo6cG9zaXRpb25Gcm9tT25lVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzOjpwb3NpdGlvbkZyb21Ud29WYWx1ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpiYWNrZ3JvdW5kUG9zaXRpb25Gcm9tVGhy
ZWVWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpw
b3NpdGlvbkZyb21Gb3VyVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFy
c2VySGVscGVyczo6Y29uc3VtZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3Bl
cnR5UGFyc2VySGVscGVyczo6Y29uc3VtZVJhZGlhbEdyYWRpZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzSW50
ZXJuYWw6OmNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcik6IERlbGV0ZWQuCisgICAgICAgIFJlbW92
ZSBhbGwgaW5zdGFuY2VzIG9mIENTU1ByaW1pdGl2ZVZhbHVlIHBhaXIgY3JlYXRpb24uCisgICAg
ICAgIEhhbmRsZSBuZXcgQ1NTVmFsdWVQYWlyIHZhbHVlIGluIHNldmVyYWwgbG9jYXRpb25zLgor
CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaDoKKyAgICAg
ICAgUG9zaXRpb25Db29yZGluYXRlcyBub3cgaG9sZHMgQ1NTVmFsdWVzIGZvciAneCcgYW5kICd5
JyByYXRoZXIgdGhhbgorICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZXMuCisKKyAgICAgICAgKiBz
dHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UmFkaXVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25Db21wb25lbnRYKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25Db21wb25l
bnRZKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
UG9zaXRpb25Db21wb25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRPYmplY3RQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEluaXRpYWxMZXR0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTZWxmT3JEZWZhdWx0QWxpZ25tZW50
RGF0YSk6CisgICAgICAgIEhhbmRsZSBuZXcgQ1NTVmFsdWVQYWlyIHZhbHVlIGluIHNldmVyYWwg
bG9jYXRpb25zLgorCisgICAgICAgICogc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNvdW50ZXIpOgor
ICAgICAgICBVc2UgQ1NTVmFsdWVQYWlyIGluc3RlYWQgb2Ygbm93LWRlbGV0ZWQgUGFpci4KKwor
ICAgICAgICAqIHN0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICBSZW1vdmUgI2luY2x1
ZGUgIlBhaXIuIgorCiAyMDIxLTAzLTI0ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQu
b3JnPgogCiAgICAgICAgIFN1cHBvcnQgYW5pbWF0aW9uIG9mIHRoZSB0YWItc2l6ZSBDU1MgcHJv
cGVydHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA4N2JlYmUyMTJmZjk2NGE1ZGM5NjgwMTc2NzI1ZDkwM2VhMmFjZDYzLi43YWYz
N2ZkN2U3ZGIyOTYxMGMzZDY1YzMwYTFhY2FmZTIwZGEyYzAzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMDY0LDYgKzMwNjQs
OCBAQAogCQk5N0RDRTIwMjEwODA3Qzc1MDA1N0QzOTQgLyogSGlzdG9yeUNvbnRyb2xsZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3RENFMjAwMTA4
MDdDNzUwMDU3RDM5NCAvKiBIaXN0b3J5Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk4MzFBRTRBMTU0MjI1QzkwMEZFMjY0NCAv
KiBSZWZlcnJlclBvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTgzMUFFNDkxNTQyMjVBMjAwRkUyNjQ0IC8qIFJlZmVycmVyUG9saWN5LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTg0MjY0RjEx
MkQ1MjgwQTAwMEQ4OEE0IC8qIExpbmtMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk4NDI2NEVGMTJENTI4MEEwMDBEODhBNCAvKiBM
aW5rTG9hZGVyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJOTg1OTczNTIyNjBCQTU4ODAwRDFFNEEwIC8qIENTU1ZhbHVlUGFpci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTg1OTczNEYyNjBC
QTU4NTAwRDFFNEEwIC8qIENTU1ZhbHVlUGFpci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTk4NTk3MzUzMjYwQkE1ODgwMEQxRTRBMCAvKiBDU1NW
YWx1ZVBhaXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTg1OTczNTEyNjBCQTU4NzAwRDFFNEEwIC8qIENTU1ZhbHVlUGFpci5jcHAgKi87IH07CiAJ
CTk4NUJCOTZFMTNBOTQwNTgwMDdBMEI2OSAvKiBMaW5rUmVsQXR0cmlidXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5ODVCQjk2QzEzQTk0MDU4MDA3
QTBCNjkgLyogTGlua1JlbEF0dHJpYnV0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTk4Q0U0MzJBMTI5RTAwRTUwMDU4MjFEQyAvKiBMaW5rTG9h
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OENF
NDMyOTEyOUUwMEU1MDA1ODIxREMgLyogTGlua0xvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk4RUIxRjk1MTMxM0ZFMDUwMEQwRTFFQSAv
KiBOb3RJbXBsZW1lbnRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOThFQjFGOTQxMzEzRkUwNTAwRDBFMUVBIC8qIE5vdEltcGxlbWVudGVkLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM0MjEsNyAr
MzQyMyw2IEBACiAJCUE4MEU2Q0YyMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NSdWxlTGlzdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgwRTZDQzgwQTE5
ODlDQTAwN0ZCOEM1IC8qIENTU1J1bGVMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTgwRTZDRjYwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU0lt
cG9ydFJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE4MEU2Q0NDMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NJbXBvcnRSdWxlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTgwRTZDRkEwQTE5ODlDQTAw
N0ZCOEM1IC8qIENTU0ltYWdlVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE4MEU2Q0QwMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NJbWFnZVZhbHVl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQTgw
RTZDRkIwQTE5ODlDQTAwN0ZCOEM1IC8qIFBhaXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MEU2Q0QxMEExOTg5Q0EwMDdGQjhDNSAvKiBQYWlyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTgwRTZD
RkQwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU0ZvbnRGYWNlUnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgwRTZDRDMwQTE5ODlDQTAwN0ZCOEM1IC8q
IENTU0ZvbnRGYWNlUnVsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUE4MEU2Q0ZGMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NQcm9wZXJ0eS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgwRTZDRDUwQTE5
ODlDQTAwN0ZCOEM1IC8qIENTU1Byb3BlcnR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTgwRTZEMDAwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1Bh
Z2VSdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
ODBFNkNENjBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTUGFnZVJ1bGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTIwNTcsNiArMTIwNTgsOCBAQAog
CQk5N0U5RUM4QzE1REM0OTJGMDA0RjJFNzEgLyogSlNWb2lkQ2FsbGJhY2suaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNWb2lkQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTgzMUFFNDkxNTQyMjVBMjAwRkUyNjQ0IC8qIFJlZmVycmVyUG9saWN5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZmVycmVyUG9saWN5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk4NDI2NEVGMTJENTI4MEEwMDBEODhBNCAvKiBM
aW5rTG9hZGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmtM
b2FkZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTg1OTczNEYyNjBC
QTU4NTAwRDFFNEEwIC8qIENTU1ZhbHVlUGFpci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDU1NWYWx1ZVBhaXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTg1
OTczNTEyNjBCQTU4NzAwRDFFNEEwIC8qIENTU1ZhbHVlUGFpci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NWYWx1ZVBhaXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5ODVCQjk2QjEzQTk0MDU4MDA3QTBCNjkgLyogTGlua1JlbEF0dHJpYnV0
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMaW5rUmVsQXR0cmli
dXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTg1QkI5NkMxM0E5NDA1ODAw
N0EwQjY5IC8qIExpbmtSZWxBdHRyaWJ1dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTGlua1JlbEF0dHJpYnV0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
OENFNDMyNTEyOUUwMEJEMDA1ODIxREMgLyogTGlua0xvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMaW5rTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTI5NjQ1LDYgKzI5NjQ4LDggQEAKIAkJCQlCQ0VBNDc4QzA5N0NBQUM4MDA5
NEM5RTQgLyogQ1NTVmFsdWVLZXl3b3Jkcy5pbiAqLywKIAkJCQlBODBFNkNCQTBBMTk4OUNBMDA3
RkI4QzUgLyogQ1NTVmFsdWVMaXN0LmNwcCAqLywKIAkJCQlBODBFNkNCRjBBMTk4OUNBMDA3RkI4
QzUgLyogQ1NTVmFsdWVMaXN0LmggKi8sCisJCQkJOTg1OTczNTEyNjBCQTU4NzAwRDFFNEEwIC8q
IENTU1ZhbHVlUGFpci5jcHAgKi8sCisJCQkJOTg1OTczNEYyNjBCQTU4NTAwRDFFNEEwIC8qIENT
U1ZhbHVlUGFpci5oICovLAogCQkJCUU0OUJEQTBBMTMxRkQzRTUwMDNDNTZGMCAvKiBDU1NWYWx1
ZVBvb2wuY3BwICovLAogCQkJCUU0OUJEOUY5MTMxRkQyRUQwMDNDNTZGMCAvKiBDU1NWYWx1ZVBv
b2wuaCAqLywKIAkJCQk5NDQ0Q0JERTFEODg2MTU4MDA3M0EwNzQgLyogQ1NTVmFyaWFibGVEYXRh
LmNwcCAqLywKQEAgLTMxOTQzLDYgKzMxOTQ4LDcgQEAKIAkJCQlFM0JCQzI0NzIzODM1NTI2MDA2
RUMzOUYgLyogQ1NTVmFsdWVLZXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NjU4MTUxMDlEMTMw
NDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdvcmRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBF
NkNFOTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTVmFsdWVMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk5ODU5NzM1MjI2MEJBNTg4MDBEMUU0QTAgLyogQ1NTVmFsdWVQYWlyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFNDlCRDlGQTEzMUZEMkVEMDAzQzU2RjAgLyogQ1NTVmFsdWVQb29sLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5NDQ0Q0JFODFEODg2MUMyMDA3M0EwNzQgLyogQ1NTVmFyaWFibGVEYXRh
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NDQ0Q0JEQTFEODg0ODNBMDA3M0EwNzQgLyogQ1NTVmFy
aWFibGVQYXJzZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMzYyNDMsNiArMzYyNDksNyBAQAogCQkJ
CTA3QUZGNDIzMUVGQjE0NDkwMEI1NDVCMyAvKiBDb3JlQXVkaW9DYXB0dXJlU291cmNlSU9TLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDZDNjk2Q0MxRTcyMDVGQzAwNTk3OTM3IC8qIENQVU1vbml0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCQTc2Q0ExMUQyMEU1MDAwNEMyMDFDIC8qIENT
U1Byb3BlcnR5TmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTg1OTczNTMyNjBCQTU4ODAw
RDFFNEEwIC8qIENTU1ZhbHVlUGFpci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDIyODMwMzIz
QTg0NzA3MDAzNjRCN0UgLyogQ3Vyc29yTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNCRDU5
NTkyMjgwRTkyNjAwMkIyMkFBIC8qIEN1c3RvbUhlYWRlckZpZWxkcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk0NDYzQ0Y2ODIyMTJGQTY4MDAxQTg1NzcgLyogRGF0YURldGVjdG9yc0NvcmVTb2Z0
TGluay5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0Jh
c2ljU2hhcGVGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5j
dGlvbnMuY3BwCmluZGV4IDFhYWFlOTZiMTk1YmIxZTQzYTJjMTFlZTFhNTk1NzFkMTc5ZDFiODYu
LmQzOWIyOGRhMTZkNzNjYzJkMWE3MzliNzJhNWRjYTI0MWRkZWY0N2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAKQEAgLTMzLDIxICszMywyMCBAQAogI2lu
Y2x1ZGUgIkJhc2ljU2hhcGVzLmgiCiAjaW5jbHVkZSAiQ1NTQmFzaWNTaGFwZXMuaCIKICNpbmNs
dWRlICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCisjaW5jbHVkZSAiQ1NTVmFsdWVQYWly
LmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVQb29sLmgiCi0jaW5jbHVkZSAiUGFpci5oIgogI2luY2x1
ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aEJ5dGVTdHJlYW0uaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZUZv
ckNlbnRlckNvb3JkaW5hdGUoQ1NTVmFsdWVQb29sJiBwb29sLCBjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUsIGNvbnN0IEJhc2ljU2hhcGVDZW50ZXJDb29yZGluYXRlJiBjZW50ZXIsIEJveE9yaWVu
dCBvcmllbnRhdGlvbikKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IHZhbHVlRm9yQ2VudGVyQ29vcmRp
bmF0ZShDU1NWYWx1ZVBvb2wmIHBvb2wsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3Qg
QmFzaWNTaGFwZUNlbnRlckNvb3JkaW5hdGUmIGNlbnRlciwgQm94T3JpZW50IG9yaWVudGF0aW9u
KQogewogICAgIGlmIChjZW50ZXIuZGlyZWN0aW9uKCkgPT0gQmFzaWNTaGFwZUNlbnRlckNvb3Jk
aW5hdGU6OlRvcExlZnQpCiAgICAgICAgIHJldHVybiBwb29sLmNyZWF0ZVZhbHVlKGNlbnRlci5s
ZW5ndGgoKSwgc3R5bGUpOwogCiAgICAgQ1NTVmFsdWVJRCBrZXl3b3JkID0gb3JpZW50YXRpb24g
PT0gQm94T3JpZW50OjpIb3Jpem9udGFsID8gQ1NTVmFsdWVSaWdodCA6IENTU1ZhbHVlQm90dG9t
OwotCi0gICAgcmV0dXJuIHBvb2wuY3JlYXRlVmFsdWUoUGFpcjo6Y3JlYXRlKHBvb2wuY3JlYXRl
SWRlbnRpZmllclZhbHVlKGtleXdvcmQpLCBwb29sLmNyZWF0ZVZhbHVlKGNlbnRlci5sZW5ndGgo
KSwgc3R5bGUpKSk7CisgICAgcmV0dXJuIENTU1ZhbHVlUGFpcjo6Y3JlYXRlKHBvb2wuY3JlYXRl
SWRlbnRpZmllclZhbHVlKGtleXdvcmQpLCBwb29sLmNyZWF0ZVZhbHVlKGNlbnRlci5sZW5ndGgo
KSwgc3R5bGUpKTsKIH0KIAogc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gYmFzaWNTaGFw
ZVJhZGl1c1RvQ1NTVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBDU1NWYWx1ZVBvb2wm
IHBvb2wsIGNvbnN0IEJhc2ljU2hhcGVSYWRpdXMmIHJhZGl1cykKQEAgLTEyMywxMCArMTIyLDEw
IEBAIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsdWVGb3JCYXNpY1NoYXBlKGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSwgY29uc3QgQmFzaWNTCiAgICAgICAgIGluc2V0VmFsdWUtPnNldEJvdHRv
bShjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoaW5zZXQuYm90dG9tKCksIHN0eWxlKSk7CiAgICAg
ICAgIGluc2V0VmFsdWUtPnNldExlZnQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGluc2V0Lmxl
ZnQoKSwgc3R5bGUpKTsKIAotICAgICAgICBpbnNldFZhbHVlLT5zZXRUb3BMZWZ0UmFkaXVzKGNz
c1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShpbnNldC50b3BMZWZ0UmFkaXVzKCksIHN0eWxlKSk7Ci0g
ICAgICAgIGluc2V0VmFsdWUtPnNldFRvcFJpZ2h0UmFkaXVzKGNzc1ZhbHVlUG9vbC5jcmVhdGVW
YWx1ZShpbnNldC50b3BSaWdodFJhZGl1cygpLCBzdHlsZSkpOwotICAgICAgICBpbnNldFZhbHVl
LT5zZXRCb3R0b21SaWdodFJhZGl1cyhjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoaW5zZXQuYm90
dG9tUmlnaHRSYWRpdXMoKSwgc3R5bGUpKTsKLSAgICAgICAgaW5zZXRWYWx1ZS0+c2V0Qm90dG9t
TGVmdFJhZGl1cyhjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoaW5zZXQuYm90dG9tTGVmdFJhZGl1
cygpLCBzdHlsZSkpOworICAgICAgICBpbnNldFZhbHVlLT5zZXRUb3BMZWZ0UmFkaXVzKENTU1Zh
bHVlUGFpcjo6Y3JlYXRlKGluc2V0LnRvcExlZnRSYWRpdXMoKSwgc3R5bGUpKTsKKyAgICAgICAg
aW5zZXRWYWx1ZS0+c2V0VG9wUmlnaHRSYWRpdXMoQ1NTVmFsdWVQYWlyOjpjcmVhdGUoaW5zZXQu
dG9wUmlnaHRSYWRpdXMoKSwgc3R5bGUpKTsKKyAgICAgICAgaW5zZXRWYWx1ZS0+c2V0Qm90dG9t
UmlnaHRSYWRpdXMoQ1NTVmFsdWVQYWlyOjpjcmVhdGUoaW5zZXQuYm90dG9tUmlnaHRSYWRpdXMo
KSwgc3R5bGUpKTsKKyAgICAgICAgaW5zZXRWYWx1ZS0+c2V0Qm90dG9tTGVmdFJhZGl1cyhDU1NW
YWx1ZVBhaXI6OmNyZWF0ZShpbnNldC5ib3R0b21MZWZ0UmFkaXVzKCksIHN0eWxlKSk7CiAKICAg
ICAgICAgYmFzaWNTaGFwZVZhbHVlID0gV1RGTW92ZShpbnNldFZhbHVlKTsKICAgICAgICAgYnJl
YWs7CkBAIC0xNDEsMjggKzE0MCwzMSBAQCBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0xlbmd0aChj
b25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgYwogICAgIHJl
dHVybiB2YWx1ZS0+Y29udmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBGaXhl
ZEZsb2F0Q29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9uIHwgQ2FsY3VsYXRlZENvbnZlcnNp
b24+KGNvbnZlcnNpb25EYXRhKTsKIH0KIAotc3RhdGljIExlbmd0aFNpemUgY29udmVydFRvTGVu
Z3RoU2l6ZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwg
Y29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlKQorc3RhdGljIExlbmd0aFNpemUgY29udmVy
dFRvTGVuZ3RoU2l6ZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9u
RGF0YSwgY29uc3QgQ1NTVmFsdWVQYWlyKiBwYWlyKQogewotICAgIGlmICghdmFsdWUpCisgICAg
aWYgKCFwYWlyKQogICAgICAgICByZXR1cm4geyB7IDAsIExlbmd0aFR5cGU6OkZpeGVkIH0sIHsg
MCwgTGVuZ3RoVHlwZTo6Rml4ZWQgfSB9OwogCi0gICAgYXV0byYgcGFpciA9ICp2YWx1ZS0+cGFp
clZhbHVlKCk7Ci0gICAgcmV0dXJuIHsgY29udmVydFRvTGVuZ3RoKGNvbnZlcnNpb25EYXRhLCBw
YWlyLmZpcnN0KCkpLCBjb252ZXJ0VG9MZW5ndGgoY29udmVyc2lvbkRhdGEsIHBhaXIuc2Vjb25k
KCkpIH07CisgICAgcmV0dXJuIHsgY29udmVydFRvTGVuZ3RoKGNvbnZlcnNpb25EYXRhLCBwYWly
LT5maXJzdEFzUHJpbWl0aXZlKCkuZ2V0KCkpLCBjb252ZXJ0VG9MZW5ndGgoY29udmVyc2lvbkRh
dGEsIHBhaXItPnNlY29uZEFzUHJpbWl0aXZlKCkuZ2V0KCkpIH07CiB9CiAKLXN0YXRpYyBCYXNp
Y1NoYXBlQ2VudGVyQ29vcmRpbmF0ZSBjb252ZXJ0VG9DZW50ZXJDb29yZGluYXRlKGNvbnN0IENT
U1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBDU1NQcmltaXRpdmVWYWx1
ZSogdmFsdWUpCitzdGF0aWMgQmFzaWNTaGFwZUNlbnRlckNvb3JkaW5hdGUgY29udmVydFRvQ2Vu
dGVyQ29vcmRpbmF0ZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9u
RGF0YSwgQ1NTVmFsdWUqIHZhbHVlKQogewogICAgIENTU1ZhbHVlSUQga2V5d29yZCA9IENTU1Zh
bHVlVG9wOwogICAgIExlbmd0aCBvZmZzZXQgeyAwLCBMZW5ndGhUeXBlOjpGaXhlZCB9OwogICAg
IGlmICghdmFsdWUpCiAgICAgICAgIGtleXdvcmQgPSBDU1NWYWx1ZUNlbnRlcjsKLSAgICBlbHNl
IGlmICh2YWx1ZS0+aXNWYWx1ZUlEKCkpCi0gICAgICAgIGtleXdvcmQgPSB2YWx1ZS0+dmFsdWVJ
RCgpOwotICAgIGVsc2UgaWYgKFBhaXIqIHBhaXIgPSB2YWx1ZS0+cGFpclZhbHVlKCkpIHsKLSAg
ICAgICAga2V5d29yZCA9IHBhaXItPmZpcnN0KCktPnZhbHVlSUQoKTsKLSAgICAgICAgb2Zmc2V0
ID0gY29udmVydFRvTGVuZ3RoKGNvbnZlcnNpb25EYXRhLCBwYWlyLT5zZWNvbmQoKSk7Ci0gICAg
fSBlbHNlCi0gICAgICAgIG9mZnNldCA9IGNvbnZlcnRUb0xlbmd0aChjb252ZXJzaW9uRGF0YSwg
dmFsdWUpOworICAgIGVsc2UgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAg
ICAgYXV0byogcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFs
dWUpOworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmlzVmFsdWVJRCgpKQorICAgICAgICAg
ICAga2V5d29yZCA9IHByaW1pdGl2ZVZhbHVlLT52YWx1ZUlEKCk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIG9mZnNldCA9IGNvbnZlcnRUb0xlbmd0aChjb252ZXJzaW9uRGF0YSwgcHJpbWl0
aXZlVmFsdWUpOworICAgIH0gZWxzZSBpZiAodmFsdWUtPmlzVmFsdWVQYWlyKCkpIHsKKyAgICAg
ICAgYXV0byYgcGFpciA9IGRvd25jYXN0PENTU1ZhbHVlUGFpcj4oKnZhbHVlKTsKKyAgICAgICAg
a2V5d29yZCA9IHBhaXIuZmlyc3RBc1ZhbHVlSUQoKTsKKyAgICAgICAgb2Zmc2V0ID0gY29udmVy
dFRvTGVuZ3RoKGNvbnZlcnNpb25EYXRhLCBwYWlyLnNlY29uZEFzUHJpbWl0aXZlKCkuZ2V0KCkp
OworICAgIH0KIAogICAgIEJhc2ljU2hhcGVDZW50ZXJDb29yZGluYXRlOjpEaXJlY3Rpb24gZGly
ZWN0aW9uOwogICAgIHN3aXRjaCAoa2V5d29yZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1No
YXBlcy5jcHAKaW5kZXggN2VlOGFlZDFhYzMyMjRkN2I3Y2M1ZDA3N2NjNjI2ZGUxNzRiMDUyYS4u
OTdiNmM1NjhjNWI5YjFjNTZlMjY4NDlkOGI4YzkxY2M1ZDBjZWQ0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQmFzaWNTaGFwZXMuY3BwCkBAIC0zMywzNSArMzMsNDAgQEAKICNpbmNsdWRlICJDU1NN
YXJrdXAuaCIKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCiAjaW5jbHVk
ZSAiQ1NTVmFsdWVQb29sLmgiCi0jaW5jbHVkZSAiUGFpci5oIgogI2luY2x1ZGUgIlNWR1BhdGhC
eXRlU3RyZWFtLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFV0aWxpdGllcy5oIgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMg
U3RyaW5nIHNlcmlhbGl6ZVBvc2l0aW9uT2Zmc2V0KGNvbnN0IFBhaXImIG9mZnNldCwgY29uc3Qg
UGFpciYgb3RoZXIpCitzdGF0aWMgU3RyaW5nIHNlcmlhbGl6ZVBvc2l0aW9uT2Zmc2V0KGNvbnN0
IENTU1ZhbHVlUGFpciYgb2Zmc2V0LCBjb25zdCBDU1NWYWx1ZVBhaXImIG90aGVyKQogewotICAg
IGlmICgob2Zmc2V0LmZpcnN0KCktPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUxlZnQgJiYgb3RoZXIu
Zmlyc3QoKS0+dmFsdWVJRCgpID09IENTU1ZhbHVlVG9wKQotICAgICAgICB8fCAob2Zmc2V0LmZp
cnN0KCktPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZVRvcCAmJiBvdGhlci5maXJzdCgpLT52YWx1ZUlE
KCkgPT0gQ1NTVmFsdWVMZWZ0KSkKKyAgICBhdXRvIG9mZnNldFZhbHVlSUQgPSBvZmZzZXQuZmly
c3RBc1ZhbHVlSUQoKTsKKyAgICBhdXRvIG90aGVyVmFsdWVJRCA9IG90aGVyLmZpcnN0QXNWYWx1
ZUlEKCk7CisgICAgaWYgKChvZmZzZXRWYWx1ZUlEID09IENTU1ZhbHVlTGVmdCAmJiBvdGhlclZh
bHVlSUQgPT0gQ1NTVmFsdWVUb3ApCisgICAgICAgIHx8IChvZmZzZXRWYWx1ZUlEID09IENTU1Zh
bHVlVG9wICYmIG90aGVyVmFsdWVJRCA9PSBDU1NWYWx1ZUxlZnQpKQogICAgICAgICByZXR1cm4g
b2Zmc2V0LnNlY29uZCgpLT5jc3NUZXh0KCk7Ci0gICAgcmV0dXJuIG9mZnNldC5jc3NUZXh0KCk7
CisgICAgcmV0dXJuIG9mZnNldC5jdXN0b21DU1NUZXh0KCk7CiB9CiAKLXN0YXRpYyBSZWY8Q1NT
UHJpbWl0aXZlVmFsdWU+IGJ1aWxkU2VyaWFsaXphYmxlUG9zaXRpb25PZmZzZXQoQ1NTUHJpbWl0
aXZlVmFsdWUqIG9mZnNldCwgQ1NTVmFsdWVJRCBkZWZhdWx0U2lkZSkKK3N0YXRpYyBSZWY8Q1NT
VmFsdWVQYWlyPiBidWlsZFNlcmlhbGl6YWJsZVBvc2l0aW9uT2Zmc2V0KENTU1ZhbHVlKiBvZmZz
ZXQsIENTU1ZhbHVlSUQgZGVmYXVsdFNpZGUpCiB7CiAgICAgQ1NTVmFsdWVJRCBzaWRlID0gZGVm
YXVsdFNpZGU7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBhbW91bnQ7CiAKICAgICBp
ZiAoIW9mZnNldCkKICAgICAgICAgc2lkZSA9IENTU1ZhbHVlQ2VudGVyOwotICAgIGVsc2UgaWYg
KG9mZnNldC0+aXNWYWx1ZUlEKCkpCi0gICAgICAgIHNpZGUgPSBvZmZzZXQtPnZhbHVlSUQoKTsK
LSAgICBlbHNlIGlmIChQYWlyKiBwYWlyID0gb2Zmc2V0LT5wYWlyVmFsdWUoKSkgewotICAgICAg
ICBzaWRlID0gcGFpci0+Zmlyc3QoKS0+dmFsdWVJRCgpOwotICAgICAgICBhbW91bnQgPSBwYWly
LT5zZWNvbmQoKTsKLSAgICB9IGVsc2UKLSAgICAgICAgYW1vdW50ID0gb2Zmc2V0OworICAgIGVs
c2UgaWYgKG9mZnNldC0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIGF1dG8qIHByaW1p
dGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KG9mZnNldCk7CisgICAgICAg
IGlmIChwcmltaXRpdmVWYWx1ZS0+aXNWYWx1ZUlEKCkpCisgICAgICAgICAgICBzaWRlID0gcHJp
bWl0aXZlVmFsdWUtPnZhbHVlSUQoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYW1vdW50
ID0gcHJpbWl0aXZlVmFsdWU7CisgICAgfSBlbHNlIGlmIChvZmZzZXQtPmlzVmFsdWVQYWlyKCkp
IHsKKyAgICAgICAgYXV0byYgcGFpciA9IGRvd25jYXN0PENTU1ZhbHVlUGFpcj4oKm9mZnNldCk7
CisgICAgICAgIHNpZGUgPSBwYWlyLmZpcnN0QXNWYWx1ZUlEKCk7CisgICAgICAgIGFtb3VudCA9
IHBhaXIuc2Vjb25kQXNQcmltaXRpdmUoKTsKKyAgICB9CiAKICAgICBhdXRvJiBjc3NWYWx1ZVBv
b2wgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpOwogICAgIGlmICghYW1vdW50KQpAQCAtODEs
NyArODYsNyBAQCBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBidWlsZFNlcmlhbGl6YWJs
ZVBvc2l0aW9uT2Zmc2V0KENTU1ByaW1pdGl2ZVZhbHVlKgogICAgICAgICBzaWRlID0gZGVmYXVs
dFNpZGU7CiAgICAgfQogCi0gICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShQYWly
OjpjcmVhdGUoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHNpZGUpLCBXVEZNb3ZlKGFtb3VudCkp
KTsKKyAgICByZXR1cm4gQ1NTVmFsdWVQYWlyOjpjcmVhdGUoY3NzVmFsdWVQb29sLmNyZWF0ZVZh
bHVlKHNpZGUpLCBXVEZNb3ZlKGFtb3VudCkpOwogfQogCiBzdGF0aWMgU3RyaW5nIGJ1aWxkQ2ly
Y2xlU3RyaW5nKGNvbnN0IFN0cmluZyYgcmFkaXVzLCBjb25zdCBTdHJpbmcmIGNlbnRlclgsIGNv
bnN0IFN0cmluZyYgY2VudGVyWSkKQEAgLTEwMSwxNiArMTA2LDE2IEBAIHN0YXRpYyBTdHJpbmcg
YnVpbGRDaXJjbGVTdHJpbmcoY29uc3QgU3RyaW5nJiByYWRpdXMsIGNvbnN0IFN0cmluZyYgY2Vu
dGVyWCwgY29uCiAKIFN0cmluZyBDU1NCYXNpY1NoYXBlQ2lyY2xlOjpjc3NUZXh0KCkgY29uc3QK
IHsKLSAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IG5vcm1hbGl6ZWRDWCA9IGJ1aWxkU2VyaWFs
aXphYmxlUG9zaXRpb25PZmZzZXQobV9jZW50ZXJYLmdldCgpLCBDU1NWYWx1ZUxlZnQpOwotICAg
IFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gbm9ybWFsaXplZENZID0gYnVpbGRTZXJpYWxpemFibGVQ
b3NpdGlvbk9mZnNldChtX2NlbnRlclkuZ2V0KCksIENTU1ZhbHVlVG9wKTsKKyAgICBSZWY8Q1NT
VmFsdWVQYWlyPiBub3JtYWxpemVkQ1ggPSBidWlsZFNlcmlhbGl6YWJsZVBvc2l0aW9uT2Zmc2V0
KG1fY2VudGVyWC5nZXQoKSwgQ1NTVmFsdWVMZWZ0KTsKKyAgICBSZWY8Q1NTVmFsdWVQYWlyPiBu
b3JtYWxpemVkQ1kgPSBidWlsZFNlcmlhbGl6YWJsZVBvc2l0aW9uT2Zmc2V0KG1fY2VudGVyWS5n
ZXQoKSwgQ1NTVmFsdWVUb3ApOwogCiAgICAgU3RyaW5nIHJhZGl1czsKICAgICBpZiAobV9yYWRp
dXMgJiYgbV9yYWRpdXMtPnZhbHVlSUQoKSAhPSBDU1NWYWx1ZUNsb3Nlc3RTaWRlKQogICAgICAg
ICByYWRpdXMgPSBtX3JhZGl1cy0+Y3NzVGV4dCgpOwogCiAgICAgcmV0dXJuIGJ1aWxkQ2lyY2xl
U3RyaW5nKHJhZGl1cywKLSAgICAgICAgc2VyaWFsaXplUG9zaXRpb25PZmZzZXQoKm5vcm1hbGl6
ZWRDWC0+cGFpclZhbHVlKCksICpub3JtYWxpemVkQ1ktPnBhaXJWYWx1ZSgpKSwKLSAgICAgICAg
c2VyaWFsaXplUG9zaXRpb25PZmZzZXQoKm5vcm1hbGl6ZWRDWS0+cGFpclZhbHVlKCksICpub3Jt
YWxpemVkQ1gtPnBhaXJWYWx1ZSgpKSk7CisgICAgICAgIHNlcmlhbGl6ZVBvc2l0aW9uT2Zmc2V0
KG5vcm1hbGl6ZWRDWCwgbm9ybWFsaXplZENZKSwKKyAgICAgICAgc2VyaWFsaXplUG9zaXRpb25P
ZmZzZXQobm9ybWFsaXplZENZLCBub3JtYWxpemVkQ1gpKTsKIH0KIAogYm9vbCBDU1NCYXNpY1No
YXBlQ2lyY2xlOjplcXVhbHMoY29uc3QgQ1NTQmFzaWNTaGFwZSYgc2hhcGUpIGNvbnN0CkBAIC0x
NTAsOCArMTU1LDggQEAgc3RhdGljIFN0cmluZyBidWlsZEVsbGlwc2VTdHJpbmcoY29uc3QgU3Ry
aW5nJiByYWRpdXNYLCBjb25zdCBTdHJpbmcmIHJhZGl1c1ksIGMKIAogU3RyaW5nIENTU0Jhc2lj
U2hhcGVFbGxpcHNlOjpjc3NUZXh0KCkgY29uc3QKIHsKLSAgICBSZWY8Q1NTUHJpbWl0aXZlVmFs
dWU+IG5vcm1hbGl6ZWRDWCA9IGJ1aWxkU2VyaWFsaXphYmxlUG9zaXRpb25PZmZzZXQobV9jZW50
ZXJYLmdldCgpLCBDU1NWYWx1ZUxlZnQpOwotICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gbm9y
bWFsaXplZENZID0gYnVpbGRTZXJpYWxpemFibGVQb3NpdGlvbk9mZnNldChtX2NlbnRlclkuZ2V0
KCksIENTU1ZhbHVlVG9wKTsKKyAgICBSZWY8Q1NTVmFsdWVQYWlyPiBub3JtYWxpemVkQ1ggPSBi
dWlsZFNlcmlhbGl6YWJsZVBvc2l0aW9uT2Zmc2V0KG1fY2VudGVyWC5nZXQoKSwgQ1NTVmFsdWVM
ZWZ0KTsKKyAgICBSZWY8Q1NTVmFsdWVQYWlyPiBub3JtYWxpemVkQ1kgPSBidWlsZFNlcmlhbGl6
YWJsZVBvc2l0aW9uT2Zmc2V0KG1fY2VudGVyWS5nZXQoKSwgQ1NTVmFsdWVUb3ApOwogCiAgICAg
U3RyaW5nIHJhZGl1c1g7CiAgICAgU3RyaW5nIHJhZGl1c1k7CkBAIC0xNjUsOCArMTcwLDggQEAg
U3RyaW5nIENTU0Jhc2ljU2hhcGVFbGxpcHNlOjpjc3NUZXh0KCkgY29uc3QKICAgICAgICAgfQog
ICAgIH0KICAgICByZXR1cm4gYnVpbGRFbGxpcHNlU3RyaW5nKHJhZGl1c1gsIHJhZGl1c1ksCi0g
ICAgICAgIHNlcmlhbGl6ZVBvc2l0aW9uT2Zmc2V0KCpub3JtYWxpemVkQ1gtPnBhaXJWYWx1ZSgp
LCAqbm9ybWFsaXplZENZLT5wYWlyVmFsdWUoKSksCi0gICAgICAgIHNlcmlhbGl6ZVBvc2l0aW9u
T2Zmc2V0KCpub3JtYWxpemVkQ1ktPnBhaXJWYWx1ZSgpLCAqbm9ybWFsaXplZENYLT5wYWlyVmFs
dWUoKSkpOworICAgICAgICBzZXJpYWxpemVQb3NpdGlvbk9mZnNldChub3JtYWxpemVkQ1gsIG5v
cm1hbGl6ZWRDWSksCisgICAgICAgIHNlcmlhbGl6ZVBvc2l0aW9uT2Zmc2V0KG5vcm1hbGl6ZWRD
WSwgbm9ybWFsaXplZENYKSk7CiB9CiAKIGJvb2wgQ1NTQmFzaWNTaGFwZUVsbGlwc2U6OmVxdWFs
cyhjb25zdCBDU1NCYXNpY1NoYXBlJiBzaGFwZSkgY29uc3QKQEAgLTMzOSwxMiArMzQ0LDExIEBA
IHN0YXRpYyBTdHJpbmcgYnVpbGRJbnNldFN0cmluZyhjb25zdCBTdHJpbmcmIHRvcCwgY29uc3Qg
U3RyaW5nJiByaWdodCwgY29uc3QgU3RyCiAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwog
fQogCi1zdGF0aWMgaW5saW5lIHZvaWQgdXBkYXRlQ29ybmVyUmFkaXVzV2lkdGhBbmRIZWlnaHQo
Q1NTUHJpbWl0aXZlVmFsdWUqIGNvcm5lciwgU3RyaW5nJiB3aWR0aCwgU3RyaW5nJiBoZWlnaHQp
CitzdGF0aWMgaW5saW5lIHZvaWQgdXBkYXRlQ29ybmVyUmFkaXVzV2lkdGhBbmRIZWlnaHQoQ1NT
VmFsdWVQYWlyKiByYWRpdXMsIFN0cmluZyYgd2lkdGgsIFN0cmluZyYgaGVpZ2h0KQogewotICAg
IGlmICghY29ybmVyKQorICAgIGlmICghcmFkaXVzKQogICAgICAgICByZXR1cm47CiAKLSAgICBQ
YWlyKiByYWRpdXMgPSBjb3JuZXItPnBhaXJWYWx1ZSgpOwogICAgIHdpZHRoID0gcmFkaXVzLT5m
aXJzdCgpID8gcmFkaXVzLT5maXJzdCgpLT5jc3NUZXh0KCkgOiAiMCJfc3RyOwogICAgIGlmIChy
YWRpdXMtPnNlY29uZCgpKQogICAgICAgICBoZWlnaHQgPSByYWRpdXMtPnNlY29uZCgpLT5jc3NU
ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oCmluZGV4IDEwNWM0NjA5NDFkNjc0
NGU1N2JlN2EzNWQ2YjA0ZmM3M2ZhYmJiZWMuLmFjNmExOTQ3OWNkOGQ0OGQ5NmFkYTU0MWNkYTM3
MTcwNWE4ZjI3ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBl
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oCkBAIC0yOSw2ICsy
OSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ1NTVmFsdWVQYWlyLmgiCiAjaW5j
bHVkZSAiV2luZFJ1bGUuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1R5cGVDYXN0cy5oPgpAQCAtMzgsNiArMzksNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDU1NQcmltaXRpdmVWYWx1ZTsKK2NsYXNzIENTU1ZhbHVlOwogY2xhc3MgU1ZHUGF0aEJ5
dGVTdHJlYW07CiAKIGNsYXNzIENTU0Jhc2ljU2hhcGUgOiBwdWJsaWMgUmVmQ291bnRlZDxDU1NC
YXNpY1NoYXBlPiB7CkBAIC03MSwxMCArNzMsMTAgQEAgcHVibGljOgogICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBib3R0b20oKSBjb25zdCB7IHJldHVybiBtX2JvdHRvbS5nZXQoKTsgfQogICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBsZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9sZWZ0LmdldCgpOyB9CiAK
LSAgICBDU1NQcmltaXRpdmVWYWx1ZSogdG9wTGVmdFJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIG1f
dG9wTGVmdFJhZGl1cy5nZXQoKTsgfQotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB0b3BSaWdodFJh
ZGl1cygpIGNvbnN0IHsgcmV0dXJuIG1fdG9wUmlnaHRSYWRpdXMuZ2V0KCk7IH0KLSAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogYm90dG9tUmlnaHRSYWRpdXMoKSBjb25zdCB7IHJldHVybiBtX2JvdHRv
bVJpZ2h0UmFkaXVzLmdldCgpOyB9Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGJvdHRvbUxlZnRS
YWRpdXMoKSBjb25zdCB7IHJldHVybiBtX2JvdHRvbUxlZnRSYWRpdXMuZ2V0KCk7IH0KKyAgICBD
U1NWYWx1ZVBhaXIqIHRvcExlZnRSYWRpdXMoKSBjb25zdCB7IHJldHVybiBtX3RvcExlZnRSYWRp
dXMuZ2V0KCk7IH0KKyAgICBDU1NWYWx1ZVBhaXIqIHRvcFJpZ2h0UmFkaXVzKCkgY29uc3QgeyBy
ZXR1cm4gbV90b3BSaWdodFJhZGl1cy5nZXQoKTsgfQorICAgIENTU1ZhbHVlUGFpciogYm90dG9t
UmlnaHRSYWRpdXMoKSBjb25zdCB7IHJldHVybiBtX2JvdHRvbVJpZ2h0UmFkaXVzLmdldCgpOyB9
CisgICAgQ1NTVmFsdWVQYWlyKiBib3R0b21MZWZ0UmFkaXVzKCkgY29uc3QgeyByZXR1cm4gbV9i
b3R0b21MZWZ0UmFkaXVzLmdldCgpOyB9CiAKICAgICB2b2lkIHNldFRvcChSZWY8Q1NTUHJpbWl0
aXZlVmFsdWU+JiYgdG9wKSB7IG1fdG9wID0gV1RGTW92ZSh0b3ApOyB9CiAgICAgdm9pZCBzZXRS
aWdodChSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+JiYgcmlnaHQpIHsgbV9yaWdodCA9IFdURk1vdmUo
cmlnaHQpOyB9CkBAIC0xMDQsMTAgKzEwNiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHVwZGF0ZVNo
YXBlU2l6ZTRWYWx1ZXMoV1RGTW92ZSh2YWx1ZTEpLCB2YWx1ZTIuY29weVJlZigpLCBXVEZNb3Zl
KHZhbHVlMyksIHZhbHVlMi5jb3B5UmVmKCkpOwogICAgIH0KIAotICAgIHZvaWQgc2V0VG9wTGVm
dFJhZGl1cyhSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiYgcmFkaXVzKSB7IG1fdG9wTGVmdFJh
ZGl1cyA9IFdURk1vdmUocmFkaXVzKTsgfQotICAgIHZvaWQgc2V0VG9wUmlnaHRSYWRpdXMoUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYmIHJhZGl1cykgeyBtX3RvcFJpZ2h0UmFkaXVzID0gV1RG
TW92ZShyYWRpdXMpOyB9Ci0gICAgdm9pZCBzZXRCb3R0b21SaWdodFJhZGl1cyhSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+JiYgcmFkaXVzKSB7IG1fYm90dG9tUmlnaHRSYWRpdXMgPSBXVEZNb3Zl
KHJhZGl1cyk7IH0KLSAgICB2b2lkIHNldEJvdHRvbUxlZnRSYWRpdXMoUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiYmIHJhZGl1cykgeyBtX2JvdHRvbUxlZnRSYWRpdXMgPSBXVEZNb3ZlKHJhZGl1
cyk7IH0KKyAgICB2b2lkIHNldFRvcExlZnRSYWRpdXMoUmVmUHRyPENTU1ZhbHVlUGFpcj4mJiBy
YWRpdXMpIHsgbV90b3BMZWZ0UmFkaXVzID0gV1RGTW92ZShyYWRpdXMpOyB9CisgICAgdm9pZCBz
ZXRUb3BSaWdodFJhZGl1cyhSZWZQdHI8Q1NTVmFsdWVQYWlyPiYmIHJhZGl1cykgeyBtX3RvcFJp
Z2h0UmFkaXVzID0gV1RGTW92ZShyYWRpdXMpOyB9CisgICAgdm9pZCBzZXRCb3R0b21SaWdodFJh
ZGl1cyhSZWZQdHI8Q1NTVmFsdWVQYWlyPiYmIHJhZGl1cykgeyBtX2JvdHRvbVJpZ2h0UmFkaXVz
ID0gV1RGTW92ZShyYWRpdXMpOyB9CisgICAgdm9pZCBzZXRCb3R0b21MZWZ0UmFkaXVzKFJlZlB0
cjxDU1NWYWx1ZVBhaXI+JiYgcmFkaXVzKSB7IG1fYm90dG9tTGVmdFJhZGl1cyA9IFdURk1vdmUo
cmFkaXVzKTsgfQogCiBwcml2YXRlOgogICAgIENTU0Jhc2ljU2hhcGVJbnNldCgpID0gZGVmYXVs
dDsKQEAgLTEyMSwyMiArMTIzLDIyIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBtX2JvdHRvbTsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IG1fbGVmdDsK
IAotICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV90b3BMZWZ0UmFkaXVzOwotICAgIFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV90b3BSaWdodFJhZGl1czsKLSAgICBSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IG1fYm90dG9tUmlnaHRSYWRpdXM7Ci0gICAgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBtX2JvdHRvbUxlZnRSYWRpdXM7CisgICAgUmVmUHRyPENTU1ZhbHVlUGFpcj4g
bV90b3BMZWZ0UmFkaXVzOworICAgIFJlZlB0cjxDU1NWYWx1ZVBhaXI+IG1fdG9wUmlnaHRSYWRp
dXM7CisgICAgUmVmUHRyPENTU1ZhbHVlUGFpcj4gbV9ib3R0b21SaWdodFJhZGl1czsKKyAgICBS
ZWZQdHI8Q1NTVmFsdWVQYWlyPiBtX2JvdHRvbUxlZnRSYWRpdXM7CiB9OwogCiBjbGFzcyBDU1NC
YXNpY1NoYXBlQ2lyY2xlIGZpbmFsIDogcHVibGljIENTU0Jhc2ljU2hhcGUgewogcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8Q1NTQmFzaWNTaGFwZUNpcmNsZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBDU1NCYXNpY1NoYXBlQ2lyY2xlKTsgfQogCi0gICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIGNlbnRlclgoKSBjb25zdCB7IHJldHVybiBtX2NlbnRlclguZ2V0KCk7IH0KLSAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogY2VudGVyWSgpIGNvbnN0IHsgcmV0dXJuIG1fY2VudGVyWS5nZXQoKTsg
fQorICAgIENTU1ZhbHVlKiBjZW50ZXJYKCkgY29uc3QgeyByZXR1cm4gbV9jZW50ZXJYLmdldCgp
OyB9CisgICAgQ1NTVmFsdWUqIGNlbnRlclkoKSBjb25zdCB7IHJldHVybiBtX2NlbnRlclkuZ2V0
KCk7IH0KICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcmFkaXVzKCkgY29uc3QgeyByZXR1cm4gbV9y
YWRpdXMuZ2V0KCk7IH0KIAotICAgIHZvaWQgc2V0Q2VudGVyWChSZWY8Q1NTUHJpbWl0aXZlVmFs
dWU+JiYgY2VudGVyWCkgeyBtX2NlbnRlclggPSBXVEZNb3ZlKGNlbnRlclgpOyB9Ci0gICAgdm9p
ZCBzZXRDZW50ZXJZKFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4mJiBjZW50ZXJZKSB7IG1fY2VudGVy
WSA9IFdURk1vdmUoY2VudGVyWSk7IH0KKyAgICB2b2lkIHNldENlbnRlclgoUmVmPENTU1ZhbHVl
PiYmIGNlbnRlclgpIHsgbV9jZW50ZXJYID0gV1RGTW92ZShjZW50ZXJYKTsgfQorICAgIHZvaWQg
c2V0Q2VudGVyWShSZWY8Q1NTVmFsdWU+JiYgY2VudGVyWSkgeyBtX2NlbnRlclkgPSBXVEZNb3Zl
KGNlbnRlclkpOyB9CiAgICAgdm9pZCBzZXRSYWRpdXMoUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiYm
IHJhZGl1cykgeyBtX3JhZGl1cyA9IFdURk1vdmUocmFkaXVzKTsgfQogCiBwcml2YXRlOgpAQCAt
MTQ2LDggKzE0OCw4IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGNzc1RleHQoKSBjb25zdCBmaW5h
bDsKICAgICBib29sIGVxdWFscyhjb25zdCBDU1NCYXNpY1NoYXBlJikgY29uc3QgZmluYWw7CiAK
LSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IG1fY2VudGVyWDsKLSAgICBSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IG1fY2VudGVyWTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IG1fY2VudGVy
WDsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IG1fY2VudGVyWTsKICAgICBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IG1fcmFkaXVzOwogfTsKIApAQCAtMTU1LDEzICsxNTcsMTMgQEAgY2xhc3MgQ1NT
QmFzaWNTaGFwZUVsbGlwc2UgZmluYWwgOiBwdWJsaWMgQ1NTQmFzaWNTaGFwZSB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFJlZjxDU1NCYXNpY1NoYXBlRWxsaXBzZT4gY3JlYXRlKCkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDU1NCYXNpY1NoYXBlRWxsaXBzZSk7IH0KIAotICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBjZW50ZXJYKCkgY29uc3QgeyByZXR1cm4gbV9jZW50ZXJYLmdldCgpOyB9Ci0gICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIGNlbnRlclkoKSBjb25zdCB7IHJldHVybiBtX2NlbnRlclkuZ2V0
KCk7IH0KKyAgICBDU1NWYWx1ZSogY2VudGVyWCgpIGNvbnN0IHsgcmV0dXJuIG1fY2VudGVyWC5n
ZXQoKTsgfQorICAgIENTU1ZhbHVlKiBjZW50ZXJZKCkgY29uc3QgeyByZXR1cm4gbV9jZW50ZXJZ
LmdldCgpOyB9CiAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHJhZGl1c1goKSBjb25zdCB7IHJldHVy
biBtX3JhZGl1c1guZ2V0KCk7IH0KICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcmFkaXVzWSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmFkaXVzWS5nZXQoKTsgfQogCi0gICAgdm9pZCBzZXRDZW50ZXJYKFJl
ZjxDU1NQcmltaXRpdmVWYWx1ZT4mJiBjZW50ZXJYKSB7IG1fY2VudGVyWCA9IFdURk1vdmUoY2Vu
dGVyWCk7IH0KLSAgICB2b2lkIHNldENlbnRlclkoUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiYmIGNl
bnRlclkpIHsgbV9jZW50ZXJZID0gV1RGTW92ZShjZW50ZXJZKTsgfQorICAgIHZvaWQgc2V0Q2Vu
dGVyWChSZWY8Q1NTVmFsdWU+JiYgY2VudGVyWCkgeyBtX2NlbnRlclggPSBXVEZNb3ZlKGNlbnRl
clgpOyB9CisgICAgdm9pZCBzZXRDZW50ZXJZKFJlZjxDU1NWYWx1ZT4mJiBjZW50ZXJZKSB7IG1f
Y2VudGVyWSA9IFdURk1vdmUoY2VudGVyWSk7IH0KICAgICB2b2lkIHNldFJhZGl1c1goUmVmPENT
U1ByaW1pdGl2ZVZhbHVlPiYmIHJhZGl1c1gpIHsgbV9yYWRpdXNYID0gV1RGTW92ZShyYWRpdXNY
KTsgfQogICAgIHZvaWQgc2V0UmFkaXVzWShSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+JiYgcmFkaXVz
WSkgeyBtX3JhZGl1c1kgPSBXVEZNb3ZlKHJhZGl1c1kpOyB9CiAKQEAgLTE3Miw4ICsxNzQsOCBA
QCBwcml2YXRlOgogICAgIFN0cmluZyBjc3NUZXh0KCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBl
cXVhbHMoY29uc3QgQ1NTQmFzaWNTaGFwZSYpIGNvbnN0IGZpbmFsOwogCi0gICAgUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiBtX2NlbnRlclg7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBtX2NlbnRlclk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBtX2NlbnRlclg7CisgICAgUmVmUHRy
PENTU1ZhbHVlPiBtX2NlbnRlclk7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBtX3Jh
ZGl1c1g7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBtX3JhZGl1c1k7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCmluZGV4IGUyMTFhZWQxZmUz
OTQ1YjM1ZmY2YzNmNWNkNDk0YzlhZDhiYmFkNzYuLjlhNGZjM2ZiNjc1YjdmZWMwMDhmYTczNzBk
OWFlN2YwMDVhMzk4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxh
dGlvblZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1
ZS5jcHAKQEAgLTIxMSw3ICsyMTEsNiBAQCBzdGF0aWMgYm9vbCBoYXNEb3VibGVWYWx1ZShDU1NV
bml0VHlwZSB0eXBlKQogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DT1VOVEVSOgogICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19SRUNUOgogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19SR0JD
T0xPUjoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUEFJUjoKICAgICBjYXNlIENTU1VuaXRU
eXBlOjpDU1NfVU5JQ09ERV9SQU5HRToKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ09VTlRF
Ul9OQU1FOgogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19TSEFQRToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggNmRkYjZj
YjBjOGVjNmFjNWYzMzgzN2QyZWZjN2NkNmYxMzgwMTc1YS4uZTFkZDUyNDY3MTUxYTc5NjUwNDc3
MjkzMTM4ZjU5ZTQxNDQ4M2Q1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJD
U1NTaGFkb3dWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaCIKICNp
bmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKKyNpbmNsdWRlICJDU1NWYWx1ZVBhaXIuaCIKICNpbmNs
dWRlICJDU1NWYWx1ZVBvb2wuaCIKICNpbmNsdWRlICJDb21wb3NlZFRyZWVBbmNlc3Rvckl0ZXJh
dG9yLmgiCiAjaW5jbHVkZSAiQ29udGVudERhdGEuaCIKQEAgLTU3LDcgKzU4LDYgQEAKICNpbmNs
dWRlICJGb250U2VsZWN0aW9uVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiRm9udFRhZ2dlZFNl
dHRpbmdzLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCi0jaW5jbHVkZSAiUGFpci5o
IgogI2luY2x1ZGUgIlF1b3Rlc0RhdGEuaCIKICNpbmNsdWRlICJSZWN0LmgiCiAjaW5jbHVkZSAi
UmVuZGVyQmxvY2suaCIKQEAgLTIxOSw3ICsyMTksNyBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiB2
YWx1ZUZvck5pbmVQaWVjZUltYWdlUmVwZWF0KGNvbnN0IE5pbmVQaWVjZUltYWdlJiBpbWFnZSkK
ICAgICAgICAgdmVydGljYWxSZXBlYXQgPSBob3Jpem9udGFsUmVwZWF0LmNvcHlSZWYoKTsKICAg
ICBlbHNlCiAgICAgICAgIHZlcnRpY2FsUmVwZWF0ID0gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50
aWZpZXJWYWx1ZSh2YWx1ZUZvclJlcGVhdFJ1bGUoaW1hZ2UudmVydGljYWxSdWxlKCkpKTsKLSAg
ICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKFBhaXI6OmNyZWF0ZShXVEZNb3ZlKGhv
cml6b250YWxSZXBlYXQpLCBXVEZNb3ZlKHZlcnRpY2FsUmVwZWF0KSkpOworICAgIHJldHVybiBD
U1NWYWx1ZVBhaXI6OmNyZWF0ZShXVEZNb3ZlKGhvcml6b250YWxSZXBlYXQpLCBXVEZNb3ZlKHZl
cnRpY2FsUmVwZWF0KSk7CiB9CiAKIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHZhbHVlRm9yTmluZVBp
ZWNlSW1hZ2UoY29uc3QgTmluZVBpZWNlSW1hZ2UmIGltYWdlKQpAQCAtMzUzNSw3ICszNTM1LDcg
QEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvclByb3Bl
cnR5SW5TdHlsZShjb25zdCBSZW5kZXJTdHkKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEluaXRpYWxMZXR0ZXI6IHsKICAgICAgICAgICAgIGF1dG8gZHJvcCA9ICFzdHlsZS5pbml0aWFs
TGV0dGVyRHJvcCgpID8gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZU5vcm1hbCkgOiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUuaW5pdGlhbExldHRlckRy
b3AoKSwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpOwogICAgICAgICAgICAgYXV0byBzaXplID0g
IXN0eWxlLmluaXRpYWxMZXR0ZXJIZWlnaHQoKSA/IGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpIDogY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxl
LmluaXRpYWxMZXR0ZXJIZWlnaHQoKSwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpOwotICAgICAg
ICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShQYWlyOjpjcmVhdGUoV1RGTW92
ZShkcm9wKSwgV1RGTW92ZShzaXplKSkpOworICAgICAgICAgICAgcmV0dXJuIENTU1ZhbHVlUGFp
cjo6Y3JlYXRlKFdURk1vdmUoZHJvcCksIFdURk1vdmUoc2l6ZSkpOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBzZToKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2U6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKaW5kZXggZjJmMWQwYTVjYjM3MWRkZmExZGY0NDhhNWMy
NzJhZWVmNDI1ZDU0Ni4uMTVjZmIwYWI5ZTJiOTlhOWFiM2FiZDE2OTQ3ZDE2NDM4MzRmY2VkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcApAQCAtMjksMTAgKzI5LDEw
IEBACiAjaW5jbHVkZSAiQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1RvTGVu
Z3RoQ29udmVyc2lvbkRhdGEuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCisjaW5j
bHVkZSAiQ1NTVmFsdWVQYWlyLmgiCiAjaW5jbHVkZSAiQ29sb3JCbGVuZGluZy5oIgogI2luY2x1
ZGUgIkdyYWRpZW50SW1hZ2UuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKLSNpbmNs
dWRlICJQYWlyLmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRl
clZpZXcuaCIKICNpbmNsdWRlICJTdHlsZUJ1aWxkZXJTdGF0ZS5oIgpAQCAtNTYzLDcgKzU2Myw3
IEBAIEdyYWRpZW50OjpDb2xvclN0b3BWZWN0b3IgQ1NTR3JhZGllbnRWYWx1ZTo6Y29tcHV0ZVN0
b3BzKEdyYWRpZW50QWRhcHRlciYgZ3JhZGllCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3Rh
dGljIGZsb2F0IHBvc2l0aW9uRnJvbVZhbHVlKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1
ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSwgYm9vbCBpc0hvcml6b250YWwpCitzdGF0aWMgZmxvYXQgcG9zaXRp
b25Gcm9tVmFsdWUoY29uc3QgQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZl
cnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgY29uc3QgRmxvYXRTaXplJiBzaXplLCBib29sIGlz
SG9yaXpvbnRhbCkKIHsKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gMDsKQEAgLTU3
MiwyOCArNTcyLDM1IEBAIHN0YXRpYyBmbG9hdCBwb3NpdGlvbkZyb21WYWx1ZShjb25zdCBDU1NQ
cmltaXRpdmVWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoCiAgICAgZmxvYXQgc2lnbiA9
IDE7CiAgICAgZmxvYXQgZWRnZURpc3RhbmNlID0gaXNIb3Jpem9udGFsID8gc2l6ZS53aWR0aCgp
IDogc2l6ZS5oZWlnaHQoKTsKIAorICAgIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRp
dmVWYWx1ZSA9IG51bGxwdHI7CiAgICAgLy8gSW4gdGhpcyBjYXNlIHRoZSBjZW50ZXIgb2YgdGhl
IGdyYWRpZW50IGlzIGdpdmVuIHJlbGF0aXZlIHRvIGFuIGVkZ2UgaW4gdGhlCiAgICAgLy8gZm9y
bSBvZjogWyB0b3AgfCBib3R0b20gfCByaWdodCB8IGxlZnQgXSBbIDxwZXJjZW50YWdlPiB8IDxs
ZW5ndGg+IF0uCi0gICAgaWYgKHZhbHVlLT5pc1BhaXIoKSkgewotICAgICAgICBDU1NWYWx1ZUlE
IG9yaWdpbklEID0gdmFsdWUtPnBhaXJWYWx1ZSgpLT5maXJzdCgpLT52YWx1ZUlEKCk7CisgICAg
aWYgKHZhbHVlLT5pc1ZhbHVlUGFpcigpKSB7CisgICAgICAgIGF1dG8mIHBhaXIgPSBkb3duY2Fz
dDxDU1NWYWx1ZVBhaXI+KCp2YWx1ZSk7CisgICAgICAgIENTU1ZhbHVlSUQgb3JpZ2luSUQgPSBw
YWlyLmZpcnN0QXNWYWx1ZUlEKCk7CiAgICAgICAgIGlmIChvcmlnaW5JRCA9PSBDU1NWYWx1ZVJp
Z2h0IHx8IG9yaWdpbklEID09IENTU1ZhbHVlQm90dG9tKSB7CiAgICAgICAgICAgICAvLyBGb3Ig
cmlnaHQvYm90dG9tLCB0aGUgb2Zmc2V0IGlzIHJlbGF0aXZlIHRvIHRoZSBmYXIgZWRnZS4KICAg
ICAgICAgICAgIG9yaWdpbiA9IGVkZ2VEaXN0YW5jZTsKICAgICAgICAgICAgIHNpZ24gPSAtMTsK
ICAgICAgICAgfQotICAgICAgICB2YWx1ZSA9IHZhbHVlLT5wYWlyVmFsdWUoKS0+c2Vjb25kKCk7
CisgICAgICAgIHByaW1pdGl2ZVZhbHVlID0gcGFpci5zZWNvbmRBc1ByaW1pdGl2ZSgpLmdldCgp
OworICAgIH0gZWxzZSBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgcHJp
bWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOworICAgIGVs
c2UgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgCisgICAgICAgIHJldHVybiAwOwog
ICAgIH0KIAotICAgIGlmICh2YWx1ZS0+aXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIG9yaWdp
biArIHNpZ24gKiB2YWx1ZS0+ZmxvYXRWYWx1ZSgpICogY29udmVyc2lvbkRhdGEuem9vbSgpOwor
ICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNOdW1iZXIoKSkKKyAgICAgICAgcmV0dXJuIG9yaWdp
biArIHNpZ24gKiBwcmltaXRpdmVWYWx1ZS0+ZmxvYXRWYWx1ZSgpICogY29udmVyc2lvbkRhdGEu
em9vbSgpOwogCi0gICAgaWYgKHZhbHVlLT5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgcmV0dXJu
IG9yaWdpbiArIHNpZ24gKiB2YWx1ZS0+ZmxvYXRWYWx1ZSgpIC8gMTAwICogZWRnZURpc3RhbmNl
OworICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNQZXJjZW50YWdlKCkpCisgICAgICAgIHJldHVy
biBvcmlnaW4gKyBzaWduICogcHJpbWl0aXZlVmFsdWUtPmZsb2F0VmFsdWUoKSAvIDEwMCAqIGVk
Z2VEaXN0YW5jZTsKIAotICAgIGlmICh2YWx1ZS0+aXNDYWxjdWxhdGVkUGVyY2VudGFnZVdpdGhM
ZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIG9yaWdpbiArIHNpZ24gKiB2YWx1ZS0+Y3NzQ2FsY1Zh
bHVlKCktPmNyZWF0ZUNhbGN1bGF0aW9uVmFsdWUoY29udmVyc2lvbkRhdGEpLT5ldmFsdWF0ZShl
ZGdlRGlzdGFuY2UpOworICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNDYWxjdWxhdGVkUGVyY2Vu
dGFnZVdpdGhMZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIG9yaWdpbiArIHNpZ24gKiBwcmltaXRp
dmVWYWx1ZS0+Y3NzQ2FsY1ZhbHVlKCktPmNyZWF0ZUNhbGN1bGF0aW9uVmFsdWUoY29udmVyc2lv
bkRhdGEpLT5ldmFsdWF0ZShlZGdlRGlzdGFuY2UpOwogCi0gICAgc3dpdGNoICh2YWx1ZS0+dmFs
dWVJRCgpKSB7CisgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+dmFsdWVJRCgpKSB7CiAgICAg
Y2FzZSBDU1NWYWx1ZVRvcDoKICAgICAgICAgQVNTRVJUKCFpc0hvcml6b250YWwpOwogICAgICAg
ICByZXR1cm4gMDsKQEAgLTYxMiwxMSArNjE5LDExIEBAIHN0YXRpYyBmbG9hdCBwb3NpdGlvbkZy
b21WYWx1ZShjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3Ro
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHJldHVybiBvcmlnaW4gKyBzaWduICogdmFs
dWUtPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KGNvbnZlcnNpb25EYXRhKTsKKyAgICByZXR1cm4gb3Jp
Z2luICsgc2lnbiAqIHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoPGZsb2F0Pihjb252ZXJz
aW9uRGF0YSk7CiB9CiAKIC8vIFJlc29sdmUgcG9pbnRzL3JhZGlpIHRvIGZyb250IGVuZCB2YWx1
ZXMuCi1zdGF0aWMgRmxvYXRQb2ludCBjb21wdXRlRW5kUG9pbnQoY29uc3QgQ1NTUHJpbWl0aXZl
VmFsdWUqIGhvcml6b250YWwsIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlKiB2ZXJ0aWNhbCwgY29u
c3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSkKK3N0YXRpYyBGbG9hdFBvaW50IGNvbXB1dGVFbmRQb2ludChjb25zdCBDU1NW
YWx1ZSogaG9yaXpvbnRhbCwgY29uc3QgQ1NTVmFsdWUqIHZlcnRpY2FsLCBjb25zdCBDU1NUb0xl
bmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgY29uc3QgRmxvYXRTaXplJiBzaXpl
KQogewogICAgIHJldHVybiB7IHBvc2l0aW9uRnJvbVZhbHVlKGhvcml6b250YWwsIGNvbnZlcnNp
b25EYXRhLCBzaXplLCB0cnVlKSwgcG9zaXRpb25Gcm9tVmFsdWUodmVydGljYWwsIGNvbnZlcnNp
b25EYXRhLCBzaXplLCBmYWxzZSkgfTsKIH0KQEAgLTcxMywxMCArNzIwLDExIEBAIFN0cmluZyBD
U1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKIAogICAgICAgICBi
b29sIHdyb3RlU29tZXRoaW5nID0gZmFsc2U7CiAKKyAgICAgICAgYXV0byBmaXJzdFlWYWx1ZUlE
ID0gZmlyc3RZKCkgJiYgZmlyc3RZKCktPmlzUHJpbWl0aXZlVmFsdWUoKSA/IGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPigqZmlyc3RZKCkpLnZhbHVlSUQoKSA6IENTU1ZhbHVlSW52YWxpZDsK
ICAgICAgICAgaWYgKG1fYW5nbGUgJiYgbV9hbmdsZS0+Y29tcHV0ZURlZ3JlZXMoKSAhPSAxODAp
IHsKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobV9hbmdsZS0+Y3NzVGV4dCgpKTsKICAgICAg
ICAgICAgIHdyb3RlU29tZXRoaW5nID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIGlmICgoZmlyc3RY
KCkgfHwgZmlyc3RZKCkpICYmICEoIWZpcnN0WCgpICYmIGZpcnN0WSgpICYmIGZpcnN0WSgpLT52
YWx1ZUlEKCkgPT0gQ1NTVmFsdWVCb3R0b20pKSB7CisgICAgICAgIH0gZWxzZSBpZiAoKGZpcnN0
WCgpIHx8IGZpcnN0WSgpKSAmJiAhKCFmaXJzdFgoKSAmJiBmaXJzdFlWYWx1ZUlEID09IENTU1Zh
bHVlQm90dG9tKSkgewogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoInRvICIpOwog
ICAgICAgICAgICAgYXBwZW5kU3BhY2VTZXBhcmF0ZWRPcHRpb25hbENTU1B0clRleHQocmVzdWx0
LCBmaXJzdFgoKSwgZmlyc3RZKCkpOwogICAgICAgICAgICAgd3JvdGVTb21ldGhpbmcgPSB0cnVl
OwpAQCAtODQyLDkgKzg1MCwxMSBAQCBSZWY8R3JhZGllbnQ+IENTU0xpbmVhckdyYWRpZW50VmFs
dWU6OmNyZWF0ZUdyYWRpZW50KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjbwogICAgICAgICAg
ICAgICAgIC8vICJNYWdpYyIgY29ybmVycywgc28gdGhlIDUwJSBsaW5lIHRvdWNoZXMgdHdvIGNv
cm5lcnMuCiAgICAgICAgICAgICAgICAgZmxvYXQgcmlzZSA9IHNpemUud2lkdGgoKTsKICAgICAg
ICAgICAgICAgICBmbG9hdCBydW4gPSBzaXplLmhlaWdodCgpOwotICAgICAgICAgICAgICAgIGlm
IChmaXJzdFgoKSAmJiBmaXJzdFgoKS0+dmFsdWVJRCgpID09IENTU1ZhbHVlTGVmdCkKKyAgICAg
ICAgICAgICAgICBhdXRvIGZpcnN0WFZhbHVlSUQgPSBmaXJzdFgoKSAmJiBmaXJzdFgoKS0+aXNQ
cmltaXRpdmVWYWx1ZSgpID8gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpmaXJzdFgoKSku
dmFsdWVJRCgpIDogQ1NTVmFsdWVJbnZhbGlkOworICAgICAgICAgICAgICAgIGF1dG8gZmlyc3RZ
VmFsdWVJRCA9IGZpcnN0WSgpICYmIGZpcnN0WSgpLT5pc1ByaW1pdGl2ZVZhbHVlKCkgPyBkb3du
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKmZpcnN0WSgpKS52YWx1ZUlEKCkgOiBDU1NWYWx1ZUlu
dmFsaWQ7CisgICAgICAgICAgICAgICAgaWYgKGZpcnN0WFZhbHVlSUQgPT0gQ1NTVmFsdWVMZWZ0
KQogICAgICAgICAgICAgICAgICAgICBydW4gKj0gLTE7Ci0gICAgICAgICAgICAgICAgaWYgKGZp
cnN0WSgpICYmIGZpcnN0WSgpLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVCb3R0b20pCisgICAgICAg
ICAgICAgICAgaWYgKGZpcnN0WVZhbHVlSUQgPT0gQ1NTVmFsdWVCb3R0b20pCiAgICAgICAgICAg
ICAgICAgICAgIHJpc2UgKj0gLTE7CiAgICAgICAgICAgICAgICAgLy8gQ29tcHV0ZSBhbmdsZSwg
YW5kIGZsaXAgaXQgYmFjayB0byAiYmVhcmluZyBhbmdsZSIgZGVncmVlcy4KICAgICAgICAgICAg
ICAgICBmbG9hdCBhbmdsZSA9IDkwIC0gcmFkMmRlZyhhdGFuMihyaXNlLCBydW4pKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCmluZGV4IDQwNjk3OTg0NjdkZThhODJlZDM0NTJm
NDJkZTY0YzAzMmNhZTFhMzMuLjMyZWQwZTU5NDkzYTRkNjlmY2JhOTBiZDgzY2IyZTEyNjBmOTUz
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaApAQCAtNTksMTAgKzU5LDEw
IEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTR3JhZGllbnRDb2xvclN0b3AmIGEs
IGNvbnN0IENTU0dyYWRpZW50Q29sb3JTdG9wCiAKIGNsYXNzIENTU0dyYWRpZW50VmFsdWUgOiBw
dWJsaWMgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRGaXJz
dFgoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYmIHZhbHVlKSB7IG1fZmlyc3RYID0gV1RGTW92
ZSh2YWx1ZSk7IH0KLSAgICB2b2lkIHNldEZpcnN0WShSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
JiYgdmFsdWUpIHsgbV9maXJzdFkgPSBXVEZNb3ZlKHZhbHVlKTsgfQotICAgIHZvaWQgc2V0U2Vj
b25kWChSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiYgdmFsdWUpIHsgbV9zZWNvbmRYID0gV1RG
TW92ZSh2YWx1ZSk7IH0KLSAgICB2b2lkIHNldFNlY29uZFkoUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiYmIHZhbHVlKSB7IG1fc2Vjb25kWSA9IFdURk1vdmUodmFsdWUpOyB9CisgICAgdm9pZCBz
ZXRGaXJzdFgoUmVmUHRyPENTU1ZhbHVlPiYmIHZhbHVlKSB7IG1fZmlyc3RYID0gV1RGTW92ZSh2
YWx1ZSk7IH0KKyAgICB2b2lkIHNldEZpcnN0WShSZWZQdHI8Q1NTVmFsdWU+JiYgdmFsdWUpIHsg
bV9maXJzdFkgPSBXVEZNb3ZlKHZhbHVlKTsgfQorICAgIHZvaWQgc2V0U2Vjb25kWChSZWZQdHI8
Q1NTVmFsdWU+JiYgdmFsdWUpIHsgbV9zZWNvbmRYID0gV1RGTW92ZSh2YWx1ZSk7IH0KKyAgICB2
b2lkIHNldFNlY29uZFkoUmVmUHRyPENTU1ZhbHVlPiYmIHZhbHVlKSB7IG1fc2Vjb25kWSA9IFdU
Rk1vdmUodmFsdWUpOyB9CiAgICAgdm9pZCBhZGRTdG9wKENTU0dyYWRpZW50Q29sb3JTdG9wJiYg
c3RvcCkgeyBtX3N0b3BzLmFwcGVuZChXVEZNb3ZlKHN0b3ApKTsgfQogICAgIHZvaWQgZG9uZUFk
ZGluZ1N0b3BzKCkgeyBtX3N0b3BzLnNocmlua1RvRml0KCk7IH0KICAgICBib29sIGhhc0F0TGVh
c3RUd29TdG9wcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcHMuc2l6ZSgpID49IDI7IH0KQEAgLTEx
NiwxMCArMTE2LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYXNDb2xvckRlcml2ZWRGcm9tRWxl
bWVudCgpIGNvbnN0OwogICAgIGJvb2wgaXNDYWNoZWFibGUoKSBjb25zdDsKIAotICAgIFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9maXJzdFg7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBtX2ZpcnN0WTsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IG1fc2Vjb25kWDsK
LSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IG1fc2Vjb25kWTsKKyAgICBSZWZQdHI8Q1NT
VmFsdWU+IG1fZmlyc3RYOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gbV9maXJzdFk7CisgICAgUmVm
UHRyPENTU1ZhbHVlPiBtX3NlY29uZFg7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBtX3NlY29uZFk7
CiAgICAgVmVjdG9yPENTU0dyYWRpZW50Q29sb3JTdG9wLCAyPiBtX3N0b3BzOwogICAgIENTU0dy
YWRpZW50VHlwZSBtX2dyYWRpZW50VHlwZTsKICAgICBib29sIG1fcmVwZWF0aW5nIHsgZmFsc2Ug
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCmluZGV4IDU1YmRmNzc4
NWI0ZjBkNzI0YzM3NmRkMzAyNzBmMzI1OWE5ZDk4ZjEuLjI4Zjk4NTM5ZGVlNjcxOTcxNGZkMmEy
YmEwZTg0Mjk3MzFmYjUxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmlt
aXRpdmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVl
LmNwcApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIkRlcHJlY2F0ZWRDU1NPTVByaW1pdGl2
ZVZhbHVlLmgiCiAjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKICNpbmNsdWRlICJOb2RlLmgiCi0j
aW5jbHVkZSAiUGFpci5oIgogI2luY2x1ZGUgIlJlY3QuaCIKICNpbmNsdWRlICJSZW5kZXJTdHls
ZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKQEAgLTkzLDcgKzkyLDYgQEAgc3RhdGljIGlu
bGluZSBib29sIGlzVmFsaWRDU1NVbml0VHlwZUZvckRvdWJsZUNvbnZlcnNpb24oQ1NTVW5pdFR5
cGUgdW5pdFR5cGUpCiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NPVU5URVJfTkFNRToKICAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRk9OVF9GQU1JTFk6CiAgICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q1NTX0lERU5UOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QQUlSOgogICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkNTU19QUk9QRVJUWV9JRDoKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
UVVBRDoKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkVDVDoKQEAgLTE0NCw3ICsxNDIsNiBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTdHJpbmdUeXBlKENTU1VuaXRUeXBlIHR5cGUpCiAgICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX01NOgogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19NUzoK
ICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkNTU19QQUlSOgogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QQzoKICAgICBjYXNlIENTU1Vu
aXRUeXBlOjpDU1NfUEVSQ0VOVEFHRToKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUFJPUEVS
VFlfSUQ6CkBAIC0zMDYsMTIgKzMwMyw2IEBAIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRp
dmVWYWx1ZShjb25zdCBMZW5ndGgmIGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLUNTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRp
dmVWYWx1ZShjb25zdCBMZW5ndGhTaXplJiBsZW5ndGhTaXplLCBjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUpCi0gICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKLXsKLSAgICBpbml0KGxlbmd0
aFNpemUsIHN0eWxlKTsKLX0KLQogQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVl
KFN0YXRpY0NTU1ZhbHVlVGFnLCBDU1NWYWx1ZUlEIHZhbHVlSUQpCiAgICAgOiBDU1NQcmltaXRp
dmVWYWx1ZSh2YWx1ZUlEKQogewpAQCAtMzc5LDEzICszNzAsNiBAQCB2b2lkIENTU1ByaW1pdGl2
ZVZhbHVlOjppbml0KGNvbnN0IExlbmd0aCYgbGVuZ3RoKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQogCi12b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjppbml0KGNvbnN0IExlbmd0aFNpemUm
IGxlbmd0aFNpemUsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKLXsKLSAgICBzZXRQcmltaXRp
dmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1BBSVIpOwotICAgIG1faGFzQ2FjaGVkQ1NTVGV4
dCA9IGZhbHNlOwotICAgIG1fdmFsdWUucGFpciA9ICZQYWlyOjpjcmVhdGUoY3JlYXRlKGxlbmd0
aFNpemUud2lkdGgsIHN0eWxlKSwgY3JlYXRlKGxlbmd0aFNpemUuaGVpZ2h0LCBzdHlsZSkpLmxl
YWtSZWYoKTsKLX0KLQogdm9pZCBDU1NQcmltaXRpdmVWYWx1ZTo6aW5pdChSZWY8Q291bnRlcj4m
JiBjb3VudGVyKQogewogICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1Nf
Q09VTlRFUik7CkBAIC00MDcsMTMgKzM5MSw2IEBAIHZvaWQgQ1NTUHJpbWl0aXZlVmFsdWU6Omlu
aXQoUmVmPFF1YWQ+JiYgcXVhZCkKICAgICBtX3ZhbHVlLnF1YWQgPSAmcXVhZC5sZWFrUmVmKCk7
CiB9CiAKLXZvaWQgQ1NTUHJpbWl0aXZlVmFsdWU6OmluaXQoUmVmPFBhaXI+JiYgcCkKLXsKLSAg
ICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1BBSVIpOwotICAgIG1faGFz
Q2FjaGVkQ1NTVGV4dCA9IGZhbHNlOwotICAgIG1fdmFsdWUucGFpciA9ICZwLmxlYWtSZWYoKTsK
LX0KLQogdm9pZCBDU1NQcmltaXRpdmVWYWx1ZTo6aW5pdChSZWY8Q1NTQmFzaWNTaGFwZT4mJiBz
aGFwZSkKIHsKICAgICBzZXRQcmltaXRpdmVVbml0VHlwZShDU1NVbml0VHlwZTo6Q1NTX1NIQVBF
KTsKQEAgLTQ1NCw5ICs0MzEsNiBAQCB2b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjpjbGVhbnVwKCkK
ICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUVVBRDoKICAgICAgICAgbV92YWx1ZS5xdWFkLT5k
ZXJlZigpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUEFJUjoK
LSAgICAgICAgbV92YWx1ZS5wYWlyLT5kZXJlZigpOwotICAgICAgICBicmVhazsKICAgICBjYXNl
IENTU1VuaXRUeXBlOjpDU1NfQ0FMQzoKICAgICAgICAgaWYgKG1fdmFsdWUuY2FsYykKICAgICAg
ICAgICAgIG1fdmFsdWUuY2FsYy0+ZGVyZWYoKTsKQEAgLTk5Myw3ICs5NjcsNiBAQCBTdHJpbmcg
Q1NTUHJpbWl0aXZlVmFsdWU6OnVuaXRUeXBlU3RyaW5nKENTU1VuaXRUeXBlIHVuaXRUeXBlKQog
ICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ09VTlRFUjoKICAgICAgICAgY2FzZSBDU1NV
bml0VHlwZTo6Q1NTX1JFQ1Q6CiAgICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19SR0JDT0xP
UjoKLSAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BBSVI6CiAgICAgICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19VTklDT0RFX1JBTkdFOgogICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpD
U1NfQ09VTlRFUl9OQU1FOgogICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfU0hBUEU6CkBA
IC0xMTE2LDggKzEwODksNiBAQCBBTFdBWVNfSU5MSU5FIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1
ZTo6Zm9ybWF0TnVtYmVyRm9yQ3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBx
dWFkVmFsdWUoKS0+Y3NzVGV4dCgpOwogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19SR0JDT0xP
UjoKICAgICAgICAgcmV0dXJuIHNlcmlhbGl6YXRpb25Gb3JDU1MoY29sb3IoKSk7Ci0gICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Q1NTX1BBSVI6Ci0gICAgICAgIHJldHVybiBwYWlyVmFsdWUoKS0+Y3Nz
VGV4dCgpOwogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DQUxDOgogICAgICAgICBpZiAoIW1f
dmFsdWUuY2FsYykKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTIyMCw4ICsxMTkxLDYgQEAgYm9v
bCBDU1NQcmltaXRpdmVWYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiBvdGhl
cikgY29uc3QKICAgICAgICAgcmV0dXJuIG1fdmFsdWUucXVhZCAmJiBvdGhlci5tX3ZhbHVlLnF1
YWQgJiYgbV92YWx1ZS5xdWFkLT5lcXVhbHMoKm90aGVyLm1fdmFsdWUucXVhZCk7CiAgICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Q1NTX1JHQkNPTE9SOgogICAgICAgICByZXR1cm4gY29sb3IoKSA9PSBv
dGhlci5jb2xvcigpOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QQUlSOgotICAgICAgICBy
ZXR1cm4gbV92YWx1ZS5wYWlyICYmIG90aGVyLm1fdmFsdWUucGFpciAmJiBtX3ZhbHVlLnBhaXIt
PmVxdWFscygqb3RoZXIubV92YWx1ZS5wYWlyKTsKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
Q0FMQzoKICAgICAgICAgcmV0dXJuIG1fdmFsdWUuY2FsYyAmJiBvdGhlci5tX3ZhbHVlLmNhbGMg
JiYgbV92YWx1ZS5jYWxjLT5lcXVhbHMoKm90aGVyLm1fdmFsdWUuY2FsYyk7CiAgICAgY2FzZSBD
U1NVbml0VHlwZTo6Q1NTX1NIQVBFOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUu
aAppbmRleCBkNjg2Y2MxYmE5NTc0MjE1MGUwY2Q1NmM4MGEwYWQ4MTY5NjBmMjA1Li4xYmI3MzM1
ZTM0MzdmM2QxZTRlZTlhODc4ZjhkNTgxMmY1ZDc0NWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UHJpbWl0aXZlVmFsdWUuaApAQCAtNDEsNyArNDEsNiBAQCBjbGFzcyBDb3VudGVyOwogY2xhc3Mg
RGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWU7CiBjbGFzcyBGb250Q2FzY2FkZURlc2NyaXB0
aW9uOwogY2xhc3MgRm9udE1ldHJpY3M7Ci1jbGFzcyBQYWlyOwogY2xhc3MgUXVhZDsKIGNsYXNz
IFJHQkNvbG9yOwogY2xhc3MgUmVjdDsKQEAgLTk3LDcgKzk2LDYgQEAgcHVibGljOgogICAgIGJv
b2wgaXNQZXJjZW50YWdlKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVHlwZSgpID09IENTU1Vu
aXRUeXBlOjpDU1NfUEVSQ0VOVEFHRTsgfQogICAgIGJvb2wgaXNQeCgpIGNvbnN0IHsgcmV0dXJu
IHByaW1pdGl2ZVR5cGUoKSA9PSBDU1NVbml0VHlwZTo6Q1NTX1BYOyB9CiAgICAgYm9vbCBpc1Jl
Y3QoKSBjb25zdCB7IHJldHVybiBwcmltaXRpdmVVbml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpD
U1NfUkVDVDsgfQotICAgIGJvb2wgaXNQYWlyKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVW5p
dFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6Q1NTX1BBSVI7IH0KICAgICBib29sIGlzUHJvcGVydHlJ
RCgpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNT
U19QUk9QRVJUWV9JRDsgfQogICAgIGJvb2wgaXNSR0JDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHBy
aW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19SR0JDT0xPUjsgfQogICAgIGJv
b2wgaXNTaGFwZSgpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5p
dFR5cGU6OkNTU19TSEFQRTsgfQpAQCAtMTI3LDcgKzEyNSw2IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGUoZG91YmxlIHZhbHVlLCBDU1NVbml0VHlw
ZSB0eXBlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlLCB0
eXBlKSk7IH0KICAgICBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGUoY29uc3Qg
U3RyaW5nJiB2YWx1ZSwgQ1NTVW5pdFR5cGUgdHlwZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBD
U1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSwgdHlwZSkpOyB9CiAgICAgc3RhdGljIFJlZjxDU1NQcmlt
aXRpdmVWYWx1ZT4gY3JlYXRlKGNvbnN0IExlbmd0aCYgdmFsdWUsIGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSwg
c3R5bGUpKTsgfQotICAgIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZShjb25z
dCBMZW5ndGhTaXplJiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlLCBzdHlsZSkpOyB9CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGUo
VCYmKTsKIApAQCAtMTc1LDcgKzE3Miw2IEBAIHB1YmxpYzoKICAgICBDb3VudGVyKiBjb3VudGVy
VmFsdWUoKSBjb25zdCB7IHJldHVybiBwcmltaXRpdmVVbml0VHlwZSgpICE9IENTU1VuaXRUeXBl
OjpDU1NfQ09VTlRFUiA/IG51bGxwdHIgOiBtX3ZhbHVlLmNvdW50ZXI7IH0KICAgICBDU1NDYWxj
VmFsdWUqIGNzc0NhbGNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkg
IT0gQ1NTVW5pdFR5cGU6OkNTU19DQUxDID8gbnVsbHB0ciA6IG1fdmFsdWUuY2FsYzsgfQogICAg
IGNvbnN0IENTU0ZvbnRGYW1pbHkmIGZvbnRGYW1pbHkoKSBjb25zdCB7IEFTU0VSVChwcmltaXRp
dmVVbml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpDU1NfRk9OVF9GQU1JTFkpOyByZXR1cm4gKm1f
dmFsdWUuZm9udEZhbWlseTsgfQotICAgIFBhaXIqIHBhaXJWYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IHByaW1pdGl2ZVVuaXRUeXBlKCkgIT0gQ1NTVW5pdFR5cGU6OkNTU19QQUlSID8gbnVsbHB0ciA6
IG1fdmFsdWUucGFpcjsgfQogICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCgpIGNvbnN0IHsg
cmV0dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19QUk9QRVJUWV9J
RCA/IG1fdmFsdWUucHJvcGVydHlJRCA6IENTU1Byb3BlcnR5SW52YWxpZDsgfQogICAgIFF1YWQq
IHF1YWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkgIT0gQ1NTVW5p
dFR5cGU6OkNTU19RVUFEID8gbnVsbHB0ciA6IG1fdmFsdWUucXVhZDsgfQogICAgIFJlY3QqIHJl
Y3RWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkgIT0gQ1NTVW5pdFR5
cGU6OkNTU19SRUNUID8gbnVsbHB0ciA6IG1fdmFsdWUucmVjdDsgfQpAQCAtMjEwLDcgKzIwNiw2
IEBAIHByaXZhdGU6CiAgICAgQ1NTUHJpbWl0aXZlVmFsdWUoY29uc3QgQ29sb3ImKTsKICAgICBD
U1NQcmltaXRpdmVWYWx1ZShjb25zdCBMZW5ndGgmKTsKICAgICBDU1NQcmltaXRpdmVWYWx1ZShj
b25zdCBMZW5ndGgmLCBjb25zdCBSZW5kZXJTdHlsZSYpOwotICAgIENTU1ByaW1pdGl2ZVZhbHVl
KGNvbnN0IExlbmd0aFNpemUmLCBjb25zdCBSZW5kZXJTdHlsZSYpOwogICAgIENTU1ByaW1pdGl2
ZVZhbHVlKGNvbnN0IFN0cmluZyYsIENTU1VuaXRUeXBlKTsKICAgICBDU1NQcmltaXRpdmVWYWx1
ZShkb3VibGUsIENTU1VuaXRUeXBlKTsKIApAQCAtMjI3LDExICsyMjIsOSBAQCBwcml2YXRlOgog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IG9wZXJhdG9yIFQqKCk7IC8vIGNvbXBpbGUtdGltZSBn
dWFyZAogCiAgICAgdm9pZCBpbml0KGNvbnN0IExlbmd0aCYpOwotICAgIHZvaWQgaW5pdChjb25z
dCBMZW5ndGhTaXplJiwgY29uc3QgUmVuZGVyU3R5bGUmKTsKICAgICB2b2lkIGluaXQoUmVmPENT
U0Jhc2ljU2hhcGU+JiYpOwogICAgIHZvaWQgaW5pdChSZWZQdHI8Q1NTQ2FsY1ZhbHVlPiYmKTsK
ICAgICB2b2lkIGluaXQoUmVmPENvdW50ZXI+JiYpOwotICAgIHZvaWQgaW5pdChSZWY8UGFpcj4m
Jik7CiAgICAgdm9pZCBpbml0KFJlZjxRdWFkPiYmKTsKICAgICB2b2lkIGluaXQoUmVmPFJlY3Q+
JiYpOwogCkBAIC0yNTQsNyArMjQ3LDYgQEAgcHJpdmF0ZToKICAgICAgICAgUmVjdCogcmVjdDsK
ICAgICAgICAgUXVhZCogcXVhZDsKICAgICAgICAgY29uc3QgQ29sb3IqIGNvbG9yOwotICAgICAg
ICBQYWlyKiBwYWlyOwogICAgICAgICBDU1NCYXNpY1NoYXBlKiBzaGFwZTsKICAgICAgICAgQ1NT
Q2FsY1ZhbHVlKiBjYWxjOwogICAgICAgICBjb25zdCBDU1NGb250RmFtaWx5KiBmb250RmFtaWx5
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3BwCmluZGV4IDEyZWQ2YTRjMTNmMTkxNzJk
NzJlZDcwYzQxZTk1OTExZGM4Yjk1NDguLjEzYWNjYWRlNjMyOTdmNGM3ZGI5ZWE4YTZiYzg4MjBl
ZTAwNzk3YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5jcHAKQEAgLTM4LDcgKzM4
LDYgQEAKICNpbmNsdWRlICJDU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NT
VmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkZpbGxMYXllci5oIgotI2luY2x1ZGUgIlBhaXIu
aCIKICNpbmNsdWRlICJSZWN0LmgiCiAjaW5jbHVkZSAiU3R5bGVCdWlsZGVyQ29udmVydGVyLmgi
CiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgpAQCAtMTc4LDEzICsxNzcsMTQgQEAgdm9pZCBD
U1NUb1N0eWxlTWFwOjptYXBGaWxsUmVwZWF0WShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIEZp
bGxMYXllciYgbGF5ZXIsIGMKICAgICBsYXllci5zZXRSZXBlYXRZKGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSkpOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgY29udmVydFRvTGVu
Z3RoU2l6ZShjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgcHJpbWl0aXZlVmFsdWUsIENTU1RvTGVu
Z3RoQ29udmVyc2lvbkRhdGEgY29udmVyc2lvbkRhdGEsIExlbmd0aFNpemUmIHNpemUpCitzdGF0
aWMgaW5saW5lIGJvb2wgY29udmVydFRvTGVuZ3RoU2l6ZShjb25zdCBDU1NWYWx1ZSYgdmFsdWUs
IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgY29udmVyc2lvbkRhdGEsIExlbmd0aFNpemUmIHNp
emUpCiB7Ci0gICAgaWYgKGF1dG8qIHBhaXIgPSBwcmltaXRpdmVWYWx1ZS5wYWlyVmFsdWUoKSkg
ewotICAgICAgICBzaXplLndpZHRoID0gcGFpci0+Zmlyc3QoKS0+Y29udmVydFRvTGVuZ3RoPEFu
eUNvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKTsKLSAgICAgICAgc2l6ZS5oZWlnaHQgPSBwYWly
LT5zZWNvbmQoKS0+Y29udmVydFRvTGVuZ3RoPEFueUNvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRh
KTsKKyAgICBpZiAodmFsdWUuaXNWYWx1ZVBhaXIoKSkgeworICAgICAgICBhdXRvJiBwYWlyID0g
ZG93bmNhc3Q8Q1NTVmFsdWVQYWlyPih2YWx1ZSk7CisgICAgICAgIHNpemUud2lkdGggPSBwYWly
LmZpcnN0QXNQcmltaXRpdmUoKS0+Y29udmVydFRvTGVuZ3RoPEFueUNvbnZlcnNpb24+KGNvbnZl
cnNpb25EYXRhKTsKKyAgICAgICAgc2l6ZS5oZWlnaHQgPSBwYWlyLnNlY29uZEFzUHJpbWl0aXZl
KCktPmNvbnZlcnRUb0xlbmd0aDxBbnlDb252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSk7CiAgICAg
fSBlbHNlCi0gICAgICAgIHNpemUud2lkdGggPSBwcmltaXRpdmVWYWx1ZS5jb252ZXJ0VG9MZW5n
dGg8QW55Q29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpOworICAgICAgICBzaXplLndpZHRoID0g
ZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5jb252ZXJ0VG9MZW5ndGg8QW55Q29u
dmVyc2lvbj4oY29udmVyc2lvbkRhdGEpOwogICAgIHJldHVybiAhc2l6ZS53aWR0aC5pc1VuZGVm
aW5lZCgpICYmICFzaXplLmhlaWdodC5pc1VuZGVmaW5lZCgpOwogfQogCkBAIC0xOTUsMTIgKzE5
NSw5IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbFNpemUoQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eUlELCBGaWxsTGF5ZXImIGxheWVyLCBjb25zCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KHZhbHVlKTsKKyAgICBhdXRvIHZhbHVlSUQgPSB2YWx1ZS5pc1ByaW1pdGl2ZVZhbHVlKCkgPyBk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA6IENTU1ZhbHVlSW52
YWxpZDsKICAgICBGaWxsU2l6ZSBmaWxsU2l6ZTsKLSAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVl
LnZhbHVlSUQoKSkgeworICAgIHN3aXRjaCAodmFsdWVJRCkgewogICAgIGNhc2UgQ1NTVmFsdWVD
b250YWluOgogICAgICAgICBmaWxsU2l6ZS50eXBlID0gRmlsbFNpemVUeXBlOjpDb250YWluOwog
ICAgICAgICBicmVhazsKQEAgLTIwOSw3ICsyMDYsNyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1h
cEZpbGxTaXplKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgRmlsbExheWVyJiBsYXllciwgY29u
cwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlQoZmlsbFNpemUu
dHlwZSA9PSBGaWxsU2l6ZVR5cGU6OlNpemUpOwotICAgICAgICBpZiAoIWNvbnZlcnRUb0xlbmd0
aFNpemUocHJpbWl0aXZlVmFsdWUsIG1fYnVpbGRlclN0YXRlLmNzc1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEoKSwgZmlsbFNpemUuc2l6ZSkpCisgICAgICAgIGlmICghY29udmVydFRvTGVuZ3RoU2l6
ZSh2YWx1ZSwgbV9idWlsZGVyU3RhdGUuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpLCBmaWxs
U2l6ZS5zaXplKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgYnJlYWs7CiAgICAgfQpA
QCAtMjIyLDIyICsyMTksMTcgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsWFBvc2l0aW9u
KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgRmlsbExheWVyJiBsYXllciwKICAgICAgICAgbGF5
ZXIuc2V0WFBvc2l0aW9uKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxYUG9zaXRpb24obGF5ZXIudHlw
ZSgpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KLSAgICBpZiAoIWlzPENTU1ByaW1pdGl2
ZVZhbHVlPih2YWx1ZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8qIHByaW1pdGl2ZVZh
bHVlID0gJmRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgUGFpciogcGFp
ciA9IHByaW1pdGl2ZVZhbHVlLT5wYWlyVmFsdWUoKTsKKyAgICAKICAgICBMZW5ndGggbGVuZ3Ro
OwotICAgIGlmIChwYWlyKSB7CisgICAgaWYgKHZhbHVlLmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAg
ICAgICAgbGVuZ3RoID0gU3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbkNv
bXBvbmVudFgobV9idWlsZGVyU3RhdGUsIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSkpOworICAgIGVsc2UgaWYgKHZhbHVlLmlzVmFsdWVQYWlyKCkpIHsKKyAgICAgICAgYXV0byYg
cGFpciA9IGRvd25jYXN0PENTU1ZhbHVlUGFpcj4odmFsdWUpOwogICAgICAgICBBU1NFUlRfVU5V
U0VEKHByb3BlcnR5SUQsIHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRp
b25YIHx8IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YKTsKLSAg
ICAgICAgbGVuZ3RoID0gU3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGgobV9i
dWlsZGVyU3RhdGUsICpwYWlyLT5zZWNvbmQoKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGxlbmd0
aCA9IFN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25Db21wb25lbnRYKG1f
YnVpbGRlclN0YXRlLCB2YWx1ZSk7Ci0KKyAgICAgICAgbGF5ZXIuc2V0QmFja2dyb3VuZFhPcmln
aW4oKnBhaXIuZmlyc3RBc1ByaW1pdGl2ZSgpKTsKKyAgICAgICAgbGVuZ3RoID0gU3R5bGU6OkJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGgobV9idWlsZGVyU3RhdGUsICpwYWlyLnNlY29u
ZCgpKTsKKyAgICB9CiAgICAgbGF5ZXIuc2V0WFBvc2l0aW9uKGxlbmd0aCk7Ci0gICAgaWYgKHBh
aXIpCi0gICAgICAgIGxheWVyLnNldEJhY2tncm91bmRYT3JpZ2luKCpwYWlyLT5maXJzdCgpKTsK
IH0KIAogdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsWVBvc2l0aW9uKENTU1Byb3BlcnR5SUQg
cHJvcGVydHlJRCwgRmlsbExheWVyJiBsYXllciwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQpAQCAt
MjQ3LDIxICsyMzksMTYgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsWVBvc2l0aW9uKENT
U1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgRmlsbExheWVyJiBsYXllciwKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgYXV0byogcHJpbWl0aXZlVmFsdWUgPSAmZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBQYWlyKiBwYWlyID0gcHJpbWl0aXZlVmFsdWUtPnBh
aXJWYWx1ZSgpOwogICAgIExlbmd0aCBsZW5ndGg7Ci0gICAgaWYgKHBhaXIpIHsKLSAgICAgICAg
QVNTRVJUX1VOVVNFRChwcm9wZXJ0eUlELCBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5QmFja2dy
b3VuZFBvc2l0aW9uWSB8fCBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0
aW9uWSk7Ci0gICAgICAgIGxlbmd0aCA9IFN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
TGVuZ3RoKG1fYnVpbGRlclN0YXRlLCAqcGFpci0+c2Vjb25kKCkpOwotICAgIH0gZWxzZQorICAg
IGlmICh2YWx1ZS5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgIGxlbmd0aCA9IFN0eWxlOjpC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25Db21wb25lbnRZKG1fYnVpbGRlclN0YXRl
LCB2YWx1ZSk7Ci0gICAgCisgICAgZWxzZSBpZiAodmFsdWUuaXNWYWx1ZVBhaXIoKSkgeworICAg
ICAgICBhdXRvJiBwYWlyID0gZG93bmNhc3Q8Q1NTVmFsdWVQYWlyPih2YWx1ZSk7CisgICAgICAg
IEFTU0VSVF9VTlVTRUQocHJvcGVydHlJRCwgcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRQb3NpdGlvblkgfHwgcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3Np
dGlvblkpOworICAgICAgICBsYXllci5zZXRCYWNrZ3JvdW5kWU9yaWdpbigqcGFpci5maXJzdEFz
UHJpbWl0aXZlKCkpOworICAgICAgICBsZW5ndGggPSBTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydExlbmd0aChtX2J1aWxkZXJTdGF0ZSwgKnBhaXIuc2Vjb25kKCkpOworICAgIH0KICAg
ICBsYXllci5zZXRZUG9zaXRpb24obGVuZ3RoKTsKLSAgICBpZiAocGFpcikKLSAgICAgICAgbGF5
ZXIuc2V0QmFja2dyb3VuZFlPcmlnaW4oKnBhaXItPmZpcnN0KCkpOwogfQogCiB2b2lkIENTU1Rv
U3R5bGVNYXA6Om1hcEZpbGxNYXNrU291cmNlVHlwZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQs
IEZpbGxMYXllciYgbGF5ZXIsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKQEAgLTUyNCw3ICs1MTEs
NyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdlKENTU1Byb3BlcnR5SUQg
cHJvcGVydHksIENTU1ZhbHVlKiB2YWx1ZSwgTgogICAgICAgICAgICAgLy8gTWFwIGluIHRoZSBv
dXRzZXQuCiAgICAgICAgICAgICBpZiAoc2xhc2hMaXN0Lml0ZW0oMikpCiAgICAgICAgICAgICAg
ICAgaW1hZ2Uuc2V0T3V0c2V0KG1hcE5pbmVQaWVjZUltYWdlUXVhZCgqc2xhc2hMaXN0Lml0ZW0o
MikpKTsKLSAgICAgICAgfSBlbHNlIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4oY3VycmVudCkp
IHsKKyAgICAgICAgfSBlbHNlIGlmIChpczxDU1NWYWx1ZVBhaXI+KGN1cnJlbnQpKSB7CiAgICAg
ICAgICAgICAvLyBTZXQgdGhlIGFwcHJvcHJpYXRlIHJ1bGVzIGZvciBzdHJldGNoL3JvdW5kL3Jl
cGVhdCBvZiB0aGUgc2xpY2VzLgogICAgICAgICAgICAgbWFwTmluZVBpZWNlSW1hZ2VSZXBlYXQo
Y3VycmVudCwgaW1hZ2UpOwogICAgICAgICB9CkBAIC02MjUsMTYgKzYxMiwxNSBAQCBMZW5ndGhC
b3ggQ1NTVG9TdHlsZU1hcDo6bWFwTmluZVBpZWNlSW1hZ2VRdWFkKENTU1ZhbHVlJiB2YWx1ZSkK
IAogdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZVJlcGVhdChDU1NWYWx1ZSYg
dmFsdWUsIE5pbmVQaWVjZUltYWdlJiBpbWFnZSkKIHsKLSAgICBpZiAoIWlzPENTU1ByaW1pdGl2
ZVZhbHVlPih2YWx1ZSkpCisgICAgaWYgKCF2YWx1ZS5pc1ZhbHVlUGFpcigpKQogICAgICAgICBy
ZXR1cm47Ci0KLSAgICBDU1NQcmltaXRpdmVWYWx1ZSYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwotICAgIFBhaXIqIHBhaXIgPSBwcmltaXRpdmVW
YWx1ZS5wYWlyVmFsdWUoKTsKLSAgICBpZiAoIXBhaXIgfHwgIXBhaXItPmZpcnN0KCkgfHwgIXBh
aXItPnNlY29uZCgpKQorICAgIAorICAgIGF1dG8mIHBhaXIgPSBkb3duY2FzdDxDU1NWYWx1ZVBh
aXI+KHZhbHVlKTsKKyAgICBpZiAoIXBhaXIuZmlyc3QoKSB8fCAhcGFpci5zZWNvbmQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgQ1NTVmFsdWVJRCBmaXJzdElkZW50aWZpZXIgPSBwYWlyLT5m
aXJzdCgpLT52YWx1ZUlEKCk7Ci0gICAgQ1NTVmFsdWVJRCBzZWNvbmRJZGVudGlmaWVyID0gcGFp
ci0+c2Vjb25kKCktPnZhbHVlSUQoKTsKKyAgICBDU1NWYWx1ZUlEIGZpcnN0SWRlbnRpZmllciA9
IHBhaXIuZmlyc3RBc1ByaW1pdGl2ZSgpLT52YWx1ZUlEKCk7CisgICAgQ1NTVmFsdWVJRCBzZWNv
bmRJZGVudGlmaWVyID0gcGFpci5zZWNvbmRBc1ByaW1pdGl2ZSgpLT52YWx1ZUlEKCk7CiAKICAg
ICBOaW5lUGllY2VJbWFnZVJ1bGUgaG9yaXpvbnRhbFJ1bGU7CiAgICAgc3dpdGNoIChmaXJzdElk
ZW50aWZpZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbml0cy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pdHMuY3BwCmluZGV4IDFkNGQyMTE3OTQ3ZmNlNjRm
ZWMzNDczNDMwMDNiMDBiNmM3M2MyZmYuLjZlOWIxMDQ3MDUzOTIwNmM1NDE2NzFlMmMxMzhjMTZi
ZTNlZmM1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbml0cy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaXRzLmNwcApAQCAtMTQ0LDcgKzE0NCw2IEBAIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIENTU1VuaXRUeXBlIHVuaXRUeXBl
KQogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19ROiB0cyA8PCAicSI7IGJyZWFrOwogICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19MSFM6IHRzIDw8ICJsaCI7IGJyZWFrOwogICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19STEhTOiB0cyA8PCAicmxoIjsgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0
VHlwZTo6Q1NTX1BBSVI6IHRzIDw8ICJwYWlyIjsgYnJlYWs7CiAgICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q1NTX1VOSUNPREVfUkFOR0U6IHRzIDw8ICJ1bmljb2RlX3JhbmdlIjsgYnJlYWs7CiAgICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX1RVUk46IHRzIDw8ICJ0dXJuIjsgYnJlYWs7CiAgICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Q1NTX1JFTVM6IHRzIDw8ICJyZW1zIjsgYnJlYWs7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pdHMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NV
bml0cy5oCmluZGV4IGYwNjMzZDA4MzA2Y2RjNGYxYjAwMWM1NGYyMjMzZDhjZjhjOWVjZjcuLjFl
ZDQwMTQyZWY5MjA2N2JiZjY0ODNjMzg2MzUzZTQxZDhlZDFlOTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NVbml0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbml0
cy5oCkBAIC02NSw3ICs2NSw2IEBAIGVudW0gY2xhc3MgQ1NTVW5pdFR5cGUgOiB1aW50OF90IHsK
ICAgICBDU1NfUSA9IDM0LAogICAgIENTU19MSFMgPSAzNSwKICAgICBDU1NfUkxIUyA9IDM2LAot
ICAgIENTU19QQUlSID0gMTAwLCAvLyBXZSBlbnZpc2lvbiB0aGlzIGJlaW5nIGV4cG9zZWQgYXMg
YSBtZWFucyBvZiBnZXR0aW5nIGNvbXB1dGVkIHN0eWxlIHZhbHVlcyBmb3IgcGFpcnMgKGJvcmRl
ci1zcGFjaW5nL3JhZGl1cywgYmFja2dyb3VuZC1wb3NpdGlvbiwgZXRjLikKICAgICBDU1NfVU5J
Q09ERV9SQU5HRSA9IDEwMiwKICAgICBDU1NfVFVSTiA9IDEwNywKICAgICBDU1NfUkVNUyA9IDEw
OCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCmluZGV4IGIwOGVmZTg2MzQ2YjJlOGJkZTE2NmY5NmU5
Zjc2MTYzNTlhNmY4ZjguLmE1NDk3YTM2NTM4MTA3ZmVhMDI0MzhjNjdlYmU0MWMxMjI1ZjYzNGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcApAQCAtMjEzLDYgKzIxMyw4IEBAIGJvb2wgQ1NTVmFs
dWU6OmVxdWFscyhjb25zdCBDU1NWYWx1ZSYgb3RoZXIpIGNvbnN0CiAgICAgICAgICAgICByZXR1
cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NVbmljb2RlUmFuZ2VWYWx1ZT4oKnRoaXMsIG90aGVyKTsK
ICAgICAgICAgY2FzZSBWYWx1ZUxpc3RDbGFzczoKICAgICAgICAgICAgIHJldHVybiBjb21wYXJl
Q1NTVmFsdWVzPENTU1ZhbHVlTGlzdD4oKnRoaXMsIG90aGVyKTsKKyAgICAgICAgY2FzZSBWYWx1
ZVBhaXJDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENTU1ZhbHVl
UGFpcj4oKnRoaXMsIG90aGVyKTsKICAgICAgICAgY2FzZSBMaW5lQm94Q29udGFpbkNsYXNzOgog
ICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTTGluZUJveENvbnRhaW5WYWx1
ZT4oKnRoaXMsIG90aGVyKTsKICAgICAgICAgY2FzZSBDYWxjdWxhdGlvbkNsYXNzOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlUGFpci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVmFsdWVQYWlyLmNwcAppbmRleCBiMmRiZTEwYjIzYzJmYWExZGQyOWM1ZmU0NGZj
NDFhNTA2ZWY5ZjM5Li5hNWNiNGQzN2Q2NzAwNTNhMzE1OTE1NWEyNzU1ZGUwNjMzMTkwYzE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQYWlyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQYWlyLmNwcApAQCAtMjYsMTQgKzI2LDM5IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVQYWlyLmgiCiAKKyNpbmNsdWRlICJD
U1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTVmFs
dWVQYWlyOjpmaXJzdEFzUHJpbWl0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9maXJzdCAm
JiBtX2ZpcnN0LT5pc1ByaW1pdGl2ZVZhbHVlKCkgPyBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4obV9maXJzdC5nZXQoKSkgOiBudWxscHRyOworfQorCitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IENTU1ZhbHVlUGFpcjo6c2Vjb25kQXNQcmltaXRpdmUoKSBjb25zdAoreworICAgIHJldHVy
biBtX3NlY29uZCAmJiBtX3NlY29uZC0+aXNQcmltaXRpdmVWYWx1ZSgpID8gZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KG1fc2Vjb25kLmdldCgpKSA6IG51bGxwdHI7Cit9CisKK0NTU1ZhbHVl
SUQgQ1NTVmFsdWVQYWlyOjpmaXJzdEFzVmFsdWVJRCgpIGNvbnN0Cit7CisgICAgYXV0byBwcmlt
aXRpdmUgPSBmaXJzdEFzUHJpbWl0aXZlKCk7CisgICAgcmV0dXJuIHByaW1pdGl2ZSA/IHByaW1p
dGl2ZS0+dmFsdWVJRCgpIDogQ1NTVmFsdWVJbnZhbGlkOworfQorCitDU1NWYWx1ZUlEIENTU1Zh
bHVlUGFpcjo6c2Vjb25kQXNWYWx1ZUlEKCkgY29uc3QKK3sKKyAgICBhdXRvIHByaW1pdGl2ZSA9
IHNlY29uZEFzUHJpbWl0aXZlKCk7CisgICAgcmV0dXJuIHByaW1pdGl2ZSA/IHByaW1pdGl2ZS0+
dmFsdWVJRCgpIDogQ1NTVmFsdWVJbnZhbGlkOworfQorCiBTdHJpbmcgQ1NTVmFsdWVQYWlyOjpj
dXN0b21DU1NUZXh0KCkgY29uc3QKIHsKLSAgICBTdHJpbmcgZmlyc3QgPSB0aGlzLT5maXJzdCgp
LT5jc3NUZXh0KCk7Ci0gICAgU3RyaW5nIHNlY29uZCA9IHRoaXMtPnNlY29uZCgpLT5jc3NUZXh0
KCk7CisgICAgYXV0byBmaXJzdCA9IHRoaXMtPmZpcnN0KCkgPyB0aGlzLT5maXJzdCgpLT5jc3NU
ZXh0KCkgOiBTdHJpbmcoKTsKKyAgICBhdXRvIHNlY29uZCA9IHRoaXMtPnNlY29uZCgpID8gdGhp
cy0+c2Vjb25kKCktPmNzc1RleHQoKSA6IFN0cmluZygpOworICAgIGlmIChmaXJzdC5pc0VtcHR5
KCkgJiYgc2Vjb25kLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIGlm
IChtX2VuY29kaW5nID09IElkZW50aWNhbFZhbHVlRW5jb2Rpbmc6OkNvYWxlc2NlICYmIGZpcnN0
ID09IHNlY29uZCkKICAgICAgICAgcmV0dXJuIGZpcnN0OwogICAgIHJldHVybiBtYWtlU3RyaW5n
KGZpcnN0LCBzZXBhcmF0b3JDU1NUZXh0KCksIHNlY29uZCk7CkBAIC00MSw3ICs2NiwxMCBAQCBT
dHJpbmcgQ1NTVmFsdWVQYWlyOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKIAogYm9vbCBDU1NWYWx1
ZVBhaXI6OmVxdWFscyhjb25zdCBDU1NWYWx1ZVBhaXIgJm90aGVyKSBjb25zdAogewotICAgIHJl
dHVybiBtX3ZhbHVlU2VwYXJhdG9yID09IG90aGVyLm1fdmFsdWVTZXBhcmF0b3IgJiYgbV9maXJz
dC5nZXQoKS5lcXVhbHMob3RoZXIubV9maXJzdCkgJiYgbV9zZWNvbmQuZ2V0KCkuZXF1YWxzKG90
aGVyLm1fc2Vjb25kKTsKKyAgICByZXR1cm4gbV92YWx1ZVNlcGFyYXRvciA9PSBvdGhlci5tX3Zh
bHVlU2VwYXJhdG9yCisgICAgICAgICYmIG1fZW5jb2RpbmcgPT0gb3RoZXIubV9lbmNvZGluZwor
ICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQdHIobV9maXJzdCwgb3RoZXIubV9maXJzdCkKKyAg
ICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyKG1fc2Vjb25kLCBvdGhlci5tX3NlY29uZCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NWYWx1ZVBhaXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBhaXIuaAppbmRl
eCBkMGM0ZjlmNDU5NTU1ZDM4ZTFiYjVmYjkyZTQxNWZiYTQxMWVmODg0Li41ZWZiMmViZGY4Y2Qx
ZTc4NGU0MzYxYzc5NmMxOTNhZjgxZGFmMzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVmFsdWVQYWlyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlUGFpci5o
CkBAIC0yNSw3ICsyNSw5IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ1NTUHJpbWl0
aXZlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NWYWx1ZS5oIgorI2luY2x1ZGUgIkxlbmd0aFNpemUu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOSwyMyArNDEsMzUgQEAgcHVibGljOgog
ICAgICAgICBDb2FsZXNjZQogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmPENTU1ZhbHVlUGFpcj4g
Y3JlYXRlKFJlZjxDU1NWYWx1ZT4mJiBmaXJzdCwgUmVmPENTU1ZhbHVlPiYmIHNlY29uZCwgVmFs
dWVTZXBhcmF0b3Igc2VwYXJhdG9yKQorICAgIHN0YXRpYyBSZWY8Q1NTVmFsdWVQYWlyPiBjcmVh
dGUoUmVmUHRyPENTU1ZhbHVlPiYmIGZpcnN0LCBSZWZQdHI8Q1NTVmFsdWU+JiYgc2Vjb25kLCBW
YWx1ZVNlcGFyYXRvciBzZXBhcmF0b3IgPSBTcGFjZVNlcGFyYXRvcikKICAgICB7CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ZhbHVlUGFpcihXVEZNb3ZlKGZpcnN0KSwgV1RGTW92
ZShzZWNvbmQpLCBzZXBhcmF0b3IpKTsKICAgICB9Ci0gICAgc3RhdGljIFJlZjxDU1NWYWx1ZVBh
aXI+IGNyZWF0ZShSZWY8Q1NTVmFsdWU+JiYgZmlyc3QsIFJlZjxDU1NWYWx1ZT4mJiBzZWNvbmQs
IFZhbHVlU2VwYXJhdG9yIHNlcGFyYXRvciwgSWRlbnRpY2FsVmFsdWVFbmNvZGluZyBlbmNvZGlu
ZykKKyAgICBzdGF0aWMgUmVmPENTU1ZhbHVlUGFpcj4gY3JlYXRlKGNvbnN0IExlbmd0aFNpemUm
IGxlbmd0aFNpemUsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgVmFsdWVTZXBhcmF0b3Igc2Vw
YXJhdG9yID0gU3BhY2VTZXBhcmF0b3IpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBDU1NWYWx1ZVBhaXIobGVuZ3RoU2l6ZSwgc3R5bGUsIHNlcGFyYXRvcikpOworICAgIH0K
KyAgICBzdGF0aWMgUmVmPENTU1ZhbHVlUGFpcj4gY3JlYXRlKFJlZlB0cjxDU1NWYWx1ZT4mJiBm
aXJzdCwgUmVmUHRyPENTU1ZhbHVlPiYmIHNlY29uZCwgSWRlbnRpY2FsVmFsdWVFbmNvZGluZyBl
bmNvZGluZykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ZhbHVlUGFp
cihXVEZNb3ZlKGZpcnN0KSwgV1RGTW92ZShzZWNvbmQpLCBTcGFjZVNlcGFyYXRvciwgZW5jb2Rp
bmcpKTsKKyAgICB9CisgICAgc3RhdGljIFJlZjxDU1NWYWx1ZVBhaXI+IGNyZWF0ZShSZWZQdHI8
Q1NTVmFsdWU+JiYgZmlyc3QsIFJlZlB0cjxDU1NWYWx1ZT4mJiBzZWNvbmQsIFZhbHVlU2VwYXJh
dG9yIHNlcGFyYXRvciwgSWRlbnRpY2FsVmFsdWVFbmNvZGluZyBlbmNvZGluZykKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ZhbHVlUGFpcihXVEZNb3ZlKGZpcnN0KSwg
V1RGTW92ZShzZWNvbmQpLCBzZXBhcmF0b3IsIGVuY29kaW5nKSk7CiAgICAgfQogCi0gICAgUmVm
PENTU1ZhbHVlPiBmaXJzdCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3Q7IH0KLSAgICBSZWY8Q1NT
VmFsdWU+IHNlY29uZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vjb25kOyB9CisgICAgUmVmUHRyPENT
U1ZhbHVlPiBmaXJzdCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3Q7IH0KKyAgICBSZWZQdHI8Q1NT
VmFsdWU+IHNlY29uZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vjb25kOyB9CisgICAgUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiBmaXJzdEFzUHJpbWl0aXZlKCkgY29uc3Q7CisgICAgUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiBzZWNvbmRBc1ByaW1pdGl2ZSgpIGNvbnN0OworICAgIENTU1ZhbHVl
SUQgZmlyc3RBc1ZhbHVlSUQoKSBjb25zdDsKKyAgICBDU1NWYWx1ZUlEIHNlY29uZEFzVmFsdWVJ
RCgpIGNvbnN0OwogCiAgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25zdDsKICAgICBib29s
IGVxdWFscyhjb25zdCBDU1NWYWx1ZVBhaXImIG90aGVyKSBjb25zdDsKIAogcHJpdmF0ZToKLSAg
ICBleHBsaWNpdCBDU1NWYWx1ZVBhaXIoUmVmPENTU1ZhbHVlPiYmIGZpcnN0LCBSZWY8Q1NTVmFs
dWU+JiYgc2Vjb25kLCBWYWx1ZVNlcGFyYXRvciBzZXBhcmF0b3IpCisgICAgZXhwbGljaXQgQ1NT
VmFsdWVQYWlyKFJlZlB0cjxDU1NWYWx1ZT4mJiBmaXJzdCwgUmVmUHRyPENTU1ZhbHVlPiYmIHNl
Y29uZCwgVmFsdWVTZXBhcmF0b3Igc2VwYXJhdG9yKQogICAgICAgICA6IENTU1ZhbHVlKFZhbHVl
UGFpckNsYXNzKQogICAgICAgICAsIG1fZmlyc3QoV1RGTW92ZShmaXJzdCkpCiAgICAgICAgICwg
bV9zZWNvbmQoV1RGTW92ZShzZWNvbmQpKQpAQCAtNjMsNyArNzcsMTUgQEAgcHJpdmF0ZToKICAg
ICAgICAgbV92YWx1ZVNlcGFyYXRvciA9IHNlcGFyYXRvcjsKICAgICB9CiAKLSAgICBleHBsaWNp
dCBDU1NWYWx1ZVBhaXIoUmVmPENTU1ZhbHVlPiYmIGZpcnN0LCBSZWY8Q1NTVmFsdWU+JiYgc2Vj
b25kLCBWYWx1ZVNlcGFyYXRvciBzZXBhcmF0b3IsIElkZW50aWNhbFZhbHVlRW5jb2RpbmcgZW5j
b2RpbmcpCisgICAgZXhwbGljaXQgQ1NTVmFsdWVQYWlyKGNvbnN0IExlbmd0aFNpemUmIGxlbmd0
aFNpemUsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgVmFsdWVTZXBhcmF0b3Igc2VwYXJhdG9y
KQorICAgICAgICA6IENTU1ZhbHVlKFZhbHVlUGFpckNsYXNzKQorICAgIHsKKyAgICAgICAgbV9m
aXJzdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobGVuZ3RoU2l6ZS53aWR0aCwgc3R5bGUp
OworICAgICAgICBtX3NlY29uZCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobGVuZ3RoU2l6
ZS5oZWlnaHQsIHN0eWxlKTsKKyAgICAgICAgbV92YWx1ZVNlcGFyYXRvciA9IHNlcGFyYXRvcjsK
KyAgICB9CisKKyAgICBleHBsaWNpdCBDU1NWYWx1ZVBhaXIoUmVmUHRyPENTU1ZhbHVlPiYmIGZp
cnN0LCBSZWZQdHI8Q1NTVmFsdWU+JiYgc2Vjb25kLCBWYWx1ZVNlcGFyYXRvciBzZXBhcmF0b3Is
IElkZW50aWNhbFZhbHVlRW5jb2RpbmcgZW5jb2RpbmcpCiAgICAgICAgIDogQ1NTVmFsdWUoVmFs
dWVQYWlyQ2xhc3MpCiAgICAgICAgICwgbV9lbmNvZGluZyhlbmNvZGluZykKICAgICAgICAgLCBt
X2ZpcnN0KFdURk1vdmUoZmlyc3QpKQpAQCAtNzMsOCArOTUsOCBAQCBwcml2YXRlOgogICAgIH0K
IAogICAgIElkZW50aWNhbFZhbHVlRW5jb2RpbmcgbV9lbmNvZGluZyB7IElkZW50aWNhbFZhbHVl
RW5jb2Rpbmc6OkNvYWxlc2NlIH07Ci0gICAgUmVmPENTU1ZhbHVlPiBtX2ZpcnN0OwotICAgIFJl
ZjxDU1NWYWx1ZT4gbV9zZWNvbmQ7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBtX2ZpcnN0OworICAg
IFJlZlB0cjxDU1NWYWx1ZT4gbV9zZWNvbmQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmgKaW5kZXggMTVjZGZjMDZkZTg5Mjk1ZTI3NWY5NGQ1
NWMxZjk5OWFiYzJmMTY0OS4uYzk1NDc5Yzc5ZjFiNGFlMmQxODEyZGZiZTQxMmRhODE0YmI1MWNj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlUG9vbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1
ZGUgIkNTU1JldmVydFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTVW5zZXRWYWx1ZS5oIgogI2luY2x1
ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKKyNpbmNsdWRlICJDU1NWYWx1ZVBhaXIuaCIKICNpbmNs
dWRlICJDb2xvckhhc2guaCIKICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CkBAIC05NSw3ICs5Niw2IEBAIHB1YmxpYzoKICAgICBSZWY8Q1NTUHJpbWl0aXZlVmFs
dWU+IGNyZWF0ZVZhbHVlKGRvdWJsZSB2YWx1ZSwgQ1NTVW5pdFR5cGUpOwogICAgIFJlZjxDU1NQ
cmltaXRpdmVWYWx1ZT4gY3JlYXRlVmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSwgQ1NTVW5pdFR5
cGUgdHlwZSkgeyByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZSwgdHlwZSk7
IH0KICAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVZhbHVlKGNvbnN0IExlbmd0aCYg
dmFsdWUsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgeyByZXR1cm4gQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZSh2YWx1ZSwgc3R5bGUpOyB9Ci0gICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBj
cmVhdGVWYWx1ZShjb25zdCBMZW5ndGhTaXplJiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlKSB7IHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLCBzdHlsZSk7IH0K
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBj
cmVhdGVWYWx1ZShUJiYgdmFsdWUpIHsgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
c3RkOjpmb3J3YXJkPFQ+KHZhbHVlKSk7IH0KIAogICAgIHZvaWQgZHJhaW4oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWlyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUGFpci5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMGVmNDUyNzE3YmEyYzIxNzUyODEwNWNh
YmE2ZmRiYWU1ZWZkMDE2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWlyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3OSAr
MCwwIEBACi0vKgotICogKEMpIDE5OTktMjAwMyBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQot
ICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDE1IEFwcGxlIEluYy4KLSAqCi0g
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIENTU1ByaW1pdGl2ZVZhbHVlOwotCi0vLyBBIHByaW1pdGl2ZSB2YWx1ZSBy
ZXByZXNlbnRpbmcgYSBwYWlyLiAgVGhpcyBpcyB1c2VmdWwgZm9yIHByb3BlcnRpZXMgbGlrZSBi
b3JkZXItcmFkaXVzLCBiYWNrZ3JvdW5kLXNpemUvcG9zaXRpb24sCi0vLyBhbmQgYm9yZGVyLXNw
YWNpbmcgKGFsbCBvZiB3aGljaCBhcmUgc3BhY2Utc2VwYXJhdGVkIHNldHMgb2YgdHdvIHZhbHVl
cykuICBBdCB0aGUgbW9tZW50IHdlIGFyZSBvbmx5IHVzaW5nIGl0IGZvcgotLy8gYm9yZGVyLXJh
ZGl1cyBhbmQgYmFja2dyb3VuZC1zaXplLCBidXQgKEZJWE1FKSBib3JkZXItc3BhY2luZyBhbmQg
YmFja2dyb3VuZC1wb3NpdGlvbiBjb3VsZCBiZSBjb252ZXJ0ZWQgb3ZlciB0byB1c2UKLS8vIGl0
IChlbGltaW5hdGluZyBzb21lIGV4dHJhIC13ZWJraXQtIGludGVybmFsIHByb3BlcnRpZXMpLgot
Y2xhc3MgUGFpciA6IHB1YmxpYyBSZWZDb3VudGVkPFBhaXI+IHsKLXB1YmxpYzoKLSAgICBlbnVt
IGNsYXNzIElkZW50aWNhbFZhbHVlRW5jb2RpbmcgOiB1aW50OF90IHsKLSAgICAgICAgRG9Ob3RD
b2FsZXNjZSwKLSAgICAgICAgQ29hbGVzY2UKLSAgICB9OwotCi0gICAgc3RhdGljIFJlZjxQYWly
PiBjcmVhdGUoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYmIGZpcnN0LCBSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+JiYgc2Vjb25kKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUGFpcihXVEZNb3ZlKGZpcnN0KSwgV1RGTW92ZShzZWNvbmQpKSk7Ci0gICAgfQotICAgIHN0
YXRpYyBSZWY8UGFpcj4gY3JlYXRlKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mJiBmaXJzdCwg
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYmIHNlY29uZCwgSWRlbnRpY2FsVmFsdWVFbmNvZGlu
ZyBlbmNvZGluZykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBhaXIoV1RG
TW92ZShmaXJzdCksIFdURk1vdmUoc2Vjb25kKSwgZW5jb2RpbmcpKTsKLSAgICB9Ci0gICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIGZpcnN0KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdC5nZXQoKTsgfQot
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzZWNvbmQoKSBjb25zdCB7IHJldHVybiBtX3NlY29uZC5n
ZXQoKTsgfQotCi0gICAgU3RyaW5nIGNzc1RleHQoKSBjb25zdAotICAgIHsKLSAgICAgICAgU3Ry
aW5nIGZpcnN0ID0gdGhpcy0+Zmlyc3QoKS0+Y3NzVGV4dCgpOwotICAgICAgICBTdHJpbmcgc2Vj
b25kID0gdGhpcy0+c2Vjb25kKCktPmNzc1RleHQoKTsKLSAgICAgICAgaWYgKG1fZW5jb2Rpbmcg
PT0gSWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6Q29hbGVzY2UgJiYgZmlyc3QgPT0gc2Vjb25kKQot
ICAgICAgICAgICAgcmV0dXJuIGZpcnN0OwotICAgICAgICByZXR1cm4gZmlyc3QgKyAnICcgKyBz
ZWNvbmQ7Ci0gICAgfQotCi0gICAgYm9vbCBlcXVhbHMoY29uc3QgUGFpciYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZVB0cihtX2ZpcnN0LCBvdGhlci5tX2ZpcnN0KSAmJiBj
b21wYXJlQ1NTVmFsdWVQdHIobV9zZWNvbmQsIG90aGVyLm1fc2Vjb25kKTsgfQotCi1wcml2YXRl
OgotICAgIFBhaXIoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYmIGZpcnN0LCBSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+JiYgc2Vjb25kKQotICAgICAgICA6IG1fZmlyc3QoV1RGTW92ZShmaXJz
dCkpCi0gICAgICAgICwgbV9zZWNvbmQoV1RGTW92ZShzZWNvbmQpKQotICAgIHsgfQotCi0gICAg
UGFpcihSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiYgZmlyc3QsIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4mJiBzZWNvbmQsIElkZW50aWNhbFZhbHVlRW5jb2RpbmcgZW5jb2RpbmcpCi0gICAg
ICAgIDogbV9lbmNvZGluZyhlbmNvZGluZykKLSAgICAgICAgLCBtX2ZpcnN0KFdURk1vdmUoZmly
c3QpKQotICAgICAgICAsIG1fc2Vjb25kKFdURk1vdmUoc2Vjb25kKSkKLSAgICB7IH0KLQotICAg
IElkZW50aWNhbFZhbHVlRW5jb2RpbmcgbV9lbmNvZGluZyB7IElkZW50aWNhbFZhbHVlRW5jb2Rp
bmc6OkNvYWxlc2NlIH07Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBtX2ZpcnN0Owot
ICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9zZWNvbmQ7Ci19OwotCi19IC8vIG5hbWVz
cGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBh
cnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNw
cAppbmRleCA2ZWEzYzdkMzhmMWI2ZDVjNzM3NjU5MjMxODJkNTI5MmNkYjI0N2M4Li42MjZhOTZh
ZDlhZjAyMTZmZWEzYjg4NTg1OWRlZmYxY2MyNWM0NmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcApAQCAtNTgsMTMgKzU4LDEzIEBACiAj
aW5jbHVkZSAiQ1NTU2hhZG93VmFsdWUuaCIKICNpbmNsdWRlICJDU1NUaW1pbmdGdW5jdGlvblZh
bHVlLmgiCiAjaW5jbHVkZSAiQ1NTVW5pY29kZVJhbmdlVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NW
YWx1ZVBhaXIuaCIKICNpbmNsdWRlICJDU1NWYXJpYWJsZVBhcnNlci5oIgogI2luY2x1ZGUgIkNT
U1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUuaCIKICNpbmNsdWRlICJDb3VudGVyLmgiCiAjaW5jbHVk
ZSAiRm9udEZhY2UuaCIKICNpbmNsdWRlICJIYXNoVG9vbHMuaCIKLS8vIEZJWE1FLU5FV1BBUlNF
UjogUmVwbGFjZSBQYWlyIGFuZCBSZWN0IHdpdGggYWN0dWFsIENTU1ZhbHVlIHN1YmNsYXNzZXMg
KENTU1ZhbHVlUGFpciBhbmQgQ1NTUXVhZFZhbHVlKS4KLSNpbmNsdWRlICJQYWlyLmgiCisvLyBG
SVhNRS1ORVdQQVJTRVI6IFJlcGxhY2UgUmVjdCB3aXRoIGFuIGFjdHVhbCBDU1NWYWx1ZSBzdWJj
bGFzcyAoQ1NTUXVhZFZhbHVlKS4KICNpbmNsdWRlICJSZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVy
VGhlbWUuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCkBAIC0xMTA2LDEz
ICsxMTA2LDYgQEAgc3RhdGljIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUxpbmVI
ZWlnaHQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIEMKICAgICByZXR1cm4gY29uc3VtZUxl
bmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZl
KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KLXN0YXRpYyBSZWY8Q1NTUHJpbWl0
aXZlVmFsdWU+IGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihBcmdzJiYuLi4gYXJncykKLXsKLSAg
ICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShQYWlyOjpjcmVh
dGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7Ci19Ci0KLQogc3RhdGljIFJlZlB0cjxD
U1NWYWx1ZT4gY29uc3VtZUNvdW50ZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGludCBk
ZWZhdWx0VmFsdWUpCiB7CiAgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9u
ZSkKQEAgLTExMjYsNyArMTExOSw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVD
b3VudGVyKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBpbnQgZGVmYXVsdFZhCiAgICAgICAg
IGludCBpID0gZGVmYXVsdFZhbHVlOwogICAgICAgICBpZiAoYXV0byBjb3VudGVyVmFsdWUgPSBj
b25zdW1lSW50ZWdlclJhdyhyYW5nZSkpCiAgICAgICAgICAgICBpID0gKmNvdW50ZXJWYWx1ZTsK
LSAgICAgICAgbGlzdC0+YXBwZW5kKGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihjb3VudGVyTmFt
ZS5yZWxlYXNlTm9uTnVsbCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGksIENTU1VuaXRU
eXBlOjpDU1NfTlVNQkVSKSwgUGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6Q29hbGVzY2Up
KTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUGFpcjo6Y3JlYXRlKGNvdW50ZXJOYW1l
LnJlbGVhc2VOb25OdWxsKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoaSwgQ1NTVW5pdFR5
cGU6OkNTU19OVU1CRVIpKSk7CiAgICAgfSB3aGlsZSAoIXJhbmdlLmF0RW5kKCkpOwogICAgIHJl
dHVybiBsaXN0OwogfQpAQCAtMjU1MCw3ICsyNTQzLDcgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1
ZT4gY29uc3VtZUJvcmRlclJhZGl1c0Nvcm5lcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwg
Q1MKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBhcnNlZFZhbHVlMiA9IGNvbnN1bWVM
ZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2
ZSk7CiAgICAgaWYgKCFwYXJzZWRWYWx1ZTIpCiAgICAgICAgIHBhcnNlZFZhbHVlMiA9IHBhcnNl
ZFZhbHVlMTsKLSAgICByZXR1cm4gY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKHBhcnNlZFZhbHVl
MS5yZWxlYXNlTm9uTnVsbCgpLCBwYXJzZWRWYWx1ZTIucmVsZWFzZU5vbk51bGwoKSwgUGFpcjo6
SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6Q29hbGVzY2UpOworICAgIHJldHVybiBDU1NWYWx1ZVBh
aXI6OmNyZWF0ZShwYXJzZWRWYWx1ZTEucmVsZWFzZU5vbk51bGwoKSwgcGFyc2VkVmFsdWUyLnJl
bGVhc2VOb25OdWxsKCkpOwogfQogCiBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lVGV4
dFVuZGVybGluZU9mZnNldChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9k
ZSBjc3NQYXJzZXJNb2RlKQpAQCAtMjc0MSwxMCArMjczNCwxMCBAQCBzdGF0aWMgUmVmUHRyPENT
U0Jhc2ljU2hhcGVJbnNldD4gY29uc3VtZUJhc2ljU2hhcGVJbnNldChDU1NQYXJzZXJUb2tlblJh
bmdlJiBhcgogICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZlcnRpY2FsUmFkaWlb
NF0gPSB7IDAgfTsKICAgICAgICAgaWYgKCFjb25zdW1lUmFkaWkoaG9yaXpvbnRhbFJhZGlpLCB2
ZXJ0aWNhbFJhZGlpLCBhcmdzLCBjb250ZXh0Lm1vZGUsIGZhbHNlKSkKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgICAgICBzaGFwZS0+c2V0VG9wTGVmdFJhZGl1cyhjcmVhdGVQcmlt
aXRpdmVWYWx1ZVBhaXIoaG9yaXpvbnRhbFJhZGlpWzBdLnJlbGVhc2VOb25OdWxsKCksIHZlcnRp
Y2FsUmFkaWlbMF0ucmVsZWFzZU5vbk51bGwoKSwgUGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNvZGlu
Zzo6Q29hbGVzY2UpKTsKLSAgICAgICAgc2hhcGUtPnNldFRvcFJpZ2h0UmFkaXVzKGNyZWF0ZVBy
aW1pdGl2ZVZhbHVlUGFpcihob3Jpem9udGFsUmFkaWlbMV0ucmVsZWFzZU5vbk51bGwoKSwgdmVy
dGljYWxSYWRpaVsxXS5yZWxlYXNlTm9uTnVsbCgpLCBQYWlyOjpJZGVudGljYWxWYWx1ZUVuY29k
aW5nOjpDb2FsZXNjZSkpOwotICAgICAgICBzaGFwZS0+c2V0Qm90dG9tUmlnaHRSYWRpdXMoY3Jl
YXRlUHJpbWl0aXZlVmFsdWVQYWlyKGhvcml6b250YWxSYWRpaVsyXS5yZWxlYXNlTm9uTnVsbCgp
LCB2ZXJ0aWNhbFJhZGlpWzJdLnJlbGVhc2VOb25OdWxsKCksIFBhaXI6OklkZW50aWNhbFZhbHVl
RW5jb2Rpbmc6OkNvYWxlc2NlKSk7Ci0gICAgICAgIHNoYXBlLT5zZXRCb3R0b21MZWZ0UmFkaXVz
KGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihob3Jpem9udGFsUmFkaWlbM10ucmVsZWFzZU5vbk51
bGwoKSwgdmVydGljYWxSYWRpaVszXS5yZWxlYXNlTm9uTnVsbCgpLCBQYWlyOjpJZGVudGljYWxW
YWx1ZUVuY29kaW5nOjpDb2FsZXNjZSkpOworICAgICAgICBzaGFwZS0+c2V0VG9wTGVmdFJhZGl1
cyhDU1NWYWx1ZVBhaXI6OmNyZWF0ZShob3Jpem9udGFsUmFkaWlbMF0ucmVsZWFzZU5vbk51bGwo
KSwgdmVydGljYWxSYWRpaVswXS5yZWxlYXNlTm9uTnVsbCgpKSk7CisgICAgICAgIHNoYXBlLT5z
ZXRUb3BSaWdodFJhZGl1cyhDU1NWYWx1ZVBhaXI6OmNyZWF0ZShob3Jpem9udGFsUmFkaWlbMV0u
cmVsZWFzZU5vbk51bGwoKSwgdmVydGljYWxSYWRpaVsxXS5yZWxlYXNlTm9uTnVsbCgpKSk7Cisg
ICAgICAgIHNoYXBlLT5zZXRCb3R0b21SaWdodFJhZGl1cyhDU1NWYWx1ZVBhaXI6OmNyZWF0ZSho
b3Jpem9udGFsUmFkaWlbMl0ucmVsZWFzZU5vbk51bGwoKSwgdmVydGljYWxSYWRpaVsyXS5yZWxl
YXNlTm9uTnVsbCgpKSk7CisgICAgICAgIHNoYXBlLT5zZXRCb3R0b21MZWZ0UmFkaXVzKENTU1Zh
bHVlUGFpcjo6Y3JlYXRlKGhvcml6b250YWxSYWRpaVszXS5yZWxlYXNlTm9uTnVsbCgpLCB2ZXJ0
aWNhbFJhZGlpWzNdLnJlbGVhc2VOb25OdWxsKCkpKTsKICAgICB9CiAgICAgcmV0dXJuIHNoYXBl
OwogfQpAQCAtMjg4MSwxMyArMjg3NCwxMiBAQCBzdGF0aWMgUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBjb25zdW1lT3ZlcmZsb3dQb3NpdGlvbktleXdvcmQoQ1NTUGFyc2VyVG9rZW5SYQogCiBz
dGF0aWMgQ1NTVmFsdWVJRCBnZXRCYXNlbGluZUtleXdvcmQoUmVmUHRyPENTU1ZhbHVlPiB2YWx1
ZSkKIHsKLSAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPigqdmFsdWUpOwotICAgIGlmIChwcmltaXRpdmVWYWx1ZS5wYWlyVmFsdWUoKSkgewotICAg
ICAgICBBU1NFUlQocHJpbWl0aXZlVmFsdWUucGFpclZhbHVlKCktPmZpcnN0KCktPnZhbHVlSUQo
KSA9PSBDU1NWYWx1ZUxhc3QpOwotICAgICAgICBBU1NFUlQocHJpbWl0aXZlVmFsdWUucGFpclZh
bHVlKCktPnNlY29uZCgpLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVCYXNlbGluZSk7CisgICAgaWYg
KHZhbHVlICYmIHZhbHVlLT5pc1ZhbHVlUGFpcigpKSB7CisgICAgICAgIEFTU0VSVChkb3duY2Fz
dDxDU1NWYWx1ZVBhaXI+KCp2YWx1ZSkuZmlyc3RBc1ZhbHVlSUQoKSA9PSBDU1NWYWx1ZUxhc3Qp
OworICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTVmFsdWVQYWlyPigqdmFsdWUpLnNlY29uZEFz
VmFsdWVJRCgpID09IENTU1ZhbHVlQmFzZWxpbmUpOwogICAgICAgICByZXR1cm4gQ1NTVmFsdWVM
YXN0QmFzZWxpbmU7CiAgICAgfQotICAgIEFTU0VSVChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkg
PT0gQ1NTVmFsdWVCYXNlbGluZSk7CisgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPigqdmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUJhc2VsaW5lKTsKICAgICByZXR1cm4g
Q1NTVmFsdWVCYXNlbGluZTsKIH0KIApAQCAtMjg5OCw3ICsyODkwLDcgQEAgc3RhdGljIFJlZlB0
cjxDU1NWYWx1ZT4gY29uc3VtZUJhc2VsaW5lS2V5d29yZChDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSkKICAgICBpZiAoIWJhc2VsaW5lKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBp
ZiAocHJlZmVyZW5jZSAmJiBwcmVmZXJlbmNlLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVMYXN0KQot
ICAgICAgICByZXR1cm4gY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKHByZWZlcmVuY2UucmVsZWFz
ZU5vbk51bGwoKSwgYmFzZWxpbmUucmVsZWFzZU5vbk51bGwoKSwgUGFpcjo6SWRlbnRpY2FsVmFs
dWVFbmNvZGluZzo6Q29hbGVzY2UpOworICAgICAgICByZXR1cm4gQ1NTVmFsdWVQYWlyOjpjcmVh
dGUocHJlZmVyZW5jZS5yZWxlYXNlTm9uTnVsbCgpLCBiYXNlbGluZS5yZWxlYXNlTm9uTnVsbCgp
KTsKICAgICByZXR1cm4gYmFzZWxpbmU7CiB9CiAKQEAgLTI5NDEsNyArMjkzMyw3IEBAIHN0YXRp
YyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVCb3JkZXJJbWFnZVJlcGVhdChDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSkKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZlcnRpY2FsID0g
Y29uc3VtZUJvcmRlckltYWdlUmVwZWF0S2V5d29yZChyYW5nZSk7CiAgICAgaWYgKCF2ZXJ0aWNh
bCkKICAgICAgICAgdmVydGljYWwgPSBob3Jpem9udGFsOwotICAgIHJldHVybiBjcmVhdGVQcmlt
aXRpdmVWYWx1ZVBhaXIoaG9yaXpvbnRhbC5yZWxlYXNlTm9uTnVsbCgpLCB2ZXJ0aWNhbC5yZWxl
YXNlTm9uTnVsbCgpLCBQYWlyOjpJZGVudGljYWxWYWx1ZUVuY29kaW5nOjpDb2FsZXNjZSk7Cisg
ICAgcmV0dXJuIENTU1ZhbHVlUGFpcjo6Y3JlYXRlKGhvcml6b250YWwucmVsZWFzZU5vbk51bGwo
KSwgdmVydGljYWwucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKIHN0YXRpYyBSZWZQdHI8Q1NTVmFs
dWU+IGNvbnN1bWVCb3JkZXJJbWFnZVNsaWNlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlKQpAQCAtMzE2MCw3ICszMTUyLDcgQEAgc3RhdGljIFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVByZWZpeGVkQmFja2dyb3VuZEJveChDU1NQcm9w
ZXJ0eUlEIHByb3AKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotc3RhdGljIFJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gY29uc3VtZUJhY2tncm91bmRTaXplKENTU1Byb3BlcnR5SUQgcHJvcGVy
dHksIENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1v
ZGUpCitzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lQmFja2dyb3VuZFNpemUoQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eSwgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1v
ZGUgY3NzUGFyc2VyTW9kZSkKIHsKICAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlQ29udGFp
biwgQ1NTVmFsdWVDb3Zlcj4ocmFuZ2UucGVlaygpLmlkKCkpKQogICAgICAgICByZXR1cm4gY29u
c3VtZUlkZW50KHJhbmdlKTsKQEAgLTMxODMsNyArMzE3NSw4IEBAIHN0YXRpYyBSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVCYWNrZ3JvdW5kU2l6ZShDU1NQcm9wZXJ0eUlEIHByb3Bl
cnR5LCBDCiAgICAgfQogICAgIGlmICghdmVydGljYWwpCiAgICAgICAgIHJldHVybiBob3Jpem9u
dGFsOwotICAgIHJldHVybiBjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIoaG9yaXpvbnRhbC5yZWxl
YXNlTm9uTnVsbCgpLCB2ZXJ0aWNhbC5yZWxlYXNlTm9uTnVsbCgpLCBwcm9wZXJ0eSA9PSBDU1NQ
cm9wZXJ0eVdlYmtpdEJhY2tncm91bmRTaXplID8gUGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNvZGlu
Zzo6Q29hbGVzY2UgOiBQYWlyOjpJZGVudGljYWxWYWx1ZUVuY29kaW5nOjpEb05vdENvYWxlc2Nl
KTsKKyAgICBhdXRvIHZhbHVlQ29hbGVzY2VuY2UgPSBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdl
YmtpdEJhY2tncm91bmRTaXplID8gQ1NTVmFsdWVQYWlyOjpJZGVudGljYWxWYWx1ZUVuY29kaW5n
OjpDb2FsZXNjZSA6IENTU1ZhbHVlUGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6RG9Ob3RD
b2FsZXNjZTsKKyAgICByZXR1cm4gQ1NTVmFsdWVQYWlyOjpjcmVhdGUoaG9yaXpvbnRhbC5yZWxl
YXNlTm9uTnVsbCgpLCB2ZXJ0aWNhbC5yZWxlYXNlTm9uTnVsbCgpLCB2YWx1ZUNvYWxlc2NlbmNl
KTsKIH0KIAogc3RhdGljIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGNvbnN1bWVHcmlkQXV0b0Zsb3co
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCkBAIC0zMjk3LDcgKzMyOTAsNyBAQCBzdGF0aWMg
UmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lU2VsZlBvc2l0aW9uT3ZlcmZsb3dQb3NpdGlvbihDU1NQ
YXJzZXJUb2tlblJhbmdlJgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IHNlbGZQb3NpdGlvbiA9IGNvbnN1bWVJZGVudChyYW5nZSk7CiAgICAg
aWYgKG92ZXJmbG93UG9zaXRpb24pCi0gICAgICAgIHJldHVybiBjcmVhdGVQcmltaXRpdmVWYWx1
ZVBhaXIob3ZlcmZsb3dQb3NpdGlvbi5yZWxlYXNlTm9uTnVsbCgpLCBzZWxmUG9zaXRpb24ucmVs
ZWFzZU5vbk51bGwoKSwgUGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6Q29hbGVzY2UpOwor
ICAgICAgICByZXR1cm4gQ1NTVmFsdWVQYWlyOjpjcmVhdGUob3ZlcmZsb3dQb3NpdGlvbi5yZWxl
YXNlTm9uTnVsbCgpLCBzZWxmUG9zaXRpb24ucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgcmV0dXJu
IHNlbGZQb3NpdGlvbjsKIH0KIApAQCAtMzMyMiw3ICszMzE1LDcgQEAgc3RhdGljIFJlZlB0cjxD
U1NWYWx1ZT4gY29uc3VtZUp1c3RpZnlJdGVtcyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkK
ICAgICBpZiAobGVnYWN5KSB7CiAgICAgICAgIHJhbmdlID0gcmFuZ2VDb3B5OwogICAgICAgICBp
ZiAocG9zaXRpb25LZXl3b3JkKQotICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVByaW1pdGl2ZVZh
bHVlUGFpcihsZWdhY3kucmVsZWFzZU5vbk51bGwoKSwgcG9zaXRpb25LZXl3b3JkLnJlbGVhc2VO
b25OdWxsKCksIFBhaXI6OklkZW50aWNhbFZhbHVlRW5jb2Rpbmc6OkNvYWxlc2NlKTsKKyAgICAg
ICAgICAgIHJldHVybiBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShsZWdhY3kucmVsZWFzZU5vbk51bGwo
KSwgcG9zaXRpb25LZXl3b3JkLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICByZXR1cm4gbGVn
YWN5OwogICAgIH0KICAgICByZXR1cm4gY29uc3VtZVNlbGZQb3NpdGlvbk92ZXJmbG93UG9zaXRp
b24ocmFuZ2UsIGlzU2VsZlBvc2l0aW9uT3JMZWZ0T3JSaWdodEtleXdvcmQpOwpAQCAtMzc3MSw3
ICszNzY0LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUluaXRpYWxMZXR0ZXIo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiAgICAgfSBlbHNlCiAgICAgICAgIHBvc2l0aW9u
ID0gaGVpZ2h0LmNvcHlSZWYoKTsKICAgICAKLSAgICByZXR1cm4gY3JlYXRlUHJpbWl0aXZlVmFs
dWVQYWlyKHBvc2l0aW9uLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoaGVpZ2h0KSk7CisgICAg
cmV0dXJuIENTU1ZhbHVlUGFpcjo6Y3JlYXRlKHBvc2l0aW9uLnJlbGVhc2VOb25OdWxsKCksIFdU
Rk1vdmUoaGVpZ2h0KSk7CiB9CiAKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVTcGVh
a0FzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQpAQCAtNTk4OCwxMCArNTk4MSwxMCBAQCBi
b29sIENTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVNob3J0aGFuZChDU1NQcm9wZXJ0eUlEIHByb3Bl
cnR5LCBib29sIGltcG9ydGFudCkKICAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2
ZXJ0aWNhbFJhZGlpWzRdOwogICAgICAgICBpZiAoIWNvbnN1bWVSYWRpaShob3Jpem9udGFsUmFk
aWksIHZlcnRpY2FsUmFkaWksIG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlLCBwcm9wZXJ0eSA9PSBD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlclJhZGl1cykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyVG9wTGVmdFJhZGl1cywgQ1NT
UHJvcGVydHlCb3JkZXJSYWRpdXMsIGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihob3Jpem9udGFs
UmFkaWlbMF0ucmVsZWFzZU5vbk51bGwoKSwgdmVydGljYWxSYWRpaVswXS5yZWxlYXNlTm9uTnVs
bCgpLCBQYWlyOjpJZGVudGljYWxWYWx1ZUVuY29kaW5nOjpDb2FsZXNjZSksIGltcG9ydGFudCk7
Ci0gICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXMsIENT
U1Byb3BlcnR5Qm9yZGVyUmFkaXVzLCBjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIoaG9yaXpvbnRh
bFJhZGlpWzFdLnJlbGVhc2VOb25OdWxsKCksIHZlcnRpY2FsUmFkaWlbMV0ucmVsZWFzZU5vbk51
bGwoKSwgUGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6Q29hbGVzY2UpLCBpbXBvcnRhbnQp
OwotICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0UmFkaXVz
LCBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1cywgY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKGhvcml6
b250YWxSYWRpaVsyXS5yZWxlYXNlTm9uTnVsbCgpLCB2ZXJ0aWNhbFJhZGlpWzJdLnJlbGVhc2VO
b25OdWxsKCksIFBhaXI6OklkZW50aWNhbFZhbHVlRW5jb2Rpbmc6OkNvYWxlc2NlKSwgaW1wb3J0
YW50KTsKLSAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFk
aXVzLCBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1cywgY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKGhv
cml6b250YWxSYWRpaVszXS5yZWxlYXNlTm9uTnVsbCgpLCB2ZXJ0aWNhbFJhZGlpWzNdLnJlbGVh
c2VOb25OdWxsKCksIFBhaXI6OklkZW50aWNhbFZhbHVlRW5jb2Rpbmc6OkNvYWxlc2NlKSwgaW1w
b3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJUb3BMZWZ0UmFk
aXVzLCBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1cywgQ1NTVmFsdWVQYWlyOjpjcmVhdGUoaG9yaXpv
bnRhbFJhZGlpWzBdLnJlbGVhc2VOb25OdWxsKCksIHZlcnRpY2FsUmFkaWlbMF0ucmVsZWFzZU5v
bk51bGwoKSksIGltcG9ydGFudCk7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9y
ZGVyVG9wUmlnaHRSYWRpdXMsIENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVzLCBDU1NWYWx1ZVBhaXI6
OmNyZWF0ZShob3Jpem9udGFsUmFkaWlbMV0ucmVsZWFzZU5vbk51bGwoKSwgdmVydGljYWxSYWRp
aVsxXS5yZWxlYXNlTm9uTnVsbCgpKSwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHko
Q1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1cywgQ1NTUHJvcGVydHlCb3JkZXJSYWRp
dXMsIENTU1ZhbHVlUGFpcjo6Y3JlYXRlKGhvcml6b250YWxSYWRpaVsyXS5yZWxlYXNlTm9uTnVs
bCgpLCB2ZXJ0aWNhbFJhZGlpWzJdLnJlbGVhc2VOb25OdWxsKCkpLCBpbXBvcnRhbnQpOworICAg
ICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXMsIENTU1By
b3BlcnR5Qm9yZGVyUmFkaXVzLCBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShob3Jpem9udGFsUmFkaWlb
M10ucmVsZWFzZU5vbk51bGwoKSwgdmVydGljYWxSYWRpaVszXS5yZWxlYXNlTm9uTnVsbCgpKSwg
aW1wb3J0YW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJDb2xvcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAppbmRleCA3NzZiODgyMTExYjlmYjgzOWRhOWVl
MThkNGNmZmU1OTFhY2VlMDJmLi5iMzg2Nzg4MmE1NjQxY2U2NzI5MGZhMDFkNDRmMDc3MGNjOWZk
YTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFy
c2VySGVscGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnMuY3BwCkBAIC00MCwxMCArNDAsMTAgQEAKICNpbmNsdWRlICJDU1NOYW1l
ZEltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQYWludEltYWdlVmFsdWUuaCIKICNpbmNsdWRl
ICJDU1NQYXJzZXJJZGlvbXMuaCIKKyNpbmNsdWRlICJDU1NWYWx1ZVBhaXIuaCIKICNpbmNsdWRl
ICJDU1NWYWx1ZVBvb2wuaCIKICNpbmNsdWRlICJDb2xvckNvbnZlcnNpb24uaCIKICNpbmNsdWRl
ICJDb2xvckx1bWluYW5jZS5oIgotI2luY2x1ZGUgIlBhaXIuaCIKICNpbmNsdWRlICJSdW50aW1l
RW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU3R5bGVDb2xvci5oIgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgpAQCAtNjQ0LDkgKzY0NCw4IEBAIFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUlkZW50UmFuZ2UoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIENTU1ZhbHVlCiAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CiB9
CiAKLS8vIEZJWE1FLU5FV1BBUlNFUjogRXZlbnR1YWxseSB3ZSdkIGxpa2UgdGhpcyB0byB1c2Ug
Q1NTQ3VzdG9tSWRlbnRWYWx1ZSwgYnV0IHdlIG5lZWQKLS8vIHRvIGRvIG90aGVyIHBsdW1iaW5n
IHdvcmsgZmlyc3QgKGxpa2UgY2hhbmdpbmcgUGFpciB0byBDU1NWYWx1ZVBhaXIgYW5kIG1ha2Ug
aXQgbm90Ci0vLyB1c2Ugb25seSBwcmltaXRpdmUgdmFsdWVzKS4KKy8vIEZJWE1FLU5FV1BBUlNF
UjogV2Ugc2hvdWxkIHJlZmFjdG9yIHRoaXMgdG8gcmV0dXJuIGEgQ1NTQ3VzdG9tSWRlbnRWYWx1
ZSBpbnN0ZWFkIG9mIGEgQ1NTUHJpbWl0aXZlVmFsdWUgb2YgdHlwZQorLy8gQ1NTX1NUUklORy4K
IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUN1c3RvbUlkZW50KENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlKQogewogICAgIGlmIChyYW5nZS5wZWVrKCkudHlwZSgpICE9IElkZW50
VG9rZW4gfHwgaXNDU1NXaWRlS2V5d29yZChyYW5nZS5wZWVrKCkuaWQoKSkpCkBAIC0yMDc0LDgg
KzIwNzMsOCBAQCBzdGF0aWMgUG9zaXRpb25Db29yZGluYXRlcyBwb3NpdGlvbkZyb21PbmVWYWx1
ZShDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYm9vbCB2YWx1ZUFwcGxpZXNUb1lB
eGlzT25seSA9IGlzVmVydGljYWxQb3NpdGlvbktleXdvcmRPbmx5KHZhbHVlKTsKICAgICBpZiAo
dmFsdWVBcHBsaWVzVG9ZQXhpc09ubHkpCi0gICAgICAgIHJldHVybiB7IENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlQ2VudGVyKSwgdmFsdWUgfTsKLSAgICByZXR1
cm4geyB2YWx1ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVD
ZW50ZXIpIH07CisgICAgICAgIHJldHVybiB7IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVu
dGlmaWVyKENTU1ZhbHVlQ2VudGVyKSwgbWFrZVJlZih2YWx1ZSkgfTsKKyAgICByZXR1cm4geyBt
YWtlUmVmKHZhbHVlKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFs
dWVDZW50ZXIpIH07CiB9CiAKIHN0YXRpYyBPcHRpb25hbDxQb3NpdGlvbkNvb3JkaW5hdGVzPiBw
b3NpdGlvbkZyb21Ud29WYWx1ZXMoQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlMSwgQ1NTUHJpbWl0
aXZlVmFsdWUmIHZhbHVlMikKQEAgLTIwODUsMTYgKzIwODQsOCBAQCBzdGF0aWMgT3B0aW9uYWw8
UG9zaXRpb25Db29yZGluYXRlcz4gcG9zaXRpb25Gcm9tVHdvVmFsdWVzKENTU1ByaW1pdGl2ZVZh
bHVlJiB2YQogICAgIGlmIChtdXN0T3JkZXJBc1hZICYmIG11c3RPcmRlckFzWVgpCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKG11c3RPcmRlckFzWVgpCi0gICAgICAgIHJl
dHVybiBQb3NpdGlvbkNvb3JkaW5hdGVzIHsgdmFsdWUyLCB2YWx1ZTEgfTsKLSAgICByZXR1cm4g
UG9zaXRpb25Db29yZGluYXRlcyB7IHZhbHVlMSwgdmFsdWUyIH07Ci19Ci0KLW5hbWVzcGFjZSBD
U1NQcm9wZXJ0eVBhcnNlckhlbHBlcnNJbnRlcm5hbCB7Ci10ZW1wbGF0ZTx0eXBlbmFtZS4uLiBB
cmdzPgotc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlUHJpbWl0aXZlVmFsdWVQ
YWlyKEFyZ3MmJi4uLiBhcmdzKQotewotICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRv
bigpLmNyZWF0ZVZhbHVlKFBhaXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4p
KTsKLX0KKyAgICAgICAgcmV0dXJuIFBvc2l0aW9uQ29vcmRpbmF0ZXMgeyBtYWtlUmVmKHZhbHVl
MiksIG1ha2VSZWYodmFsdWUxKSB9OworICAgIHJldHVybiBQb3NpdGlvbkNvb3JkaW5hdGVzIHsg
bWFrZVJlZih2YWx1ZTEpLCBtYWtlUmVmKHZhbHVlMikgfTsKIH0KIAogLy8gaHR0cHM6Ly9kcmFm
dHMuY3Nzd2cub3JnL2Nzcy1iYWNrZ3JvdW5kcy0zLyNwcm9wZGVmLWJhY2tncm91bmQtcG9zaXRp
b24KQEAgLTIxMDksOCArMjEwMCw4IEBAIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNy
ZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihBcmdzJiYuLi4gYXJncykKIC8vCiBzdGF0aWMgT3B0aW9u
YWw8UG9zaXRpb25Db29yZGluYXRlcz4gYmFja2dyb3VuZFBvc2l0aW9uRnJvbVRocmVlVmFsdWVz
KGNvbnN0IHN0ZDo6YXJyYXk8Q1NTUHJpbWl0aXZlVmFsdWUqLCA1PiYgdmFsdWVzKQogewotICAg
IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmVzdWx0WDsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IHJlc3VsdFk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiByZXN1bHRYOworICAgIFJl
ZlB0cjxDU1NWYWx1ZT4gcmVzdWx0WTsKIAogICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjZW50ZXIg
PSBudWxscHRyOwogICAgIGZvciAoaW50IGkgPSAwOyB2YWx1ZXNbaV07IGkrKykgewpAQCAtMjEy
Niw5ICsyMTE3LDkgQEAgc3RhdGljIE9wdGlvbmFsPFBvc2l0aW9uQ29vcmRpbmF0ZXM+IGJhY2tn
cm91bmRQb3NpdGlvbkZyb21UaHJlZVZhbHVlcyhjb25zdCBzdGQKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByZXN1
bHQ7CisgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gcmVzdWx0OwogICAgICAgICBpZiAodmFsdWVz
W2kgKyAxXSAmJiAhdmFsdWVzW2kgKyAxXS0+aXNWYWx1ZUlEKCkpCi0gICAgICAgICAgICByZXN1
bHQgPSBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnNJbnRlcm5hbDo6Y3JlYXRlUHJpbWl0aXZlVmFs
dWVQYWlyKGN1cnJlbnRWYWx1ZSwgdmFsdWVzWysraV0pOworICAgICAgICAgICAgcmVzdWx0ID0g
Q1NTVmFsdWVQYWlyOjpjcmVhdGUoY3VycmVudFZhbHVlLCB2YWx1ZXNbKytpXSk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIHJlc3VsdCA9IGN1cnJlbnRWYWx1ZTsKIApAQCAtMjE3MCw4ICsy
MTYxLDggQEAgc3RhdGljIE9wdGlvbmFsPFBvc2l0aW9uQ29vcmRpbmF0ZXM+IGJhY2tncm91bmRQ
b3NpdGlvbkZyb21UaHJlZVZhbHVlcyhjb25zdCBzdGQKIC8vCiBzdGF0aWMgT3B0aW9uYWw8UG9z
aXRpb25Db29yZGluYXRlcz4gcG9zaXRpb25Gcm9tRm91clZhbHVlcyhjb25zdCBzdGQ6OmFycmF5
PENTU1ByaW1pdGl2ZVZhbHVlKiwgNT4mIHZhbHVlcykKIHsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IHJlc3VsdFg7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByZXN1bHRZ
OworICAgIFJlZlB0cjxDU1NWYWx1ZT4gcmVzdWx0WDsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHJl
c3VsdFk7CiAKICAgICBmb3IgKGludCBpID0gMDsgdmFsdWVzW2ldOyBpKyspIHsKICAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIGN1cnJlbnRWYWx1ZSA9IHZhbHVlc1tpXTsKQEAgLTIxODIsOSAr
MjE3Myw5IEBAIHN0YXRpYyBPcHRpb25hbDxQb3NpdGlvbkNvb3JkaW5hdGVzPiBwb3NpdGlvbkZy
b21Gb3VyVmFsdWVzKGNvbnN0IHN0ZDo6YXJyYXk8Q1NTCiAgICAgICAgIGlmIChpZCA9PSBDU1NW
YWx1ZUNlbnRlcikKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICAgICAg
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByZXN1bHQ7CisgICAgICAgIFJlZlB0cjxDU1NWYWx1
ZT4gcmVzdWx0OwogICAgICAgICBpZiAodmFsdWVzW2kgKyAxXSAmJiAhdmFsdWVzW2kgKyAxXS0+
aXNWYWx1ZUlEKCkpCi0gICAgICAgICAgICByZXN1bHQgPSBDU1NQcm9wZXJ0eVBhcnNlckhlbHBl
cnNJbnRlcm5hbDo6Y3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKGN1cnJlbnRWYWx1ZSwgdmFsdWVz
WysraV0pOworICAgICAgICAgICAgcmVzdWx0ID0gQ1NTVmFsdWVQYWlyOjpjcmVhdGUoY3VycmVu
dFZhbHVlLCB2YWx1ZXNbKytpXSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlc3VsdCA9
IGN1cnJlbnRWYWx1ZTsKIApAQCAtMjIzOSwxMCArMjIzMCwxMCBAQCBPcHRpb25hbDxQb3NpdGlv
bkNvb3JkaW5hdGVzPiBjb25zdW1lUG9zaXRpb25Db29yZGluYXRlcyhDU1NQYXJzZXJUb2tlblJh
bmdlJiByYQogICAgIHJldHVybiBiYWNrZ3JvdW5kUG9zaXRpb25Gcm9tVGhyZWVWYWx1ZXModmFs
dWVzKTsKIH0KIAotUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lUG9zaXRpb24oQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVW5p
dGxlc3NRdWlyayB1bml0bGVzcywgUG9zaXRpb25TeW50YXggcG9zaXRpb25TeW50YXgpCitSZWZQ
dHI8Q1NTVmFsdWVQYWlyPiBjb25zdW1lUG9zaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcywg
UG9zaXRpb25TeW50YXggcG9zaXRpb25TeW50YXgpCiB7CiAgICAgaWYgKGF1dG8gY29vcmRpbmF0
ZXMgPSBjb25zdW1lUG9zaXRpb25Db29yZGluYXRlcyhyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdW5p
dGxlc3MsIHBvc2l0aW9uU3ludGF4KSkKLSAgICAgICAgcmV0dXJuIENTU1Byb3BlcnR5UGFyc2Vy
SGVscGVyc0ludGVybmFsOjpjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIoV1RGTW92ZShjb29yZGlu
YXRlcy0+eCksIFdURk1vdmUoY29vcmRpbmF0ZXMtPnkpKTsKKyAgICAgICAgcmV0dXJuIENTU1Zh
bHVlUGFpcjo6Y3JlYXRlKFdURk1vdmUoY29vcmRpbmF0ZXMtPngpLCBXVEZNb3ZlKGNvb3JkaW5h
dGVzLT55KSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTI1MTcsOCArMjUwOCw4IEBA
IHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVSYWRpYWxHcmFkaWVudChDU1NQYXJzZXJU
b2tlblJhbmdlJiBhcmdzLCBjb25zdCBDCiAgICAgICAgIHx8ICh2ZXJ0aWNhbFNpemUgJiYgdmVy
dGljYWxTaXplLT5pc0NhbGN1bGF0ZWRQZXJjZW50YWdlV2l0aExlbmd0aCgpKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNlbnRlclg7
Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjZW50ZXJZOworICAgIFJlZlB0cjxDU1NW
YWx1ZT4gY2VudGVyWDsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IGNlbnRlclk7CiAgICAgaWYgKGFy
Z3MucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVBdCkgewogICAgICAgICBhcmdzLmNvbnN1bWVJbmNs
dWRpbmdXaGl0ZXNwYWNlKCk7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmgKaW5kZXggOTEzYzEwOGYzYWM5NDNm
NGIwYTU0OTJiNGVjNWQxOWFlMGRhNjM0ZS4uZTdiMGFkYTk0Njk4NTIwYWZhZTg3MDM4Y2QwMDJm
NTU2OTBmYzc0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9w
ZXJ0eVBhcnNlckhlbHBlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1By
b3BlcnR5UGFyc2VySGVscGVycy5oCkBAIC0xMTEsMTEgKzExMSwxMSBAQCBlbnVtIGNsYXNzIFBv
c2l0aW9uU3ludGF4IHsKIH07CiAKIHN0cnVjdCBQb3NpdGlvbkNvb3JkaW5hdGVzIHsKLSAgICBS
ZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHg7Ci0gICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB5Owor
ICAgIFJlZjxDU1NWYWx1ZT4geDsKKyAgICBSZWY8Q1NTVmFsdWU+IHk7CiB9OwogCi1SZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVQb3NpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiwg
Q1NTUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyaywgUG9zaXRpb25TeW50YXgpOworUmVmUHRyPENT
U1ZhbHVlUGFpcj4gY29uc3VtZVBvc2l0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJz
ZXJNb2RlLCBVbml0bGVzc1F1aXJrLCBQb3NpdGlvblN5bnRheCk7CiBPcHRpb25hbDxQb3NpdGlv
bkNvb3JkaW5hdGVzPiBjb25zdW1lUG9zaXRpb25Db29yZGluYXRlcyhDU1NQYXJzZXJUb2tlblJh
bmdlJiwgQ1NTUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyaywgUG9zaXRpb25TeW50YXgpOwogT3B0
aW9uYWw8UG9zaXRpb25Db29yZGluYXRlcz4gY29uc3VtZU9uZU9yVHdvVmFsdWVkUG9zaXRpb25D
b29yZGluYXRlcyhDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVW5pdGxlc3NR
dWlyayk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckNv
bnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgK
aW5kZXggNmY3MTZhNzQ4N2QzMTQ2ZTkzODZiZTUxYzYwNWY4M2M2ZTFlNTI4My4uOGEyZWNlZmJh
YTYxOWNjMTBkMTYzY2MwNmI4YWIyYzJkNzVhMGYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKQEAgLTQyLDExICs0MiwxMSBAQAogI2luY2x1ZGUg
IkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5n
cy5oIgogI2luY2x1ZGUgIkNTU1JlZmxlY3RWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlUGFp
ci5oIgogI2luY2x1ZGUgIkZvbnRTZWxlY3Rpb25WYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkdyaWRQb3NpdGlvbnNSZXNvbHZlci5oIgogI2luY2x1ZGUgIkxl
bmd0aC5oIgotI2luY2x1ZGUgIlBhaXIuaCIKICNpbmNsdWRlICJRdW90ZXNEYXRhLmgiCiAjaW5j
bHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNWR1VSSVJlZmVyZW5j
ZS5oIgpAQCAtMTgzLDcgKzE4Myw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHN0YXRpYyBM
ZW5ndGggY29udmVydFRvMTAwUGVyY2VudE1pbnVzTGVuZ3RoKGNvbnN0IExlbmd0aCYpOwotICAg
IHRlbXBsYXRlPENTU1ZhbHVlSUQsIENTU1ZhbHVlSUQ+IHN0YXRpYyBMZW5ndGggY29udmVydFBv
c2l0aW9uQ29tcG9uZW50KEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJik7
CisgICAgdGVtcGxhdGU8Q1NTVmFsdWVJRCwgQ1NTVmFsdWVJRD4gc3RhdGljIExlbmd0aCBjb252
ZXJ0UG9zaXRpb25Db21wb25lbnQoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKIAog
ICAgIHN0YXRpYyBHcmlkTGVuZ3RoIGNyZWF0ZUdyaWRUcmFja0JyZWFkdGgoY29uc3QgQ1NTUHJp
bWl0aXZlVmFsdWUmLCBCdWlsZGVyU3RhdGUmKTsKICAgICBzdGF0aWMgR3JpZFRyYWNrU2l6ZSBj
cmVhdGVHcmlkVHJhY2tTaXplKGNvbnN0IENTU1ZhbHVlJiwgQnVpbGRlclN0YXRlJik7CkBAIC0z
MjgsMTcgKzMyOCwyMyBAQCBpbmxpbmUgTGVuZ3RoIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRU
b1JhZGl1c0xlbmd0aChDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJgogCiBpbmxpbmUgTGVuZ3Ro
U2l6ZSBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UmFkaXVzKEJ1aWxkZXJTdGF0ZSYgYnVpbGRl
clN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgYXV0byogcGFpciA9IGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkucGFpclZhbHVlKCk7Ci0gICAgaWYgKCFwYWly
IHx8ICFwYWlyLT5maXJzdCgpIHx8ICFwYWlyLT5zZWNvbmQoKSkKLSAgICAgICAgcmV0dXJuIHsg
eyAwLCBMZW5ndGhUeXBlOjpGaXhlZCB9LCB7IDAsIExlbmd0aFR5cGU6OkZpeGVkIH0gfTsKKyAg
ICBMZW5ndGhTaXplIGZhbGxiYWNrTGVuZ3RoU2l6ZSA9IHsgeyAwLCBMZW5ndGhUeXBlOjpGaXhl
ZCB9LCB7IDAsIExlbmd0aFR5cGU6OkZpeGVkIH0gfTsKKyAgICBpZiAoIXZhbHVlLmlzVmFsdWVQ
YWlyKCkpCisgICAgICAgIHJldHVybiBmYWxsYmFja0xlbmd0aFNpemU7CisgICAgCisgICAgYXV0
byYgcGFpciA9IGRvd25jYXN0PENTU1ZhbHVlUGFpcj4odmFsdWUpOworICAgIGF1dG8gZmlyc3Qg
PSBwYWlyLmZpcnN0QXNQcmltaXRpdmUoKTsKKyAgICBhdXRvIHNlY29uZCA9IHBhaXIuc2Vjb25k
QXNQcmltaXRpdmUoKTsKKyAgICBpZiAoIWZpcnN0IHx8ICFzZWNvbmQpCisgICAgICAgIHJldHVy
biBmYWxsYmFja0xlbmd0aFNpemU7CiAKICAgICBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIGNv
bnZlcnNpb25EYXRhID0gYnVpbGRlclN0YXRlLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKTsK
LSAgICBMZW5ndGhTaXplIHJhZGl1cyB7IGNvbnZlcnRUb1JhZGl1c0xlbmd0aChjb252ZXJzaW9u
RGF0YSwgKnBhaXItPmZpcnN0KCkpLCBjb252ZXJ0VG9SYWRpdXNMZW5ndGgoY29udmVyc2lvbkRh
dGEsICpwYWlyLT5zZWNvbmQoKSkgfTsKKyAgICBMZW5ndGhTaXplIHJhZGl1cyB7IGNvbnZlcnRU
b1JhZGl1c0xlbmd0aChjb252ZXJzaW9uRGF0YSwgKmZpcnN0KSwgY29udmVydFRvUmFkaXVzTGVu
Z3RoKGNvbnZlcnNpb25EYXRhLCAqc2Vjb25kKSB9OwogCiAgICAgQVNTRVJUKCFyYWRpdXMud2lk
dGguaXNOZWdhdGl2ZSgpKTsKICAgICBBU1NFUlQoIXJhZGl1cy5oZWlnaHQuaXNOZWdhdGl2ZSgp
KTsKICAgICBpZiAocmFkaXVzLndpZHRoLmlzWmVybygpIHx8IHJhZGl1cy5oZWlnaHQuaXNaZXJv
KCkpCi0gICAgICAgIHJldHVybiB7IHsgMCwgTGVuZ3RoVHlwZTo6Rml4ZWQgfSwgeyAwLCBMZW5n
dGhUeXBlOjpGaXhlZCB9IH07CisgICAgICAgIHJldHVybiBmYWxsYmFja0xlbmd0aFNpemU7CiAK
ICAgICByZXR1cm4gcmFkaXVzOwogfQpAQCAtMzU5LDM5ICszNjUsNDEgQEAgaW5saW5lIExlbmd0
aCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5ndGgoY29uc3Qg
TGVuZ3RoJiBsZW4KIAogaW5saW5lIExlbmd0aCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9z
aXRpb25Db21wb25lbnRYKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1
ZSYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudDxDU1NWYWx1
ZUxlZnQsIENTU1ZhbHVlUmlnaHQ+KGJ1aWxkZXJTdGF0ZSwgZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KHZhbHVlKSk7CisgICAgcmV0dXJuIGNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudDxDU1NW
YWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQ+KGJ1aWxkZXJTdGF0ZSwgdmFsdWUpOwogfQogCiBpbmxp
bmUgTGVuZ3RoIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudFkoQnVp
bGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBy
ZXR1cm4gY29udmVydFBvc2l0aW9uQ29tcG9uZW50PENTU1ZhbHVlVG9wLCBDU1NWYWx1ZUJvdHRv
bT4oYnVpbGRlclN0YXRlLCBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKTsKKyAg
ICByZXR1cm4gY29udmVydFBvc2l0aW9uQ29tcG9uZW50PENTU1ZhbHVlVG9wLCBDU1NWYWx1ZUJv
dHRvbT4oYnVpbGRlclN0YXRlLCB2YWx1ZSk7CiB9CiAKIHRlbXBsYXRlPENTU1ZhbHVlSUQgY3Nz
VmFsdWVGb3IwLCBDU1NWYWx1ZUlEIGNzc1ZhbHVlRm9yMTAwPgotaW5saW5lIExlbmd0aCBCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25Db21wb25lbnQoQnVpbGRlclN0YXRlJiBidWls
ZGVyU3RhdGUsIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSkKK2lubGluZSBMZW5ndGgg
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBvc2l0aW9uQ29tcG9uZW50KEJ1aWxkZXJTdGF0ZSYg
YnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgTGVuZ3RoIGxlbmd0
aDsKIAogICAgIGF1dG8qIGxlbmd0aFZhbHVlID0gJnZhbHVlOwogICAgIGJvb2wgcmVsYXRpdmVU
b1RyYWlsaW5nRWRnZSA9IGZhbHNlOwogICAgIAotICAgIGlmICh2YWx1ZS5pc1BhaXIoKSkgewot
ICAgICAgICBhdXRvJiBmaXJzdCA9ICp2YWx1ZS5wYWlyVmFsdWUoKS0+Zmlyc3QoKTsKLSAgICAg
ICAgaWYgKGZpcnN0LnZhbHVlSUQoKSA9PSBDU1NWYWx1ZVJpZ2h0IHx8IGZpcnN0LnZhbHVlSUQo
KSA9PSBDU1NWYWx1ZUJvdHRvbSkKKyAgICBpZiAodmFsdWUuaXNWYWx1ZVBhaXIoKSkgeworICAg
ICAgICBhdXRvJiBwYWlyID0gZG93bmNhc3Q8Q1NTVmFsdWVQYWlyPih2YWx1ZSk7CisgICAgICAg
IGF1dG8gZmlyc3QgPSBwYWlyLmZpcnN0QXNWYWx1ZUlEKCk7CisgICAgICAgIGlmIChmaXJzdCA9
PSBDU1NWYWx1ZVJpZ2h0IHx8IGZpcnN0ID09IENTU1ZhbHVlQm90dG9tKQogICAgICAgICAgICAg
cmVsYXRpdmVUb1RyYWlsaW5nRWRnZSA9IHRydWU7Ci0gICAgICAgIGxlbmd0aFZhbHVlID0gdmFs
dWUucGFpclZhbHVlKCktPnNlY29uZCgpOwotICAgIH0KLSAgICAKLSAgICBpZiAodmFsdWUuaXNW
YWx1ZUlEKCkpIHsKLSAgICAgICAgc3dpdGNoICh2YWx1ZS52YWx1ZUlEKCkpIHsKLSAgICAgICAg
Y2FzZSBjc3NWYWx1ZUZvcjA6Ci0gICAgICAgICAgICByZXR1cm4gTGVuZ3RoKDAsIExlbmd0aFR5
cGU6OlBlcmNlbnQpOwotICAgICAgICBjYXNlIGNzc1ZhbHVlRm9yMTAwOgotICAgICAgICAgICAg
cmV0dXJuIExlbmd0aCgxMDAsIExlbmd0aFR5cGU6OlBlcmNlbnQpOwotICAgICAgICBjYXNlIENT
U1ZhbHVlQ2VudGVyOgotICAgICAgICAgICAgcmV0dXJuIExlbmd0aCg1MCwgTGVuZ3RoVHlwZTo6
UGVyY2VudCk7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgbGVuZ3RoVmFsdWUgPSBwYWlyLnNlY29uZEFzUHJpbWl0aXZlKCkuZ2V0
KCk7CisgICAgfSBlbHNlIGlmICh2YWx1ZS5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAg
YXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUp
OworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNWYWx1ZUlEKCkpIHsKKyAgICAgICAgICAg
IHN3aXRjaCAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpKSB7CisgICAgICAgICAgICBjYXNlIGNz
c1ZhbHVlRm9yMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gTGVuZ3RoKDAsIExlbmd0aFR5cGU6
OlBlcmNlbnQpOworICAgICAgICAgICAgY2FzZSBjc3NWYWx1ZUZvcjEwMDoKKyAgICAgICAgICAg
ICAgICByZXR1cm4gTGVuZ3RoKDEwMCwgTGVuZ3RoVHlwZTo6UGVyY2VudCk7CisgICAgICAgICAg
ICBjYXNlIENTU1ZhbHVlQ2VudGVyOgorICAgICAgICAgICAgICAgIHJldHVybiBMZW5ndGgoNTAs
IExlbmd0aFR5cGU6OlBlcmNlbnQpOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
IH0KICAgICAgICAgCkBAIC00MDUsMTMgKzQxMywxNyBAQCBpbmxpbmUgTGVuZ3RoIEJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudChCdWlsZGVyU3RhdGUmIGJ1aWxkZXJT
dAogCiBpbmxpbmUgTGVuZ3RoUG9pbnQgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE9iamVjdFBv
c2l0aW9uKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUp
CiB7Ci0gICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpOwotICAgIFBhaXIqIHBhaXIgPSBwcmltaXRpdmVWYWx1ZS5wYWlyVmFsdWUoKTsK
LSAgICBpZiAoIXBhaXIgfHwgIXBhaXItPmZpcnN0KCkgfHwgIXBhaXItPnNlY29uZCgpKQorICAg
IGlmICghdmFsdWUuaXNWYWx1ZVBhaXIoKSkKKyAgICAgICAgcmV0dXJuIFJlbmRlclN0eWxlOjpp
bml0aWFsT2JqZWN0UG9zaXRpb24oKTsKKyAgICAKKyAgICBhdXRvJiBwYWlyID0gZG93bmNhc3Q8
Q1NTVmFsdWVQYWlyPih2YWx1ZSk7CisgICAgYXV0byBmaXJzdCA9IHBhaXIuZmlyc3QoKTsKKyAg
ICBhdXRvIHNlY29uZCA9IHBhaXIuc2Vjb25kKCk7CisgICAgaWYgKCFmaXJzdCB8fCAhc2Vjb25k
KQogICAgICAgICByZXR1cm4gUmVuZGVyU3R5bGU6OmluaXRpYWxPYmplY3RQb3NpdGlvbigpOwog
Ci0gICAgTGVuZ3RoIGxlbmd0aFggPSBjb252ZXJ0UG9zaXRpb25Db21wb25lbnQ8Q1NTVmFsdWVM
ZWZ0LCBDU1NWYWx1ZVJpZ2h0PihidWlsZGVyU3RhdGUsICpwYWlyLT5maXJzdCgpKTsKLSAgICBM
ZW5ndGggbGVuZ3RoWSA9IGNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudDxDU1NWYWx1ZVRvcCwgQ1NT
VmFsdWVCb3R0b20+KGJ1aWxkZXJTdGF0ZSwgKnBhaXItPnNlY29uZCgpKTsKKyAgICBMZW5ndGgg
bGVuZ3RoWCA9IGNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudDxDU1NWYWx1ZUxlZnQsIENTU1ZhbHVl
UmlnaHQ+KGJ1aWxkZXJTdGF0ZSwgKmZpcnN0KTsKKyAgICBMZW5ndGggbGVuZ3RoWSA9IGNvbnZl
cnRQb3NpdGlvbkNvbXBvbmVudDxDU1NWYWx1ZVRvcCwgQ1NTVmFsdWVCb3R0b20+KGJ1aWxkZXJT
dGF0ZSwgKnNlY29uZCk7CiAKICAgICByZXR1cm4gTGVuZ3RoUG9pbnQobGVuZ3RoWCwgbGVuZ3Ro
WSk7CiB9CkBAIC03NzMsMTcgKzc4NSwxNiBAQCBpbmxpbmUgUmVmUHRyPFN0eWxlUmVmbGVjdGlv
bj4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFJlZmxlY3Rpb24oQnVpbGRlclN0YXRlJgogCiBp
bmxpbmUgSW50U2l6ZSBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0SW5pdGlhbExldHRlcihCdWls
ZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgYXV0byYgcHJpbWl0aXZl
VmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwotCi0gICAgaWYgKHBy
aW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkKKyAgICBpZiAodmFsdWUu
aXNQcmltaXRpdmVWYWx1ZSgpICYmIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSku
dmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKQogICAgICAgICByZXR1cm4gSW50U2l6ZSgpOwog
Ci0gICAgUGFpciogcGFpciA9IHByaW1pdGl2ZVZhbHVlLnBhaXJWYWx1ZSgpOwotICAgIEFTU0VS
VChwYWlyKTsKLSAgICBBU1NFUlQocGFpci0+Zmlyc3QoKSk7Ci0gICAgQVNTRVJUKHBhaXItPnNl
Y29uZCgpKTsKKyAgICBhdXRvJiBwYWlyID0gZG93bmNhc3Q8Q1NTVmFsdWVQYWlyPih2YWx1ZSk7
CisgICAgYXV0byBmaXJzdCA9IHBhaXIuZmlyc3RBc1ByaW1pdGl2ZSgpOworICAgIGF1dG8gc2Vj
b25kID0gcGFpci5zZWNvbmRBc1ByaW1pdGl2ZSgpOworICAgIEFTU0VSVChmaXJzdCk7CisgICAg
QVNTRVJUKHNlY29uZCk7CiAKLSAgICByZXR1cm4gSW50U2l6ZShwYWlyLT5maXJzdCgpLT5pbnRW
YWx1ZSgpLCBwYWlyLT5zZWNvbmQoKS0+aW50VmFsdWUoKSk7CisgICAgcmV0dXJuIEludFNpemUo
Zmlyc3QtPmludFZhbHVlKCksIHNlY29uZC0+aW50VmFsdWUoKSk7CiB9CiAKIGlubGluZSBmbG9h
dCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dFN0cm9rZVdpZHRoKEJ1aWxkZXJTdGF0ZSYg
YnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCkBAIC0xNDgwLDIxICsxNDkxLDI0
IEBAIGlubGluZSBDb2xvciBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U1ZHQ29sb3IoQnVpbGRl
clN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0CiBpbmxpbmUgU3R5bGVTZWxmQWxpZ25tZW50RGF0
YSBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U2VsZk9yRGVmYXVsdEFsaWdubWVudERhdGEoQnVp
bGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIFN0eWxlU2VsZkFsaWdu
bWVudERhdGEgYWxpZ25tZW50RGF0YSA9IFJlbmRlclN0eWxlOjppbml0aWFsU2VsZkFsaWdubWVu
dCgpOwotICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KHZhbHVlKTsKLSAgICBpZiAoUGFpciogcGFpclZhbHVlID0gcHJpbWl0aXZlVmFsdWUucGFp
clZhbHVlKCkpIHsKLSAgICAgICAgaWYgKHBhaXJWYWx1ZS0+Zmlyc3QoKS0+dmFsdWVJRCgpID09
IENTU1ZhbHVlTGVnYWN5KSB7CisgICAgaWYgKHZhbHVlLmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAg
ICAgICAgYWxpZ25tZW50RGF0YS5zZXRQb3NpdGlvbihkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpKTsKKyAgICBlbHNlIGlmICh2YWx1ZS5pc1ZhbHVlUGFpcigpKSB7CisgICAgICAg
IGF1dG8mIHBhaXIgPSBkb3duY2FzdDxDU1NWYWx1ZVBhaXI+KHZhbHVlKTsKKyAgICAgICAgYXV0
byBmaXJzdEFzVmFsdWVJRCA9IHBhaXIuZmlyc3RBc1ZhbHVlSUQoKTsKKyAgICAgICAgaWYgKGZp
cnN0QXNWYWx1ZUlEID09IENTU1ZhbHVlTGVnYWN5KSB7CiAgICAgICAgICAgICBhbGlnbm1lbnRE
YXRhLnNldFBvc2l0aW9uVHlwZShJdGVtUG9zaXRpb25UeXBlOjpMZWdhY3kpOwotICAgICAgICAg
ICAgYWxpZ25tZW50RGF0YS5zZXRQb3NpdGlvbigqcGFpclZhbHVlLT5zZWNvbmQoKSk7Ci0gICAg
ICAgIH0gZWxzZSBpZiAocGFpclZhbHVlLT5maXJzdCgpLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVG
aXJzdCkKKyAgICAgICAgICAgIGFsaWdubWVudERhdGEuc2V0UG9zaXRpb24oKnBhaXIuc2Vjb25k
QXNQcmltaXRpdmUoKSk7CisgICAgICAgIH0gZWxzZSBpZiAoZmlyc3RBc1ZhbHVlSUQgPT0gQ1NT
VmFsdWVGaXJzdCkKICAgICAgICAgICAgIGFsaWdubWVudERhdGEuc2V0UG9zaXRpb24oSXRlbVBv
c2l0aW9uOjpCYXNlbGluZSk7Ci0gICAgICAgIGVsc2UgaWYgKHBhaXJWYWx1ZS0+Zmlyc3QoKS0+
dmFsdWVJRCgpID09IENTU1ZhbHVlTGFzdCkKKyAgICAgICAgZWxzZSBpZiAoZmlyc3RBc1ZhbHVl
SUQgPT0gQ1NTVmFsdWVMYXN0KQogICAgICAgICAgICAgYWxpZ25tZW50RGF0YS5zZXRQb3NpdGlv
bihJdGVtUG9zaXRpb246Okxhc3RCYXNlbGluZSk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgYWxpZ25tZW50RGF0YS5zZXRPdmVyZmxvdygqcGFpclZhbHVlLT5maXJzdCgpKTsKLSAgICAg
ICAgICAgIGFsaWdubWVudERhdGEuc2V0UG9zaXRpb24oKnBhaXJWYWx1ZS0+c2Vjb25kKCkpOwor
ICAgICAgICAgICAgYWxpZ25tZW50RGF0YS5zZXRPdmVyZmxvdygqcGFpci5maXJzdEFzUHJpbWl0
aXZlKCkpOworICAgICAgICAgICAgYWxpZ25tZW50RGF0YS5zZXRQb3NpdGlvbigqcGFpci5zZWNv
bmRBc1ByaW1pdGl2ZSgpKTsKICAgICAgICAgfQotICAgIH0gZWxzZQotICAgICAgICBhbGlnbm1l
bnREYXRhLnNldFBvc2l0aW9uKHByaW1pdGl2ZVZhbHVlKTsKKyAgICB9CisgICAgCiAgICAgcmV0
dXJuIGFsaWdubWVudERhdGE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlQnVpbGRlckN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVy
Q3VzdG9tLmgKaW5kZXggNWZmY2U1ZmIwYjVkYzAyZWUxY2JjMTk1MzY3Nzk2ODNlMDUyYWJkNi4u
ZDk4ODk5MjQyMzBkZjU5YzUyZDA3MTYxNzE4YWJjY2QxMTMxNWFjMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKQEAgLTEzMTYsOSArMTMxNiw5IEBAIGlubGlu
ZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDb3VudGVyKEJ1aWxkZXJTdGF0ZSYgYnVp
bGRlclN0YXRlLCBDU1NWYWx1CiAgICAgICAgIHJldHVybjsKIAogICAgIGZvciAoYXV0byYgaXRl
bSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7Ci0gICAgICAgIFBhaXIqIHBhaXIg
PSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oaXRlbS5nZXQoKSkucGFpclZhbHVlKCk7Ci0g
ICAgICAgIEF0b21TdHJpbmcgaWRlbnRpZmllciA9IHBhaXItPmZpcnN0KCktPnN0cmluZ1ZhbHVl
KCk7Ci0gICAgICAgIGludCB2YWx1ZSA9IHBhaXItPnNlY29uZCgpLT5pbnRWYWx1ZSgpOworICAg
ICAgICBhdXRvJiBwYWlyID0gZG93bmNhc3Q8Q1NTVmFsdWVQYWlyPihpdGVtLmdldCgpKTsKKyAg
ICAgICAgQXRvbVN0cmluZyBpZGVudGlmaWVyID0gcGFpci5maXJzdEFzUHJpbWl0aXZlKCktPnN0
cmluZ1ZhbHVlKCk7CisgICAgICAgIGludCB2YWx1ZSA9IHBhaXIuc2Vjb25kQXNQcmltaXRpdmUo
KS0+aW50VmFsdWUoKTsKICAgICAgICAgYXV0byYgZGlyZWN0aXZlcyA9IG1hcC5hZGQoaWRlbnRp
ZmllciwgQ291bnRlckRpcmVjdGl2ZXMgeyB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgICAgIGlm
IChjb3VudGVyQmVoYXZpb3IgPT0gUmVzZXQpCiAgICAgICAgICAgICBkaXJlY3RpdmVzLnJlc2V0
VmFsdWUgPSB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVz
b2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXgg
MzRlODAyZmFmYzE3YTc1N2YyMjc2MTJjMzBmMmM4YzIwZTlhOTg3NS4uYzY2YWE2MGEyNzVkOGEy
NjdkY2NhZGE5MTYxYmU1MTBkMGU2ZWNlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNv
bHZlci5jcHAKQEAgLTUxLDcgKzUxLDYgQEAKICNpbmNsdWRlICJNZWRpYVF1ZXJ5RXZhbHVhdG9y
LmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUGFnZVJ1bGVDb2xs
ZWN0b3IuaCIKLSNpbmNsdWRlICJQYWlyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU2Nyb2xsYmFyLmgi
CiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3
LmgiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggOTBmY2NhNWIzY2NmYjI4NWVhNTgwOTI3ZGQ1NDE0MDAzNTM0MTk0Yy4uZTRl
ZDNhYjc5ODY0NDJlZTdlMTdhNDViNDAzNTEyOTVkOTE5MTU2YyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIx
IEBACisyMDIxLTAzLTI0ICBUeWxlciBXaWxjb2NrICA8dHdpbGNvLm9AcHJvdG9ubWFpbC5jb20+
CisKKyAgICAgICAgUmVmYWN0b3IgUGFpci5oIHRvIENTU1ZhbHVlUGFpci5oCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMyMDQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYWlyIHZhbHVlcyB1c2VkIHRv
IGJlIHJlcHJlc2VudGVkIGJ5IENTU1ByaW1pdGl2ZVZhbHVlcywgYnV0IG5vdworICAgICAgICBh
cmUgcmVwcmVzZW50ZWQgYnkgQ1NTVmFsdWVQYWlyLiAgQ2hhbmdlIHRlc3QgZXhwZWN0YXRpb25z
IHRvIGV4cGVjdAorICAgICAgICBDU1NWYWx1ZVBhaXIncyBwYXJlbnQgY2xhc3MsIENTU1ZhbHVl
LgorCisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9zdmcvY3NzL2dldENvbXB1dGVkU3R5bGUtYmFz
aWMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9zdmcvY3NzL2dldENvbXB1
dGVkU3R5bGUtYmFzaWMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9zdmcv
Y3NzL2dldENvbXB1dGVkU3R5bGUtYmFzaWMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN2Zy9j
c3MvZ2V0Q29tcHV0ZWRTdHlsZS1iYXNpYy1leHBlY3RlZC50eHQ6CisgICAgICAgIEV4cGVjdCBD
U1NWYWx1ZSBpbnN0ZWFkIG9mIENTU1ZhbHVlUGFpciBmb3IgcHJvcGVydGllcyB3aG9zZQorICAg
ICAgICB2YWx1ZXMgYXJlIHBhaXJzLgorCiAyMDIxLTAzLTI0ICBDaHJpcyBMb3JkICA8Y2xvcmRA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbR0xJQl0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2NhbnZhcy9vZmZzY3JlZW4vbWFudWFsL2RyYXctZ2VuZXJpYy1mYW1pbHkvMmQu
dGV4dC5kcmF3LmdlbmVyaWMuZmFtaWx5LncuaHRtbCBpcyBmbGFreSBmYWlsaW5nCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL3N2Zy9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS1i
YXNpYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL3N2Zy9jc3MvZ2V0
Q29tcHV0ZWRTdHlsZS1iYXNpYy1leHBlY3RlZC50eHQKaW5kZXggNGVmOTkxNzIyNDIwNTE5NjY5
N2ZlODJmN2Y2YjU4NjYwZTBmYWRiZS4uYmQyNjhhNDYzNzU2NWQyM2I4ZDA1M2Y4MWUxMzQxN2I3
ZjUxYTE1MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9zdmcvY3NzL2dl
dENvbXB1dGVkU3R5bGUtYmFzaWMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2dsaWIvc3ZnL2Nzcy9nZXRDb21wdXRlZFN0eWxlLWJhc2ljLWV4cGVjdGVkLnR4dApAQCAt
MzcsNyArMzcsNyBAQCByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKGJvcmRlci1jb2xs
YXBzZSkgOiBbb2JqZWN0IENTU1ByaW1pdGl2ZVZhbHVlXQogcmVjdDogc3R5bGUuZ2V0UHJvcGVy
dHlWYWx1ZShib3JkZXItaW1hZ2Utb3V0c2V0KSA6IDAKIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5
Q1NTVmFsdWUoYm9yZGVyLWltYWdlLW91dHNldCkgOiBbb2JqZWN0IENTU1ByaW1pdGl2ZVZhbHVl
XQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShib3JkZXItaW1hZ2UtcmVwZWF0KSA6IHN0
cmV0Y2gKLXJlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoYm9yZGVyLWltYWdlLXJlcGVh
dCkgOiBbb2JqZWN0IENTU1ByaW1pdGl2ZVZhbHVlXQorcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlD
U1NWYWx1ZShib3JkZXItaW1hZ2UtcmVwZWF0KSA6IFtvYmplY3QgQ1NTVmFsdWVdCiByZWN0OiBz
dHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGJvcmRlci1pbWFnZS1zbGljZSkgOiAxMDAlCiByZWN0OiBz
dHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKGJvcmRlci1pbWFnZS1zbGljZSkgOiBbb2JqZWN0IENT
U1ZhbHVlXQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShib3JkZXItaW1hZ2Utc291cmNl
KSA6IG5vbmUKQEAgLTQ3MSw3ICs0NzEsNyBAQCByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1Zh
bHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2UpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYQogcmVj
dDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdlLW91dHNldCkg
OiAwCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1h
Z2Utb3V0c2V0KSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVdCiByZWN0OiBzdHlsZS5nZXRQ
cm9wZXJ0eVZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2UtcmVwZWF0KSA6IHN0cmV0Y2gKLXJl
Y3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1yZXBl
YXQpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KK3JlY3Q6IHN0eWxlLmdldFByb3BlcnR5
Q1NTVmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1yZXBlYXQpIDogW29iamVjdCBDU1NWYWx1
ZV0KIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1z
bGljZSkgOiAwIGZpbGwKIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoLXdlYmtpdC1t
YXNrLWJveC1pbWFnZS1zbGljZSkgOiBbb2JqZWN0IENTU1ZhbHVlXQogcmVjdDogc3R5bGUuZ2V0
UHJvcGVydHlWYWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdlLXNvdXJjZSkgOiBub25lCkBAIC01
NjEsNyArNTYxLDcgQEAgZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShib3JkZXItY29sbGFw
c2UpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KIGc6IHN0eWxlLmdldFByb3BlcnR5VmFs
dWUoYm9yZGVyLWltYWdlLW91dHNldCkgOiAwCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVl
KGJvcmRlci1pbWFnZS1vdXRzZXQpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KIGc6IHN0
eWxlLmdldFByb3BlcnR5VmFsdWUoYm9yZGVyLWltYWdlLXJlcGVhdCkgOiBzdHJldGNoCi1nOiBz
dHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKGJvcmRlci1pbWFnZS1yZXBlYXQpIDogW29iamVjdCBD
U1NQcmltaXRpdmVWYWx1ZV0KK2c6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoYm9yZGVyLWlt
YWdlLXJlcGVhdCkgOiBbb2JqZWN0IENTU1ZhbHVlXQogZzogc3R5bGUuZ2V0UHJvcGVydHlWYWx1
ZShib3JkZXItaW1hZ2Utc2xpY2UpIDogMTAwJQogZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1
ZShib3JkZXItaW1hZ2Utc2xpY2UpIDogW29iamVjdCBDU1NWYWx1ZV0KIGc6IHN0eWxlLmdldFBy
b3BlcnR5VmFsdWUoYm9yZGVyLWltYWdlLXNvdXJjZSkgOiBub25lCkBAIC05OTUsNyArOTk1LDcg
QEAgZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdlKSA6
IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmFsdWUKIGc6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoLXdl
YmtpdC1tYXNrLWJveC1pbWFnZS1vdXRzZXQpIDogMAogZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NW
YWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdlLW91dHNldCkgOiBbb2JqZWN0IENTU1ByaW1pdGl2
ZVZhbHVlXQogZzogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdl
LXJlcGVhdCkgOiBzdHJldGNoCi1nOiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQt
bWFzay1ib3gtaW1hZ2UtcmVwZWF0KSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVdCitnOiBz
dHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2UtcmVwZWF0KSA6
IFtvYmplY3QgQ1NTVmFsdWVdCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtbWFz
ay1ib3gtaW1hZ2Utc2xpY2UpIDogMCBmaWxsCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVl
KC13ZWJraXQtbWFzay1ib3gtaW1hZ2Utc2xpY2UpIDogW29iamVjdCBDU1NWYWx1ZV0KIGc6IHN0
eWxlLmdldFByb3BlcnR5VmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1zb3VyY2UpIDogbm9u
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL3N2Zy9jc3MvZ2V0Q29tcHV0
ZWRTdHlsZS1iYXNpYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mvc3Zn
L2Nzcy9nZXRDb21wdXRlZFN0eWxlLWJhc2ljLWV4cGVjdGVkLnR4dAppbmRleCA0ZWY5OTE3MjI0
MjA1MTk2Njk3ZmU4MmY3ZjZiNTg2NjBlMGZhZGJlLi5iZDI2OGE0NjM3NTY1ZDIzYjhkMDUzZjgx
ZTEzNDE3YjdmNTFhMTUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mvc3Zn
L2Nzcy9nZXRDb21wdXRlZFN0eWxlLWJhc2ljLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9pb3Mvc3ZnL2Nzcy9nZXRDb21wdXRlZFN0eWxlLWJhc2ljLWV4cGVjdGVkLnR4
dApAQCAtMzcsNyArMzcsNyBAQCByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKGJvcmRl
ci1jb2xsYXBzZSkgOiBbb2JqZWN0IENTU1ByaW1pdGl2ZVZhbHVlXQogcmVjdDogc3R5bGUuZ2V0
UHJvcGVydHlWYWx1ZShib3JkZXItaW1hZ2Utb3V0c2V0KSA6IDAKIHJlY3Q6IHN0eWxlLmdldFBy
b3BlcnR5Q1NTVmFsdWUoYm9yZGVyLWltYWdlLW91dHNldCkgOiBbb2JqZWN0IENTU1ByaW1pdGl2
ZVZhbHVlXQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShib3JkZXItaW1hZ2UtcmVwZWF0
KSA6IHN0cmV0Y2gKLXJlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoYm9yZGVyLWltYWdl
LXJlcGVhdCkgOiBbb2JqZWN0IENTU1ByaW1pdGl2ZVZhbHVlXQorcmVjdDogc3R5bGUuZ2V0UHJv
cGVydHlDU1NWYWx1ZShib3JkZXItaW1hZ2UtcmVwZWF0KSA6IFtvYmplY3QgQ1NTVmFsdWVdCiBy
ZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGJvcmRlci1pbWFnZS1zbGljZSkgOiAxMDAlCiBy
ZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKGJvcmRlci1pbWFnZS1zbGljZSkgOiBbb2Jq
ZWN0IENTU1ZhbHVlXQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShib3JkZXItaW1hZ2Ut
c291cmNlKSA6IG5vbmUKQEAgLTQ3MSw3ICs0NzEsNyBAQCByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0
eUNTU1ZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2UpIDogW29iamVjdCBDU1NQcmltaXRpdmVW
YQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdlLW91
dHNldCkgOiAwCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtbWFzay1i
b3gtaW1hZ2Utb3V0c2V0KSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVdCiByZWN0OiBzdHls
ZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2UtcmVwZWF0KSA6IHN0cmV0
Y2gKLXJlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFn
ZS1yZXBlYXQpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KK3JlY3Q6IHN0eWxlLmdldFBy
b3BlcnR5Q1NTVmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1yZXBlYXQpIDogW29iamVjdCBD
U1NWYWx1ZV0KIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoLXdlYmtpdC1tYXNrLWJveC1p
bWFnZS1zbGljZSkgOiAwIGZpbGwKIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoLXdl
YmtpdC1tYXNrLWJveC1pbWFnZS1zbGljZSkgOiBbb2JqZWN0IENTU1ZhbHVlXQogcmVjdDogc3R5
bGUuZ2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdlLXNvdXJjZSkgOiBub25l
CkBAIC01NjEsNyArNTYxLDcgQEAgZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShib3JkZXIt
Y29sbGFwc2UpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KIGc6IHN0eWxlLmdldFByb3Bl
cnR5VmFsdWUoYm9yZGVyLWltYWdlLW91dHNldCkgOiAwCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eUNT
U1ZhbHVlKGJvcmRlci1pbWFnZS1vdXRzZXQpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0K
IGc6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoYm9yZGVyLWltYWdlLXJlcGVhdCkgOiBzdHJldGNo
Ci1nOiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKGJvcmRlci1pbWFnZS1yZXBlYXQpIDogW29i
amVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KK2c6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoYm9y
ZGVyLWltYWdlLXJlcGVhdCkgOiBbb2JqZWN0IENTU1ZhbHVlXQogZzogc3R5bGUuZ2V0UHJvcGVy
dHlWYWx1ZShib3JkZXItaW1hZ2Utc2xpY2UpIDogMTAwJQogZzogc3R5bGUuZ2V0UHJvcGVydHlD
U1NWYWx1ZShib3JkZXItaW1hZ2Utc2xpY2UpIDogW29iamVjdCBDU1NWYWx1ZV0KIGc6IHN0eWxl
LmdldFByb3BlcnR5VmFsdWUoYm9yZGVyLWltYWdlLXNvdXJjZSkgOiBub25lCkBAIC05OTUsNyAr
OTk1LDcgQEAgZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0LW1hc2stYm94LWlt
YWdlKSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmFsdWUKIGc6IHN0eWxlLmdldFByb3BlcnR5VmFs
dWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1vdXRzZXQpIDogMAogZzogc3R5bGUuZ2V0UHJvcGVy
dHlDU1NWYWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdlLW91dHNldCkgOiBbb2JqZWN0IENTU1By
aW1pdGl2ZVZhbHVlXQogZzogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0LW1hc2stYm94
LWltYWdlLXJlcGVhdCkgOiBzdHJldGNoCi1nOiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13
ZWJraXQtbWFzay1ib3gtaW1hZ2UtcmVwZWF0KSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVd
CitnOiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2UtcmVw
ZWF0KSA6IFtvYmplY3QgQ1NTVmFsdWVdCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJr
aXQtbWFzay1ib3gtaW1hZ2Utc2xpY2UpIDogMCBmaWxsCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eUNT
U1ZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2Utc2xpY2UpIDogW29iamVjdCBDU1NWYWx1ZV0K
IGc6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1zb3VyY2Up
IDogbm9uZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9jc3MvZ2V0
Q29tcHV0ZWRTdHlsZS1iYXNpYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvc3ZnL2Nzcy9nZXRDb21wdXRlZFN0eWxlLWJhc2ljLWV4cGVjdGVkLnR4dAppbmRleCA0ZWY5
OTE3MjI0MjA1MTk2Njk3ZmU4MmY3ZjZiNTg2NjBlMGZhZGJlLi5iZDI2OGE0NjM3NTY1ZDIzYjhk
MDUzZjgxZTEzNDE3YjdmNTFhMTUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvc3ZnL2Nzcy9nZXRDb21wdXRlZFN0eWxlLWJhc2ljLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2Nzcy9nZXRDb21wdXRlZFN0eWxlLWJhc2ljLWV4cGVj
dGVkLnR4dApAQCAtMzcsNyArMzcsNyBAQCByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVl
KGJvcmRlci1jb2xsYXBzZSkgOiBbb2JqZWN0IENTU1ByaW1pdGl2ZVZhbHVlXQogcmVjdDogc3R5
bGUuZ2V0UHJvcGVydHlWYWx1ZShib3JkZXItaW1hZ2Utb3V0c2V0KSA6IDAKIHJlY3Q6IHN0eWxl
LmdldFByb3BlcnR5Q1NTVmFsdWUoYm9yZGVyLWltYWdlLW91dHNldCkgOiBbb2JqZWN0IENTU1By
aW1pdGl2ZVZhbHVlXQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShib3JkZXItaW1hZ2Ut
cmVwZWF0KSA6IHN0cmV0Y2gKLXJlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoYm9yZGVy
LWltYWdlLXJlcGVhdCkgOiBbb2JqZWN0IENTU1ByaW1pdGl2ZVZhbHVlXQorcmVjdDogc3R5bGUu
Z2V0UHJvcGVydHlDU1NWYWx1ZShib3JkZXItaW1hZ2UtcmVwZWF0KSA6IFtvYmplY3QgQ1NTVmFs
dWVdCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGJvcmRlci1pbWFnZS1zbGljZSkgOiAx
MDAlCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKGJvcmRlci1pbWFnZS1zbGljZSkg
OiBbb2JqZWN0IENTU1ZhbHVlXQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShib3JkZXIt
aW1hZ2Utc291cmNlKSA6IG5vbmUKQEAgLTQ3MSw3ICs0NzEsNyBAQCByZWN0OiBzdHlsZS5nZXRQ
cm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2UpIDogW29iamVjdCBDU1NQcmlt
aXRpdmVWYQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0LW1hc2stYm94LWlt
YWdlLW91dHNldCkgOiAwCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQt
bWFzay1ib3gtaW1hZ2Utb3V0c2V0KSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVdCiByZWN0
OiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2UtcmVwZWF0KSA6
IHN0cmV0Y2gKLXJlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoLXdlYmtpdC1tYXNrLWJv
eC1pbWFnZS1yZXBlYXQpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KK3JlY3Q6IHN0eWxl
LmdldFByb3BlcnR5Q1NTVmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1yZXBlYXQpIDogW29i
amVjdCBDU1NWYWx1ZV0KIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoLXdlYmtpdC1tYXNr
LWJveC1pbWFnZS1zbGljZSkgOiAwIGZpbGwKIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFs
dWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1zbGljZSkgOiBbb2JqZWN0IENTU1ZhbHVlXQogcmVj
dDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdlLXNvdXJjZSkg
OiBub25lCkBAIC01NjEsNyArNTYxLDcgQEAgZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShi
b3JkZXItY29sbGFwc2UpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KIGc6IHN0eWxlLmdl
dFByb3BlcnR5VmFsdWUoYm9yZGVyLWltYWdlLW91dHNldCkgOiAwCiBnOiBzdHlsZS5nZXRQcm9w
ZXJ0eUNTU1ZhbHVlKGJvcmRlci1pbWFnZS1vdXRzZXQpIDogW29iamVjdCBDU1NQcmltaXRpdmVW
YWx1ZV0KIGc6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoYm9yZGVyLWltYWdlLXJlcGVhdCkgOiBz
dHJldGNoCi1nOiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKGJvcmRlci1pbWFnZS1yZXBlYXQp
IDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KK2c6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFs
dWUoYm9yZGVyLWltYWdlLXJlcGVhdCkgOiBbb2JqZWN0IENTU1ZhbHVlXQogZzogc3R5bGUuZ2V0
UHJvcGVydHlWYWx1ZShib3JkZXItaW1hZ2Utc2xpY2UpIDogMTAwJQogZzogc3R5bGUuZ2V0UHJv
cGVydHlDU1NWYWx1ZShib3JkZXItaW1hZ2Utc2xpY2UpIDogW29iamVjdCBDU1NWYWx1ZV0KIGc6
IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoYm9yZGVyLWltYWdlLXNvdXJjZSkgOiBub25lCkBAIC05
OTUsNyArOTk1LDcgQEAgZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0LW1hc2st
Ym94LWltYWdlKSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmFsdWUKIGc6IHN0eWxlLmdldFByb3Bl
cnR5VmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1vdXRzZXQpIDogMAogZzogc3R5bGUuZ2V0
UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdlLW91dHNldCkgOiBbb2JqZWN0
IENTU1ByaW1pdGl2ZVZhbHVlXQogZzogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0LW1h
c2stYm94LWltYWdlLXJlcGVhdCkgOiBzdHJldGNoCi1nOiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1Zh
bHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2UtcmVwZWF0KSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZl
VmFsdWVdCitnOiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1h
Z2UtcmVwZWF0KSA6IFtvYmplY3QgQ1NTVmFsdWVdCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVl
KC13ZWJraXQtbWFzay1ib3gtaW1hZ2Utc2xpY2UpIDogMCBmaWxsCiBnOiBzdHlsZS5nZXRQcm9w
ZXJ0eUNTU1ZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2Utc2xpY2UpIDogW29iamVjdCBDU1NW
YWx1ZV0KIGc6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1z
b3VyY2UpIDogbm9uZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2Nzcy9nZXRDb21wdXRl
ZFN0eWxlLWJhc2ljLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N2Zy9jc3MvZ2V0Q29tcHV0
ZWRTdHlsZS1iYXNpYy1leHBlY3RlZC50eHQKaW5kZXggNDAwNjdjMzA5NDE1ZjIyMjBhYTYzODk3
YThmMGE2Mzc4NzRhZWUyNi4uODhlNDUwMmI2NzE1NWZlZmQxNjk2OTRhMTQ2ZGNiOGZiNTQ5MjFj
YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3ZnL2Nzcy9nZXRDb21wdXRlZFN0eWxlLWJhc2lj
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdmcvY3NzL2dldENvbXB1dGVkU3R5bGUt
YmFzaWMtZXhwZWN0ZWQudHh0CkBAIC0zNyw3ICszNyw3IEBAIHJlY3Q6IHN0eWxlLmdldFByb3Bl
cnR5Q1NTVmFsdWUoYm9yZGVyLWNvbGxhcHNlKSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVd
CiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGJvcmRlci1pbWFnZS1vdXRzZXQpIDogMHB4
CiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKGJvcmRlci1pbWFnZS1vdXRzZXQpIDog
W29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUo
Ym9yZGVyLWltYWdlLXJlcGVhdCkgOiBzdHJldGNoCi1yZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNT
U1ZhbHVlKGJvcmRlci1pbWFnZS1yZXBlYXQpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0K
K3JlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoYm9yZGVyLWltYWdlLXJlcGVhdCkgOiBb
b2JqZWN0IENTU1ZhbHVlXQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShib3JkZXItaW1h
Z2Utc2xpY2UpIDogMTAwJQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShib3JkZXIt
aW1hZ2Utc2xpY2UpIDogW29iamVjdCBDU1NWYWx1ZV0KIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5
VmFsdWUoYm9yZGVyLWltYWdlLXNvdXJjZSkgOiBub25lCkBAIC00NjksNyArNDY5LDcgQEAgcmVj
dDogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdlKSA6IFtv
YmplY3QgQ1NTUHJpbWl0aXZlVmEKIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoLXdlYmtp
dC1tYXNrLWJveC1pbWFnZS1vdXRzZXQpIDogMHB4CiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNT
U1ZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2Utb3V0c2V0KSA6IFtvYmplY3QgQ1NTUHJpbWl0
aXZlVmFsdWVdCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtbWFzay1ib3gt
aW1hZ2UtcmVwZWF0KSA6IHN0cmV0Y2gKLXJlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUo
LXdlYmtpdC1tYXNrLWJveC1pbWFnZS1yZXBlYXQpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1
ZV0KK3JlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFn
ZS1yZXBlYXQpIDogW29iamVjdCBDU1NWYWx1ZV0KIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5VmFs
dWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1zbGljZSkgOiAwIGZpbGwKIHJlY3Q6IHN0eWxlLmdl
dFByb3BlcnR5Q1NTVmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1zbGljZSkgOiBbb2JqZWN0
IENTU1ZhbHVlXQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0LW1hc2stYm94
LWltYWdlLXNvdXJjZSkgOiBub25lCkBAIC01NTksNyArNTU5LDcgQEAgZzogc3R5bGUuZ2V0UHJv
cGVydHlDU1NWYWx1ZShib3JkZXItY29sbGFwc2UpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1
ZV0KIGc6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoYm9yZGVyLWltYWdlLW91dHNldCkgOiAwcHgK
IGc6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoYm9yZGVyLWltYWdlLW91dHNldCkgOiBbb2Jq
ZWN0IENTU1ByaW1pdGl2ZVZhbHVlXQogZzogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShib3JkZXIt
aW1hZ2UtcmVwZWF0KSA6IHN0cmV0Y2gKLWc6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoYm9y
ZGVyLWltYWdlLXJlcGVhdCkgOiBbb2JqZWN0IENTU1ByaW1pdGl2ZVZhbHVlXQorZzogc3R5bGUu
Z2V0UHJvcGVydHlDU1NWYWx1ZShib3JkZXItaW1hZ2UtcmVwZWF0KSA6IFtvYmplY3QgQ1NTVmFs
dWVdCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGJvcmRlci1pbWFnZS1zbGljZSkgOiAxMDAl
CiBnOiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKGJvcmRlci1pbWFnZS1zbGljZSkgOiBbb2Jq
ZWN0IENTU1ZhbHVlXQogZzogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShib3JkZXItaW1hZ2Utc291
cmNlKSA6IG5vbmUKQEAgLTk5NSw3ICs5OTUsNyBAQCBnOiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1Zh
bHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2UtcmVwZWF0KSA6IFtvYmplY3QgQ1NTUHJpbWl0aQog
Zzogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdlLXNsaWNlKSA6
IDAgZmlsbAogZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0LW1hc2stYm94LWlt
YWdlLXNsaWNlKSA6IFtvYmplY3QgQ1NTVmFsdWVdCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVl
KC13ZWJraXQtbWFzay1ib3gtaW1hZ2Utc291cmNlKSA6IG5vbmUKLWc6IHN0eWxlLmdldFByb3Bl
cnR5Q1NTVmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1zb3VyY2UpIDogW29iamVjdCBDU1NQ
cmltaXRpdmVWYWx1ZV0KK2c6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoLXdlYmtpdC1tYXNr
LWJveC1pbWFnZS1zb3VyY2UpIDogW29iamVjdCBDU1NWYWx1ZV0KIGc6IHN0eWxlLmdldFByb3Bl
cnR5VmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS13aWR0aCkgOiBhdXRvCiBnOiBzdHlsZS5n
ZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2Utd2lkdGgpIDogW29iamVj
dCBDU1NQcmltaXRpdmVWYWx1ZV0KIGc6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoLXdlYmtpdC1t
YXNrLWNsaXApIDogYm9yZGVyLWJveAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424205</attachid>
            <date>2021-03-24 17:27:29 -0700</date>
            <delta_ts>2021-03-27 03:30:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223204-20210324192728.patch</filename>
            <type>text/plain</type>
            <size>108975</size>
            <attacher name="Tyler Wilcock">twilco.o</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0OTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWI2ZDQwZTBjMTA2NjRm
YjgzZDQyOWIwM2E2ODgzNzdjZTM3NjAwYS4uNjMwYzNlZTY5NDUyNGE3ZTk2NTZiYjRlOGQ4YWY4
ZWM3NWVmYTM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MSBAQAorMjAyMS0wMy0yNCAgVHls
ZXIgV2lsY29jayAgPHR3aWxjby5vQHByb3Rvbm1haWwuY29tPgorCisgICAgICAgIFJlZmFjdG9y
IFBhaXIuaCB0byBDU1NWYWx1ZVBhaXIuaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIzMjA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUGFpci5oIGhhcyBhIGNvdXBsZSBwcm9ibGVtczoKKworICAgICAg
ICAxLiBJdCdzIG5vdCBhIHN1Yi1jbGFzcyBvZiBDU1NWYWx1ZSwgbWFraW5nIGl0IGF3a3dhcmQg
dG8gdXNlLgorICAgICAgICAyLiBJdCBjYW4gb25seSBjb250YWluIENTU1ByaW1pdGl2ZVZhbHVl
cy4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgQ1NTVmFsdWVQYWlyIGNs
YXNzLCB3aGljaCBmaXhlcyBib3RoIG9mCisgICAgICAgIHRoZXNlIHNob3J0Y29taW5ncy4gIFRo
aXMgYWxsb3dzIHVzIHRvIHByb3Blcmx5IHJlcHJlc2VudCBwYWlyIHZhbHVlcworICAgICAgICB3
aGVyZSB3ZSBvdGhlcndpc2UgY291bGRuJ3QgKGJlY2F1c2UgdGhlIHZhbHVlcyB3ZSB3YW50ZWQg
dG8gcGFpciB3ZXJlCisgICAgICAgIG5vdCBDU1NQcmltaXRpdmVWYWx1ZXMpLgorCisgICAgICAg
IFBhaXIuaCBhbmQgYW55IGNvZGUgcmVsYXRlZCB0byBwYWlycyBpbiBDU1NQcmltaXRpdmVWYWx1
ZSBhcmUgcmVtb3ZlZAorICAgICAgICB3aXRoIHRoaXMgcGF0Y2ggKGluY2x1ZGluZyB0aGUgQ1NT
X1BBSVIgQ1NTIHVuaXQgdHlwZSkuCisKKyAgICAgICAgQ2hhbmdlcyBhcmUgY292ZXJlZCBieSBl
eGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGNzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yQ2VudGVyQ29vcmRpbmF0ZSk6CisgICAgICAgIFJl
dHVybiBDU1NWYWx1ZSBpbnN0ZWFkIG9mIENTU1ByaW1pdGl2ZVZhbHVlLgorICAgICAgICAoV2Vi
Q29yZTo6dmFsdWVGb3JCYXNpY1NoYXBlKToKKyAgICAgICAgQ3JlYXRlIENTU1ZhbHVlUGFpciBp
bnN0ZWFkIG9mIENTU1ByaW1pdGl2ZVZhbHVlIHBhaXIuCisgICAgICAgIChXZWJDb3JlOjpjb252
ZXJ0VG9MZW5ndGhTaXplKToKKyAgICAgICAgQWNjZXB0IENTU1ZhbHVlUGFpciBpbnN0ZWFkIG9m
IENTU1ByaW1pdGl2ZVZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvQ2VudGVyQ29v
cmRpbmF0ZSk6CisgICAgICAgIEFjY2VwdCBDU1NWYWx1ZSBpbnN0ZWFkIG9mIENTU1ByaW1pdGl2
ZVZhbHVlLgorCisgICAgICAgICogY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNlcmlhbGl6ZVBvc2l0aW9uT2Zmc2V0KToKKyAgICAgICAgQWNjZXB0IENTU1ZhbHVl
UGFpciBpbnN0ZWFkIG9mIFBhaXIuCisgICAgICAgIChXZWJDb3JlOjpidWlsZFNlcmlhbGl6YWJs
ZVBvc2l0aW9uT2Zmc2V0KToKKyAgICAgICAgQWNjZXB0IENTU1ZhbHVlIGluc3RhZCBvZiBDU1NQ
cmltaXRpdmVWYWx1ZS4KKyAgICAgICAgUmV0dXJuIENTU1ZhbHVlUGFpciBpbnN0ZWFkIG9mIENT
U1ByaW1pdGl2ZVZhbHVlIHBhaXIuCisgICAgICAgIChXZWJDb3JlOjpDU1NCYXNpY1NoYXBlQ2ly
Y2xlOjpjc3NUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hhcGVFbGxp
cHNlOjpjc3NUZXh0IGNvbnN0KToKKyAgICAgICAgU2VyaWFsaXplIENTU1ZhbHVlUGFpciBpbnN0
ZWFkIG9mIENTU1ByaW1pdGl2ZVZhbHVlIHBhaXIuCisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVD
b3JuZXJSYWRpdXNXaWR0aEFuZEhlaWdodCk6CisgICAgICAgIEFjY2VwdCBDU1NWYWx1ZVBhaXIg
aW5zdGVhZCBvZiBDU1NQcmltaXRpdmVWYWx1ZSBwYWlyLgorCisgICAgICAgICogY3NzL0NTU0Jh
c2ljU2hhcGVzLmg6CisgICAgICAgIENoYW5nZSBzZXZlcmFsIHByb3BlcnRpZXMgYW5kIGFzc29j
aWF0ZWQgZ2V0dGVycyBhbmQgc2V0dGVycyB0byBkZWFsIGluCisgICAgICAgIENTU1ZhbHVlUGFp
ciBpbnN0ZWFkIG9mIENTU1ByaW1pdGl2ZVZhbHVlIHBhaXJzLgorCisgICAgICAgICogY3NzL0NT
U0NhbGN1bGF0aW9uVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFzRG91YmxlVmFsdWUp
OgorICAgICAgICBSZW1vdmUgQ1NTX1BBSVIgZnJvbSBzd2l0Y2guCisKKyAgICAgICAgKiBjc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVl
Rm9yTmluZVBpZWNlSW1hZ2VSZXBlYXQpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHls
ZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eUluU3R5bGUpOgorICAgICAgICBDcmVhdGUgQ1NT
VmFsdWVQYWlyIGluc3RlYWQgb2YgQ1NTUHJpbWl0aXZlVmFsdWUgcGFpci4KKworICAgICAgICAq
IGNzcy9DU1NHcmFkaWVudFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBvc2l0aW9uRnJv
bVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVFbmRQb2ludCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0xpbmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KToK
KyAgICAgICAgSGFuZGxlIENTU1ZhbHVlIChzbyBDU1NWYWx1ZVBhaXIgb3IgQ1NTUHJpbWl0aXZl
VmFsdWUpIHJhdGhlciB0aGFuCisgICAgICAgIG9ubHkgZGVhbGluZyBpbiBDU1NQcmltaXRpdmVW
YWx1ZXMuCisKKyAgICAgICAgKiBjc3MvQ1NTR3JhZGllbnRWYWx1ZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTR3JhZGllbnRWYWx1ZTo6c2V0Rmlyc3RYKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0dyYWRpZW50VmFsdWU6OnNldEZpcnN0WSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NHcmFkaWVu
dFZhbHVlOjpzZXRTZWNvbmRYKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyYWRpZW50VmFsdWU6
OnNldFNlY29uZFkpOgorICAgICAgICBEZWFsIGluIENTU1ZhbHVlcyBpbnN0ZWFkIG9mIENTU1By
aW1pdGl2ZVZhbHVlLgorCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmlzVmFsaWRDU1NVbml0VHlwZUZvckRvdWJsZUNvbnZlcnNpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6aXNTdHJpbmdUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
aW1pdGl2ZVZhbHVlOjpjbGVhbnVwKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZh
bHVlOjp1bml0VHlwZVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1
ZTo6Zm9ybWF0TnVtYmVyRm9yQ3VzdG9tQ1NTVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQcmltaXRpdmVWYWx1ZTo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgUmVtb3ZlIGFsbCBQ
YWlyIGFuZCBDU1NfUEFJUiByZWxhdGVkIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBjc3Mv
Q1NTUHJpbWl0aXZlVmFsdWUuaDoKKyAgICAgICAgUmVtb3ZlIGFsbCBQYWlyIGFuZCBDU1NfUEFJ
UiByZWxhdGVkIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBjc3MvQ1NTVG9TdHlsZU1hcC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9MZW5ndGhTaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1RvU3R5bGVNYXA6Om1hcEZpbGxYUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9T
dHlsZU1hcDo6bWFwRmlsbFlQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxl
TWFwOjptYXBOaW5lUGllY2VJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFw
OjptYXBOaW5lUGllY2VJbWFnZVJlcGVhdCk6CisgICAgICAgIEhhbmRsZSBDU1NWYWx1ZXMgKENT
U1ZhbHVlUGFpcnMgb3IgQ1NTUHJpbWl0aXZlVmFsdWVzKSByYXRoZXIgdGhhbgorICAgICAgICBz
dHJpY3RseSBDU1NQcmltaXRpdmVWYWx1ZXMuCisKKyAgICAgICAgKiBjc3MvQ1NTVW5pdHMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgIFJlbW92ZSBDU1NfUEFJ
UiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogY3NzL0NTU1VuaXRzLmg6CisgICAgICAgIFJl
bW92ZSBDU1NfUEFJUiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogY3NzL0NTU1ZhbHVlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjplcXVhbHMgY29uc3QpOgorICAgICAgICBI
YW5kbGUgbmV3IFZhbHVlUGFpckNsYXNzLgorCisgICAgICAgICogY3NzL0NTU1ZhbHVlUGFpci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZVBhaXI6OmZpcnN0QXNQcmltaXRpdmUgY29u
c3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUGFpcjo6c2Vjb25kQXNQcmlt
aXRpdmUgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUGFpcjo6Zmly
c3RBc1ZhbHVlSUQgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUGFp
cjo6c2Vjb25kQXNWYWx1ZUlEIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NW
YWx1ZVBhaXI6OmN1c3RvbUNTU1RleHQgY29uc3QpOgorICAgICAgICBIYW5kbGUgbnVsbCB2YWx1
ZXMgYXBwcm9wcmlhdGVseS4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUGFpcjo6ZXF1YWxz
IGNvbnN0KToKKyAgICAgICAgQ2hlY2sgSWRlbnRpY2FsVmFsdWVFbmNvZGluZyBmaWVsZCB3aGVu
IGRldGVybWluaW5nIGVxdWFsaXR5LgorCisgICAgICAgICogY3NzL0NTU1ZhbHVlUGFpci5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQYWlyOjpjcmVhdGUpOgorICAgICAgICBBZGRlZCBz
b21lIG1vcmUgY3JlYXRpb24gbWV0aG9kcy4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUGFp
cjo6Zmlyc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQYWlyOjpzZWNvbmQg
Y29uc3QpOgorICAgICAgICBSZXR1cm4gUmVmUHRycyBpbnN0ZWFkIG9mIFJlZnMuCisgICAgICAg
IChXZWJDb3JlOjpDU1NWYWx1ZVBhaXI6OkNTU1ZhbHVlUGFpcik6CisgICAgICAgIEFjY2VwdCBS
ZWZQdHJzIGluc3RlYWQgb2YgUmVmcy4KKworICAgICAgICAqIGNzcy9DU1NWYWx1ZVBvb2wuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUG9vbDo6Y3JlYXRlVmFsdWUpOgorICAgICAgICBS
ZW1vdmUgY3JlYXRlVmFsdWUoY29uc3QgTGVuZ3RoU2l6ZSYsIGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSkuCisKKyAgICAgICAgKiBjc3MvUGFpci5oOiBSZW1vdmVkLgorCisgICAgICAgICogY3Nz
L3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1l
Q291bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lQm9yZGVyUmFkaXVzQ29ybmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVCYXNpY1NoYXBlSW5zZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6Z2V0QmFzZWxpbmVLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVCYXNl
bGluZUtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZUJvcmRlckltYWdlUmVwZWF0
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVCYWNrZ3JvdW5kU2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpjb25zdW1lU2VsZlBvc2l0aW9uT3ZlcmZsb3dQb3NpdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpjb25zdW1lSnVzdGlmeUl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVJ
bml0aWFsTGV0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpwYXJz
ZVNob3J0aGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIp
OiBEZWxldGVkLgorICAgICAgICBSZW1vdmUgYWxsIGluc3RhbmNlcyBvZiBDU1NQcmltaXRpdmVW
YWx1ZSBwYWlyIGNyZWF0aW9uLgorICAgICAgICBIYW5kbGUgbmV3IENTU1ZhbHVlUGFpciB2YWx1
ZSBpbiBzZXZlcmFsIGxvY2F0aW9ucy4KKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVy
dHlQYXJzZXJIZWxwZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2Vy
SGVscGVyczo6cG9zaXRpb25Gcm9tT25lVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzOjpwb3NpdGlvbkZyb21Ud29WYWx1ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpiYWNrZ3JvdW5kUG9zaXRpb25Gcm9tVGhy
ZWVWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpw
b3NpdGlvbkZyb21Gb3VyVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFy
c2VySGVscGVyczo6Y29uc3VtZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3Bl
cnR5UGFyc2VySGVscGVyczo6Y29uc3VtZVJhZGlhbEdyYWRpZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzSW50
ZXJuYWw6OmNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcik6IERlbGV0ZWQuCisgICAgICAgIFJlbW92
ZSBhbGwgaW5zdGFuY2VzIG9mIENTU1ByaW1pdGl2ZVZhbHVlIHBhaXIgY3JlYXRpb24uCisgICAg
ICAgIEhhbmRsZSBuZXcgQ1NTVmFsdWVQYWlyIHZhbHVlIGluIHNldmVyYWwgbG9jYXRpb25zLgor
CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaDoKKyAgICAg
ICAgUG9zaXRpb25Db29yZGluYXRlcyBub3cgaG9sZHMgQ1NTVmFsdWVzIGZvciAneCcgYW5kICd5
JyByYXRoZXIgdGhhbgorICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZXMuCisKKyAgICAgICAgKiBz
dHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UmFkaXVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25Db21wb25lbnRYKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25Db21wb25l
bnRZKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
UG9zaXRpb25Db21wb25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRPYmplY3RQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEluaXRpYWxMZXR0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTZWxmT3JEZWZhdWx0QWxpZ25tZW50
RGF0YSk6CisgICAgICAgIEhhbmRsZSBuZXcgQ1NTVmFsdWVQYWlyIHZhbHVlIGluIHNldmVyYWwg
bG9jYXRpb25zLgorCisgICAgICAgICogc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNvdW50ZXIpOgor
ICAgICAgICBVc2UgQ1NTVmFsdWVQYWlyIGluc3RlYWQgb2Ygbm93LWRlbGV0ZWQgUGFpci4KKwor
ICAgICAgICAqIHN0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICBSZW1vdmUgI2luY2x1
ZGUgIlBhaXIuIgorCiAyMDIxLTAzLTI0ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBw
bGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gQWRkIEV4cGVyaW1lbnRhbCBNZWRpYVNlc3Npb24g
Y29vcmRpbmF0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBmMzY4NWY5NTZiNmViMDI2MWY0OWQ1MjI0NTFiY2Q2OTg4NzNmMGQ1
Li4yMjhhM2FmOWUwM2I2YzU3Mzg1OGZjNWI1N2RkZDRlMzkyNzcyZjljIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMDY2LDYg
KzMwNjYsNyBAQAogCQk5N0RDRTIwMjEwODA3Qzc1MDA1N0QzOTQgLyogSGlzdG9yeUNvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3RENF
MjAwMTA4MDdDNzUwMDU3RDM5NCAvKiBIaXN0b3J5Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk4MzFBRTRBMTU0MjI1QzkwMEZF
MjY0NCAvKiBSZWZlcnJlclBvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTgzMUFFNDkxNTQyMjVBMjAwRkUyNjQ0IC8qIFJlZmVycmVyUG9saWN5
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTg0
MjY0RjExMkQ1MjgwQTAwMEQ4OEE0IC8qIExpbmtMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk4NDI2NEVGMTJENTI4MEEwMDBEODhB
NCAvKiBMaW5rTG9hZGVyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJOTg1OTczNjcyNjBDMDU1MzAwRDFFNEEwIC8qIENTU1ZhbHVlUGFp
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTg1OTcz
NjYyNjBDMDU1MzAwRDFFNEEwIC8qIENTU1ZhbHVlUGFpci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk4NUJCOTZFMTNBOTQwNTgwMDdBMEI2OSAv
KiBMaW5rUmVsQXR0cmlidXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5ODVCQjk2QzEzQTk0MDU4MDA3QTBCNjkgLyogTGlua1JlbEF0dHJpYnV0ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk4Q0U0
MzJBMTI5RTAwRTUwMDU4MjFEQyAvKiBMaW5rTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OENFNDMyOTEyOUUwMEU1MDA1ODIxREMgLyogTGlu
a0xvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTk4RUIxRjk1MTMxM0ZFMDUwMEQwRTFFQSAvKiBOb3RJbXBsZW1lbnRlZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOThFQjFGOTQxMzEzRkUwNTAw
RDBFMUVBIC8qIE5vdEltcGxlbWVudGVkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM0MjMsNyArMzQyNCw2IEBACiAJCUE4MEU2Q0YyMEExOTg5
Q0EwMDdGQjhDNSAvKiBDU1NSdWxlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTgwRTZDQzgwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1J1bGVMaXN0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTgw
RTZDRjYwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU0ltcG9ydFJ1bGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MEU2Q0NDMEExOTg5Q0EwMDdGQjhDNSAv
KiBDU1NJbXBvcnRSdWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQTgwRTZDRkEwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU0ltYWdlVmFsdWUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MEU2Q0QwMEEx
OTg5Q0EwMDdGQjhDNSAvKiBDU1NJbWFnZVZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQTgwRTZDRkIwQTE5ODlDQTAwN0ZCOEM1IC8qIFBh
aXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MEU2
Q0QxMEExOTg5Q0EwMDdGQjhDNSAvKiBQYWlyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTgwRTZDRkQwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU0Zv
bnRGYWNlUnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTgwRTZDRDMwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU0ZvbnRGYWNlUnVsZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE4MEU2Q0ZGMEExOTg5
Q0EwMDdGQjhDNSAvKiBDU1NQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTgwRTZDRDUwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1Byb3BlcnR5
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTgw
RTZEMDAwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1BhZ2VSdWxlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODBFNkNENjBBMTk4OUNBMDA3RkI4QzUgLyog
Q1NTUGFnZVJ1bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMTIwNzMsNiArMTIwNzMsOCBAQAogCQk5N0U5RUM4QzE1REM0OTJGMDA0RjJFNzEg
LyogSlNWb2lkQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNW
b2lkQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTgzMUFFNDkxNTQy
MjVBMjAwRkUyNjQ0IC8qIFJlZmVycmVyUG9saWN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlZmVycmVyUG9saWN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk4NDI2NEVGMTJENTI4MEEwMDBEODhBNCAvKiBMaW5rTG9hZGVyQ2xpZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmtMb2FkZXJDbGllbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTg1OTczNjQyNjBDMDUzQjAwRDFFNEEwIC8qIENTU1ZhbHVlUGFp
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NWYWx1ZVBhaXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5ODU5NzM2NjI2MEMwNTUzMDBEMUU0
QTAgLyogQ1NTVmFsdWVQYWlyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENT
U1ZhbHVlUGFpci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5ODVCQjk2QjEzQTk0
MDU4MDA3QTBCNjkgLyogTGlua1JlbEF0dHJpYnV0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBMaW5rUmVsQXR0cmlidXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTg1QkI5NkMxM0E5NDA1ODAwN0EwQjY5IC8qIExpbmtSZWxBdHRyaWJ1dGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGlua1JlbEF0dHJpYnV0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OENFNDMyNTEyOUUwMEJEMDA1ODIxREMgLyog
TGlua0xvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMaW5r
TG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5Njc1LDYgKzI5Njc3
LDggQEAKIAkJCQlCQ0VBNDc4QzA5N0NBQUM4MDA5NEM5RTQgLyogQ1NTVmFsdWVLZXl3b3Jkcy5p
biAqLywKIAkJCQlBODBFNkNCQTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTVmFsdWVMaXN0LmNwcCAq
LywKIAkJCQlBODBFNkNCRjBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTVmFsdWVMaXN0LmggKi8sCisJ
CQkJOTg1OTczNjQyNjBDMDUzQjAwRDFFNEEwIC8qIENTU1ZhbHVlUGFpci5jcHAgKi8sCisJCQkJ
OTg1OTczNjYyNjBDMDU1MzAwRDFFNEEwIC8qIENTU1ZhbHVlUGFpci5oICovLAogCQkJCUU0OUJE
QTBBMTMxRkQzRTUwMDNDNTZGMCAvKiBDU1NWYWx1ZVBvb2wuY3BwICovLAogCQkJCUU0OUJEOUY5
MTMxRkQyRUQwMDNDNTZGMCAvKiBDU1NWYWx1ZVBvb2wuaCAqLywKIAkJCQk5NDQ0Q0JERTFEODg2
MTU4MDA3M0EwNzQgLyogQ1NTVmFyaWFibGVEYXRhLmNwcCAqLywKQEAgLTMxOTczLDYgKzMxOTc3
LDcgQEAKIAkJCQlFM0JCQzI0NzIzODM1NTI2MDA2RUMzOUYgLyogQ1NTVmFsdWVLZXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTY1NjU4MTUxMDlEMTMwNDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdv
cmRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFNkNFOTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NT
VmFsdWVMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk5ODU5NzM2NzI2MEMwNTUzMDBEMUU0QTAg
LyogQ1NTVmFsdWVQYWlyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDlCRDlGQTEzMUZEMkVEMDAz
QzU2RjAgLyogQ1NTVmFsdWVQb29sLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NDQ0Q0JFODFEODg2
MUMyMDA3M0EwNzQgLyogQ1NTVmFyaWFibGVEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NDQ0
Q0JEQTFEODg0ODNBMDA3M0EwNzQgLyogQ1NTVmFyaWFibGVQYXJzZXIuaCBpbiBIZWFkZXJzICov
LApAQCAtMzQyMTIsNyArMzQyMTcsNiBAQAogCQkJCTA4ODUwNjgwMTFEQTA0NUIwMDE4MkI5OCAv
KiBQYWludFBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QjFFMTNFQjIxNzkzN0IzMDA0MkNG
OTggLyogUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaCBpbiBIZWFkZXJzICovLAogCQkJCTRCNkI1
Q0MwMjE2NDM4NjQwMDYwMzgxNyAvKiBQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJQTgwRTZDRkIwQTE5ODlDQTAwN0ZCOEM1IC8qIFBhaXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZEMzE2MEEzMTJCMDI2RjcwMEMxQTM1OSAvKiBQYW5uZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZEMzE2MDFBMTJCMDI2NzYwMEMxQTM1OSAvKiBQYW5uZXJOb2RlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFNzE0NjdCNjI0QUJBRjFEMDBGQjJGNTAgLyogUGFubmVyT3B0aW9ucy5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFw
ZUZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5j
cHAKaW5kZXggMWFhYWU5NmIxOTViYjFlNDNhMmMxMWVlMWE1OTU3MWQxNzlkMWI4Ni4uZDM5YjI4
ZGExNmQ3M2NjMmQxYTczOWI3MmE1ZGNhMjQxZGRlZjQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcApAQCAtMzMsMjEgKzMzLDIwIEBACiAjaW5jbHVkZSAi
QmFzaWNTaGFwZXMuaCIKICNpbmNsdWRlICJDU1NCYXNpY1NoYXBlcy5oIgogI2luY2x1ZGUgIkNT
U1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKKyNpbmNsdWRlICJDU1NWYWx1ZVBhaXIuaCIKICNp
bmNsdWRlICJDU1NWYWx1ZVBvb2wuaCIKLSNpbmNsdWRlICJQYWlyLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyU3R5bGUuaCIKICNpbmNsdWRlICJTVkdQYXRoQnl0ZVN0cmVhbS5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbHVlRm9yQ2VudGVy
Q29vcmRpbmF0ZShDU1NWYWx1ZVBvb2wmIHBvb2wsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwg
Y29uc3QgQmFzaWNTaGFwZUNlbnRlckNvb3JkaW5hdGUmIGNlbnRlciwgQm94T3JpZW50IG9yaWVu
dGF0aW9uKQorc3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JDZW50ZXJDb29yZGluYXRlKENT
U1ZhbHVlUG9vbCYgcG9vbCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBCYXNpY1No
YXBlQ2VudGVyQ29vcmRpbmF0ZSYgY2VudGVyLCBCb3hPcmllbnQgb3JpZW50YXRpb24pCiB7CiAg
ICAgaWYgKGNlbnRlci5kaXJlY3Rpb24oKSA9PSBCYXNpY1NoYXBlQ2VudGVyQ29vcmRpbmF0ZTo6
VG9wTGVmdCkKICAgICAgICAgcmV0dXJuIHBvb2wuY3JlYXRlVmFsdWUoY2VudGVyLmxlbmd0aCgp
LCBzdHlsZSk7CiAKICAgICBDU1NWYWx1ZUlEIGtleXdvcmQgPSBvcmllbnRhdGlvbiA9PSBCb3hP
cmllbnQ6Okhvcml6b250YWwgPyBDU1NWYWx1ZVJpZ2h0IDogQ1NTVmFsdWVCb3R0b207Ci0KLSAg
ICByZXR1cm4gcG9vbC5jcmVhdGVWYWx1ZShQYWlyOjpjcmVhdGUocG9vbC5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoa2V5d29yZCksIHBvb2wuY3JlYXRlVmFsdWUoY2VudGVyLmxlbmd0aCgpLCBzdHls
ZSkpKTsKKyAgICByZXR1cm4gQ1NTVmFsdWVQYWlyOjpjcmVhdGUocG9vbC5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoa2V5d29yZCksIHBvb2wuY3JlYXRlVmFsdWUoY2VudGVyLmxlbmd0aCgpLCBzdHls
ZSkpOwogfQogCiBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBiYXNpY1NoYXBlUmFkaXVz
VG9DU1NWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIENTU1ZhbHVlUG9vbCYgcG9vbCwg
Y29uc3QgQmFzaWNTaGFwZVJhZGl1cyYgcmFkaXVzKQpAQCAtMTIzLDEwICsxMjIsMTAgQEAgUmVm
PENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZUZvckJhc2ljU2hhcGUoY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlLCBjb25zdCBCYXNpY1MKICAgICAgICAgaW5zZXRWYWx1ZS0+c2V0Qm90dG9tKGNzc1Zh
bHVlUG9vbC5jcmVhdGVWYWx1ZShpbnNldC5ib3R0b20oKSwgc3R5bGUpKTsKICAgICAgICAgaW5z
ZXRWYWx1ZS0+c2V0TGVmdChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoaW5zZXQubGVmdCgpLCBz
dHlsZSkpOwogCi0gICAgICAgIGluc2V0VmFsdWUtPnNldFRvcExlZnRSYWRpdXMoY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKGluc2V0LnRvcExlZnRSYWRpdXMoKSwgc3R5bGUpKTsKLSAgICAgICAg
aW5zZXRWYWx1ZS0+c2V0VG9wUmlnaHRSYWRpdXMoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGlu
c2V0LnRvcFJpZ2h0UmFkaXVzKCksIHN0eWxlKSk7Ci0gICAgICAgIGluc2V0VmFsdWUtPnNldEJv
dHRvbVJpZ2h0UmFkaXVzKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShpbnNldC5ib3R0b21SaWdo
dFJhZGl1cygpLCBzdHlsZSkpOwotICAgICAgICBpbnNldFZhbHVlLT5zZXRCb3R0b21MZWZ0UmFk
aXVzKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShpbnNldC5ib3R0b21MZWZ0UmFkaXVzKCksIHN0
eWxlKSk7CisgICAgICAgIGluc2V0VmFsdWUtPnNldFRvcExlZnRSYWRpdXMoQ1NTVmFsdWVQYWly
OjpjcmVhdGUoaW5zZXQudG9wTGVmdFJhZGl1cygpLCBzdHlsZSkpOworICAgICAgICBpbnNldFZh
bHVlLT5zZXRUb3BSaWdodFJhZGl1cyhDU1NWYWx1ZVBhaXI6OmNyZWF0ZShpbnNldC50b3BSaWdo
dFJhZGl1cygpLCBzdHlsZSkpOworICAgICAgICBpbnNldFZhbHVlLT5zZXRCb3R0b21SaWdodFJh
ZGl1cyhDU1NWYWx1ZVBhaXI6OmNyZWF0ZShpbnNldC5ib3R0b21SaWdodFJhZGl1cygpLCBzdHls
ZSkpOworICAgICAgICBpbnNldFZhbHVlLT5zZXRCb3R0b21MZWZ0UmFkaXVzKENTU1ZhbHVlUGFp
cjo6Y3JlYXRlKGluc2V0LmJvdHRvbUxlZnRSYWRpdXMoKSwgc3R5bGUpKTsKIAogICAgICAgICBi
YXNpY1NoYXBlVmFsdWUgPSBXVEZNb3ZlKGluc2V0VmFsdWUpOwogICAgICAgICBicmVhazsKQEAg
LTE0MSwyOCArMTQwLDMxIEBAIHN0YXRpYyBMZW5ndGggY29udmVydFRvTGVuZ3RoKGNvbnN0IENT
U1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBjCiAgICAgcmV0dXJuIHZh
bHVlLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IEZpeGVkRmxvYXRD
b252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBDYWxjdWxhdGVkQ29udmVyc2lvbj4oY29u
dmVyc2lvbkRhdGEpOwogfQogCi1zdGF0aWMgTGVuZ3RoU2l6ZSBjb252ZXJ0VG9MZW5ndGhTaXpl
KGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBjb25zdCBD
U1NQcmltaXRpdmVWYWx1ZSogdmFsdWUpCitzdGF0aWMgTGVuZ3RoU2l6ZSBjb252ZXJ0VG9MZW5n
dGhTaXplKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBj
b25zdCBDU1NWYWx1ZVBhaXIqIHBhaXIpCiB7Ci0gICAgaWYgKCF2YWx1ZSkKKyAgICBpZiAoIXBh
aXIpCiAgICAgICAgIHJldHVybiB7IHsgMCwgTGVuZ3RoVHlwZTo6Rml4ZWQgfSwgeyAwLCBMZW5n
dGhUeXBlOjpGaXhlZCB9IH07CiAKLSAgICBhdXRvJiBwYWlyID0gKnZhbHVlLT5wYWlyVmFsdWUo
KTsKLSAgICByZXR1cm4geyBjb252ZXJ0VG9MZW5ndGgoY29udmVyc2lvbkRhdGEsIHBhaXIuZmly
c3QoKSksIGNvbnZlcnRUb0xlbmd0aChjb252ZXJzaW9uRGF0YSwgcGFpci5zZWNvbmQoKSkgfTsK
KyAgICByZXR1cm4geyBjb252ZXJ0VG9MZW5ndGgoY29udmVyc2lvbkRhdGEsIHBhaXItPmZpcnN0
QXNQcmltaXRpdmUoKS5nZXQoKSksIGNvbnZlcnRUb0xlbmd0aChjb252ZXJzaW9uRGF0YSwgcGFp
ci0+c2Vjb25kQXNQcmltaXRpdmUoKS5nZXQoKSkgfTsKIH0KIAotc3RhdGljIEJhc2ljU2hhcGVD
ZW50ZXJDb29yZGluYXRlIGNvbnZlcnRUb0NlbnRlckNvb3JkaW5hdGUoY29uc3QgQ1NTVG9MZW5n
dGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1
ZSkKK3N0YXRpYyBCYXNpY1NoYXBlQ2VudGVyQ29vcmRpbmF0ZSBjb252ZXJ0VG9DZW50ZXJDb29y
ZGluYXRlKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBD
U1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgQ1NTVmFsdWVJRCBrZXl3b3JkID0gQ1NTVmFsdWVUb3A7
CiAgICAgTGVuZ3RoIG9mZnNldCB7IDAsIExlbmd0aFR5cGU6OkZpeGVkIH07CiAgICAgaWYgKCF2
YWx1ZSkKICAgICAgICAga2V5d29yZCA9IENTU1ZhbHVlQ2VudGVyOwotICAgIGVsc2UgaWYgKHZh
bHVlLT5pc1ZhbHVlSUQoKSkKLSAgICAgICAga2V5d29yZCA9IHZhbHVlLT52YWx1ZUlEKCk7Ci0g
ICAgZWxzZSBpZiAoUGFpciogcGFpciA9IHZhbHVlLT5wYWlyVmFsdWUoKSkgewotICAgICAgICBr
ZXl3b3JkID0gcGFpci0+Zmlyc3QoKS0+dmFsdWVJRCgpOwotICAgICAgICBvZmZzZXQgPSBjb252
ZXJ0VG9MZW5ndGgoY29udmVyc2lvbkRhdGEsIHBhaXItPnNlY29uZCgpKTsKLSAgICB9IGVsc2UK
LSAgICAgICAgb2Zmc2V0ID0gY29udmVydFRvTGVuZ3RoKGNvbnZlcnNpb25EYXRhLCB2YWx1ZSk7
CisgICAgZWxzZSBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBhdXRv
KiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Cisg
ICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNWYWx1ZUlEKCkpCisgICAgICAgICAgICBrZXl3
b3JkID0gcHJpbWl0aXZlVmFsdWUtPnZhbHVlSUQoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgb2Zmc2V0ID0gY29udmVydFRvTGVuZ3RoKGNvbnZlcnNpb25EYXRhLCBwcmltaXRpdmVWYWx1
ZSk7CisgICAgfSBlbHNlIGlmICh2YWx1ZS0+aXNWYWx1ZVBhaXIoKSkgeworICAgICAgICBhdXRv
JiBwYWlyID0gZG93bmNhc3Q8Q1NTVmFsdWVQYWlyPigqdmFsdWUpOworICAgICAgICBrZXl3b3Jk
ID0gcGFpci5maXJzdEFzVmFsdWVJRCgpOworICAgICAgICBvZmZzZXQgPSBjb252ZXJ0VG9MZW5n
dGgoY29udmVyc2lvbkRhdGEsIHBhaXIuc2Vjb25kQXNQcmltaXRpdmUoKS5nZXQoKSk7CisgICAg
fQogCiAgICAgQmFzaWNTaGFwZUNlbnRlckNvb3JkaW5hdGU6OkRpcmVjdGlvbiBkaXJlY3Rpb247
CiAgICAgc3dpdGNoIChrZXl3b3JkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQmFzaWNTaGFwZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNw
cAppbmRleCA3ZWU4YWVkMWFjMzIyNGQ3YjdjYzVkMDc3Y2M2MjZkZTE3NGIwNTJhLi45N2I2YzU2
OGM1YjliMWM1NmUyNjg0OWQ4YjhjOTFjYzVkMGNlZDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NC
YXNpY1NoYXBlcy5jcHAKQEAgLTMzLDM1ICszMyw0MCBAQAogI2luY2x1ZGUgIkNTU01hcmt1cC5o
IgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKICNpbmNsdWRlICJDU1NW
YWx1ZVBvb2wuaCIKLSNpbmNsdWRlICJQYWlyLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aEJ5dGVTdHJl
YW0uaCIKICNpbmNsdWRlICJTVkdQYXRoVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBTdHJpbmcg
c2VyaWFsaXplUG9zaXRpb25PZmZzZXQoY29uc3QgUGFpciYgb2Zmc2V0LCBjb25zdCBQYWlyJiBv
dGhlcikKK3N0YXRpYyBTdHJpbmcgc2VyaWFsaXplUG9zaXRpb25PZmZzZXQoY29uc3QgQ1NTVmFs
dWVQYWlyJiBvZmZzZXQsIGNvbnN0IENTU1ZhbHVlUGFpciYgb3RoZXIpCiB7Ci0gICAgaWYgKChv
ZmZzZXQuZmlyc3QoKS0+dmFsdWVJRCgpID09IENTU1ZhbHVlTGVmdCAmJiBvdGhlci5maXJzdCgp
LT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVUb3ApCi0gICAgICAgIHx8IChvZmZzZXQuZmlyc3QoKS0+
dmFsdWVJRCgpID09IENTU1ZhbHVlVG9wICYmIG90aGVyLmZpcnN0KCktPnZhbHVlSUQoKSA9PSBD
U1NWYWx1ZUxlZnQpKQorICAgIGF1dG8gb2Zmc2V0VmFsdWVJRCA9IG9mZnNldC5maXJzdEFzVmFs
dWVJRCgpOworICAgIGF1dG8gb3RoZXJWYWx1ZUlEID0gb3RoZXIuZmlyc3RBc1ZhbHVlSUQoKTsK
KyAgICBpZiAoKG9mZnNldFZhbHVlSUQgPT0gQ1NTVmFsdWVMZWZ0ICYmIG90aGVyVmFsdWVJRCA9
PSBDU1NWYWx1ZVRvcCkKKyAgICAgICAgfHwgKG9mZnNldFZhbHVlSUQgPT0gQ1NTVmFsdWVUb3Ag
JiYgb3RoZXJWYWx1ZUlEID09IENTU1ZhbHVlTGVmdCkpCiAgICAgICAgIHJldHVybiBvZmZzZXQu
c2Vjb25kKCktPmNzc1RleHQoKTsKLSAgICByZXR1cm4gb2Zmc2V0LmNzc1RleHQoKTsKKyAgICBy
ZXR1cm4gb2Zmc2V0LmN1c3RvbUNTU1RleHQoKTsKIH0KIAotc3RhdGljIFJlZjxDU1NQcmltaXRp
dmVWYWx1ZT4gYnVpbGRTZXJpYWxpemFibGVQb3NpdGlvbk9mZnNldChDU1NQcmltaXRpdmVWYWx1
ZSogb2Zmc2V0LCBDU1NWYWx1ZUlEIGRlZmF1bHRTaWRlKQorc3RhdGljIFJlZjxDU1NWYWx1ZVBh
aXI+IGJ1aWxkU2VyaWFsaXphYmxlUG9zaXRpb25PZmZzZXQoQ1NTVmFsdWUqIG9mZnNldCwgQ1NT
VmFsdWVJRCBkZWZhdWx0U2lkZSkKIHsKICAgICBDU1NWYWx1ZUlEIHNpZGUgPSBkZWZhdWx0U2lk
ZTsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGFtb3VudDsKIAogICAgIGlmICghb2Zm
c2V0KQogICAgICAgICBzaWRlID0gQ1NTVmFsdWVDZW50ZXI7Ci0gICAgZWxzZSBpZiAob2Zmc2V0
LT5pc1ZhbHVlSUQoKSkKLSAgICAgICAgc2lkZSA9IG9mZnNldC0+dmFsdWVJRCgpOwotICAgIGVs
c2UgaWYgKFBhaXIqIHBhaXIgPSBvZmZzZXQtPnBhaXJWYWx1ZSgpKSB7Ci0gICAgICAgIHNpZGUg
PSBwYWlyLT5maXJzdCgpLT52YWx1ZUlEKCk7Ci0gICAgICAgIGFtb3VudCA9IHBhaXItPnNlY29u
ZCgpOwotICAgIH0gZWxzZQotICAgICAgICBhbW91bnQgPSBvZmZzZXQ7CisgICAgZWxzZSBpZiAo
b2Zmc2V0LT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgYXV0byogcHJpbWl0aXZlVmFs
dWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4ob2Zmc2V0KTsKKyAgICAgICAgaWYgKHBy
aW1pdGl2ZVZhbHVlLT5pc1ZhbHVlSUQoKSkKKyAgICAgICAgICAgIHNpZGUgPSBwcmltaXRpdmVW
YWx1ZS0+dmFsdWVJRCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhbW91bnQgPSBwcmlt
aXRpdmVWYWx1ZTsKKyAgICB9IGVsc2UgaWYgKG9mZnNldC0+aXNWYWx1ZVBhaXIoKSkgeworICAg
ICAgICBhdXRvJiBwYWlyID0gZG93bmNhc3Q8Q1NTVmFsdWVQYWlyPigqb2Zmc2V0KTsKKyAgICAg
ICAgc2lkZSA9IHBhaXIuZmlyc3RBc1ZhbHVlSUQoKTsKKyAgICAgICAgYW1vdW50ID0gcGFpci5z
ZWNvbmRBc1ByaW1pdGl2ZSgpOworICAgIH0KIAogICAgIGF1dG8mIGNzc1ZhbHVlUG9vbCA9IENT
U1ZhbHVlUG9vbDo6c2luZ2xldG9uKCk7CiAgICAgaWYgKCFhbW91bnQpCkBAIC04MSw3ICs4Niw3
IEBAIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGJ1aWxkU2VyaWFsaXphYmxlUG9zaXRp
b25PZmZzZXQoQ1NTUHJpbWl0aXZlVmFsdWUqCiAgICAgICAgIHNpZGUgPSBkZWZhdWx0U2lkZTsK
ICAgICB9CiAKLSAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKFBhaXI6OmNyZWF0
ZShjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc2lkZSksIFdURk1vdmUoYW1vdW50KSkpOworICAg
IHJldHVybiBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc2lk
ZSksIFdURk1vdmUoYW1vdW50KSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgYnVpbGRDaXJjbGVTdHJp
bmcoY29uc3QgU3RyaW5nJiByYWRpdXMsIGNvbnN0IFN0cmluZyYgY2VudGVyWCwgY29uc3QgU3Ry
aW5nJiBjZW50ZXJZKQpAQCAtMTAxLDE2ICsxMDYsMTYgQEAgc3RhdGljIFN0cmluZyBidWlsZENp
cmNsZVN0cmluZyhjb25zdCBTdHJpbmcmIHJhZGl1cywgY29uc3QgU3RyaW5nJiBjZW50ZXJYLCBj
b24KIAogU3RyaW5nIENTU0Jhc2ljU2hhcGVDaXJjbGU6OmNzc1RleHQoKSBjb25zdAogewotICAg
IFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gbm9ybWFsaXplZENYID0gYnVpbGRTZXJpYWxpemFibGVQ
b3NpdGlvbk9mZnNldChtX2NlbnRlclguZ2V0KCksIENTU1ZhbHVlTGVmdCk7Ci0gICAgUmVmPENT
U1ByaW1pdGl2ZVZhbHVlPiBub3JtYWxpemVkQ1kgPSBidWlsZFNlcmlhbGl6YWJsZVBvc2l0aW9u
T2Zmc2V0KG1fY2VudGVyWS5nZXQoKSwgQ1NTVmFsdWVUb3ApOworICAgIFJlZjxDU1NWYWx1ZVBh
aXI+IG5vcm1hbGl6ZWRDWCA9IGJ1aWxkU2VyaWFsaXphYmxlUG9zaXRpb25PZmZzZXQobV9jZW50
ZXJYLmdldCgpLCBDU1NWYWx1ZUxlZnQpOworICAgIFJlZjxDU1NWYWx1ZVBhaXI+IG5vcm1hbGl6
ZWRDWSA9IGJ1aWxkU2VyaWFsaXphYmxlUG9zaXRpb25PZmZzZXQobV9jZW50ZXJZLmdldCgpLCBD
U1NWYWx1ZVRvcCk7CiAKICAgICBTdHJpbmcgcmFkaXVzOwogICAgIGlmIChtX3JhZGl1cyAmJiBt
X3JhZGl1cy0+dmFsdWVJRCgpICE9IENTU1ZhbHVlQ2xvc2VzdFNpZGUpCiAgICAgICAgIHJhZGl1
cyA9IG1fcmFkaXVzLT5jc3NUZXh0KCk7CiAKICAgICByZXR1cm4gYnVpbGRDaXJjbGVTdHJpbmco
cmFkaXVzLAotICAgICAgICBzZXJpYWxpemVQb3NpdGlvbk9mZnNldCgqbm9ybWFsaXplZENYLT5w
YWlyVmFsdWUoKSwgKm5vcm1hbGl6ZWRDWS0+cGFpclZhbHVlKCkpLAotICAgICAgICBzZXJpYWxp
emVQb3NpdGlvbk9mZnNldCgqbm9ybWFsaXplZENZLT5wYWlyVmFsdWUoKSwgKm5vcm1hbGl6ZWRD
WC0+cGFpclZhbHVlKCkpKTsKKyAgICAgICAgc2VyaWFsaXplUG9zaXRpb25PZmZzZXQobm9ybWFs
aXplZENYLCBub3JtYWxpemVkQ1kpLAorICAgICAgICBzZXJpYWxpemVQb3NpdGlvbk9mZnNldChu
b3JtYWxpemVkQ1ksIG5vcm1hbGl6ZWRDWCkpOwogfQogCiBib29sIENTU0Jhc2ljU2hhcGVDaXJj
bGU6OmVxdWFscyhjb25zdCBDU1NCYXNpY1NoYXBlJiBzaGFwZSkgY29uc3QKQEAgLTE1MCw4ICsx
NTUsOCBAQCBzdGF0aWMgU3RyaW5nIGJ1aWxkRWxsaXBzZVN0cmluZyhjb25zdCBTdHJpbmcmIHJh
ZGl1c1gsIGNvbnN0IFN0cmluZyYgcmFkaXVzWSwgYwogCiBTdHJpbmcgQ1NTQmFzaWNTaGFwZUVs
bGlwc2U6OmNzc1RleHQoKSBjb25zdAogewotICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gbm9y
bWFsaXplZENYID0gYnVpbGRTZXJpYWxpemFibGVQb3NpdGlvbk9mZnNldChtX2NlbnRlclguZ2V0
KCksIENTU1ZhbHVlTGVmdCk7Ci0gICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBub3JtYWxpemVk
Q1kgPSBidWlsZFNlcmlhbGl6YWJsZVBvc2l0aW9uT2Zmc2V0KG1fY2VudGVyWS5nZXQoKSwgQ1NT
VmFsdWVUb3ApOworICAgIFJlZjxDU1NWYWx1ZVBhaXI+IG5vcm1hbGl6ZWRDWCA9IGJ1aWxkU2Vy
aWFsaXphYmxlUG9zaXRpb25PZmZzZXQobV9jZW50ZXJYLmdldCgpLCBDU1NWYWx1ZUxlZnQpOwor
ICAgIFJlZjxDU1NWYWx1ZVBhaXI+IG5vcm1hbGl6ZWRDWSA9IGJ1aWxkU2VyaWFsaXphYmxlUG9z
aXRpb25PZmZzZXQobV9jZW50ZXJZLmdldCgpLCBDU1NWYWx1ZVRvcCk7CiAKICAgICBTdHJpbmcg
cmFkaXVzWDsKICAgICBTdHJpbmcgcmFkaXVzWTsKQEAgLTE2NSw4ICsxNzAsOCBAQCBTdHJpbmcg
Q1NTQmFzaWNTaGFwZUVsbGlwc2U6OmNzc1RleHQoKSBjb25zdAogICAgICAgICB9CiAgICAgfQog
ICAgIHJldHVybiBidWlsZEVsbGlwc2VTdHJpbmcocmFkaXVzWCwgcmFkaXVzWSwKLSAgICAgICAg
c2VyaWFsaXplUG9zaXRpb25PZmZzZXQoKm5vcm1hbGl6ZWRDWC0+cGFpclZhbHVlKCksICpub3Jt
YWxpemVkQ1ktPnBhaXJWYWx1ZSgpKSwKLSAgICAgICAgc2VyaWFsaXplUG9zaXRpb25PZmZzZXQo
Km5vcm1hbGl6ZWRDWS0+cGFpclZhbHVlKCksICpub3JtYWxpemVkQ1gtPnBhaXJWYWx1ZSgpKSk7
CisgICAgICAgIHNlcmlhbGl6ZVBvc2l0aW9uT2Zmc2V0KG5vcm1hbGl6ZWRDWCwgbm9ybWFsaXpl
ZENZKSwKKyAgICAgICAgc2VyaWFsaXplUG9zaXRpb25PZmZzZXQobm9ybWFsaXplZENZLCBub3Jt
YWxpemVkQ1gpKTsKIH0KIAogYm9vbCBDU1NCYXNpY1NoYXBlRWxsaXBzZTo6ZXF1YWxzKGNvbnN0
IENTU0Jhc2ljU2hhcGUmIHNoYXBlKSBjb25zdApAQCAtMzM5LDEyICszNDQsMTEgQEAgc3RhdGlj
IFN0cmluZyBidWlsZEluc2V0U3RyaW5nKGNvbnN0IFN0cmluZyYgdG9wLCBjb25zdCBTdHJpbmcm
IHJpZ2h0LCBjb25zdCBTdHIKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVDb3JuZXJSYWRpdXNXaWR0aEFuZEhlaWdodChDU1NQcmlt
aXRpdmVWYWx1ZSogY29ybmVyLCBTdHJpbmcmIHdpZHRoLCBTdHJpbmcmIGhlaWdodCkKK3N0YXRp
YyBpbmxpbmUgdm9pZCB1cGRhdGVDb3JuZXJSYWRpdXNXaWR0aEFuZEhlaWdodChDU1NWYWx1ZVBh
aXIqIHJhZGl1cywgU3RyaW5nJiB3aWR0aCwgU3RyaW5nJiBoZWlnaHQpCiB7Ci0gICAgaWYgKCFj
b3JuZXIpCisgICAgaWYgKCFyYWRpdXMpCiAgICAgICAgIHJldHVybjsKIAotICAgIFBhaXIqIHJh
ZGl1cyA9IGNvcm5lci0+cGFpclZhbHVlKCk7CiAgICAgd2lkdGggPSByYWRpdXMtPmZpcnN0KCkg
PyByYWRpdXMtPmZpcnN0KCktPmNzc1RleHQoKSA6ICIwIl9zdHI7CiAgICAgaWYgKHJhZGl1cy0+
c2Vjb25kKCkpCiAgICAgICAgIGhlaWdodCA9IHJhZGl1cy0+c2Vjb25kKCktPmNzc1RleHQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmgKaW5kZXggMTA1YzQ2MDk0MWQ2NzQ0ZTU3YmU3
YTM1ZDZiMDRmYzczZmFiYmJlYy4uYWM2YTE5NDc5Y2Q4ZDQ4ZDk2YWRhNTQxY2RhMzcxNzA1YThm
MjdkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmgKQEAgLTI5LDYgKzI5LDcgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDU1NWYWx1ZVBhaXIuaCIKICNpbmNsdWRlICJX
aW5kUnVsZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVHlwZUNh
c3RzLmg+CkBAIC0zOCw2ICszOSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENT
U1ByaW1pdGl2ZVZhbHVlOworY2xhc3MgQ1NTVmFsdWU7CiBjbGFzcyBTVkdQYXRoQnl0ZVN0cmVh
bTsKIAogY2xhc3MgQ1NTQmFzaWNTaGFwZSA6IHB1YmxpYyBSZWZDb3VudGVkPENTU0Jhc2ljU2hh
cGU+IHsKQEAgLTcxLDEwICs3MywxMCBAQCBwdWJsaWM6CiAgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IGJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fYm90dG9tLmdldCgpOyB9CiAgICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIGxlZnQoKSBjb25zdCB7IHJldHVybiBtX2xlZnQuZ2V0KCk7IH0KIAotICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiB0b3BMZWZ0UmFkaXVzKCkgY29uc3QgeyByZXR1cm4gbV90b3BMZWZ0
UmFkaXVzLmdldCgpOyB9Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHRvcFJpZ2h0UmFkaXVzKCkg
Y29uc3QgeyByZXR1cm4gbV90b3BSaWdodFJhZGl1cy5nZXQoKTsgfQotICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBib3R0b21SaWdodFJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIG1fYm90dG9tUmlnaHRS
YWRpdXMuZ2V0KCk7IH0KLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogYm90dG9tTGVmdFJhZGl1cygp
IGNvbnN0IHsgcmV0dXJuIG1fYm90dG9tTGVmdFJhZGl1cy5nZXQoKTsgfQorICAgIENTU1ZhbHVl
UGFpciogdG9wTGVmdFJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIG1fdG9wTGVmdFJhZGl1cy5nZXQo
KTsgfQorICAgIENTU1ZhbHVlUGFpciogdG9wUmlnaHRSYWRpdXMoKSBjb25zdCB7IHJldHVybiBt
X3RvcFJpZ2h0UmFkaXVzLmdldCgpOyB9CisgICAgQ1NTVmFsdWVQYWlyKiBib3R0b21SaWdodFJh
ZGl1cygpIGNvbnN0IHsgcmV0dXJuIG1fYm90dG9tUmlnaHRSYWRpdXMuZ2V0KCk7IH0KKyAgICBD
U1NWYWx1ZVBhaXIqIGJvdHRvbUxlZnRSYWRpdXMoKSBjb25zdCB7IHJldHVybiBtX2JvdHRvbUxl
ZnRSYWRpdXMuZ2V0KCk7IH0KIAogICAgIHZvaWQgc2V0VG9wKFJlZjxDU1NQcmltaXRpdmVWYWx1
ZT4mJiB0b3ApIHsgbV90b3AgPSBXVEZNb3ZlKHRvcCk7IH0KICAgICB2b2lkIHNldFJpZ2h0KFJl
ZjxDU1NQcmltaXRpdmVWYWx1ZT4mJiByaWdodCkgeyBtX3JpZ2h0ID0gV1RGTW92ZShyaWdodCk7
IH0KQEAgLTEwNCwxMCArMTA2LDEwIEBAIHB1YmxpYzoKICAgICAgICAgdXBkYXRlU2hhcGVTaXpl
NFZhbHVlcyhXVEZNb3ZlKHZhbHVlMSksIHZhbHVlMi5jb3B5UmVmKCksIFdURk1vdmUodmFsdWUz
KSwgdmFsdWUyLmNvcHlSZWYoKSk7CiAgICAgfQogCi0gICAgdm9pZCBzZXRUb3BMZWZ0UmFkaXVz
KFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mJiByYWRpdXMpIHsgbV90b3BMZWZ0UmFkaXVzID0g
V1RGTW92ZShyYWRpdXMpOyB9Ci0gICAgdm9pZCBzZXRUb3BSaWdodFJhZGl1cyhSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+JiYgcmFkaXVzKSB7IG1fdG9wUmlnaHRSYWRpdXMgPSBXVEZNb3ZlKHJh
ZGl1cyk7IH0KLSAgICB2b2lkIHNldEJvdHRvbVJpZ2h0UmFkaXVzKFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4mJiByYWRpdXMpIHsgbV9ib3R0b21SaWdodFJhZGl1cyA9IFdURk1vdmUocmFkaXVz
KTsgfQotICAgIHZvaWQgc2V0Qm90dG9tTGVmdFJhZGl1cyhSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+JiYgcmFkaXVzKSB7IG1fYm90dG9tTGVmdFJhZGl1cyA9IFdURk1vdmUocmFkaXVzKTsgfQor
ICAgIHZvaWQgc2V0VG9wTGVmdFJhZGl1cyhSZWZQdHI8Q1NTVmFsdWVQYWlyPiYmIHJhZGl1cykg
eyBtX3RvcExlZnRSYWRpdXMgPSBXVEZNb3ZlKHJhZGl1cyk7IH0KKyAgICB2b2lkIHNldFRvcFJp
Z2h0UmFkaXVzKFJlZlB0cjxDU1NWYWx1ZVBhaXI+JiYgcmFkaXVzKSB7IG1fdG9wUmlnaHRSYWRp
dXMgPSBXVEZNb3ZlKHJhZGl1cyk7IH0KKyAgICB2b2lkIHNldEJvdHRvbVJpZ2h0UmFkaXVzKFJl
ZlB0cjxDU1NWYWx1ZVBhaXI+JiYgcmFkaXVzKSB7IG1fYm90dG9tUmlnaHRSYWRpdXMgPSBXVEZN
b3ZlKHJhZGl1cyk7IH0KKyAgICB2b2lkIHNldEJvdHRvbUxlZnRSYWRpdXMoUmVmUHRyPENTU1Zh
bHVlUGFpcj4mJiByYWRpdXMpIHsgbV9ib3R0b21MZWZ0UmFkaXVzID0gV1RGTW92ZShyYWRpdXMp
OyB9CiAKIHByaXZhdGU6CiAgICAgQ1NTQmFzaWNTaGFwZUluc2V0KCkgPSBkZWZhdWx0OwpAQCAt
MTIxLDIyICsxMjMsMjIgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IG1fYm90dG9tOwogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9sZWZ0OwogCi0gICAg
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBtX3RvcExlZnRSYWRpdXM7Ci0gICAgUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiBtX3RvcFJpZ2h0UmFkaXVzOwotICAgIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gbV9ib3R0b21SaWdodFJhZGl1czsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IG1fYm90dG9tTGVmdFJhZGl1czsKKyAgICBSZWZQdHI8Q1NTVmFsdWVQYWlyPiBtX3RvcExl
ZnRSYWRpdXM7CisgICAgUmVmUHRyPENTU1ZhbHVlUGFpcj4gbV90b3BSaWdodFJhZGl1czsKKyAg
ICBSZWZQdHI8Q1NTVmFsdWVQYWlyPiBtX2JvdHRvbVJpZ2h0UmFkaXVzOworICAgIFJlZlB0cjxD
U1NWYWx1ZVBhaXI+IG1fYm90dG9tTGVmdFJhZGl1czsKIH07CiAKIGNsYXNzIENTU0Jhc2ljU2hh
cGVDaXJjbGUgZmluYWwgOiBwdWJsaWMgQ1NTQmFzaWNTaGFwZSB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxDU1NCYXNpY1NoYXBlQ2lyY2xlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IENTU0Jhc2ljU2hhcGVDaXJjbGUpOyB9CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogY2Vu
dGVyWCgpIGNvbnN0IHsgcmV0dXJuIG1fY2VudGVyWC5nZXQoKTsgfQotICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBjZW50ZXJZKCkgY29uc3QgeyByZXR1cm4gbV9jZW50ZXJZLmdldCgpOyB9CisgICAg
Q1NTVmFsdWUqIGNlbnRlclgoKSBjb25zdCB7IHJldHVybiBtX2NlbnRlclguZ2V0KCk7IH0KKyAg
ICBDU1NWYWx1ZSogY2VudGVyWSgpIGNvbnN0IHsgcmV0dXJuIG1fY2VudGVyWS5nZXQoKTsgfQog
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiByYWRpdXMoKSBjb25zdCB7IHJldHVybiBtX3JhZGl1cy5n
ZXQoKTsgfQogCi0gICAgdm9pZCBzZXRDZW50ZXJYKFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4mJiBj
ZW50ZXJYKSB7IG1fY2VudGVyWCA9IFdURk1vdmUoY2VudGVyWCk7IH0KLSAgICB2b2lkIHNldENl
bnRlclkoUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiYmIGNlbnRlclkpIHsgbV9jZW50ZXJZID0gV1RG
TW92ZShjZW50ZXJZKTsgfQorICAgIHZvaWQgc2V0Q2VudGVyWChSZWY8Q1NTVmFsdWU+JiYgY2Vu
dGVyWCkgeyBtX2NlbnRlclggPSBXVEZNb3ZlKGNlbnRlclgpOyB9CisgICAgdm9pZCBzZXRDZW50
ZXJZKFJlZjxDU1NWYWx1ZT4mJiBjZW50ZXJZKSB7IG1fY2VudGVyWSA9IFdURk1vdmUoY2VudGVy
WSk7IH0KICAgICB2b2lkIHNldFJhZGl1cyhSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+JiYgcmFkaXVz
KSB7IG1fcmFkaXVzID0gV1RGTW92ZShyYWRpdXMpOyB9CiAKIHByaXZhdGU6CkBAIC0xNDYsOCAr
MTQ4LDggQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0IGZpbmFsOwogICAg
IGJvb2wgZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmKSBjb25zdCBmaW5hbDsKIAotICAgIFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9jZW50ZXJYOwotICAgIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gbV9jZW50ZXJZOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gbV9jZW50ZXJYOworICAg
IFJlZlB0cjxDU1NWYWx1ZT4gbV9jZW50ZXJZOwogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gbV9yYWRpdXM7CiB9OwogCkBAIC0xNTUsMTMgKzE1NywxMyBAQCBjbGFzcyBDU1NCYXNpY1No
YXBlRWxsaXBzZSBmaW5hbCA6IHB1YmxpYyBDU1NCYXNpY1NoYXBlIHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPENTU0Jhc2ljU2hhcGVFbGxpcHNlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IENTU0Jhc2ljU2hhcGVFbGxpcHNlKTsgfQogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IGNlbnRlclgoKSBjb25zdCB7IHJldHVybiBtX2NlbnRlclguZ2V0KCk7IH0KLSAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogY2VudGVyWSgpIGNvbnN0IHsgcmV0dXJuIG1fY2VudGVyWS5nZXQoKTsgfQor
ICAgIENTU1ZhbHVlKiBjZW50ZXJYKCkgY29uc3QgeyByZXR1cm4gbV9jZW50ZXJYLmdldCgpOyB9
CisgICAgQ1NTVmFsdWUqIGNlbnRlclkoKSBjb25zdCB7IHJldHVybiBtX2NlbnRlclkuZ2V0KCk7
IH0KICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcmFkaXVzWCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFk
aXVzWC5nZXQoKTsgfQogICAgIENTU1ByaW1pdGl2ZVZhbHVlKiByYWRpdXNZKCkgY29uc3QgeyBy
ZXR1cm4gbV9yYWRpdXNZLmdldCgpOyB9CiAKLSAgICB2b2lkIHNldENlbnRlclgoUmVmPENTU1By
aW1pdGl2ZVZhbHVlPiYmIGNlbnRlclgpIHsgbV9jZW50ZXJYID0gV1RGTW92ZShjZW50ZXJYKTsg
fQotICAgIHZvaWQgc2V0Q2VudGVyWShSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+JiYgY2VudGVyWSkg
eyBtX2NlbnRlclkgPSBXVEZNb3ZlKGNlbnRlclkpOyB9CisgICAgdm9pZCBzZXRDZW50ZXJYKFJl
ZjxDU1NWYWx1ZT4mJiBjZW50ZXJYKSB7IG1fY2VudGVyWCA9IFdURk1vdmUoY2VudGVyWCk7IH0K
KyAgICB2b2lkIHNldENlbnRlclkoUmVmPENTU1ZhbHVlPiYmIGNlbnRlclkpIHsgbV9jZW50ZXJZ
ID0gV1RGTW92ZShjZW50ZXJZKTsgfQogICAgIHZvaWQgc2V0UmFkaXVzWChSZWY8Q1NTUHJpbWl0
aXZlVmFsdWU+JiYgcmFkaXVzWCkgeyBtX3JhZGl1c1ggPSBXVEZNb3ZlKHJhZGl1c1gpOyB9CiAg
ICAgdm9pZCBzZXRSYWRpdXNZKFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4mJiByYWRpdXNZKSB7IG1f
cmFkaXVzWSA9IFdURk1vdmUocmFkaXVzWSk7IH0KIApAQCAtMTcyLDggKzE3NCw4IEBAIHByaXZh
dGU6CiAgICAgU3RyaW5nIGNzc1RleHQoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGVxdWFscyhj
b25zdCBDU1NCYXNpY1NoYXBlJikgY29uc3QgZmluYWw7CiAKLSAgICBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IG1fY2VudGVyWDsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IG1fY2Vu
dGVyWTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IG1fY2VudGVyWDsKKyAgICBSZWZQdHI8Q1NTVmFs
dWU+IG1fY2VudGVyWTsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IG1fcmFkaXVzWDsK
ICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IG1fcmFkaXVzWTsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKaW5kZXggZTIxMWFlZDFmZTM5NDViMzVm
ZjZjM2Y1Y2Q0OTRjOWFkOGJiYWQ3Ni4uOWE0ZmMzZmI2NzViN2ZlYzAwOGZhNzM3MGQ5YWU3ZjAw
NWEzOThmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcApA
QCAtMjExLDcgKzIxMSw2IEBAIHN0YXRpYyBib29sIGhhc0RvdWJsZVZhbHVlKENTU1VuaXRUeXBl
IHR5cGUpCiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NPVU5URVI6CiAgICAgY2FzZSBDU1NV
bml0VHlwZTo6Q1NTX1JFQ1Q6CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JHQkNPTE9SOgot
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QQUlSOgogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNT
U19VTklDT0RFX1JBTkdFOgogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DT1VOVEVSX05BTUU6
CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1NIQVBFOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCBjOWNiMmNlNzA2YjZj
MDIwOGJhNjgzYTU3NTRiNjFlM2RlYjliZTZiLi5kZjQ1OWU3OGEwMGNjNDhmYjFmYmMwOWNhYTZi
M2ZkNWZiZGE3MDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIkNTU1NoYWRv
d1ZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oIgogI2luY2x1ZGUg
IkNTU1ZhbHVlTGlzdC5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlUGFpci5oIgogI2luY2x1ZGUgIkNT
U1ZhbHVlUG9vbC5oIgogI2luY2x1ZGUgIkNvbXBvc2VkVHJlZUFuY2VzdG9ySXRlcmF0b3IuaCIK
ICNpbmNsdWRlICJDb250ZW50RGF0YS5oIgpAQCAtNTcsNyArNTgsNiBAQAogI2luY2x1ZGUgIkZv
bnRTZWxlY3Rpb25WYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJGb250VGFnZ2VkU2V0dGluZ3Mu
aCIKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKLSNpbmNsdWRlICJQYWlyLmgiCiAjaW5j
bHVkZSAiUXVvdGVzRGF0YS5oIgogI2luY2x1ZGUgIlJlY3QuaCIKICNpbmNsdWRlICJSZW5kZXJC
bG9jay5oIgpAQCAtMjE5LDcgKzIxOSw3IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHZhbHVlRm9y
TmluZVBpZWNlSW1hZ2VSZXBlYXQoY29uc3QgTmluZVBpZWNlSW1hZ2UmIGltYWdlKQogICAgICAg
ICB2ZXJ0aWNhbFJlcGVhdCA9IGhvcml6b250YWxSZXBlYXQuY29weVJlZigpOwogICAgIGVsc2UK
ICAgICAgICAgdmVydGljYWxSZXBlYXQgPSBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZh
bHVlKHZhbHVlRm9yUmVwZWF0UnVsZShpbWFnZS52ZXJ0aWNhbFJ1bGUoKSkpOwotICAgIHJldHVy
biBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoUGFpcjo6Y3JlYXRlKFdURk1vdmUoaG9yaXpvbnRh
bFJlcGVhdCksIFdURk1vdmUodmVydGljYWxSZXBlYXQpKSk7CisgICAgcmV0dXJuIENTU1ZhbHVl
UGFpcjo6Y3JlYXRlKFdURk1vdmUoaG9yaXpvbnRhbFJlcGVhdCksIFdURk1vdmUodmVydGljYWxS
ZXBlYXQpKTsKIH0KIAogc3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JOaW5lUGllY2VJbWFn
ZShjb25zdCBOaW5lUGllY2VJbWFnZSYgaW1hZ2UpCkBAIC0zNTMzLDcgKzM1MzMsNyBAQCBSZWZQ
dHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yUHJvcGVydHlJblN0
eWxlKGNvbnN0IFJlbmRlclN0eQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SW5pdGlh
bExldHRlcjogewogICAgICAgICAgICAgYXV0byBkcm9wID0gIXN0eWxlLmluaXRpYWxMZXR0ZXJE
cm9wKCkgPyBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9ybWFs
KSA6IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5pbml0aWFsTGV0dGVyRHJvcCgpLCBD
U1NVbml0VHlwZTo6Q1NTX05VTUJFUik7CiAgICAgICAgICAgICBhdXRvIHNpemUgPSAhc3R5bGUu
aW5pdGlhbExldHRlckhlaWdodCgpID8gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShDU1NWYWx1ZU5vcm1hbCkgOiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUuaW5pdGlh
bExldHRlckhlaWdodCgpLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7Ci0gICAgICAgICAgICBy
ZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKFBhaXI6OmNyZWF0ZShXVEZNb3ZlKGRyb3Ap
LCBXVEZNb3ZlKHNpemUpKSk7CisgICAgICAgICAgICByZXR1cm4gQ1NTVmFsdWVQYWlyOjpjcmVh
dGUoV1RGTW92ZShkcm9wKSwgV1RGTW92ZShzaXplKSk7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlOgogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NH
cmFkaWVudFZhbHVlLmNwcAppbmRleCBmMmYxZDBhNWNiMzcxZGRmYTFkZjQ0OGE1YzI3MmFlZWY0
MjVkNTQ2Li4xNWNmYjBhYjllMmI5OWE5YWIzYWJkMTY5NDdkMTY0MzgzNGZjZWRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCkBAIC0yOSwxMCArMjksMTAgQEAKICNp
bmNsdWRlICJDU1NDYWxjdWxhdGlvblZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTVG9MZW5ndGhDb252
ZXJzaW9uRGF0YS5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKKyNpbmNsdWRlICJD
U1NWYWx1ZVBhaXIuaCIKICNpbmNsdWRlICJDb2xvckJsZW5kaW5nLmgiCiAjaW5jbHVkZSAiR3Jh
ZGllbnRJbWFnZS5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgotI2luY2x1ZGUgIlBh
aXIuaCIKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5o
IgogI2luY2x1ZGUgIlN0eWxlQnVpbGRlclN0YXRlLmgiCkBAIC01NjMsNyArNTYzLDcgQEAgR3Jh
ZGllbnQ6OkNvbG9yU3RvcFZlY3RvciBDU1NHcmFkaWVudFZhbHVlOjpjb21wdXRlU3RvcHMoR3Jh
ZGllbnRBZGFwdGVyJiBncmFkaWUKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgZmxv
YXQgcG9zaXRpb25Gcm9tVmFsdWUoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlLCBjb25z
dCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgY29uc3QgRmxvYXRT
aXplJiBzaXplLCBib29sIGlzSG9yaXpvbnRhbCkKK3N0YXRpYyBmbG9hdCBwb3NpdGlvbkZyb21W
YWx1ZShjb25zdCBDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRh
dGEmIGNvbnZlcnNpb25EYXRhLCBjb25zdCBGbG9hdFNpemUmIHNpemUsIGJvb2wgaXNIb3Jpem9u
dGFsKQogewogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiAwOwpAQCAtNTcyLDI4ICs1
NzIsMzUgQEAgc3RhdGljIGZsb2F0IHBvc2l0aW9uRnJvbVZhbHVlKGNvbnN0IENTU1ByaW1pdGl2
ZVZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGgKICAgICBmbG9hdCBzaWduID0gMTsKICAg
ICBmbG9hdCBlZGdlRGlzdGFuY2UgPSBpc0hvcml6b250YWwgPyBzaXplLndpZHRoKCkgOiBzaXpl
LmhlaWdodCgpOwogCisgICAgY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVl
ID0gbnVsbHB0cjsKICAgICAvLyBJbiB0aGlzIGNhc2UgdGhlIGNlbnRlciBvZiB0aGUgZ3JhZGll
bnQgaXMgZ2l2ZW4gcmVsYXRpdmUgdG8gYW4gZWRnZSBpbiB0aGUKICAgICAvLyBmb3JtIG9mOiBb
IHRvcCB8IGJvdHRvbSB8IHJpZ2h0IHwgbGVmdCBdIFsgPHBlcmNlbnRhZ2U+IHwgPGxlbmd0aD4g
XS4KLSAgICBpZiAodmFsdWUtPmlzUGFpcigpKSB7Ci0gICAgICAgIENTU1ZhbHVlSUQgb3JpZ2lu
SUQgPSB2YWx1ZS0+cGFpclZhbHVlKCktPmZpcnN0KCktPnZhbHVlSUQoKTsKKyAgICBpZiAodmFs
dWUtPmlzVmFsdWVQYWlyKCkpIHsKKyAgICAgICAgYXV0byYgcGFpciA9IGRvd25jYXN0PENTU1Zh
bHVlUGFpcj4oKnZhbHVlKTsKKyAgICAgICAgQ1NTVmFsdWVJRCBvcmlnaW5JRCA9IHBhaXIuZmly
c3RBc1ZhbHVlSUQoKTsKICAgICAgICAgaWYgKG9yaWdpbklEID09IENTU1ZhbHVlUmlnaHQgfHwg
b3JpZ2luSUQgPT0gQ1NTVmFsdWVCb3R0b20pIHsKICAgICAgICAgICAgIC8vIEZvciByaWdodC9i
b3R0b20sIHRoZSBvZmZzZXQgaXMgcmVsYXRpdmUgdG8gdGhlIGZhciBlZGdlLgogICAgICAgICAg
ICAgb3JpZ2luID0gZWRnZURpc3RhbmNlOwogICAgICAgICAgICAgc2lnbiA9IC0xOwogICAgICAg
ICB9Ci0gICAgICAgIHZhbHVlID0gdmFsdWUtPnBhaXJWYWx1ZSgpLT5zZWNvbmQoKTsKKyAgICAg
ICAgcHJpbWl0aXZlVmFsdWUgPSBwYWlyLnNlY29uZEFzUHJpbWl0aXZlKCkuZ2V0KCk7CisgICAg
fSBlbHNlIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICBwcmltaXRpdmVW
YWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CisgICAgZWxzZSB7Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQog
Ci0gICAgaWYgKHZhbHVlLT5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gb3JpZ2luICsgc2ln
biAqIHZhbHVlLT5mbG9hdFZhbHVlKCkgKiBjb252ZXJzaW9uRGF0YS56b29tKCk7CisgICAgaWYg
KHByaW1pdGl2ZVZhbHVlLT5pc051bWJlcigpKQorICAgICAgICByZXR1cm4gb3JpZ2luICsgc2ln
biAqIHByaW1pdGl2ZVZhbHVlLT5mbG9hdFZhbHVlKCkgKiBjb252ZXJzaW9uRGF0YS56b29tKCk7
CiAKLSAgICBpZiAodmFsdWUtPmlzUGVyY2VudGFnZSgpKQotICAgICAgICByZXR1cm4gb3JpZ2lu
ICsgc2lnbiAqIHZhbHVlLT5mbG9hdFZhbHVlKCkgLyAxMDAgKiBlZGdlRGlzdGFuY2U7CisgICAg
aWYgKHByaW1pdGl2ZVZhbHVlLT5pc1BlcmNlbnRhZ2UoKSkKKyAgICAgICAgcmV0dXJuIG9yaWdp
biArIHNpZ24gKiBwcmltaXRpdmVWYWx1ZS0+ZmxvYXRWYWx1ZSgpIC8gMTAwICogZWRnZURpc3Rh
bmNlOwogCi0gICAgaWYgKHZhbHVlLT5pc0NhbGN1bGF0ZWRQZXJjZW50YWdlV2l0aExlbmd0aCgp
KQotICAgICAgICByZXR1cm4gb3JpZ2luICsgc2lnbiAqIHZhbHVlLT5jc3NDYWxjVmFsdWUoKS0+
Y3JlYXRlQ2FsY3VsYXRpb25WYWx1ZShjb252ZXJzaW9uRGF0YSktPmV2YWx1YXRlKGVkZ2VEaXN0
YW5jZSk7CisgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc0NhbGN1bGF0ZWRQZXJjZW50YWdlV2l0
aExlbmd0aCgpKQorICAgICAgICByZXR1cm4gb3JpZ2luICsgc2lnbiAqIHByaW1pdGl2ZVZhbHVl
LT5jc3NDYWxjVmFsdWUoKS0+Y3JlYXRlQ2FsY3VsYXRpb25WYWx1ZShjb252ZXJzaW9uRGF0YSkt
PmV2YWx1YXRlKGVkZ2VEaXN0YW5jZSk7CiAKLSAgICBzd2l0Y2ggKHZhbHVlLT52YWx1ZUlEKCkp
IHsKKyAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT52YWx1ZUlEKCkpIHsKICAgICBjYXNlIENT
U1ZhbHVlVG9wOgogICAgICAgICBBU1NFUlQoIWlzSG9yaXpvbnRhbCk7CiAgICAgICAgIHJldHVy
biAwOwpAQCAtNjEyLDExICs2MTksMTEgQEAgc3RhdGljIGZsb2F0IHBvc2l0aW9uRnJvbVZhbHVl
KGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGgKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCi0gICAgcmV0dXJuIG9yaWdpbiArIHNpZ24gKiB2YWx1ZS0+Y29t
cHV0ZUxlbmd0aDxmbG9hdD4oY29udmVyc2lvbkRhdGEpOworICAgIHJldHVybiBvcmlnaW4gKyBz
aWduICogcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KGNvbnZlcnNpb25EYXRh
KTsKIH0KIAogLy8gUmVzb2x2ZSBwb2ludHMvcmFkaWkgdG8gZnJvbnQgZW5kIHZhbHVlcy4KLXN0
YXRpYyBGbG9hdFBvaW50IGNvbXB1dGVFbmRQb2ludChjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSog
aG9yaXpvbnRhbCwgY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUqIHZlcnRpY2FsLCBjb25zdCBDU1NU
b0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgY29uc3QgRmxvYXRTaXplJiBz
aXplKQorc3RhdGljIEZsb2F0UG9pbnQgY29tcHV0ZUVuZFBvaW50KGNvbnN0IENTU1ZhbHVlKiBo
b3Jpem9udGFsLCBjb25zdCBDU1NWYWx1ZSogdmVydGljYWwsIGNvbnN0IENTU1RvTGVuZ3RoQ29u
dmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiB7CiAg
ICAgcmV0dXJuIHsgcG9zaXRpb25Gcm9tVmFsdWUoaG9yaXpvbnRhbCwgY29udmVyc2lvbkRhdGEs
IHNpemUsIHRydWUpLCBwb3NpdGlvbkZyb21WYWx1ZSh2ZXJ0aWNhbCwgY29udmVyc2lvbkRhdGEs
IHNpemUsIGZhbHNlKSB9OwogfQpAQCAtNzEzLDEwICs3MjAsMTEgQEAgU3RyaW5nIENTU0xpbmVh
ckdyYWRpZW50VmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogCiAgICAgICAgIGJvb2wgd3Jv
dGVTb21ldGhpbmcgPSBmYWxzZTsKIAorICAgICAgICBhdXRvIGZpcnN0WVZhbHVlSUQgPSBmaXJz
dFkoKSAmJiBmaXJzdFkoKS0+aXNQcmltaXRpdmVWYWx1ZSgpID8gZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KCpmaXJzdFkoKSkudmFsdWVJRCgpIDogQ1NTVmFsdWVJbnZhbGlkOwogICAgICAg
ICBpZiAobV9hbmdsZSAmJiBtX2FuZ2xlLT5jb21wdXRlRGVncmVlcygpICE9IDE4MCkgewogICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChtX2FuZ2xlLT5jc3NUZXh0KCkpOwogICAgICAgICAgICAg
d3JvdGVTb21ldGhpbmcgPSB0cnVlOwotICAgICAgICB9IGVsc2UgaWYgKChmaXJzdFgoKSB8fCBm
aXJzdFkoKSkgJiYgISghZmlyc3RYKCkgJiYgZmlyc3RZKCkgJiYgZmlyc3RZKCktPnZhbHVlSUQo
KSA9PSBDU1NWYWx1ZUJvdHRvbSkpIHsKKyAgICAgICAgfSBlbHNlIGlmICgoZmlyc3RYKCkgfHwg
Zmlyc3RZKCkpICYmICEoIWZpcnN0WCgpICYmIGZpcnN0WVZhbHVlSUQgPT0gQ1NTVmFsdWVCb3R0
b20pKSB7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgidG8gIik7CiAgICAgICAg
ICAgICBhcHBlbmRTcGFjZVNlcGFyYXRlZE9wdGlvbmFsQ1NTUHRyVGV4dChyZXN1bHQsIGZpcnN0
WCgpLCBmaXJzdFkoKSk7CiAgICAgICAgICAgICB3cm90ZVNvbWV0aGluZyA9IHRydWU7CkBAIC04
NDIsOSArODUwLDExIEBAIFJlZjxHcmFkaWVudD4gQ1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3Jl
YXRlR3JhZGllbnQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvCiAgICAgICAgICAgICAgICAg
Ly8gIk1hZ2ljIiBjb3JuZXJzLCBzbyB0aGUgNTAlIGxpbmUgdG91Y2hlcyB0d28gY29ybmVycy4K
ICAgICAgICAgICAgICAgICBmbG9hdCByaXNlID0gc2l6ZS53aWR0aCgpOwogICAgICAgICAgICAg
ICAgIGZsb2F0IHJ1biA9IHNpemUuaGVpZ2h0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKGZpcnN0
WCgpICYmIGZpcnN0WCgpLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVMZWZ0KQorICAgICAgICAgICAg
ICAgIGF1dG8gZmlyc3RYVmFsdWVJRCA9IGZpcnN0WCgpICYmIGZpcnN0WCgpLT5pc1ByaW1pdGl2
ZVZhbHVlKCkgPyBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKmZpcnN0WCgpKS52YWx1ZUlE
KCkgOiBDU1NWYWx1ZUludmFsaWQ7CisgICAgICAgICAgICAgICAgYXV0byBmaXJzdFlWYWx1ZUlE
ID0gZmlyc3RZKCkgJiYgZmlyc3RZKCktPmlzUHJpbWl0aXZlVmFsdWUoKSA/IGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPigqZmlyc3RZKCkpLnZhbHVlSUQoKSA6IENTU1ZhbHVlSW52YWxpZDsK
KyAgICAgICAgICAgICAgICBpZiAoZmlyc3RYVmFsdWVJRCA9PSBDU1NWYWx1ZUxlZnQpCiAgICAg
ICAgICAgICAgICAgICAgIHJ1biAqPSAtMTsKLSAgICAgICAgICAgICAgICBpZiAoZmlyc3RZKCkg
JiYgZmlyc3RZKCktPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUJvdHRvbSkKKyAgICAgICAgICAgICAg
ICBpZiAoZmlyc3RZVmFsdWVJRCA9PSBDU1NWYWx1ZUJvdHRvbSkKICAgICAgICAgICAgICAgICAg
ICAgcmlzZSAqPSAtMTsKICAgICAgICAgICAgICAgICAvLyBDb21wdXRlIGFuZ2xlLCBhbmQgZmxp
cCBpdCBiYWNrIHRvICJiZWFyaW5nIGFuZ2xlIiBkZWdyZWVzLgogICAgICAgICAgICAgICAgIGZs
b2F0IGFuZ2xlID0gOTAgLSByYWQyZGVnKGF0YW4yKHJpc2UsIHJ1bikpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NHcmFkaWVudFZhbHVlLmgKaW5kZXggNDA2OTc5ODQ2N2RlOGE4MmVkMzQ1MmY0MmRlNjRj
MDMyY2FlMWEzMy4uMzJlZDBlNTk0OTNhNGQ2OWZjYmE5MGJkODNjYjJlMTI2MGY5NTM5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCkBAIC01OSwxMCArNTksMTAgQEAgaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NHcmFkaWVudENvbG9yU3RvcCYgYSwgY29uc3Qg
Q1NTR3JhZGllbnRDb2xvclN0b3AKIAogY2xhc3MgQ1NTR3JhZGllbnRWYWx1ZSA6IHB1YmxpYyBD
U1NJbWFnZUdlbmVyYXRvclZhbHVlIHsKIHB1YmxpYzoKLSAgICB2b2lkIHNldEZpcnN0WChSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiYgdmFsdWUpIHsgbV9maXJzdFggPSBXVEZNb3ZlKHZhbHVl
KTsgfQotICAgIHZvaWQgc2V0Rmlyc3RZKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mJiB2YWx1
ZSkgeyBtX2ZpcnN0WSA9IFdURk1vdmUodmFsdWUpOyB9Ci0gICAgdm9pZCBzZXRTZWNvbmRYKFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mJiB2YWx1ZSkgeyBtX3NlY29uZFggPSBXVEZNb3ZlKHZh
bHVlKTsgfQotICAgIHZvaWQgc2V0U2Vjb25kWShSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiYg
dmFsdWUpIHsgbV9zZWNvbmRZID0gV1RGTW92ZSh2YWx1ZSk7IH0KKyAgICB2b2lkIHNldEZpcnN0
WChSZWZQdHI8Q1NTVmFsdWU+JiYgdmFsdWUpIHsgbV9maXJzdFggPSBXVEZNb3ZlKHZhbHVlKTsg
fQorICAgIHZvaWQgc2V0Rmlyc3RZKFJlZlB0cjxDU1NWYWx1ZT4mJiB2YWx1ZSkgeyBtX2ZpcnN0
WSA9IFdURk1vdmUodmFsdWUpOyB9CisgICAgdm9pZCBzZXRTZWNvbmRYKFJlZlB0cjxDU1NWYWx1
ZT4mJiB2YWx1ZSkgeyBtX3NlY29uZFggPSBXVEZNb3ZlKHZhbHVlKTsgfQorICAgIHZvaWQgc2V0
U2Vjb25kWShSZWZQdHI8Q1NTVmFsdWU+JiYgdmFsdWUpIHsgbV9zZWNvbmRZID0gV1RGTW92ZSh2
YWx1ZSk7IH0KICAgICB2b2lkIGFkZFN0b3AoQ1NTR3JhZGllbnRDb2xvclN0b3AmJiBzdG9wKSB7
IG1fc3RvcHMuYXBwZW5kKFdURk1vdmUoc3RvcCkpOyB9CiAgICAgdm9pZCBkb25lQWRkaW5nU3Rv
cHMoKSB7IG1fc3RvcHMuc2hyaW5rVG9GaXQoKTsgfQogICAgIGJvb2wgaGFzQXRMZWFzdFR3b1N0
b3BzKCkgY29uc3QgeyByZXR1cm4gbV9zdG9wcy5zaXplKCkgPj0gMjsgfQpAQCAtMTE2LDEwICsx
MTYsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIGhhc0NvbG9yRGVyaXZlZEZyb21FbGVtZW50KCkg
Y29uc3Q7CiAgICAgYm9vbCBpc0NhY2hlYWJsZSgpIGNvbnN0OwogCi0gICAgUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBtX2ZpcnN0WDsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IG1f
Zmlyc3RZOwotICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9zZWNvbmRYOwotICAgIFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9zZWNvbmRZOworICAgIFJlZlB0cjxDU1NWYWx1ZT4g
bV9maXJzdFg7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBtX2ZpcnN0WTsKKyAgICBSZWZQdHI8Q1NT
VmFsdWU+IG1fc2Vjb25kWDsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IG1fc2Vjb25kWTsKICAgICBW
ZWN0b3I8Q1NTR3JhZGllbnRDb2xvclN0b3AsIDI+IG1fc3RvcHM7CiAgICAgQ1NTR3JhZGllbnRU
eXBlIG1fZ3JhZGllbnRUeXBlOwogICAgIGJvb2wgbV9yZXBlYXRpbmcgeyBmYWxzZSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKaW5kZXggNTViZGY3Nzg1YjRmMGQ3
MjRjMzc2ZGQzMDI3MGYzMjU5YTlkOThmMS4uMjhmOTg1MzlkZWU2NzE5NzE0ZmQyYTJiYTBlODQy
OTczMWZiNTExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCkBA
IC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUu
aCIKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIk5vZGUuaCIKLSNpbmNsdWRl
ICJQYWlyLmgiCiAjaW5jbHVkZSAiUmVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAj
aW5jbHVkZSAiUmVuZGVyVmlldy5oIgpAQCAtOTMsNyArOTIsNiBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgaXNWYWxpZENTU1VuaXRUeXBlRm9yRG91YmxlQ29udmVyc2lvbihDU1NVbml0VHlwZSB1bml0
VHlwZSkKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ09VTlRFUl9OQU1FOgogICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkNTU19GT05UX0ZBTUlMWToKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
SURFTlQ6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BBSVI6CiAgICAgY2FzZSBDU1NVbml0
VHlwZTo6Q1NTX1BST1BFUlRZX0lEOgogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19RVUFEOgog
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19SRUNUOgpAQCAtMTQ0LDcgKzE0Miw2IEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCBpc1N0cmluZ1R5cGUoQ1NTVW5pdFR5cGUgdHlwZSkKICAgICBjYXNlIENT
U1VuaXRUeXBlOjpDU1NfTU06CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX01TOgogICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVI6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BB
SVI6CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BDOgogICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkNTU19QRVJDRU5UQUdFOgogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QUk9QRVJUWV9JRDoK
QEAgLTMwNiwxMiArMzAzLDYgQEAgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVl
KGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYgc3QKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIH0KIAotQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVl
KGNvbnN0IExlbmd0aFNpemUmIGxlbmd0aFNpemUsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkK
LSAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQotewotICAgIGluaXQobGVuZ3RoU2l6ZSwg
c3R5bGUpOwotfQotCiBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoU3RhdGlj
Q1NTVmFsdWVUYWcsIENTU1ZhbHVlSUQgdmFsdWVJRCkKICAgICA6IENTU1ByaW1pdGl2ZVZhbHVl
KHZhbHVlSUQpCiB7CkBAIC0zNzksMTMgKzM3MCw2IEBAIHZvaWQgQ1NTUHJpbWl0aXZlVmFsdWU6
OmluaXQoY29uc3QgTGVuZ3RoJiBsZW5ndGgpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9
CiAKLXZvaWQgQ1NTUHJpbWl0aXZlVmFsdWU6OmluaXQoY29uc3QgTGVuZ3RoU2l6ZSYgbGVuZ3Ro
U2l6ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQotewotICAgIHNldFByaW1pdGl2ZVVuaXRU
eXBlKENTU1VuaXRUeXBlOjpDU1NfUEFJUik7Ci0gICAgbV9oYXNDYWNoZWRDU1NUZXh0ID0gZmFs
c2U7Ci0gICAgbV92YWx1ZS5wYWlyID0gJlBhaXI6OmNyZWF0ZShjcmVhdGUobGVuZ3RoU2l6ZS53
aWR0aCwgc3R5bGUpLCBjcmVhdGUobGVuZ3RoU2l6ZS5oZWlnaHQsIHN0eWxlKSkubGVha1JlZigp
OwotfQotCiB2b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjppbml0KFJlZjxDb3VudGVyPiYmIGNvdW50
ZXIpCiB7CiAgICAgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGU6OkNTU19DT1VOVEVS
KTsKQEAgLTQwNywxMyArMzkxLDYgQEAgdm9pZCBDU1NQcmltaXRpdmVWYWx1ZTo6aW5pdChSZWY8
UXVhZD4mJiBxdWFkKQogICAgIG1fdmFsdWUucXVhZCA9ICZxdWFkLmxlYWtSZWYoKTsKIH0KIAot
dm9pZCBDU1NQcmltaXRpdmVWYWx1ZTo6aW5pdChSZWY8UGFpcj4mJiBwKQotewotICAgIHNldFBy
aW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfUEFJUik7Ci0gICAgbV9oYXNDYWNoZWRD
U1NUZXh0ID0gZmFsc2U7Ci0gICAgbV92YWx1ZS5wYWlyID0gJnAubGVha1JlZigpOwotfQotCiB2
b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjppbml0KFJlZjxDU1NCYXNpY1NoYXBlPiYmIHNoYXBlKQog
ewogICAgIHNldFByaW1pdGl2ZVVuaXRUeXBlKENTU1VuaXRUeXBlOjpDU1NfU0hBUEUpOwpAQCAt
NDU0LDkgKzQzMSw2IEBAIHZvaWQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNsZWFudXAoKQogICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19RVUFEOgogICAgICAgICBtX3ZhbHVlLnF1YWQtPmRlcmVmKCk7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QQUlSOgotICAgICAg
ICBtX3ZhbHVlLnBhaXItPmRlcmVmKCk7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkNTU19DQUxDOgogICAgICAgICBpZiAobV92YWx1ZS5jYWxjKQogICAgICAgICAgICAg
bV92YWx1ZS5jYWxjLT5kZXJlZigpOwpAQCAtOTkzLDcgKzk2Nyw2IEBAIFN0cmluZyBDU1NQcmlt
aXRpdmVWYWx1ZTo6dW5pdFR5cGVTdHJpbmcoQ1NTVW5pdFR5cGUgdW5pdFR5cGUpCiAgICAgICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DT1VOVEVSOgogICAgICAgICBjYXNlIENTU1VuaXRUeXBl
OjpDU1NfUkVDVDoKICAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JHQkNPTE9SOgotICAg
ICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUEFJUjoKICAgICAgICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q1NTX1VOSUNPREVfUkFOR0U6CiAgICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DT1VO
VEVSX05BTUU6CiAgICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19TSEFQRToKQEAgLTExMTYs
OCArMTA4OSw2IEBAIEFMV0FZU19JTkxJTkUgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpmb3Jt
YXROdW1iZXJGb3JDdXN0b21DU1NUZXh0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIHF1YWRWYWx1
ZSgpLT5jc3NUZXh0KCk7CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JHQkNPTE9SOgogICAg
ICAgICByZXR1cm4gc2VyaWFsaXphdGlvbkZvckNTUyhjb2xvcigpKTsKLSAgICBjYXNlIENTU1Vu
aXRUeXBlOjpDU1NfUEFJUjoKLSAgICAgICAgcmV0dXJuIHBhaXJWYWx1ZSgpLT5jc3NUZXh0KCk7
CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NBTEM6CiAgICAgICAgIGlmICghbV92YWx1ZS5j
YWxjKQogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjIwLDggKzExOTEsNiBAQCBib29sIENTU1By
aW1pdGl2ZVZhbHVlOjplcXVhbHMoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIG90aGVyKSBjb25z
dAogICAgICAgICByZXR1cm4gbV92YWx1ZS5xdWFkICYmIG90aGVyLm1fdmFsdWUucXVhZCAmJiBt
X3ZhbHVlLnF1YWQtPmVxdWFscygqb3RoZXIubV92YWx1ZS5xdWFkKTsKICAgICBjYXNlIENTU1Vu
aXRUeXBlOjpDU1NfUkdCQ09MT1I6CiAgICAgICAgIHJldHVybiBjb2xvcigpID09IG90aGVyLmNv
bG9yKCk7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BBSVI6Ci0gICAgICAgIHJldHVybiBt
X3ZhbHVlLnBhaXIgJiYgb3RoZXIubV92YWx1ZS5wYWlyICYmIG1fdmFsdWUucGFpci0+ZXF1YWxz
KCpvdGhlci5tX3ZhbHVlLnBhaXIpOwogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DQUxDOgog
ICAgICAgICByZXR1cm4gbV92YWx1ZS5jYWxjICYmIG90aGVyLm1fdmFsdWUuY2FsYyAmJiBtX3Zh
bHVlLmNhbGMtPmVxdWFscygqb3RoZXIubV92YWx1ZS5jYWxjKTsKICAgICBjYXNlIENTU1VuaXRU
eXBlOjpDU1NfU0hBUEU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCmluZGV4
IGQ2ODZjYzFiYTk1NzQyMTUwZTBjZDU2YzgwYTBhZDgxNjk2MGYyMDUuLjFiYjczMzVlMzQzN2Yz
ZDFlNGVlOWE4NzhmOGQ1ODEyZjVkNzQ1YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRp
dmVWYWx1ZS5oCkBAIC00MSw3ICs0MSw2IEBAIGNsYXNzIENvdW50ZXI7CiBjbGFzcyBEZXByZWNh
dGVkQ1NTT01QcmltaXRpdmVWYWx1ZTsKIGNsYXNzIEZvbnRDYXNjYWRlRGVzY3JpcHRpb247CiBj
bGFzcyBGb250TWV0cmljczsKLWNsYXNzIFBhaXI7CiBjbGFzcyBRdWFkOwogY2xhc3MgUkdCQ29s
b3I7CiBjbGFzcyBSZWN0OwpAQCAtOTcsNyArOTYsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1Bl
cmNlbnRhZ2UoKSBjb25zdCB7IHJldHVybiBwcmltaXRpdmVUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6
OkNTU19QRVJDRU5UQUdFOyB9CiAgICAgYm9vbCBpc1B4KCkgY29uc3QgeyByZXR1cm4gcHJpbWl0
aXZlVHlwZSgpID09IENTU1VuaXRUeXBlOjpDU1NfUFg7IH0KICAgICBib29sIGlzUmVjdCgpIGNv
bnN0IHsgcmV0dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19SRUNU
OyB9Ci0gICAgYm9vbCBpc1BhaXIoKSBjb25zdCB7IHJldHVybiBwcmltaXRpdmVVbml0VHlwZSgp
ID09IENTU1VuaXRUeXBlOjpDU1NfUEFJUjsgfQogICAgIGJvb2wgaXNQcm9wZXJ0eUlEKCkgY29u
c3QgeyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6Q1NTX1BST1BF
UlRZX0lEOyB9CiAgICAgYm9vbCBpc1JHQkNvbG9yKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZl
VW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6Q1NTX1JHQkNPTE9SOyB9CiAgICAgYm9vbCBpc1No
YXBlKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6
Q1NTX1NIQVBFOyB9CkBAIC0xMjcsNyArMTI1LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8
Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZShkb3VibGUgdmFsdWUsIENTU1VuaXRUeXBlIHR5cGUp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUsIHR5cGUpKTsg
fQogICAgIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZShjb25zdCBTdHJpbmcm
IHZhbHVlLCBDU1NVbml0VHlwZSB0eXBlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKHZhbHVlLCB0eXBlKSk7IH0KICAgICBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZh
bHVlPiBjcmVhdGUoY29uc3QgTGVuZ3RoJiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlLCBzdHlsZSkp
OyB9Ci0gICAgc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlKGNvbnN0IExlbmd0
aFNpemUmIHZhbHVlLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUsIHN0eWxlKSk7IH0KIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZShUJiYpOwog
CkBAIC0xNzUsNyArMTcyLDYgQEAgcHVibGljOgogICAgIENvdW50ZXIqIGNvdW50ZXJWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkgIT0gQ1NTVW5pdFR5cGU6OkNTU19D
T1VOVEVSID8gbnVsbHB0ciA6IG1fdmFsdWUuY291bnRlcjsgfQogICAgIENTU0NhbGNWYWx1ZSog
Y3NzQ2FsY1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUoKSAhPSBDU1NV
bml0VHlwZTo6Q1NTX0NBTEMgPyBudWxscHRyIDogbV92YWx1ZS5jYWxjOyB9CiAgICAgY29uc3Qg
Q1NTRm9udEZhbWlseSYgZm9udEZhbWlseSgpIGNvbnN0IHsgQVNTRVJUKHByaW1pdGl2ZVVuaXRU
eXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19GT05UX0ZBTUlMWSk7IHJldHVybiAqbV92YWx1ZS5m
b250RmFtaWx5OyB9Ci0gICAgUGFpciogcGFpclZhbHVlKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0
aXZlVW5pdFR5cGUoKSAhPSBDU1NVbml0VHlwZTo6Q1NTX1BBSVIgPyBudWxscHRyIDogbV92YWx1
ZS5wYWlyOyB9CiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKCkgY29uc3QgeyByZXR1cm4g
cHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6Q1NTX1BST1BFUlRZX0lEID8gbV92
YWx1ZS5wcm9wZXJ0eUlEIDogQ1NTUHJvcGVydHlJbnZhbGlkOyB9CiAgICAgUXVhZCogcXVhZFZh
bHVlKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUoKSAhPSBDU1NVbml0VHlwZTo6
Q1NTX1FVQUQgPyBudWxscHRyIDogbV92YWx1ZS5xdWFkOyB9CiAgICAgUmVjdCogcmVjdFZhbHVl
KCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUoKSAhPSBDU1NVbml0VHlwZTo6Q1NT
X1JFQ1QgPyBudWxscHRyIDogbV92YWx1ZS5yZWN0OyB9CkBAIC0yMTAsNyArMjA2LDYgQEAgcHJp
dmF0ZToKICAgICBDU1NQcmltaXRpdmVWYWx1ZShjb25zdCBDb2xvciYpOwogICAgIENTU1ByaW1p
dGl2ZVZhbHVlKGNvbnN0IExlbmd0aCYpOwogICAgIENTU1ByaW1pdGl2ZVZhbHVlKGNvbnN0IExl
bmd0aCYsIGNvbnN0IFJlbmRlclN0eWxlJik7Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUoY29uc3Qg
TGVuZ3RoU2l6ZSYsIGNvbnN0IFJlbmRlclN0eWxlJik7CiAgICAgQ1NTUHJpbWl0aXZlVmFsdWUo
Y29uc3QgU3RyaW5nJiwgQ1NTVW5pdFR5cGUpOwogICAgIENTU1ByaW1pdGl2ZVZhbHVlKGRvdWJs
ZSwgQ1NTVW5pdFR5cGUpOwogCkBAIC0yMjcsMTEgKzIyMiw5IEBAIHByaXZhdGU6CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gb3BlcmF0b3IgVCooKTsgLy8gY29tcGlsZS10aW1lIGd1YXJkCiAK
ICAgICB2b2lkIGluaXQoY29uc3QgTGVuZ3RoJik7Ci0gICAgdm9pZCBpbml0KGNvbnN0IExlbmd0
aFNpemUmLCBjb25zdCBSZW5kZXJTdHlsZSYpOwogICAgIHZvaWQgaW5pdChSZWY8Q1NTQmFzaWNT
aGFwZT4mJik7CiAgICAgdm9pZCBpbml0KFJlZlB0cjxDU1NDYWxjVmFsdWU+JiYpOwogICAgIHZv
aWQgaW5pdChSZWY8Q291bnRlcj4mJik7Ci0gICAgdm9pZCBpbml0KFJlZjxQYWlyPiYmKTsKICAg
ICB2b2lkIGluaXQoUmVmPFF1YWQ+JiYpOwogICAgIHZvaWQgaW5pdChSZWY8UmVjdD4mJik7CiAK
QEAgLTI1NCw3ICsyNDcsNiBAQCBwcml2YXRlOgogICAgICAgICBSZWN0KiByZWN0OwogICAgICAg
ICBRdWFkKiBxdWFkOwogICAgICAgICBjb25zdCBDb2xvciogY29sb3I7Ci0gICAgICAgIFBhaXIq
IHBhaXI7CiAgICAgICAgIENTU0Jhc2ljU2hhcGUqIHNoYXBlOwogICAgICAgICBDU1NDYWxjVmFs
dWUqIGNhbGM7CiAgICAgICAgIGNvbnN0IENTU0ZvbnRGYW1pbHkqIGZvbnRGYW1pbHk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5jcHAKaW5kZXggMTJlZDZhNGMxM2YxOTE3MmQ3MmVkNzBj
NDFlOTU5MTFkYzhiOTU0OC4uMTNhY2NhZGU2MzI5N2Y0YzdkYjllYThhNmJjODgyMGVlMDA3OTdi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcApAQCAtMzgsNyArMzgsNiBAQAog
I2luY2x1ZGUgIkNTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtl
eXdvcmRzLmgiCiAjaW5jbHVkZSAiRmlsbExheWVyLmgiCi0jaW5jbHVkZSAiUGFpci5oIgogI2lu
Y2x1ZGUgIlJlY3QuaCIKICNpbmNsdWRlICJTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCIKICNpbmNs
dWRlICJTdHlsZVJlc29sdmVyLmgiCkBAIC0xNzgsMTMgKzE3NywxNCBAQCB2b2lkIENTU1RvU3R5
bGVNYXA6Om1hcEZpbGxSZXBlYXRZKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgRmlsbExheWVy
JiBsYXllciwgYwogICAgIGxheWVyLnNldFJlcGVhdFkoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KHZhbHVlKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBjb252ZXJ0VG9MZW5ndGhTaXpl
KGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiBwcmltaXRpdmVWYWx1ZSwgQ1NTVG9MZW5ndGhDb252
ZXJzaW9uRGF0YSBjb252ZXJzaW9uRGF0YSwgTGVuZ3RoU2l6ZSYgc2l6ZSkKK3N0YXRpYyBpbmxp
bmUgYm9vbCBjb252ZXJ0VG9MZW5ndGhTaXplKGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSwgQ1NTVG9M
ZW5ndGhDb252ZXJzaW9uRGF0YSBjb252ZXJzaW9uRGF0YSwgTGVuZ3RoU2l6ZSYgc2l6ZSkKIHsK
LSAgICBpZiAoYXV0byogcGFpciA9IHByaW1pdGl2ZVZhbHVlLnBhaXJWYWx1ZSgpKSB7Ci0gICAg
ICAgIHNpemUud2lkdGggPSBwYWlyLT5maXJzdCgpLT5jb252ZXJ0VG9MZW5ndGg8QW55Q29udmVy
c2lvbj4oY29udmVyc2lvbkRhdGEpOwotICAgICAgICBzaXplLmhlaWdodCA9IHBhaXItPnNlY29u
ZCgpLT5jb252ZXJ0VG9MZW5ndGg8QW55Q29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpOworICAg
IGlmICh2YWx1ZS5pc1ZhbHVlUGFpcigpKSB7CisgICAgICAgIGF1dG8mIHBhaXIgPSBkb3duY2Fz
dDxDU1NWYWx1ZVBhaXI+KHZhbHVlKTsKKyAgICAgICAgc2l6ZS53aWR0aCA9IHBhaXIuZmlyc3RB
c1ByaW1pdGl2ZSgpLT5jb252ZXJ0VG9MZW5ndGg8QW55Q29udmVyc2lvbj4oY29udmVyc2lvbkRh
dGEpOworICAgICAgICBzaXplLmhlaWdodCA9IHBhaXIuc2Vjb25kQXNQcmltaXRpdmUoKS0+Y29u
dmVydFRvTGVuZ3RoPEFueUNvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKTsKICAgICB9IGVsc2UK
LSAgICAgICAgc2l6ZS53aWR0aCA9IHByaW1pdGl2ZVZhbHVlLmNvbnZlcnRUb0xlbmd0aDxBbnlD
b252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSk7CisgICAgICAgIHNpemUud2lkdGggPSBkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmNvbnZlcnRUb0xlbmd0aDxBbnlDb252ZXJzaW9u
Pihjb252ZXJzaW9uRGF0YSk7CiAgICAgcmV0dXJuICFzaXplLndpZHRoLmlzVW5kZWZpbmVkKCkg
JiYgIXNpemUuaGVpZ2h0LmlzVW5kZWZpbmVkKCk7CiB9CiAKQEAgLTE5NSwxMiArMTk1LDkgQEAg
dm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsU2l6ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQs
IEZpbGxMYXllciYgbGF5ZXIsIGNvbnMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlm
ICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
YXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUp
OworICAgIGF1dG8gdmFsdWVJRCA9IHZhbHVlLmlzUHJpbWl0aXZlVmFsdWUoKSA/IGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpIDogQ1NTVmFsdWVJbnZhbGlkOwog
ICAgIEZpbGxTaXplIGZpbGxTaXplOwotICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUudmFsdWVJ
RCgpKSB7CisgICAgc3dpdGNoICh2YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUNvbnRhaW46
CiAgICAgICAgIGZpbGxTaXplLnR5cGUgPSBGaWxsU2l6ZVR5cGU6OkNvbnRhaW47CiAgICAgICAg
IGJyZWFrOwpAQCAtMjA5LDcgKzIwNiw3IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbFNp
emUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBGaWxsTGF5ZXImIGxheWVyLCBjb25zCiAgICAg
ICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVChmaWxsU2l6ZS50eXBlID09
IEZpbGxTaXplVHlwZTo6U2l6ZSk7Ci0gICAgICAgIGlmICghY29udmVydFRvTGVuZ3RoU2l6ZShw
cmltaXRpdmVWYWx1ZSwgbV9idWlsZGVyU3RhdGUuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgp
LCBmaWxsU2l6ZS5zaXplKSkKKyAgICAgICAgaWYgKCFjb252ZXJ0VG9MZW5ndGhTaXplKHZhbHVl
LCBtX2J1aWxkZXJTdGF0ZS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCksIGZpbGxTaXplLnNp
emUpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yMjIs
MjIgKzIxOSwxNyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxYUG9zaXRpb24oQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eUlELCBGaWxsTGF5ZXImIGxheWVyLAogICAgICAgICBsYXllci5zZXRY
UG9zaXRpb24oRmlsbExheWVyOjppbml0aWFsRmlsbFhQb3NpdGlvbihsYXllci50eXBlKCkpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLQotICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+
KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byogcHJpbWl0aXZlVmFsdWUgPSAm
ZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBQYWlyKiBwYWlyID0gcHJp
bWl0aXZlVmFsdWUtPnBhaXJWYWx1ZSgpOworICAgIAogICAgIExlbmd0aCBsZW5ndGg7Ci0gICAg
aWYgKHBhaXIpIHsKKyAgICBpZiAodmFsdWUuaXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICBs
ZW5ndGggPSBTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBvc2l0aW9uQ29tcG9uZW50
WChtX2J1aWxkZXJTdGF0ZSwgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSk7Cisg
ICAgZWxzZSBpZiAodmFsdWUuaXNWYWx1ZVBhaXIoKSkgeworICAgICAgICBhdXRvJiBwYWlyID0g
ZG93bmNhc3Q8Q1NTVmFsdWVQYWlyPih2YWx1ZSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocHJv
cGVydHlJRCwgcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblggfHwg
cHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgpOwotICAgICAgICBs
ZW5ndGggPSBTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExlbmd0aChtX2J1aWxkZXJT
dGF0ZSwgKnBhaXItPnNlY29uZCgpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgbGVuZ3RoID0gU3R5
bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudFgobV9idWlsZGVy
U3RhdGUsIHZhbHVlKTsKLQorICAgICAgICBsYXllci5zZXRCYWNrZ3JvdW5kWE9yaWdpbigqcGFp
ci5maXJzdEFzUHJpbWl0aXZlKCkpOworICAgICAgICBsZW5ndGggPSBTdHlsZTo6QnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydExlbmd0aChtX2J1aWxkZXJTdGF0ZSwgKnBhaXIuc2Vjb25kKCkpOwor
ICAgIH0KICAgICBsYXllci5zZXRYUG9zaXRpb24obGVuZ3RoKTsKLSAgICBpZiAocGFpcikKLSAg
ICAgICAgbGF5ZXIuc2V0QmFja2dyb3VuZFhPcmlnaW4oKnBhaXItPmZpcnN0KCkpOwogfQogCiB2
b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxZUG9zaXRpb24oQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eUlELCBGaWxsTGF5ZXImIGxheWVyLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCkBAIC0yNDcsMjEg
KzIzOSwxNiBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxZUG9zaXRpb24oQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eUlELCBGaWxsTGF5ZXImIGxheWVyLAogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBhdXRvKiBwcmltaXRpdmVWYWx1ZSA9ICZkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpOwotICAgIFBhaXIqIHBhaXIgPSBwcmltaXRpdmVWYWx1ZS0+cGFpclZhbHVl
KCk7CiAgICAgTGVuZ3RoIGxlbmd0aDsKLSAgICBpZiAocGFpcikgewotICAgICAgICBBU1NFUlRf
VU5VU0VEKHByb3BlcnR5SUQsIHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9z
aXRpb25ZIHx8IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZKTsK
LSAgICAgICAgbGVuZ3RoID0gU3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGgo
bV9idWlsZGVyU3RhdGUsICpwYWlyLT5zZWNvbmQoKSk7Ci0gICAgfSBlbHNlCisgICAgaWYgKHZh
bHVlLmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgbGVuZ3RoID0gU3R5bGU6OkJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudFkobV9idWlsZGVyU3RhdGUsIHZhbHVl
KTsKLSAgICAKKyAgICBlbHNlIGlmICh2YWx1ZS5pc1ZhbHVlUGFpcigpKSB7CisgICAgICAgIGF1
dG8mIHBhaXIgPSBkb3duY2FzdDxDU1NWYWx1ZVBhaXI+KHZhbHVlKTsKKyAgICAgICAgQVNTRVJU
X1VOVVNFRChwcm9wZXJ0eUlELCBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFBv
c2l0aW9uWSB8fCBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWSk7
CisgICAgICAgIGxheWVyLnNldEJhY2tncm91bmRZT3JpZ2luKCpwYWlyLmZpcnN0QXNQcmltaXRp
dmUoKSk7CisgICAgICAgIGxlbmd0aCA9IFN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
TGVuZ3RoKG1fYnVpbGRlclN0YXRlLCAqcGFpci5zZWNvbmQoKSk7CisgICAgfQogICAgIGxheWVy
LnNldFlQb3NpdGlvbihsZW5ndGgpOwotICAgIGlmIChwYWlyKQotICAgICAgICBsYXllci5zZXRC
YWNrZ3JvdW5kWU9yaWdpbigqcGFpci0+Zmlyc3QoKSk7CiB9CiAKIHZvaWQgQ1NTVG9TdHlsZU1h
cDo6bWFwRmlsbE1hc2tTb3VyY2VUeXBlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgRmlsbExh
eWVyJiBsYXllciwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQpAQCAtNTI0LDcgKzUxMSw3IEBAIHZv
aWQgQ1NTVG9TdHlsZU1hcDo6bWFwTmluZVBpZWNlSW1hZ2UoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eSwgQ1NTVmFsdWUqIHZhbHVlLCBOCiAgICAgICAgICAgICAvLyBNYXAgaW4gdGhlIG91dHNldC4K
ICAgICAgICAgICAgIGlmIChzbGFzaExpc3QuaXRlbSgyKSkKICAgICAgICAgICAgICAgICBpbWFn
ZS5zZXRPdXRzZXQobWFwTmluZVBpZWNlSW1hZ2VRdWFkKCpzbGFzaExpc3QuaXRlbSgyKSkpOwot
ICAgICAgICB9IGVsc2UgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPihjdXJyZW50KSkgeworICAg
ICAgICB9IGVsc2UgaWYgKGlzPENTU1ZhbHVlUGFpcj4oY3VycmVudCkpIHsKICAgICAgICAgICAg
IC8vIFNldCB0aGUgYXBwcm9wcmlhdGUgcnVsZXMgZm9yIHN0cmV0Y2gvcm91bmQvcmVwZWF0IG9m
IHRoZSBzbGljZXMuCiAgICAgICAgICAgICBtYXBOaW5lUGllY2VJbWFnZVJlcGVhdChjdXJyZW50
LCBpbWFnZSk7CiAgICAgICAgIH0KQEAgLTYyNSwxNiArNjEyLDE1IEBAIExlbmd0aEJveCBDU1NU
b1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZVF1YWQoQ1NTVmFsdWUmIHZhbHVlKQogCiB2b2lk
IENTU1RvU3R5bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdlUmVwZWF0KENTU1ZhbHVlJiB2YWx1ZSwg
TmluZVBpZWNlSW1hZ2UmIGltYWdlKQogewotICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+
KHZhbHVlKSkKKyAgICBpZiAoIXZhbHVlLmlzVmFsdWVQYWlyKCkpCiAgICAgICAgIHJldHVybjsK
LQotICAgIENTU1ByaW1pdGl2ZVZhbHVlJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgUGFpciogcGFpciA9IHByaW1pdGl2ZVZhbHVlLnBh
aXJWYWx1ZSgpOwotICAgIGlmICghcGFpciB8fCAhcGFpci0+Zmlyc3QoKSB8fCAhcGFpci0+c2Vj
b25kKCkpCisgICAgCisgICAgYXV0byYgcGFpciA9IGRvd25jYXN0PENTU1ZhbHVlUGFpcj4odmFs
dWUpOworICAgIGlmICghcGFpci5maXJzdCgpIHx8ICFwYWlyLnNlY29uZCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBDU1NWYWx1ZUlEIGZpcnN0SWRlbnRpZmllciA9IHBhaXItPmZpcnN0KCkt
PnZhbHVlSUQoKTsKLSAgICBDU1NWYWx1ZUlEIHNlY29uZElkZW50aWZpZXIgPSBwYWlyLT5zZWNv
bmQoKS0+dmFsdWVJRCgpOworICAgIENTU1ZhbHVlSUQgZmlyc3RJZGVudGlmaWVyID0gcGFpci5m
aXJzdEFzUHJpbWl0aXZlKCktPnZhbHVlSUQoKTsKKyAgICBDU1NWYWx1ZUlEIHNlY29uZElkZW50
aWZpZXIgPSBwYWlyLnNlY29uZEFzUHJpbWl0aXZlKCktPnZhbHVlSUQoKTsKIAogICAgIE5pbmVQ
aWVjZUltYWdlUnVsZSBob3Jpem9udGFsUnVsZTsKICAgICBzd2l0Y2ggKGZpcnN0SWRlbnRpZmll
cikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaXRzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NVbml0cy5jcHAKaW5kZXggMWQ0ZDIxMTc5NDdmY2U2NGZlYzM0NzM0
MzAwM2IwMGI2YzczYzJmZi4uNmU5YjEwNDcwNTM5MjA2YzU0MTY3MWUyYzEzOGMxNmJlM2VmYzVm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaXRzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVW5pdHMuY3BwCkBAIC0xNDQsNyArMTQ0LDYgQEAgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgQ1NTVW5pdFR5cGUgdW5pdFR5cGUpCiAgICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX1E6IHRzIDw8ICJxIjsgYnJlYWs7CiAgICAgY2FzZSBDU1NV
bml0VHlwZTo6Q1NTX0xIUzogdHMgPDwgImxoIjsgYnJlYWs7CiAgICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q1NTX1JMSFM6IHRzIDw8ICJybGgiOyBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpD
U1NfUEFJUjogdHMgPDwgInBhaXIiOyBicmVhazsKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
VU5JQ09ERV9SQU5HRTogdHMgPDwgInVuaWNvZGVfcmFuZ2UiOyBicmVhazsKICAgICBjYXNlIENT
U1VuaXRUeXBlOjpDU1NfVFVSTjogdHMgPDwgInR1cm4iOyBicmVhazsKICAgICBjYXNlIENTU1Vu
aXRUeXBlOjpDU1NfUkVNUzogdHMgPDwgInJlbXMiOyBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NVbml0cy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaXRzLmgK
aW5kZXggZjA2MzNkMDgzMDZjZGM0ZjFiMDAxYzU0ZjIyMzNkOGNmOGM5ZWNmNy4uMWVkNDAxNDJl
ZjkyMDY3YmJmNjQ4M2MzODYzNTNlNDFkOGVkMWU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1VuaXRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaXRzLmgKQEAg
LTY1LDcgKzY1LDYgQEAgZW51bSBjbGFzcyBDU1NVbml0VHlwZSA6IHVpbnQ4X3QgewogICAgIENT
U19RID0gMzQsCiAgICAgQ1NTX0xIUyA9IDM1LAogICAgIENTU19STEhTID0gMzYsCi0gICAgQ1NT
X1BBSVIgPSAxMDAsIC8vIFdlIGVudmlzaW9uIHRoaXMgYmVpbmcgZXhwb3NlZCBhcyBhIG1lYW5z
IG9mIGdldHRpbmcgY29tcHV0ZWQgc3R5bGUgdmFsdWVzIGZvciBwYWlycyAoYm9yZGVyLXNwYWNp
bmcvcmFkaXVzLCBiYWNrZ3JvdW5kLXBvc2l0aW9uLCBldGMuKQogICAgIENTU19VTklDT0RFX1JB
TkdFID0gMTAyLAogICAgIENTU19UVVJOID0gMTA3LAogICAgIENTU19SRU1TID0gMTA4LApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYWx1ZS5jcHAKaW5kZXggYjA4ZWZlODYzNDZiMmU4YmRlMTY2Zjk2ZTlmNzYxNjM1
OWE2ZjhmOC4uYTU0OTdhMzY1MzgxMDdmZWEwMjQzOGM2N2ViZTQxYzEyMjVmNjM0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVmFsdWUuY3BwCkBAIC0yMTMsNiArMjEzLDggQEAgYm9vbCBDU1NWYWx1ZTo6ZXF1
YWxzKGNvbnN0IENTU1ZhbHVlJiBvdGhlcikgY29uc3QKICAgICAgICAgICAgIHJldHVybiBjb21w
YXJlQ1NTVmFsdWVzPENTU1VuaWNvZGVSYW5nZVZhbHVlPigqdGhpcywgb3RoZXIpOwogICAgICAg
ICBjYXNlIFZhbHVlTGlzdENsYXNzOgogICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1
ZXM8Q1NTVmFsdWVMaXN0PigqdGhpcywgb3RoZXIpOworICAgICAgICBjYXNlIFZhbHVlUGFpckNs
YXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTVmFsdWVQYWlyPigq
dGhpcywgb3RoZXIpOwogICAgICAgICBjYXNlIExpbmVCb3hDb250YWluQ2xhc3M6CiAgICAgICAg
ICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NMaW5lQm94Q29udGFpblZhbHVlPigqdGhp
cywgb3RoZXIpOwogICAgICAgICBjYXNlIENhbGN1bGF0aW9uQ2xhc3M6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQYWlyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NWYWx1ZVBhaXIuY3BwCmluZGV4IGIyZGJlMTBiMjNjMmZhYTFkZDI5YzVmZTQ0ZmM0MWE1MDZl
ZjlmMzkuLmE1Y2I0ZDM3ZDY3MDA1M2EzMTU5MTU1YTI3NTVkZTA2MzMxOTBjMTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBhaXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NWYWx1ZVBhaXIuY3BwCkBAIC0yNiwxNCArMjYsMzkgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJDU1NWYWx1ZVBhaXIuaCIKIAorI2luY2x1ZGUgIkNTU1ZhbHVl
S2V5d29yZHMuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NWYWx1ZVBhaXI6
OmZpcnN0QXNQcmltaXRpdmUoKSBjb25zdAoreworICAgIHJldHVybiBtX2ZpcnN0ICYmIG1fZmly
c3QtPmlzUHJpbWl0aXZlVmFsdWUoKSA/IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihtX2Zp
cnN0LmdldCgpKSA6IG51bGxwdHI7Cit9CisKK1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NT
VmFsdWVQYWlyOjpzZWNvbmRBc1ByaW1pdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Vj
b25kICYmIG1fc2Vjb25kLT5pc1ByaW1pdGl2ZVZhbHVlKCkgPyBkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4obV9zZWNvbmQuZ2V0KCkpIDogbnVsbHB0cjsKK30KKworQ1NTVmFsdWVJRCBDU1NW
YWx1ZVBhaXI6OmZpcnN0QXNWYWx1ZUlEKCkgY29uc3QKK3sKKyAgICBhdXRvIHByaW1pdGl2ZSA9
IGZpcnN0QXNQcmltaXRpdmUoKTsKKyAgICByZXR1cm4gcHJpbWl0aXZlID8gcHJpbWl0aXZlLT52
YWx1ZUlEKCkgOiBDU1NWYWx1ZUludmFsaWQ7Cit9CisKK0NTU1ZhbHVlSUQgQ1NTVmFsdWVQYWly
OjpzZWNvbmRBc1ZhbHVlSUQoKSBjb25zdAoreworICAgIGF1dG8gcHJpbWl0aXZlID0gc2Vjb25k
QXNQcmltaXRpdmUoKTsKKyAgICByZXR1cm4gcHJpbWl0aXZlID8gcHJpbWl0aXZlLT52YWx1ZUlE
KCkgOiBDU1NWYWx1ZUludmFsaWQ7Cit9CisKIFN0cmluZyBDU1NWYWx1ZVBhaXI6OmN1c3RvbUNT
U1RleHQoKSBjb25zdAogewotICAgIFN0cmluZyBmaXJzdCA9IHRoaXMtPmZpcnN0KCktPmNzc1Rl
eHQoKTsKLSAgICBTdHJpbmcgc2Vjb25kID0gdGhpcy0+c2Vjb25kKCktPmNzc1RleHQoKTsKKyAg
ICBhdXRvIGZpcnN0ID0gdGhpcy0+Zmlyc3QoKSA/IHRoaXMtPmZpcnN0KCktPmNzc1RleHQoKSA6
IFN0cmluZygpOworICAgIGF1dG8gc2Vjb25kID0gdGhpcy0+c2Vjb25kKCkgPyB0aGlzLT5zZWNv
bmQoKS0+Y3NzVGV4dCgpIDogU3RyaW5nKCk7CisgICAgaWYgKGZpcnN0LmlzRW1wdHkoKSAmJiBz
ZWNvbmQuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgaWYgKG1fZW5j
b2RpbmcgPT0gSWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6Q29hbGVzY2UgJiYgZmlyc3QgPT0gc2Vj
b25kKQogICAgICAgICByZXR1cm4gZmlyc3Q7CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoZmlyc3Qs
IHNlcGFyYXRvckNTU1RleHQoKSwgc2Vjb25kKTsKQEAgLTQxLDcgKzY2LDEwIEBAIFN0cmluZyBD
U1NWYWx1ZVBhaXI6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogCiBib29sIENTU1ZhbHVlUGFpcjo6
ZXF1YWxzKGNvbnN0IENTU1ZhbHVlUGFpciAmb3RoZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
dmFsdWVTZXBhcmF0b3IgPT0gb3RoZXIubV92YWx1ZVNlcGFyYXRvciAmJiBtX2ZpcnN0LmdldCgp
LmVxdWFscyhvdGhlci5tX2ZpcnN0KSAmJiBtX3NlY29uZC5nZXQoKS5lcXVhbHMob3RoZXIubV9z
ZWNvbmQpOworICAgIHJldHVybiBtX3ZhbHVlU2VwYXJhdG9yID09IG90aGVyLm1fdmFsdWVTZXBh
cmF0b3IKKyAgICAgICAgJiYgbV9lbmNvZGluZyA9PSBvdGhlci5tX2VuY29kaW5nCisgICAgICAg
ICYmIGNvbXBhcmVDU1NWYWx1ZVB0cihtX2ZpcnN0LCBvdGhlci5tX2ZpcnN0KQorICAgICAgICAm
JiBjb21wYXJlQ1NTVmFsdWVQdHIobV9zZWNvbmQsIG90aGVyLm1fc2Vjb25kKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zh
bHVlUGFpci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlUGFpci5oCmluZGV4IGQwYzRm
OWY0NTk1NTVkMzhlMWJiNWZiOTJlNDE1ZmJhNDExZWY4ODQuLjVlZmIyZWJkZjhjZDFlNzg0ZTQz
NjFjNzk2YzE5M2FmODFkYWYzNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NW
YWx1ZVBhaXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQYWlyLmgKQEAgLTI1
LDcgKzI1LDkgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1
ZS5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlLmgiCisjaW5jbHVkZSAiTGVuZ3RoU2l6ZS5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM5LDIzICs0MSwzNSBAQCBwdWJsaWM6CiAgICAgICAg
IENvYWxlc2NlCiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8Q1NTVmFsdWVQYWlyPiBjcmVhdGUo
UmVmPENTU1ZhbHVlPiYmIGZpcnN0LCBSZWY8Q1NTVmFsdWU+JiYgc2Vjb25kLCBWYWx1ZVNlcGFy
YXRvciBzZXBhcmF0b3IpCisgICAgc3RhdGljIFJlZjxDU1NWYWx1ZVBhaXI+IGNyZWF0ZShSZWZQ
dHI8Q1NTVmFsdWU+JiYgZmlyc3QsIFJlZlB0cjxDU1NWYWx1ZT4mJiBzZWNvbmQsIFZhbHVlU2Vw
YXJhdG9yIHNlcGFyYXRvciA9IFNwYWNlU2VwYXJhdG9yKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQ1NTVmFsdWVQYWlyKFdURk1vdmUoZmlyc3QpLCBXVEZNb3ZlKHNlY29u
ZCksIHNlcGFyYXRvcikpOwogICAgIH0KLSAgICBzdGF0aWMgUmVmPENTU1ZhbHVlUGFpcj4gY3Jl
YXRlKFJlZjxDU1NWYWx1ZT4mJiBmaXJzdCwgUmVmPENTU1ZhbHVlPiYmIHNlY29uZCwgVmFsdWVT
ZXBhcmF0b3Igc2VwYXJhdG9yLCBJZGVudGljYWxWYWx1ZUVuY29kaW5nIGVuY29kaW5nKQorICAg
IHN0YXRpYyBSZWY8Q1NTVmFsdWVQYWlyPiBjcmVhdGUoY29uc3QgTGVuZ3RoU2l6ZSYgbGVuZ3Ro
U2l6ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBWYWx1ZVNlcGFyYXRvciBzZXBhcmF0b3Ig
PSBTcGFjZVNlcGFyYXRvcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENT
U1ZhbHVlUGFpcihsZW5ndGhTaXplLCBzdHlsZSwgc2VwYXJhdG9yKSk7CisgICAgfQorICAgIHN0
YXRpYyBSZWY8Q1NTVmFsdWVQYWlyPiBjcmVhdGUoUmVmUHRyPENTU1ZhbHVlPiYmIGZpcnN0LCBS
ZWZQdHI8Q1NTVmFsdWU+JiYgc2Vjb25kLCBJZGVudGljYWxWYWx1ZUVuY29kaW5nIGVuY29kaW5n
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTVmFsdWVQYWlyKFdURk1v
dmUoZmlyc3QpLCBXVEZNb3ZlKHNlY29uZCksIFNwYWNlU2VwYXJhdG9yLCBlbmNvZGluZykpOwor
ICAgIH0KKyAgICBzdGF0aWMgUmVmPENTU1ZhbHVlUGFpcj4gY3JlYXRlKFJlZlB0cjxDU1NWYWx1
ZT4mJiBmaXJzdCwgUmVmUHRyPENTU1ZhbHVlPiYmIHNlY29uZCwgVmFsdWVTZXBhcmF0b3Igc2Vw
YXJhdG9yLCBJZGVudGljYWxWYWx1ZUVuY29kaW5nIGVuY29kaW5nKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTVmFsdWVQYWlyKFdURk1vdmUoZmlyc3QpLCBXVEZNb3Zl
KHNlY29uZCksIHNlcGFyYXRvciwgZW5jb2RpbmcpKTsKICAgICB9CiAKLSAgICBSZWY8Q1NTVmFs
dWU+IGZpcnN0KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdDsgfQotICAgIFJlZjxDU1NWYWx1ZT4g
c2Vjb25kKCkgY29uc3QgeyByZXR1cm4gbV9zZWNvbmQ7IH0KKyAgICBSZWZQdHI8Q1NTVmFsdWU+
IGZpcnN0KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdDsgfQorICAgIFJlZlB0cjxDU1NWYWx1ZT4g
c2Vjb25kKCkgY29uc3QgeyByZXR1cm4gbV9zZWNvbmQ7IH0KKyAgICBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IGZpcnN0QXNQcmltaXRpdmUoKSBjb25zdDsKKyAgICBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IHNlY29uZEFzUHJpbWl0aXZlKCkgY29uc3Q7CisgICAgQ1NTVmFsdWVJRCBmaXJz
dEFzVmFsdWVJRCgpIGNvbnN0OworICAgIENTU1ZhbHVlSUQgc2Vjb25kQXNWYWx1ZUlEKCkgY29u
c3Q7CiAKICAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0OwogICAgIGJvb2wgZXF1YWxz
KGNvbnN0IENTU1ZhbHVlUGFpciYgb3RoZXIpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIGV4cGxp
Y2l0IENTU1ZhbHVlUGFpcihSZWY8Q1NTVmFsdWU+JiYgZmlyc3QsIFJlZjxDU1NWYWx1ZT4mJiBz
ZWNvbmQsIFZhbHVlU2VwYXJhdG9yIHNlcGFyYXRvcikKKyAgICBleHBsaWNpdCBDU1NWYWx1ZVBh
aXIoUmVmUHRyPENTU1ZhbHVlPiYmIGZpcnN0LCBSZWZQdHI8Q1NTVmFsdWU+JiYgc2Vjb25kLCBW
YWx1ZVNlcGFyYXRvciBzZXBhcmF0b3IpCiAgICAgICAgIDogQ1NTVmFsdWUoVmFsdWVQYWlyQ2xh
c3MpCiAgICAgICAgICwgbV9maXJzdChXVEZNb3ZlKGZpcnN0KSkKICAgICAgICAgLCBtX3NlY29u
ZChXVEZNb3ZlKHNlY29uZCkpCkBAIC02Myw3ICs3NywxNSBAQCBwcml2YXRlOgogICAgICAgICBt
X3ZhbHVlU2VwYXJhdG9yID0gc2VwYXJhdG9yOwogICAgIH0KIAotICAgIGV4cGxpY2l0IENTU1Zh
bHVlUGFpcihSZWY8Q1NTVmFsdWU+JiYgZmlyc3QsIFJlZjxDU1NWYWx1ZT4mJiBzZWNvbmQsIFZh
bHVlU2VwYXJhdG9yIHNlcGFyYXRvciwgSWRlbnRpY2FsVmFsdWVFbmNvZGluZyBlbmNvZGluZykK
KyAgICBleHBsaWNpdCBDU1NWYWx1ZVBhaXIoY29uc3QgTGVuZ3RoU2l6ZSYgbGVuZ3RoU2l6ZSwg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBWYWx1ZVNlcGFyYXRvciBzZXBhcmF0b3IpCisgICAg
ICAgIDogQ1NTVmFsdWUoVmFsdWVQYWlyQ2xhc3MpCisgICAgeworICAgICAgICBtX2ZpcnN0ID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShsZW5ndGhTaXplLndpZHRoLCBzdHlsZSk7CisgICAg
ICAgIG1fc2Vjb25kID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShsZW5ndGhTaXplLmhlaWdo
dCwgc3R5bGUpOworICAgICAgICBtX3ZhbHVlU2VwYXJhdG9yID0gc2VwYXJhdG9yOworICAgIH0K
KworICAgIGV4cGxpY2l0IENTU1ZhbHVlUGFpcihSZWZQdHI8Q1NTVmFsdWU+JiYgZmlyc3QsIFJl
ZlB0cjxDU1NWYWx1ZT4mJiBzZWNvbmQsIFZhbHVlU2VwYXJhdG9yIHNlcGFyYXRvciwgSWRlbnRp
Y2FsVmFsdWVFbmNvZGluZyBlbmNvZGluZykKICAgICAgICAgOiBDU1NWYWx1ZShWYWx1ZVBhaXJD
bGFzcykKICAgICAgICAgLCBtX2VuY29kaW5nKGVuY29kaW5nKQogICAgICAgICAsIG1fZmlyc3Qo
V1RGTW92ZShmaXJzdCkpCkBAIC03Myw4ICs5NSw4IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAg
SWRlbnRpY2FsVmFsdWVFbmNvZGluZyBtX2VuY29kaW5nIHsgSWRlbnRpY2FsVmFsdWVFbmNvZGlu
Zzo6Q29hbGVzY2UgfTsKLSAgICBSZWY8Q1NTVmFsdWU+IG1fZmlyc3Q7Ci0gICAgUmVmPENTU1Zh
bHVlPiBtX3NlY29uZDsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IG1fZmlyc3Q7CisgICAgUmVmUHRy
PENTU1ZhbHVlPiBtX3NlY29uZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYWx1ZVBvb2wuaAppbmRleCAxNWNkZmMwNmRlODkyOTVlMjc1Zjk0ZDU1YzFmOTk5
YWJjMmYxNjQ5Li5jOTU0NzljNzlmMWI0YWUyZDE4MTJkZmJlNDEyZGE4MTRiYjUxY2NmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhbHVlUG9vbC5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ1NT
UmV2ZXJ0VmFsdWUuaCIKICNpbmNsdWRlICJDU1NVbnNldFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NT
VmFsdWVLZXl3b3Jkcy5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlUGFpci5oIgogI2luY2x1ZGUgIkNv
bG9ySGFzaC5oIgogI2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
QEAgLTk1LDcgKzk2LDYgQEAgcHVibGljOgogICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3Jl
YXRlVmFsdWUoZG91YmxlIHZhbHVlLCBDU1NVbml0VHlwZSk7CiAgICAgUmVmPENTU1ByaW1pdGl2
ZVZhbHVlPiBjcmVhdGVWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlLCBDU1NVbml0VHlwZSB0eXBl
KSB7IHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLCB0eXBlKTsgfQogICAg
IFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlVmFsdWUoY29uc3QgTGVuZ3RoJiB2YWx1ZSwg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSB7IHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlKHZhbHVlLCBzdHlsZSk7IH0KLSAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVZh
bHVlKGNvbnN0IExlbmd0aFNpemUmIHZhbHVlLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIHsg
cmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUsIHN0eWxlKTsgfQogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVZh
bHVlKFQmJiB2YWx1ZSkgeyByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdGQ6OmZv
cndhcmQ8VD4odmFsdWUpKTsgfQogCiAgICAgdm9pZCBkcmFpbigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1BhaXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWlyLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwZWY0NTI3MTdiYTJjMjE3NTI4MTA1Y2FiYTZmZGJh
ZTVlZmQwMTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1BhaXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAK
LS8qCi0gKiAoQykgMTk5OS0yMDAzIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMTUgQXBwbGUgSW5jLgotICoKLSAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWU7Ci0KLS8vIEEgcHJpbWl0aXZlIHZhbHVlIHJlcHJlc2Vu
dGluZyBhIHBhaXIuICBUaGlzIGlzIHVzZWZ1bCBmb3IgcHJvcGVydGllcyBsaWtlIGJvcmRlci1y
YWRpdXMsIGJhY2tncm91bmQtc2l6ZS9wb3NpdGlvbiwKLS8vIGFuZCBib3JkZXItc3BhY2luZyAo
YWxsIG9mIHdoaWNoIGFyZSBzcGFjZS1zZXBhcmF0ZWQgc2V0cyBvZiB0d28gdmFsdWVzKS4gIEF0
IHRoZSBtb21lbnQgd2UgYXJlIG9ubHkgdXNpbmcgaXQgZm9yCi0vLyBib3JkZXItcmFkaXVzIGFu
ZCBiYWNrZ3JvdW5kLXNpemUsIGJ1dCAoRklYTUUpIGJvcmRlci1zcGFjaW5nIGFuZCBiYWNrZ3Jv
dW5kLXBvc2l0aW9uIGNvdWxkIGJlIGNvbnZlcnRlZCBvdmVyIHRvIHVzZQotLy8gaXQgKGVsaW1p
bmF0aW5nIHNvbWUgZXh0cmEgLXdlYmtpdC0gaW50ZXJuYWwgcHJvcGVydGllcykuCi1jbGFzcyBQ
YWlyIDogcHVibGljIFJlZkNvdW50ZWQ8UGFpcj4gewotcHVibGljOgotICAgIGVudW0gY2xhc3Mg
SWRlbnRpY2FsVmFsdWVFbmNvZGluZyA6IHVpbnQ4X3QgewotICAgICAgICBEb05vdENvYWxlc2Nl
LAotICAgICAgICBDb2FsZXNjZQotICAgIH07Ci0KLSAgICBzdGF0aWMgUmVmPFBhaXI+IGNyZWF0
ZShSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiYgZmlyc3QsIFJlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4mJiBzZWNvbmQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQYWly
KFdURk1vdmUoZmlyc3QpLCBXVEZNb3ZlKHNlY29uZCkpKTsKLSAgICB9Ci0gICAgc3RhdGljIFJl
ZjxQYWlyPiBjcmVhdGUoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYmIGZpcnN0LCBSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+JiYgc2Vjb25kLCBJZGVudGljYWxWYWx1ZUVuY29kaW5nIGVuY29k
aW5nKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGFpcihXVEZNb3ZlKGZp
cnN0KSwgV1RGTW92ZShzZWNvbmQpLCBlbmNvZGluZykpOwotICAgIH0KLSAgICBDU1NQcmltaXRp
dmVWYWx1ZSogZmlyc3QoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0LmdldCgpOyB9Ci0gICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHNlY29uZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vjb25kLmdldCgpOyB9
Ci0KLSAgICBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0Ci0gICAgewotICAgICAgICBTdHJpbmcgZmly
c3QgPSB0aGlzLT5maXJzdCgpLT5jc3NUZXh0KCk7Ci0gICAgICAgIFN0cmluZyBzZWNvbmQgPSB0
aGlzLT5zZWNvbmQoKS0+Y3NzVGV4dCgpOwotICAgICAgICBpZiAobV9lbmNvZGluZyA9PSBJZGVu
dGljYWxWYWx1ZUVuY29kaW5nOjpDb2FsZXNjZSAmJiBmaXJzdCA9PSBzZWNvbmQpCi0gICAgICAg
ICAgICByZXR1cm4gZmlyc3Q7Ci0gICAgICAgIHJldHVybiBmaXJzdCArICcgJyArIHNlY29uZDsK
LSAgICB9Ci0KLSAgICBib29sIGVxdWFscyhjb25zdCBQYWlyJiBvdGhlcikgY29uc3QgeyByZXR1
cm4gY29tcGFyZUNTU1ZhbHVlUHRyKG1fZmlyc3QsIG90aGVyLm1fZmlyc3QpICYmIGNvbXBhcmVD
U1NWYWx1ZVB0cihtX3NlY29uZCwgb3RoZXIubV9zZWNvbmQpOyB9Ci0KLXByaXZhdGU6Ci0gICAg
UGFpcihSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiYgZmlyc3QsIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4mJiBzZWNvbmQpCi0gICAgICAgIDogbV9maXJzdChXVEZNb3ZlKGZpcnN0KSkKLSAg
ICAgICAgLCBtX3NlY29uZChXVEZNb3ZlKHNlY29uZCkpCi0gICAgeyB9Ci0KLSAgICBQYWlyKFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mJiBmaXJzdCwgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiYmIHNlY29uZCwgSWRlbnRpY2FsVmFsdWVFbmNvZGluZyBlbmNvZGluZykKLSAgICAgICAgOiBt
X2VuY29kaW5nKGVuY29kaW5nKQotICAgICAgICAsIG1fZmlyc3QoV1RGTW92ZShmaXJzdCkpCi0g
ICAgICAgICwgbV9zZWNvbmQoV1RGTW92ZShzZWNvbmQpKQotICAgIHsgfQotCi0gICAgSWRlbnRp
Y2FsVmFsdWVFbmNvZGluZyBtX2VuY29kaW5nIHsgSWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6Q29h
bGVzY2UgfTsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IG1fZmlyc3Q7Ci0gICAgUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBtX3NlY29uZDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCmluZGV4
IDg2NTZjOTk3ZGM4MTZmY2U5MDEzMzNkZjFiZmIyNmU5ZTkwOGUxYjEuLjM0ZDc2NDc2Y2Q4ZmVm
Y2YwZDhiZTU2NzcwZTFiNTdkYzk1ZGM3YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCkBAIC01OCwxMyArNTgsMTMgQEAKICNpbmNsdWRl
ICJDU1NTaGFkb3dWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaCIK
ICNpbmNsdWRlICJDU1NVbmljb2RlUmFuZ2VWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlUGFp
ci5oIgogI2luY2x1ZGUgIkNTU1ZhcmlhYmxlUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTVmFyaWFi
bGVSZWZlcmVuY2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNvdW50ZXIuaCIKICNpbmNsdWRlICJGb250
RmFjZS5oIgogI2luY2x1ZGUgIkhhc2hUb29scy5oIgotLy8gRklYTUUtTkVXUEFSU0VSOiBSZXBs
YWNlIFBhaXIgYW5kIFJlY3Qgd2l0aCBhY3R1YWwgQ1NTVmFsdWUgc3ViY2xhc3NlcyAoQ1NTVmFs
dWVQYWlyIGFuZCBDU1NRdWFkVmFsdWUpLgotI2luY2x1ZGUgIlBhaXIuaCIKKy8vIEZJWE1FLU5F
V1BBUlNFUjogUmVwbGFjZSBSZWN0IHdpdGggYW4gYWN0dWFsIENTU1ZhbHVlIHN1YmNsYXNzIChD
U1NRdWFkVmFsdWUpLgogI2luY2x1ZGUgIlJlY3QuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5o
IgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKQEAgLTExMDYsMTMgKzExMDYs
NiBAQCBzdGF0aWMgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lTGluZUhlaWdodChD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQwogICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQ
ZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOwogfQog
Ci10ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPgotc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1
ZT4gY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKEFyZ3MmJi4uLiBhcmdzKQotewotICAgIHJldHVy
biBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKFBhaXI6OmNyZWF0ZShzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKLX0KLQotCiBzdGF0aWMgUmVmUHRyPENTU1ZhbHVl
PiBjb25zdW1lQ291bnRlcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgaW50IGRlZmF1bHRW
YWx1ZSkKIHsKICAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQpAQCAt
MTEyNiw3ICsxMTE5LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUNvdW50ZXIo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGludCBkZWZhdWx0VmEKICAgICAgICAgaW50IGkg
PSBkZWZhdWx0VmFsdWU7CiAgICAgICAgIGlmIChhdXRvIGNvdW50ZXJWYWx1ZSA9IGNvbnN1bWVJ
bnRlZ2VyUmF3KHJhbmdlKSkKICAgICAgICAgICAgIGkgPSAqY291bnRlclZhbHVlOwotICAgICAg
ICBsaXN0LT5hcHBlbmQoY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKGNvdW50ZXJOYW1lLnJlbGVh
c2VOb25OdWxsKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoaSwgQ1NTVW5pdFR5cGU6OkNT
U19OVU1CRVIpLCBQYWlyOjpJZGVudGljYWxWYWx1ZUVuY29kaW5nOjpDb2FsZXNjZSkpOworICAg
ICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQYWlyOjpjcmVhdGUoY291bnRlck5hbWUucmVsZWFz
ZU5vbk51bGwoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShpLCBDU1NVbml0VHlwZTo6Q1NT
X05VTUJFUikpKTsKICAgICB9IHdoaWxlICghcmFuZ2UuYXRFbmQoKSk7CiAgICAgcmV0dXJuIGxp
c3Q7CiB9CkBAIC0yNTUwLDcgKzI1NDMsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25z
dW1lQm9yZGVyUmFkaXVzQ29ybmVyKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDUwogICAg
IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VkVmFsdWUyID0gY29uc3VtZUxlbmd0aE9y
UGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKICAg
ICBpZiAoIXBhcnNlZFZhbHVlMikKICAgICAgICAgcGFyc2VkVmFsdWUyID0gcGFyc2VkVmFsdWUx
OwotICAgIHJldHVybiBjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIocGFyc2VkVmFsdWUxLnJlbGVh
c2VOb25OdWxsKCksIHBhcnNlZFZhbHVlMi5yZWxlYXNlTm9uTnVsbCgpLCBQYWlyOjpJZGVudGlj
YWxWYWx1ZUVuY29kaW5nOjpDb2FsZXNjZSk7CisgICAgcmV0dXJuIENTU1ZhbHVlUGFpcjo6Y3Jl
YXRlKHBhcnNlZFZhbHVlMS5yZWxlYXNlTm9uTnVsbCgpLCBwYXJzZWRWYWx1ZTIucmVsZWFzZU5v
bk51bGwoKSk7CiB9CiAKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVUZXh0VW5kZXJs
aW5lT2Zmc2V0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1Bh
cnNlck1vZGUpCkBAIC0yNzQxLDEwICsyNzM0LDEwIEBAIHN0YXRpYyBSZWZQdHI8Q1NTQmFzaWNT
aGFwZUluc2V0PiBjb25zdW1lQmFzaWNTaGFwZUluc2V0KENTU1BhcnNlclRva2VuUmFuZ2UmIGFy
CiAgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmVydGljYWxSYWRpaVs0XSA9IHsg
MCB9OwogICAgICAgICBpZiAoIWNvbnN1bWVSYWRpaShob3Jpem9udGFsUmFkaWksIHZlcnRpY2Fs
UmFkaWksIGFyZ3MsIGNvbnRleHQubW9kZSwgZmFsc2UpKQogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgICAgIHNoYXBlLT5zZXRUb3BMZWZ0UmFkaXVzKGNyZWF0ZVByaW1pdGl2ZVZh
bHVlUGFpcihob3Jpem9udGFsUmFkaWlbMF0ucmVsZWFzZU5vbk51bGwoKSwgdmVydGljYWxSYWRp
aVswXS5yZWxlYXNlTm9uTnVsbCgpLCBQYWlyOjpJZGVudGljYWxWYWx1ZUVuY29kaW5nOjpDb2Fs
ZXNjZSkpOwotICAgICAgICBzaGFwZS0+c2V0VG9wUmlnaHRSYWRpdXMoY3JlYXRlUHJpbWl0aXZl
VmFsdWVQYWlyKGhvcml6b250YWxSYWRpaVsxXS5yZWxlYXNlTm9uTnVsbCgpLCB2ZXJ0aWNhbFJh
ZGlpWzFdLnJlbGVhc2VOb25OdWxsKCksIFBhaXI6OklkZW50aWNhbFZhbHVlRW5jb2Rpbmc6OkNv
YWxlc2NlKSk7Ci0gICAgICAgIHNoYXBlLT5zZXRCb3R0b21SaWdodFJhZGl1cyhjcmVhdGVQcmlt
aXRpdmVWYWx1ZVBhaXIoaG9yaXpvbnRhbFJhZGlpWzJdLnJlbGVhc2VOb25OdWxsKCksIHZlcnRp
Y2FsUmFkaWlbMl0ucmVsZWFzZU5vbk51bGwoKSwgUGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNvZGlu
Zzo6Q29hbGVzY2UpKTsKLSAgICAgICAgc2hhcGUtPnNldEJvdHRvbUxlZnRSYWRpdXMoY3JlYXRl
UHJpbWl0aXZlVmFsdWVQYWlyKGhvcml6b250YWxSYWRpaVszXS5yZWxlYXNlTm9uTnVsbCgpLCB2
ZXJ0aWNhbFJhZGlpWzNdLnJlbGVhc2VOb25OdWxsKCksIFBhaXI6OklkZW50aWNhbFZhbHVlRW5j
b2Rpbmc6OkNvYWxlc2NlKSk7CisgICAgICAgIHNoYXBlLT5zZXRUb3BMZWZ0UmFkaXVzKENTU1Zh
bHVlUGFpcjo6Y3JlYXRlKGhvcml6b250YWxSYWRpaVswXS5yZWxlYXNlTm9uTnVsbCgpLCB2ZXJ0
aWNhbFJhZGlpWzBdLnJlbGVhc2VOb25OdWxsKCkpKTsKKyAgICAgICAgc2hhcGUtPnNldFRvcFJp
Z2h0UmFkaXVzKENTU1ZhbHVlUGFpcjo6Y3JlYXRlKGhvcml6b250YWxSYWRpaVsxXS5yZWxlYXNl
Tm9uTnVsbCgpLCB2ZXJ0aWNhbFJhZGlpWzFdLnJlbGVhc2VOb25OdWxsKCkpKTsKKyAgICAgICAg
c2hhcGUtPnNldEJvdHRvbVJpZ2h0UmFkaXVzKENTU1ZhbHVlUGFpcjo6Y3JlYXRlKGhvcml6b250
YWxSYWRpaVsyXS5yZWxlYXNlTm9uTnVsbCgpLCB2ZXJ0aWNhbFJhZGlpWzJdLnJlbGVhc2VOb25O
dWxsKCkpKTsKKyAgICAgICAgc2hhcGUtPnNldEJvdHRvbUxlZnRSYWRpdXMoQ1NTVmFsdWVQYWly
OjpjcmVhdGUoaG9yaXpvbnRhbFJhZGlpWzNdLnJlbGVhc2VOb25OdWxsKCksIHZlcnRpY2FsUmFk
aWlbM10ucmVsZWFzZU5vbk51bGwoKSkpOwogICAgIH0KICAgICByZXR1cm4gc2hhcGU7CiB9CkBA
IC0yODgxLDEzICsyODc0LDEyIEBAIHN0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNv
bnN1bWVPdmVyZmxvd1Bvc2l0aW9uS2V5d29yZChDU1NQYXJzZXJUb2tlblJhCiAKIHN0YXRpYyBD
U1NWYWx1ZUlEIGdldEJhc2VsaW5lS2V5d29yZChSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlKQogewot
ICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2
YWx1ZSk7Ci0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLnBhaXJWYWx1ZSgpKSB7Ci0gICAgICAgIEFT
U0VSVChwcmltaXRpdmVWYWx1ZS5wYWlyVmFsdWUoKS0+Zmlyc3QoKS0+dmFsdWVJRCgpID09IENT
U1ZhbHVlTGFzdCk7Ci0gICAgICAgIEFTU0VSVChwcmltaXRpdmVWYWx1ZS5wYWlyVmFsdWUoKS0+
c2Vjb25kKCktPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUJhc2VsaW5lKTsKKyAgICBpZiAodmFsdWUg
JiYgdmFsdWUtPmlzVmFsdWVQYWlyKCkpIHsKKyAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1Zh
bHVlUGFpcj4oKnZhbHVlKS5maXJzdEFzVmFsdWVJRCgpID09IENTU1ZhbHVlTGFzdCk7CisgICAg
ICAgIEFTU0VSVChkb3duY2FzdDxDU1NWYWx1ZVBhaXI+KCp2YWx1ZSkuc2Vjb25kQXNWYWx1ZUlE
KCkgPT0gQ1NTVmFsdWVCYXNlbGluZSk7CiAgICAgICAgIHJldHVybiBDU1NWYWx1ZUxhc3RCYXNl
bGluZTsKICAgICB9Ci0gICAgQVNTRVJUKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NW
YWx1ZUJhc2VsaW5lKTsKKyAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2
YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlQmFzZWxpbmUpOwogICAgIHJldHVybiBDU1NWYWx1
ZUJhc2VsaW5lOwogfQogCkBAIC0yODk4LDcgKzI4OTAsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1Zh
bHVlPiBjb25zdW1lQmFzZWxpbmVLZXl3b3JkKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQog
ICAgIGlmICghYmFzZWxpbmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmIChwcmVm
ZXJlbmNlICYmIHByZWZlcmVuY2UtPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUxhc3QpCi0gICAgICAg
IHJldHVybiBjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIocHJlZmVyZW5jZS5yZWxlYXNlTm9uTnVs
bCgpLCBiYXNlbGluZS5yZWxlYXNlTm9uTnVsbCgpLCBQYWlyOjpJZGVudGljYWxWYWx1ZUVuY29k
aW5nOjpDb2FsZXNjZSk7CisgICAgICAgIHJldHVybiBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShwcmVm
ZXJlbmNlLnJlbGVhc2VOb25OdWxsKCksIGJhc2VsaW5lLnJlbGVhc2VOb25OdWxsKCkpOwogICAg
IHJldHVybiBiYXNlbGluZTsKIH0KIApAQCAtMjk0MSw3ICsyOTMzLDcgQEAgc3RhdGljIFJlZlB0
cjxDU1NWYWx1ZT4gY29uc3VtZUJvcmRlckltYWdlUmVwZWF0KENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlKQogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmVydGljYWwgPSBjb25zdW1l
Qm9yZGVySW1hZ2VSZXBlYXRLZXl3b3JkKHJhbmdlKTsKICAgICBpZiAoIXZlcnRpY2FsKQogICAg
ICAgICB2ZXJ0aWNhbCA9IGhvcml6b250YWw7Ci0gICAgcmV0dXJuIGNyZWF0ZVByaW1pdGl2ZVZh
bHVlUGFpcihob3Jpem9udGFsLnJlbGVhc2VOb25OdWxsKCksIHZlcnRpY2FsLnJlbGVhc2VOb25O
dWxsKCksIFBhaXI6OklkZW50aWNhbFZhbHVlRW5jb2Rpbmc6OkNvYWxlc2NlKTsKKyAgICByZXR1
cm4gQ1NTVmFsdWVQYWlyOjpjcmVhdGUoaG9yaXpvbnRhbC5yZWxlYXNlTm9uTnVsbCgpLCB2ZXJ0
aWNhbC5yZWxlYXNlTm9uTnVsbCgpKTsKIH0KIAogc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29u
c3VtZUJvcmRlckltYWdlU2xpY2UoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UpCkBAIC0zMTYwLDcgKzMxNTIsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBjb25zdW1lUHJlZml4ZWRCYWNrZ3JvdW5kQm94KENTU1Byb3BlcnR5SUQg
cHJvcAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1zdGF0aWMgUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBjb25zdW1lQmFja2dyb3VuZFNpemUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3N0
YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVCYWNrZ3JvdW5kU2l6ZShDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5LCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQ
YXJzZXJNb2RlKQogewogICAgIGlmIChpZGVudE1hdGNoZXM8Q1NTVmFsdWVDb250YWluLCBDU1NW
YWx1ZUNvdmVyPihyYW5nZS5wZWVrKCkuaWQoKSkpCiAgICAgICAgIHJldHVybiBjb25zdW1lSWRl
bnQocmFuZ2UpOwpAQCAtMzE4Myw3ICszMTc1LDggQEAgc3RhdGljIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gY29uc3VtZUJhY2tncm91bmRTaXplKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIEMK
ICAgICB9CiAgICAgaWYgKCF2ZXJ0aWNhbCkKICAgICAgICAgcmV0dXJuIGhvcml6b250YWw7Ci0g
ICAgcmV0dXJuIGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihob3Jpem9udGFsLnJlbGVhc2VOb25O
dWxsKCksIHZlcnRpY2FsLnJlbGVhc2VOb25OdWxsKCksIHByb3BlcnR5ID09IENTU1Byb3BlcnR5
V2Via2l0QmFja2dyb3VuZFNpemUgPyBQYWlyOjpJZGVudGljYWxWYWx1ZUVuY29kaW5nOjpDb2Fs
ZXNjZSA6IFBhaXI6OklkZW50aWNhbFZhbHVlRW5jb2Rpbmc6OkRvTm90Q29hbGVzY2UpOworICAg
IGF1dG8gdmFsdWVDb2FsZXNjZW5jZSA9IHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0QmFj
a2dyb3VuZFNpemUgPyBDU1NWYWx1ZVBhaXI6OklkZW50aWNhbFZhbHVlRW5jb2Rpbmc6OkNvYWxl
c2NlIDogQ1NTVmFsdWVQYWlyOjpJZGVudGljYWxWYWx1ZUVuY29kaW5nOjpEb05vdENvYWxlc2Nl
OworICAgIHJldHVybiBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShob3Jpem9udGFsLnJlbGVhc2VOb25O
dWxsKCksIHZlcnRpY2FsLnJlbGVhc2VOb25OdWxsKCksIHZhbHVlQ29hbGVzY2VuY2UpOwogfQog
CiBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlTGlzdD4gY29uc3VtZUdyaWRBdXRvRmxvdyhDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSkKQEAgLTMyOTcsNyArMzI5MCw3IEBAIHN0YXRpYyBSZWZQdHI8
Q1NTVmFsdWU+IGNvbnN1bWVTZWxmUG9zaXRpb25PdmVyZmxvd1Bvc2l0aW9uKENTU1BhcnNlclRv
a2VuUmFuZ2UmCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gc2VsZlBvc2l0aW9uID0gY29uc3VtZUlkZW50KHJhbmdlKTsKICAgICBpZiAob3Zl
cmZsb3dQb3NpdGlvbikKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihv
dmVyZmxvd1Bvc2l0aW9uLnJlbGVhc2VOb25OdWxsKCksIHNlbGZQb3NpdGlvbi5yZWxlYXNlTm9u
TnVsbCgpLCBQYWlyOjpJZGVudGljYWxWYWx1ZUVuY29kaW5nOjpDb2FsZXNjZSk7CisgICAgICAg
IHJldHVybiBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShvdmVyZmxvd1Bvc2l0aW9uLnJlbGVhc2VOb25O
dWxsKCksIHNlbGZQb3NpdGlvbi5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICByZXR1cm4gc2VsZlBv
c2l0aW9uOwogfQogCkBAIC0zMzIyLDcgKzMzMTUsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVl
PiBjb25zdW1lSnVzdGlmeUl0ZW1zKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogICAgIGlm
IChsZWdhY3kpIHsKICAgICAgICAgcmFuZ2UgPSByYW5nZUNvcHk7CiAgICAgICAgIGlmIChwb3Np
dGlvbktleXdvcmQpCi0gICAgICAgICAgICByZXR1cm4gY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWly
KGxlZ2FjeS5yZWxlYXNlTm9uTnVsbCgpLCBwb3NpdGlvbktleXdvcmQucmVsZWFzZU5vbk51bGwo
KSwgUGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6Q29hbGVzY2UpOworICAgICAgICAgICAg
cmV0dXJuIENTU1ZhbHVlUGFpcjo6Y3JlYXRlKGxlZ2FjeS5yZWxlYXNlTm9uTnVsbCgpLCBwb3Np
dGlvbktleXdvcmQucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgIHJldHVybiBsZWdhY3k7CiAg
ICAgfQogICAgIHJldHVybiBjb25zdW1lU2VsZlBvc2l0aW9uT3ZlcmZsb3dQb3NpdGlvbihyYW5n
ZSwgaXNTZWxmUG9zaXRpb25PckxlZnRPclJpZ2h0S2V5d29yZCk7CkBAIC0zNzcxLDcgKzM3NjQs
NyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lSW5pdGlhbExldHRlcihDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSkKICAgICB9IGVsc2UKICAgICAgICAgcG9zaXRpb24gPSBoZWln
aHQuY29weVJlZigpOwogICAgIAotICAgIHJldHVybiBjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIo
cG9zaXRpb24ucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShoZWlnaHQpKTsKKyAgICByZXR1cm4g
Q1NTVmFsdWVQYWlyOjpjcmVhdGUocG9zaXRpb24ucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZSho
ZWlnaHQpKTsKIH0KIAogc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVNwZWFrQXMoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCkBAIC01OTkxLDEwICs1OTg0LDEwIEBAIGJvb2wgQ1NT
UHJvcGVydHlQYXJzZXI6OnBhcnNlU2hvcnRoYW5kKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIGJv
b2wgaW1wb3J0YW50KQogICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZlcnRpY2Fs
UmFkaWlbNF07CiAgICAgICAgIGlmICghY29uc3VtZVJhZGlpKGhvcml6b250YWxSYWRpaSwgdmVy
dGljYWxSYWRpaSwgbV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUsIHByb3BlcnR5ID09IENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyUmFkaXVzKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJUb3BMZWZ0UmFkaXVzLCBDU1NQcm9wZXJ0
eUJvcmRlclJhZGl1cywgY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKGhvcml6b250YWxSYWRpaVsw
XS5yZWxlYXNlTm9uTnVsbCgpLCB2ZXJ0aWNhbFJhZGlpWzBdLnJlbGVhc2VOb25OdWxsKCksIFBh
aXI6OklkZW50aWNhbFZhbHVlRW5jb2Rpbmc6OkNvYWxlc2NlKSwgaW1wb3J0YW50KTsKLSAgICAg
ICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1cywgQ1NTUHJvcGVy
dHlCb3JkZXJSYWRpdXMsIGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihob3Jpem9udGFsUmFkaWlb
MV0ucmVsZWFzZU5vbk51bGwoKSwgdmVydGljYWxSYWRpaVsxXS5yZWxlYXNlTm9uTnVsbCgpLCBQ
YWlyOjpJZGVudGljYWxWYWx1ZUVuY29kaW5nOjpDb2FsZXNjZSksIGltcG9ydGFudCk7Ci0gICAg
ICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMsIENTU1By
b3BlcnR5Qm9yZGVyUmFkaXVzLCBjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIoaG9yaXpvbnRhbFJh
ZGlpWzJdLnJlbGVhc2VOb25OdWxsKCksIHZlcnRpY2FsUmFkaWlbMl0ucmVsZWFzZU5vbk51bGwo
KSwgUGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6Q29hbGVzY2UpLCBpbXBvcnRhbnQpOwot
ICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXMsIENT
U1Byb3BlcnR5Qm9yZGVyUmFkaXVzLCBjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIoaG9yaXpvbnRh
bFJhZGlpWzNdLnJlbGVhc2VOb25OdWxsKCksIHZlcnRpY2FsUmFkaWlbM10ucmVsZWFzZU5vbk51
bGwoKSwgUGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6Q29hbGVzY2UpLCBpbXBvcnRhbnQp
OworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXMsIENT
U1Byb3BlcnR5Qm9yZGVyUmFkaXVzLCBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShob3Jpem9udGFsUmFk
aWlbMF0ucmVsZWFzZU5vbk51bGwoKSwgdmVydGljYWxSYWRpaVswXS5yZWxlYXNlTm9uTnVsbCgp
KSwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJUb3BS
aWdodFJhZGl1cywgQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXMsIENTU1ZhbHVlUGFpcjo6Y3JlYXRl
KGhvcml6b250YWxSYWRpaVsxXS5yZWxlYXNlTm9uTnVsbCgpLCB2ZXJ0aWNhbFJhZGlpWzFdLnJl
bGVhc2VOb25OdWxsKCkpLCBpbXBvcnRhbnQpOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzLCBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1cywgQ1NT
VmFsdWVQYWlyOjpjcmVhdGUoaG9yaXpvbnRhbFJhZGlpWzJdLnJlbGVhc2VOb25OdWxsKCksIHZl
cnRpY2FsUmFkaWlbMl0ucmVsZWFzZU5vbk51bGwoKSksIGltcG9ydGFudCk7CisgICAgICAgIGFk
ZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1cywgQ1NTUHJvcGVydHlC
b3JkZXJSYWRpdXMsIENTU1ZhbHVlUGFpcjo6Y3JlYXRlKGhvcml6b250YWxSYWRpaVszXS5yZWxl
YXNlTm9uTnVsbCgpLCB2ZXJ0aWNhbFJhZGlpWzNdLnJlbGVhc2VOb25OdWxsKCkpLCBpbXBvcnRh
bnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJv
cmRlckNvbG9yOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9w
ZXJ0eVBhcnNlckhlbHBlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9w
ZXJ0eVBhcnNlckhlbHBlcnMuY3BwCmluZGV4IDMwN2RmNjY5YzI3ZmVjM2FhYzY4NTk5MmQ2MTgw
N2JiNTE2YThhNTEuLjA5YWE1MzUwNGI1ZGVkZTdjNzZjMTBjYTM1NTdlNjNkOTIzNWExZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2Vy
SGVscGVycy5jcHAKQEAgLTQwLDEwICs0MCwxMCBAQAogI2luY2x1ZGUgIkNTU05hbWVkSW1hZ2VW
YWx1ZS5oIgogI2luY2x1ZGUgIkNTU1BhaW50SW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1Bh
cnNlcklkaW9tcy5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlUGFpci5oIgogI2luY2x1ZGUgIkNTU1Zh
bHVlUG9vbC5oIgogI2luY2x1ZGUgIkNvbG9yQ29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkNvbG9y
THVtaW5hbmNlLmgiCi0jaW5jbHVkZSAiUGFpci5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXMuaCIKICNpbmNsdWRlICJTdHlsZUNvbG9yLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CkBAIC02NDQsOSArNjQ0LDggQEAgUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lSWRlbnRSYW5nZShDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSwgQ1NTVmFsdWUKICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKIH0KIAotLy8g
RklYTUUtTkVXUEFSU0VSOiBFdmVudHVhbGx5IHdlJ2QgbGlrZSB0aGlzIHRvIHVzZSBDU1NDdXN0
b21JZGVudFZhbHVlLCBidXQgd2UgbmVlZAotLy8gdG8gZG8gb3RoZXIgcGx1bWJpbmcgd29yayBm
aXJzdCAobGlrZSBjaGFuZ2luZyBQYWlyIHRvIENTU1ZhbHVlUGFpciBhbmQgbWFrZSBpdCBub3QK
LS8vIHVzZSBvbmx5IHByaW1pdGl2ZSB2YWx1ZXMpLgorLy8gRklYTUUtTkVXUEFSU0VSOiBXZSBz
aG91bGQgcmVmYWN0b3IgdGhpcyB0byByZXR1cm4gYSBDU1NDdXN0b21JZGVudFZhbHVlIGluc3Rl
YWQgb2YgYSBDU1NQcmltaXRpdmVWYWx1ZSBvZiB0eXBlCisvLyBDU1NfU1RSSU5HLgogUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lQ3VzdG9tSWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UpCiB7CiAgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgIT0gSWRlbnRUb2tlbiB8
fCBpc0NTU1dpZGVLZXl3b3JkKHJhbmdlLnBlZWsoKS5pZCgpKSkKQEAgLTE5MTksOCArMTkxOCw4
IEBAIHN0YXRpYyBQb3NpdGlvbkNvb3JkaW5hdGVzIHBvc2l0aW9uRnJvbU9uZVZhbHVlKENTU1By
aW1pdGl2ZVZhbHVlJiB2YWx1ZSkKIHsKICAgICBib29sIHZhbHVlQXBwbGllc1RvWUF4aXNPbmx5
ID0gaXNWZXJ0aWNhbFBvc2l0aW9uS2V5d29yZE9ubHkodmFsdWUpOwogICAgIGlmICh2YWx1ZUFw
cGxpZXNUb1lBeGlzT25seSkKLSAgICAgICAgcmV0dXJuIHsgQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVDZW50ZXIpLCB2YWx1ZSB9OwotICAgIHJldHVybiB7IHZh
bHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZUNlbnRlcikg
fTsKKyAgICAgICAgcmV0dXJuIHsgQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIo
Q1NTVmFsdWVDZW50ZXIpLCBtYWtlUmVmKHZhbHVlKSB9OworICAgIHJldHVybiB7IG1ha2VSZWYo
dmFsdWUpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZUNlbnRl
cikgfTsKIH0KIAogc3RhdGljIE9wdGlvbmFsPFBvc2l0aW9uQ29vcmRpbmF0ZXM+IHBvc2l0aW9u
RnJvbVR3b1ZhbHVlcyhDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUxLCBDU1NQcmltaXRpdmVWYWx1
ZSYgdmFsdWUyKQpAQCAtMTkzMCwxNiArMTkyOSw4IEBAIHN0YXRpYyBPcHRpb25hbDxQb3NpdGlv
bkNvb3JkaW5hdGVzPiBwb3NpdGlvbkZyb21Ud29WYWx1ZXMoQ1NTUHJpbWl0aXZlVmFsdWUmIHZh
CiAgICAgaWYgKG11c3RPcmRlckFzWFkgJiYgbXVzdE9yZGVyQXNZWCkKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKICAgICBpZiAobXVzdE9yZGVyQXNZWCkKLSAgICAgICAgcmV0dXJuIFBv
c2l0aW9uQ29vcmRpbmF0ZXMgeyB2YWx1ZTIsIHZhbHVlMSB9OwotICAgIHJldHVybiBQb3NpdGlv
bkNvb3JkaW5hdGVzIHsgdmFsdWUxLCB2YWx1ZTIgfTsKLX0KLQotbmFtZXNwYWNlIENTU1Byb3Bl
cnR5UGFyc2VySGVscGVyc0ludGVybmFsIHsKLXRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+Ci1z
dGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIoQXJn
cyYmLi4uIGFyZ3MpCi17Ci0gICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3Jl
YXRlVmFsdWUoUGFpcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOwotfQor
ICAgICAgICByZXR1cm4gUG9zaXRpb25Db29yZGluYXRlcyB7IG1ha2VSZWYodmFsdWUyKSwgbWFr
ZVJlZih2YWx1ZTEpIH07CisgICAgcmV0dXJuIFBvc2l0aW9uQ29vcmRpbmF0ZXMgeyBtYWtlUmVm
KHZhbHVlMSksIG1ha2VSZWYodmFsdWUyKSB9OwogfQogCiAvLyBodHRwczovL2RyYWZ0cy5jc3N3
Zy5vcmcvY3NzLWJhY2tncm91bmRzLTMvI3Byb3BkZWYtYmFja2dyb3VuZC1wb3NpdGlvbgpAQCAt
MTk1NCw4ICsxOTQ1LDggQEAgc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlUHJp
bWl0aXZlVmFsdWVQYWlyKEFyZ3MmJi4uLiBhcmdzKQogLy8KIHN0YXRpYyBPcHRpb25hbDxQb3Np
dGlvbkNvb3JkaW5hdGVzPiBiYWNrZ3JvdW5kUG9zaXRpb25Gcm9tVGhyZWVWYWx1ZXMoY29uc3Qg
c3RkOjphcnJheTxDU1NQcmltaXRpdmVWYWx1ZSosIDU+JiB2YWx1ZXMpCiB7Ci0gICAgUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiByZXN1bHRYOwotICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gcmVzdWx0WTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHJlc3VsdFg7CisgICAgUmVmUHRyPENT
U1ZhbHVlPiByZXN1bHRZOwogCiAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNlbnRlciA9IG51bGxw
dHI7CiAgICAgZm9yIChpbnQgaSA9IDA7IHZhbHVlc1tpXTsgaSsrKSB7CkBAIC0xOTcxLDkgKzE5
NjIsOSBAQCBzdGF0aWMgT3B0aW9uYWw8UG9zaXRpb25Db29yZGluYXRlcz4gYmFja2dyb3VuZFBv
c2l0aW9uRnJvbVRocmVlVmFsdWVzKGNvbnN0IHN0ZAogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJlc3VsdDsKKyAg
ICAgICAgUmVmUHRyPENTU1ZhbHVlPiByZXN1bHQ7CiAgICAgICAgIGlmICh2YWx1ZXNbaSArIDFd
ICYmICF2YWx1ZXNbaSArIDFdLT5pc1ZhbHVlSUQoKSkKLSAgICAgICAgICAgIHJlc3VsdCA9IENT
U1Byb3BlcnR5UGFyc2VySGVscGVyc0ludGVybmFsOjpjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIo
Y3VycmVudFZhbHVlLCB2YWx1ZXNbKytpXSk7CisgICAgICAgICAgICByZXN1bHQgPSBDU1NWYWx1
ZVBhaXI6OmNyZWF0ZShjdXJyZW50VmFsdWUsIHZhbHVlc1srK2ldKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgcmVzdWx0ID0gY3VycmVudFZhbHVlOwogCkBAIC0yMDE1LDggKzIwMDYsOCBA
QCBzdGF0aWMgT3B0aW9uYWw8UG9zaXRpb25Db29yZGluYXRlcz4gYmFja2dyb3VuZFBvc2l0aW9u
RnJvbVRocmVlVmFsdWVzKGNvbnN0IHN0ZAogLy8KIHN0YXRpYyBPcHRpb25hbDxQb3NpdGlvbkNv
b3JkaW5hdGVzPiBwb3NpdGlvbkZyb21Gb3VyVmFsdWVzKGNvbnN0IHN0ZDo6YXJyYXk8Q1NTUHJp
bWl0aXZlVmFsdWUqLCA1PiYgdmFsdWVzKQogewotICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gcmVzdWx0WDsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJlc3VsdFk7CisgICAg
UmVmUHRyPENTU1ZhbHVlPiByZXN1bHRYOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gcmVzdWx0WTsK
IAogICAgIGZvciAoaW50IGkgPSAwOyB2YWx1ZXNbaV07IGkrKykgewogICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogY3VycmVudFZhbHVlID0gdmFsdWVzW2ldOwpAQCAtMjAyNyw5ICsyMDE4LDkg
QEAgc3RhdGljIE9wdGlvbmFsPFBvc2l0aW9uQ29vcmRpbmF0ZXM+IHBvc2l0aW9uRnJvbUZvdXJW
YWx1ZXMoY29uc3Qgc3RkOjphcnJheTxDU1MKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQ2Vu
dGVyKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgICAgICBSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IHJlc3VsdDsKKyAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiByZXN1
bHQ7CiAgICAgICAgIGlmICh2YWx1ZXNbaSArIDFdICYmICF2YWx1ZXNbaSArIDFdLT5pc1ZhbHVl
SUQoKSkKLSAgICAgICAgICAgIHJlc3VsdCA9IENTU1Byb3BlcnR5UGFyc2VySGVscGVyc0ludGVy
bmFsOjpjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIoY3VycmVudFZhbHVlLCB2YWx1ZXNbKytpXSk7
CisgICAgICAgICAgICByZXN1bHQgPSBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShjdXJyZW50VmFsdWUs
IHZhbHVlc1srK2ldKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzdWx0ID0gY3VycmVu
dFZhbHVlOwogCkBAIC0yMDg0LDEwICsyMDc1LDEwIEBAIE9wdGlvbmFsPFBvc2l0aW9uQ29vcmRp
bmF0ZXM+IGNvbnN1bWVQb3NpdGlvbkNvb3JkaW5hdGVzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
CiAgICAgcmV0dXJuIGJhY2tncm91bmRQb3NpdGlvbkZyb21UaHJlZVZhbHVlcyh2YWx1ZXMpOwog
fQogCi1SZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVQb3NpdGlvbihDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1
aXJrIHVuaXRsZXNzLCBQb3NpdGlvblN5bnRheCBwb3NpdGlvblN5bnRheCkKK1JlZlB0cjxDU1NW
YWx1ZVBhaXI+IGNvbnN1bWVQb3NpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NT
UGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzLCBQb3NpdGlv
blN5bnRheCBwb3NpdGlvblN5bnRheCkKIHsKICAgICBpZiAoYXV0byBjb29yZGluYXRlcyA9IGNv
bnN1bWVQb3NpdGlvbkNvb3JkaW5hdGVzKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcywg
cG9zaXRpb25TeW50YXgpKQotICAgICAgICByZXR1cm4gQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJz
SW50ZXJuYWw6OmNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihXVEZNb3ZlKGNvb3JkaW5hdGVzLT54
KSwgV1RGTW92ZShjb29yZGluYXRlcy0+eSkpOworICAgICAgICByZXR1cm4gQ1NTVmFsdWVQYWly
OjpjcmVhdGUoV1RGTW92ZShjb29yZGluYXRlcy0+eCksIFdURk1vdmUoY29vcmRpbmF0ZXMtPnkp
KTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtMjM2Miw4ICsyMzUzLDggQEAgc3RhdGlj
IFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVJhZGlhbEdyYWRpZW50KENTU1BhcnNlclRva2VuUmFu
Z2UmIGFyZ3MsIGNvbnN0IEMKICAgICAgICAgfHwgKHZlcnRpY2FsU2l6ZSAmJiB2ZXJ0aWNhbFNp
emUtPmlzQ2FsY3VsYXRlZFBlcmNlbnRhZ2VXaXRoTGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY2VudGVyWDsKLSAgICBS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNlbnRlclk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBj
ZW50ZXJYOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gY2VudGVyWTsKICAgICBpZiAoYXJncy5wZWVr
KCkuaWQoKSA9PSBDU1NWYWx1ZUF0KSB7CiAgICAgICAgIGFyZ3MuY29uc3VtZUluY2x1ZGluZ1do
aXRlc3BhY2UoKTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaAppbmRleCA5MTNjMTA4ZjNhYzk0M2Y0YjBhNTQ5
MmI0ZWM1ZDE5YWUwZGE2MzRlLi5lN2IwYWRhOTQ2OTg1MjBhZmFlODcwMzhjZDAwMmY1NTY5MGZj
NzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFy
c2VySGVscGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQ
YXJzZXJIZWxwZXJzLmgKQEAgLTExMSwxMSArMTExLDExIEBAIGVudW0gY2xhc3MgUG9zaXRpb25T
eW50YXggewogfTsKIAogc3RydWN0IFBvc2l0aW9uQ29vcmRpbmF0ZXMgewotICAgIFJlZjxDU1NQ
cmltaXRpdmVWYWx1ZT4geDsKLSAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHk7CisgICAgUmVm
PENTU1ZhbHVlPiB4OworICAgIFJlZjxDU1NWYWx1ZT4geTsKIH07CiAKLVJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gY29uc3VtZVBvc2l0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJz
ZXJNb2RlLCBVbml0bGVzc1F1aXJrLCBQb3NpdGlvblN5bnRheCk7CitSZWZQdHI8Q1NTVmFsdWVQ
YWlyPiBjb25zdW1lUG9zaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlck1vZGUs
IFVuaXRsZXNzUXVpcmssIFBvc2l0aW9uU3ludGF4KTsKIE9wdGlvbmFsPFBvc2l0aW9uQ29vcmRp
bmF0ZXM+IGNvbnN1bWVQb3NpdGlvbkNvb3JkaW5hdGVzKENTU1BhcnNlclRva2VuUmFuZ2UmLCBD
U1NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrLCBQb3NpdGlvblN5bnRheCk7CiBPcHRpb25hbDxQ
b3NpdGlvbkNvb3JkaW5hdGVzPiBjb25zdW1lT25lT3JUd29WYWx1ZWRQb3NpdGlvbkNvb3JkaW5h
dGVzKENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAppbmRleCA2
ZjcxNmE3NDg3ZDMxNDZlOTM4NmJlNTFjNjA1ZjgzYzZlMWU1MjgzLi44YTJlY2VmYmFhNjE5Y2Mx
MGQxNjNjYzA2YjhhYjJjMmQ3NWEwZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAtNDIsMTEgKzQyLDExIEBACiAjaW5jbHVkZSAiQ1NTUHJp
bWl0aXZlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCiAj
aW5jbHVkZSAiQ1NTUmVmbGVjdFZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTVmFsdWVQYWlyLmgiCiAj
aW5jbHVkZSAiRm9udFNlbGVjdGlvblZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgi
CiAjaW5jbHVkZSAiR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmgiCiAjaW5jbHVkZSAiTGVuZ3RoLmgi
Ci0jaW5jbHVkZSAiUGFpci5oIgogI2luY2x1ZGUgIlF1b3Rlc0RhdGEuaCIKICNpbmNsdWRlICJS
dW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU1ZHVVJJUmVmZXJlbmNlLmgiCkBA
IC0xODMsNyArMTgzLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgc3RhdGljIExlbmd0aCBj
b252ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5ndGgoY29uc3QgTGVuZ3RoJik7Ci0gICAgdGVtcGxh
dGU8Q1NTVmFsdWVJRCwgQ1NTVmFsdWVJRD4gc3RhdGljIExlbmd0aCBjb252ZXJ0UG9zaXRpb25D
b21wb25lbnQoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmKTsKKyAgICB0
ZW1wbGF0ZTxDU1NWYWx1ZUlELCBDU1NWYWx1ZUlEPiBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRQb3Np
dGlvbkNvbXBvbmVudChCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwogCiAgICAgc3Rh
dGljIEdyaWRMZW5ndGggY3JlYXRlR3JpZFRyYWNrQnJlYWR0aChjb25zdCBDU1NQcmltaXRpdmVW
YWx1ZSYsIEJ1aWxkZXJTdGF0ZSYpOwogICAgIHN0YXRpYyBHcmlkVHJhY2tTaXplIGNyZWF0ZUdy
aWRUcmFja1NpemUoY29uc3QgQ1NTVmFsdWUmLCBCdWlsZGVyU3RhdGUmKTsKQEAgLTMyOCwxNyAr
MzI4LDIzIEBAIGlubGluZSBMZW5ndGggQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRvUmFkaXVz
TGVuZ3RoKENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmCiAKIGlubGluZSBMZW5ndGhTaXplIEJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSYWRpdXMoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUs
IGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBhdXRvKiBwYWlyID0gZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5wYWlyVmFsdWUoKTsKLSAgICBpZiAoIXBhaXIgfHwgIXBh
aXItPmZpcnN0KCkgfHwgIXBhaXItPnNlY29uZCgpKQotICAgICAgICByZXR1cm4geyB7IDAsIExl
bmd0aFR5cGU6OkZpeGVkIH0sIHsgMCwgTGVuZ3RoVHlwZTo6Rml4ZWQgfSB9OworICAgIExlbmd0
aFNpemUgZmFsbGJhY2tMZW5ndGhTaXplID0geyB7IDAsIExlbmd0aFR5cGU6OkZpeGVkIH0sIHsg
MCwgTGVuZ3RoVHlwZTo6Rml4ZWQgfSB9OworICAgIGlmICghdmFsdWUuaXNWYWx1ZVBhaXIoKSkK
KyAgICAgICAgcmV0dXJuIGZhbGxiYWNrTGVuZ3RoU2l6ZTsKKyAgICAKKyAgICBhdXRvJiBwYWly
ID0gZG93bmNhc3Q8Q1NTVmFsdWVQYWlyPih2YWx1ZSk7CisgICAgYXV0byBmaXJzdCA9IHBhaXIu
Zmlyc3RBc1ByaW1pdGl2ZSgpOworICAgIGF1dG8gc2Vjb25kID0gcGFpci5zZWNvbmRBc1ByaW1p
dGl2ZSgpOworICAgIGlmICghZmlyc3QgfHwgIXNlY29uZCkKKyAgICAgICAgcmV0dXJuIGZhbGxi
YWNrTGVuZ3RoU2l6ZTsKIAogICAgIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgY29udmVyc2lv
bkRhdGEgPSBidWlsZGVyU3RhdGUuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpOwotICAgIExl
bmd0aFNpemUgcmFkaXVzIHsgY29udmVydFRvUmFkaXVzTGVuZ3RoKGNvbnZlcnNpb25EYXRhLCAq
cGFpci0+Zmlyc3QoKSksIGNvbnZlcnRUb1JhZGl1c0xlbmd0aChjb252ZXJzaW9uRGF0YSwgKnBh
aXItPnNlY29uZCgpKSB9OworICAgIExlbmd0aFNpemUgcmFkaXVzIHsgY29udmVydFRvUmFkaXVz
TGVuZ3RoKGNvbnZlcnNpb25EYXRhLCAqZmlyc3QpLCBjb252ZXJ0VG9SYWRpdXNMZW5ndGgoY29u
dmVyc2lvbkRhdGEsICpzZWNvbmQpIH07CiAKICAgICBBU1NFUlQoIXJhZGl1cy53aWR0aC5pc05l
Z2F0aXZlKCkpOwogICAgIEFTU0VSVCghcmFkaXVzLmhlaWdodC5pc05lZ2F0aXZlKCkpOwogICAg
IGlmIChyYWRpdXMud2lkdGguaXNaZXJvKCkgfHwgcmFkaXVzLmhlaWdodC5pc1plcm8oKSkKLSAg
ICAgICAgcmV0dXJuIHsgeyAwLCBMZW5ndGhUeXBlOjpGaXhlZCB9LCB7IDAsIExlbmd0aFR5cGU6
OkZpeGVkIH0gfTsKKyAgICAgICAgcmV0dXJuIGZhbGxiYWNrTGVuZ3RoU2l6ZTsKIAogICAgIHJl
dHVybiByYWRpdXM7CiB9CkBAIC0zNTksMzkgKzM2NSw0MSBAQCBpbmxpbmUgTGVuZ3RoIEJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRUbzEwMFBlcmNlbnRNaW51c0xlbmd0aChjb25zdCBMZW5ndGgm
IGxlbgogCiBpbmxpbmUgTGVuZ3RoIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbkNv
bXBvbmVudFgoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1
ZSkKIHsKLSAgICByZXR1cm4gY29udmVydFBvc2l0aW9uQ29tcG9uZW50PENTU1ZhbHVlTGVmdCwg
Q1NTVmFsdWVSaWdodD4oYnVpbGRlclN0YXRlLCBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
dmFsdWUpKTsKKyAgICByZXR1cm4gY29udmVydFBvc2l0aW9uQ29tcG9uZW50PENTU1ZhbHVlTGVm
dCwgQ1NTVmFsdWVSaWdodD4oYnVpbGRlclN0YXRlLCB2YWx1ZSk7CiB9CiAKIGlubGluZSBMZW5n
dGggQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBvc2l0aW9uQ29tcG9uZW50WShCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewotICAgIHJldHVybiBj
b252ZXJ0UG9zaXRpb25Db21wb25lbnQ8Q1NTVmFsdWVUb3AsIENTU1ZhbHVlQm90dG9tPihidWls
ZGVyU3RhdGUsIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpOworICAgIHJldHVy
biBjb252ZXJ0UG9zaXRpb25Db21wb25lbnQ8Q1NTVmFsdWVUb3AsIENTU1ZhbHVlQm90dG9tPihi
dWlsZGVyU3RhdGUsIHZhbHVlKTsKIH0KIAogdGVtcGxhdGU8Q1NTVmFsdWVJRCBjc3NWYWx1ZUZv
cjAsIENTU1ZhbHVlSUQgY3NzVmFsdWVGb3IxMDA+Ci1pbmxpbmUgTGVuZ3RoIEJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudChCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0
ZSwgY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlKQoraW5saW5lIExlbmd0aCBCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25Db21wb25lbnQoQnVpbGRlclN0YXRlJiBidWlsZGVy
U3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBMZW5ndGggbGVuZ3RoOwogCiAg
ICAgYXV0byogbGVuZ3RoVmFsdWUgPSAmdmFsdWU7CiAgICAgYm9vbCByZWxhdGl2ZVRvVHJhaWxp
bmdFZGdlID0gZmFsc2U7CiAgICAgCi0gICAgaWYgKHZhbHVlLmlzUGFpcigpKSB7Ci0gICAgICAg
IGF1dG8mIGZpcnN0ID0gKnZhbHVlLnBhaXJWYWx1ZSgpLT5maXJzdCgpOwotICAgICAgICBpZiAo
Zmlyc3QudmFsdWVJRCgpID09IENTU1ZhbHVlUmlnaHQgfHwgZmlyc3QudmFsdWVJRCgpID09IENT
U1ZhbHVlQm90dG9tKQorICAgIGlmICh2YWx1ZS5pc1ZhbHVlUGFpcigpKSB7CisgICAgICAgIGF1
dG8mIHBhaXIgPSBkb3duY2FzdDxDU1NWYWx1ZVBhaXI+KHZhbHVlKTsKKyAgICAgICAgYXV0byBm
aXJzdCA9IHBhaXIuZmlyc3RBc1ZhbHVlSUQoKTsKKyAgICAgICAgaWYgKGZpcnN0ID09IENTU1Zh
bHVlUmlnaHQgfHwgZmlyc3QgPT0gQ1NTVmFsdWVCb3R0b20pCiAgICAgICAgICAgICByZWxhdGl2
ZVRvVHJhaWxpbmdFZGdlID0gdHJ1ZTsKLSAgICAgICAgbGVuZ3RoVmFsdWUgPSB2YWx1ZS5wYWly
VmFsdWUoKS0+c2Vjb25kKCk7Ci0gICAgfQotICAgIAotICAgIGlmICh2YWx1ZS5pc1ZhbHVlSUQo
KSkgewotICAgICAgICBzd2l0Y2ggKHZhbHVlLnZhbHVlSUQoKSkgewotICAgICAgICBjYXNlIGNz
c1ZhbHVlRm9yMDoKLSAgICAgICAgICAgIHJldHVybiBMZW5ndGgoMCwgTGVuZ3RoVHlwZTo6UGVy
Y2VudCk7Ci0gICAgICAgIGNhc2UgY3NzVmFsdWVGb3IxMDA6Ci0gICAgICAgICAgICByZXR1cm4g
TGVuZ3RoKDEwMCwgTGVuZ3RoVHlwZTo6UGVyY2VudCk7Ci0gICAgICAgIGNhc2UgQ1NTVmFsdWVD
ZW50ZXI6Ci0gICAgICAgICAgICByZXR1cm4gTGVuZ3RoKDUwLCBMZW5ndGhUeXBlOjpQZXJjZW50
KTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICBsZW5ndGhWYWx1ZSA9IHBhaXIuc2Vjb25kQXNQcmltaXRpdmUoKS5nZXQoKTsKKyAg
ICB9IGVsc2UgaWYgKHZhbHVlLmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBhdXRvJiBw
cmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CisgICAg
ICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc1ZhbHVlSUQoKSkgeworICAgICAgICAgICAgc3dpdGNo
IChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkpIHsKKyAgICAgICAgICAgIGNhc2UgY3NzVmFsdWVG
b3IwOgorICAgICAgICAgICAgICAgIHJldHVybiBMZW5ndGgoMCwgTGVuZ3RoVHlwZTo6UGVyY2Vu
dCk7CisgICAgICAgICAgICBjYXNlIGNzc1ZhbHVlRm9yMTAwOgorICAgICAgICAgICAgICAgIHJl
dHVybiBMZW5ndGgoMTAwLCBMZW5ndGhUeXBlOjpQZXJjZW50KTsKKyAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVDZW50ZXI6CisgICAgICAgICAgICAgICAgcmV0dXJuIExlbmd0aCg1MCwgTGVuZ3Ro
VHlwZTo6UGVyY2VudCk7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAg
ICAgICAKQEAgLTQwNSwxMyArNDEzLDE3IEBAIGlubGluZSBMZW5ndGggQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydFBvc2l0aW9uQ29tcG9uZW50KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0CiAKIGlu
bGluZSBMZW5ndGhQb2ludCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0T2JqZWN0UG9zaXRpb24o
QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKLSAg
ICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSk7Ci0gICAgUGFpciogcGFpciA9IHByaW1pdGl2ZVZhbHVlLnBhaXJWYWx1ZSgpOwotICAgIGlm
ICghcGFpciB8fCAhcGFpci0+Zmlyc3QoKSB8fCAhcGFpci0+c2Vjb25kKCkpCisgICAgaWYgKCF2
YWx1ZS5pc1ZhbHVlUGFpcigpKQorICAgICAgICByZXR1cm4gUmVuZGVyU3R5bGU6OmluaXRpYWxP
YmplY3RQb3NpdGlvbigpOworICAgIAorICAgIGF1dG8mIHBhaXIgPSBkb3duY2FzdDxDU1NWYWx1
ZVBhaXI+KHZhbHVlKTsKKyAgICBhdXRvIGZpcnN0ID0gcGFpci5maXJzdCgpOworICAgIGF1dG8g
c2Vjb25kID0gcGFpci5zZWNvbmQoKTsKKyAgICBpZiAoIWZpcnN0IHx8ICFzZWNvbmQpCiAgICAg
ICAgIHJldHVybiBSZW5kZXJTdHlsZTo6aW5pdGlhbE9iamVjdFBvc2l0aW9uKCk7CiAKLSAgICBM
ZW5ndGggbGVuZ3RoWCA9IGNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudDxDU1NWYWx1ZUxlZnQsIENT
U1ZhbHVlUmlnaHQ+KGJ1aWxkZXJTdGF0ZSwgKnBhaXItPmZpcnN0KCkpOwotICAgIExlbmd0aCBs
ZW5ndGhZID0gY29udmVydFBvc2l0aW9uQ29tcG9uZW50PENTU1ZhbHVlVG9wLCBDU1NWYWx1ZUJv
dHRvbT4oYnVpbGRlclN0YXRlLCAqcGFpci0+c2Vjb25kKCkpOworICAgIExlbmd0aCBsZW5ndGhY
ID0gY29udmVydFBvc2l0aW9uQ29tcG9uZW50PENTU1ZhbHVlTGVmdCwgQ1NTVmFsdWVSaWdodD4o
YnVpbGRlclN0YXRlLCAqZmlyc3QpOworICAgIExlbmd0aCBsZW5ndGhZID0gY29udmVydFBvc2l0
aW9uQ29tcG9uZW50PENTU1ZhbHVlVG9wLCBDU1NWYWx1ZUJvdHRvbT4oYnVpbGRlclN0YXRlLCAq
c2Vjb25kKTsKIAogICAgIHJldHVybiBMZW5ndGhQb2ludChsZW5ndGhYLCBsZW5ndGhZKTsKIH0K
QEAgLTc3MywxNyArNzg1LDE2IEBAIGlubGluZSBSZWZQdHI8U3R5bGVSZWZsZWN0aW9uPiBCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0UmVmbGVjdGlvbihCdWlsZGVyU3RhdGUmCiAKIGlubGluZSBJ
bnRTaXplIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRJbml0aWFsTGV0dGVyKEJ1aWxkZXJTdGF0
ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9
IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0KLSAgICBpZiAocHJpbWl0aXZl
VmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKQorICAgIGlmICh2YWx1ZS5pc1ByaW1p
dGl2ZVZhbHVlKCkgJiYgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlE
KCkgPT0gQ1NTVmFsdWVOb3JtYWwpCiAgICAgICAgIHJldHVybiBJbnRTaXplKCk7CiAKLSAgICBQ
YWlyKiBwYWlyID0gcHJpbWl0aXZlVmFsdWUucGFpclZhbHVlKCk7Ci0gICAgQVNTRVJUKHBhaXIp
OwotICAgIEFTU0VSVChwYWlyLT5maXJzdCgpKTsKLSAgICBBU1NFUlQocGFpci0+c2Vjb25kKCkp
OworICAgIGF1dG8mIHBhaXIgPSBkb3duY2FzdDxDU1NWYWx1ZVBhaXI+KHZhbHVlKTsKKyAgICBh
dXRvIGZpcnN0ID0gcGFpci5maXJzdEFzUHJpbWl0aXZlKCk7CisgICAgYXV0byBzZWNvbmQgPSBw
YWlyLnNlY29uZEFzUHJpbWl0aXZlKCk7CisgICAgQVNTRVJUKGZpcnN0KTsKKyAgICBBU1NFUlQo
c2Vjb25kKTsKIAotICAgIHJldHVybiBJbnRTaXplKHBhaXItPmZpcnN0KCktPmludFZhbHVlKCks
IHBhaXItPnNlY29uZCgpLT5pbnRWYWx1ZSgpKTsKKyAgICByZXR1cm4gSW50U2l6ZShmaXJzdC0+
aW50VmFsdWUoKSwgc2Vjb25kLT5pbnRWYWx1ZSgpKTsKIH0KIAogaW5saW5lIGZsb2F0IEJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0U3Ryb2tlV2lkdGgoQnVpbGRlclN0YXRlJiBidWlsZGVy
U3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKQEAgLTE0ODAsMjEgKzE0OTEsMjQgQEAgaW5s
aW5lIENvbG9yIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTVkdDb2xvcihCdWlsZGVyU3RhdGUm
IGJ1aWxkZXJTdGF0ZSwgY29uc3QKIGlubGluZSBTdHlsZVNlbGZBbGlnbm1lbnREYXRhIEJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRTZWxmT3JEZWZhdWx0QWxpZ25tZW50RGF0YShCdWlsZGVyU3Rh
dGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgU3R5bGVTZWxmQWxpZ25tZW50RGF0
YSBhbGlnbm1lbnREYXRhID0gUmVuZGVyU3R5bGU6OmluaXRpYWxTZWxmQWxpZ25tZW50KCk7Ci0g
ICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFs
dWUpOwotICAgIGlmIChQYWlyKiBwYWlyVmFsdWUgPSBwcmltaXRpdmVWYWx1ZS5wYWlyVmFsdWUo
KSkgewotICAgICAgICBpZiAocGFpclZhbHVlLT5maXJzdCgpLT52YWx1ZUlEKCkgPT0gQ1NTVmFs
dWVMZWdhY3kpIHsKKyAgICBpZiAodmFsdWUuaXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICBh
bGlnbm1lbnREYXRhLnNldFBvc2l0aW9uKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSkpOworICAgIGVsc2UgaWYgKHZhbHVlLmlzVmFsdWVQYWlyKCkpIHsKKyAgICAgICAgYXV0byYg
cGFpciA9IGRvd25jYXN0PENTU1ZhbHVlUGFpcj4odmFsdWUpOworICAgICAgICBhdXRvIGZpcnN0
QXNWYWx1ZUlEID0gcGFpci5maXJzdEFzVmFsdWVJRCgpOworICAgICAgICBpZiAoZmlyc3RBc1Zh
bHVlSUQgPT0gQ1NTVmFsdWVMZWdhY3kpIHsKICAgICAgICAgICAgIGFsaWdubWVudERhdGEuc2V0
UG9zaXRpb25UeXBlKEl0ZW1Qb3NpdGlvblR5cGU6OkxlZ2FjeSk7Ci0gICAgICAgICAgICBhbGln
bm1lbnREYXRhLnNldFBvc2l0aW9uKCpwYWlyVmFsdWUtPnNlY29uZCgpKTsKLSAgICAgICAgfSBl
bHNlIGlmIChwYWlyVmFsdWUtPmZpcnN0KCktPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUZpcnN0KQor
ICAgICAgICAgICAgYWxpZ25tZW50RGF0YS5zZXRQb3NpdGlvbigqcGFpci5zZWNvbmRBc1ByaW1p
dGl2ZSgpKTsKKyAgICAgICAgfSBlbHNlIGlmIChmaXJzdEFzVmFsdWVJRCA9PSBDU1NWYWx1ZUZp
cnN0KQogICAgICAgICAgICAgYWxpZ25tZW50RGF0YS5zZXRQb3NpdGlvbihJdGVtUG9zaXRpb246
OkJhc2VsaW5lKTsKLSAgICAgICAgZWxzZSBpZiAocGFpclZhbHVlLT5maXJzdCgpLT52YWx1ZUlE
KCkgPT0gQ1NTVmFsdWVMYXN0KQorICAgICAgICBlbHNlIGlmIChmaXJzdEFzVmFsdWVJRCA9PSBD
U1NWYWx1ZUxhc3QpCiAgICAgICAgICAgICBhbGlnbm1lbnREYXRhLnNldFBvc2l0aW9uKEl0ZW1Q
b3NpdGlvbjo6TGFzdEJhc2VsaW5lKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBhbGln
bm1lbnREYXRhLnNldE92ZXJmbG93KCpwYWlyVmFsdWUtPmZpcnN0KCkpOwotICAgICAgICAgICAg
YWxpZ25tZW50RGF0YS5zZXRQb3NpdGlvbigqcGFpclZhbHVlLT5zZWNvbmQoKSk7CisgICAgICAg
ICAgICBhbGlnbm1lbnREYXRhLnNldE92ZXJmbG93KCpwYWlyLmZpcnN0QXNQcmltaXRpdmUoKSk7
CisgICAgICAgICAgICBhbGlnbm1lbnREYXRhLnNldFBvc2l0aW9uKCpwYWlyLnNlY29uZEFzUHJp
bWl0aXZlKCkpOwogICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAgIGFsaWdubWVudERhdGEu
c2V0UG9zaXRpb24ocHJpbWl0aXZlVmFsdWUpOworICAgIH0KKyAgICAKICAgICByZXR1cm4gYWxp
Z25tZW50RGF0YTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVC
dWlsZGVyQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20u
aAppbmRleCA0NjhlNjM4ZTBiZWUxMzg2NGVhYmMwZDQzY2Y5NTNkYzc1YzgyMzJkLi4wNGQyMGM0
OTY5ZGM2Njk2ZjUwNzI3YzY3Mjg4ZDg5YzE3ZWQxMjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZUJ1aWxkZXJDdXN0b20uaApAQCAtMTMxMyw5ICsxMzEzLDkgQEAgaW5saW5lIHZvaWQg
QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNvdW50ZXIoQnVpbGRlclN0YXRlJiBidWlsZGVyU3Rh
dGUsIENTU1ZhbHUKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yIChhdXRvJiBpdGVtIDogZG93
bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsKLSAgICAgICAgUGFpciogcGFpciA9IGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPihpdGVtLmdldCgpKS5wYWlyVmFsdWUoKTsKLSAgICAgICAg
QXRvbVN0cmluZyBpZGVudGlmaWVyID0gcGFpci0+Zmlyc3QoKS0+c3RyaW5nVmFsdWUoKTsKLSAg
ICAgICAgaW50IHZhbHVlID0gcGFpci0+c2Vjb25kKCktPmludFZhbHVlKCk7CisgICAgICAgIGF1
dG8mIHBhaXIgPSBkb3duY2FzdDxDU1NWYWx1ZVBhaXI+KGl0ZW0uZ2V0KCkpOworICAgICAgICBB
dG9tU3RyaW5nIGlkZW50aWZpZXIgPSBwYWlyLmZpcnN0QXNQcmltaXRpdmUoKS0+c3RyaW5nVmFs
dWUoKTsKKyAgICAgICAgaW50IHZhbHVlID0gcGFpci5zZWNvbmRBc1ByaW1pdGl2ZSgpLT5pbnRW
YWx1ZSgpOwogICAgICAgICBhdXRvJiBkaXJlY3RpdmVzID0gbWFwLmFkZChpZGVudGlmaWVyLCBD
b3VudGVyRGlyZWN0aXZlcyB7IH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICAgICAgaWYgKGNvdW50
ZXJCZWhhdmlvciA9PSBSZXNldCkKICAgICAgICAgICAgIGRpcmVjdGl2ZXMucmVzZXRWYWx1ZSA9
IHZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmNwcAppbmRleCAzNGU4MDJm
YWZjMTdhNzU3ZjIyNzYxMmMzMGYyYzhjMjBlOWE5ODc1Li5jNjZhYTYwYTI3NWQ4YTI2N2RjY2Fk
YTkxNjFiZTUxMGQwZTZlY2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmNw
cApAQCAtNTEsNyArNTEsNiBAQAogI2luY2x1ZGUgIk1lZGlhUXVlcnlFdmFsdWF0b3IuaCIKICNp
bmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJQYWdlUnVsZUNvbGxlY3Rvci5o
IgotI2luY2x1ZGUgIlBhaXIuaCIKICNpbmNsdWRlICJSZW5kZXJTY3JvbGxiYXIuaCIKICNpbmNs
dWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCA5MjcwNmJhMjE0ZTA5ZjlkMTM0MDdhMzYzOGJmNWVjZjE5MGVhNWRlLi5iNGRjOTNjOGE3
YTE5ODM1NzMwNmVlNjI5MTk5YTRmYTBlZjNkNjY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIw
MjEtMDMtMjQgIFR5bGVyIFdpbGNvY2sgIDx0d2lsY28ub0Bwcm90b25tYWlsLmNvbT4KKworICAg
ICAgICBSZWZhY3RvciBQYWlyLmggdG8gQ1NTVmFsdWVQYWlyLmgKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzIwNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhaXIgdmFsdWVzIHVzZWQgdG8gYmUgcmVw
cmVzZW50ZWQgYnkgQ1NTUHJpbWl0aXZlVmFsdWVzLCBidXQgbm93CisgICAgICAgIGFyZSByZXBy
ZXNlbnRlZCBieSBDU1NWYWx1ZVBhaXIuICBDaGFuZ2UgdGVzdCBleHBlY3RhdGlvbnMgdG8gZXhw
ZWN0CisgICAgICAgIENTU1ZhbHVlUGFpcidzIHBhcmVudCBjbGFzcywgQ1NTVmFsdWUuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9nbGliL3N2Zy9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS1iYXNpYy1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3N2Zy9jc3MvZ2V0Q29tcHV0ZWRTdHls
ZS1iYXNpYy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL3N2Zy9jc3MvZ2V0
Q29tcHV0ZWRTdHlsZS1iYXNpYy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3ZnL2Nzcy9nZXRD
b21wdXRlZFN0eWxlLWJhc2ljLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgRXhwZWN0IENTU1ZhbHVl
IGluc3RlYWQgb2YgQ1NTVmFsdWVQYWlyIGZvciBwcm9wZXJ0aWVzIHdob3NlCisgICAgICAgIHZh
bHVlcyBhcmUgcGFpcnMuCisKIDIwMjEtMDMtMjQgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBBZGQgRXhwZXJpbWVudGFsIE1lZGlhU2Vz
c2lvbiBjb29yZGluYXRvcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9z
dmcvY3NzL2dldENvbXB1dGVkU3R5bGUtYmFzaWMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ2xpYi9zdmcvY3NzL2dldENvbXB1dGVkU3R5bGUtYmFzaWMtZXhwZWN0ZWQudHh0
CmluZGV4IDRlZjk5MTcyMjQyMDUxOTY2OTdmZTgyZjdmNmI1ODY2MGUwZmFkYmUuLmJkMjY4YTQ2
Mzc1NjVkMjNiOGQwNTNmODFlMTM0MTdiN2Y1MWExNTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2dsaWIvc3ZnL2Nzcy9nZXRDb21wdXRlZFN0eWxlLWJhc2ljLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL3N2Zy9jc3MvZ2V0Q29tcHV0ZWRTdHls
ZS1iYXNpYy1leHBlY3RlZC50eHQKQEAgLTM3LDcgKzM3LDcgQEAgcmVjdDogc3R5bGUuZ2V0UHJv
cGVydHlDU1NWYWx1ZShib3JkZXItY29sbGFwc2UpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1
ZV0KIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoYm9yZGVyLWltYWdlLW91dHNldCkgOiAw
CiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKGJvcmRlci1pbWFnZS1vdXRzZXQpIDog
W29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUo
Ym9yZGVyLWltYWdlLXJlcGVhdCkgOiBzdHJldGNoCi1yZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNT
U1ZhbHVlKGJvcmRlci1pbWFnZS1yZXBlYXQpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0K
K3JlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoYm9yZGVyLWltYWdlLXJlcGVhdCkgOiBb
b2JqZWN0IENTU1ZhbHVlXQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShib3JkZXItaW1h
Z2Utc2xpY2UpIDogMTAwJQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShib3JkZXIt
aW1hZ2Utc2xpY2UpIDogW29iamVjdCBDU1NWYWx1ZV0KIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5
VmFsdWUoYm9yZGVyLWltYWdlLXNvdXJjZSkgOiBub25lCkBAIC00NzEsNyArNDcxLDcgQEAgcmVj
dDogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdlKSA6IFtv
YmplY3QgQ1NTUHJpbWl0aXZlVmEKIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoLXdlYmtp
dC1tYXNrLWJveC1pbWFnZS1vdXRzZXQpIDogMAogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlDU1NW
YWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdlLW91dHNldCkgOiBbb2JqZWN0IENTU1ByaW1pdGl2
ZVZhbHVlXQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0LW1hc2stYm94LWlt
YWdlLXJlcGVhdCkgOiBzdHJldGNoCi1yZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13
ZWJraXQtbWFzay1ib3gtaW1hZ2UtcmVwZWF0KSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVd
CityZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2Ut
cmVwZWF0KSA6IFtvYmplY3QgQ1NTVmFsdWVdCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVl
KC13ZWJraXQtbWFzay1ib3gtaW1hZ2Utc2xpY2UpIDogMCBmaWxsCiByZWN0OiBzdHlsZS5nZXRQ
cm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2Utc2xpY2UpIDogW29iamVjdCBD
U1NWYWx1ZV0KIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoLXdlYmtpdC1tYXNrLWJveC1p
bWFnZS1zb3VyY2UpIDogbm9uZQpAQCAtNTYxLDcgKzU2MSw3IEBAIGc6IHN0eWxlLmdldFByb3Bl
cnR5Q1NTVmFsdWUoYm9yZGVyLWNvbGxhcHNlKSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVd
CiBnOiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGJvcmRlci1pbWFnZS1vdXRzZXQpIDogMAogZzog
c3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShib3JkZXItaW1hZ2Utb3V0c2V0KSA6IFtvYmplY3Qg
Q1NTUHJpbWl0aXZlVmFsdWVdCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGJvcmRlci1pbWFn
ZS1yZXBlYXQpIDogc3RyZXRjaAotZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShib3JkZXIt
aW1hZ2UtcmVwZWF0KSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVdCitnOiBzdHlsZS5nZXRQ
cm9wZXJ0eUNTU1ZhbHVlKGJvcmRlci1pbWFnZS1yZXBlYXQpIDogW29iamVjdCBDU1NWYWx1ZV0K
IGc6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoYm9yZGVyLWltYWdlLXNsaWNlKSA6IDEwMCUKIGc6
IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoYm9yZGVyLWltYWdlLXNsaWNlKSA6IFtvYmplY3Qg
Q1NTVmFsdWVdCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGJvcmRlci1pbWFnZS1zb3VyY2Up
IDogbm9uZQpAQCAtOTk1LDcgKzk5NSw3IEBAIGc6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUo
LXdlYmtpdC1tYXNrLWJveC1pbWFnZSkgOiBbb2JqZWN0IENTU1ByaW1pdGl2ZVZhbHVlCiBnOiBz
dHlsZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2Utb3V0c2V0KSA6IDAK
IGc6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1vdXRz
ZXQpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KIGc6IHN0eWxlLmdldFByb3BlcnR5VmFs
dWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1yZXBlYXQpIDogc3RyZXRjaAotZzogc3R5bGUuZ2V0
UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdlLXJlcGVhdCkgOiBbb2JqZWN0
IENTU1ByaW1pdGl2ZVZhbHVlXQorZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0
LW1hc2stYm94LWltYWdlLXJlcGVhdCkgOiBbb2JqZWN0IENTU1ZhbHVlXQogZzogc3R5bGUuZ2V0
UHJvcGVydHlWYWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdlLXNsaWNlKSA6IDAgZmlsbAogZzog
c3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdlLXNsaWNlKSA6
IFtvYmplY3QgQ1NTVmFsdWVdCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtbWFz
ay1ib3gtaW1hZ2Utc291cmNlKSA6IG5vbmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2lvcy9zdmcvY3NzL2dldENvbXB1dGVkU3R5bGUtYmFzaWMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vaW9zL3N2Zy9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS1iYXNpYy1leHBl
Y3RlZC50eHQKaW5kZXggNGVmOTkxNzIyNDIwNTE5NjY5N2ZlODJmN2Y2YjU4NjYwZTBmYWRiZS4u
YmQyNjhhNDYzNzU2NWQyM2I4ZDA1M2Y4MWUxMzQxN2I3ZjUxYTE1MiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vaW9zL3N2Zy9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS1iYXNpYy1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL3N2Zy9jc3MvZ2V0Q29tcHV0
ZWRTdHlsZS1iYXNpYy1leHBlY3RlZC50eHQKQEAgLTM3LDcgKzM3LDcgQEAgcmVjdDogc3R5bGUu
Z2V0UHJvcGVydHlDU1NWYWx1ZShib3JkZXItY29sbGFwc2UpIDogW29iamVjdCBDU1NQcmltaXRp
dmVWYWx1ZV0KIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoYm9yZGVyLWltYWdlLW91dHNl
dCkgOiAwCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKGJvcmRlci1pbWFnZS1vdXRz
ZXQpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5
VmFsdWUoYm9yZGVyLWltYWdlLXJlcGVhdCkgOiBzdHJldGNoCi1yZWN0OiBzdHlsZS5nZXRQcm9w
ZXJ0eUNTU1ZhbHVlKGJvcmRlci1pbWFnZS1yZXBlYXQpIDogW29iamVjdCBDU1NQcmltaXRpdmVW
YWx1ZV0KK3JlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoYm9yZGVyLWltYWdlLXJlcGVh
dCkgOiBbb2JqZWN0IENTU1ZhbHVlXQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShib3Jk
ZXItaW1hZ2Utc2xpY2UpIDogMTAwJQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShi
b3JkZXItaW1hZ2Utc2xpY2UpIDogW29iamVjdCBDU1NWYWx1ZV0KIHJlY3Q6IHN0eWxlLmdldFBy
b3BlcnR5VmFsdWUoYm9yZGVyLWltYWdlLXNvdXJjZSkgOiBub25lCkBAIC00NzEsNyArNDcxLDcg
QEAgcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdl
KSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmEKIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUo
LXdlYmtpdC1tYXNrLWJveC1pbWFnZS1vdXRzZXQpIDogMAogcmVjdDogc3R5bGUuZ2V0UHJvcGVy
dHlDU1NWYWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdlLW91dHNldCkgOiBbb2JqZWN0IENTU1By
aW1pdGl2ZVZhbHVlXQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0LW1hc2st
Ym94LWltYWdlLXJlcGVhdCkgOiBzdHJldGNoCi1yZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1Zh
bHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2UtcmVwZWF0KSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZl
VmFsdWVdCityZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtbWFzay1ib3gt
aW1hZ2UtcmVwZWF0KSA6IFtvYmplY3QgQ1NTVmFsdWVdCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0
eVZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2Utc2xpY2UpIDogMCBmaWxsCiByZWN0OiBzdHls
ZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2Utc2xpY2UpIDogW29i
amVjdCBDU1NWYWx1ZV0KIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoLXdlYmtpdC1tYXNr
LWJveC1pbWFnZS1zb3VyY2UpIDogbm9uZQpAQCAtNTYxLDcgKzU2MSw3IEBAIGc6IHN0eWxlLmdl
dFByb3BlcnR5Q1NTVmFsdWUoYm9yZGVyLWNvbGxhcHNlKSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZl
VmFsdWVdCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGJvcmRlci1pbWFnZS1vdXRzZXQpIDog
MAogZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShib3JkZXItaW1hZ2Utb3V0c2V0KSA6IFtv
YmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVdCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGJvcmRl
ci1pbWFnZS1yZXBlYXQpIDogc3RyZXRjaAotZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShi
b3JkZXItaW1hZ2UtcmVwZWF0KSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVdCitnOiBzdHls
ZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKGJvcmRlci1pbWFnZS1yZXBlYXQpIDogW29iamVjdCBDU1NW
YWx1ZV0KIGc6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoYm9yZGVyLWltYWdlLXNsaWNlKSA6IDEw
MCUKIGc6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoYm9yZGVyLWltYWdlLXNsaWNlKSA6IFtv
YmplY3QgQ1NTVmFsdWVdCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGJvcmRlci1pbWFnZS1z
b3VyY2UpIDogbm9uZQpAQCAtOTk1LDcgKzk5NSw3IEBAIGc6IHN0eWxlLmdldFByb3BlcnR5Q1NT
VmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZSkgOiBbb2JqZWN0IENTU1ByaW1pdGl2ZVZhbHVl
CiBnOiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2Utb3V0c2V0
KSA6IDAKIGc6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFn
ZS1vdXRzZXQpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KIGc6IHN0eWxlLmdldFByb3Bl
cnR5VmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1yZXBlYXQpIDogc3RyZXRjaAotZzogc3R5
bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdlLXJlcGVhdCkgOiBb
b2JqZWN0IENTU1ByaW1pdGl2ZVZhbHVlXQorZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgt
d2Via2l0LW1hc2stYm94LWltYWdlLXJlcGVhdCkgOiBbb2JqZWN0IENTU1ZhbHVlXQogZzogc3R5
bGUuZ2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdlLXNsaWNlKSA6IDAgZmls
bAogZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdlLXNs
aWNlKSA6IFtvYmplY3QgQ1NTVmFsdWVdCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJr
aXQtbWFzay1ib3gtaW1hZ2Utc291cmNlKSA6IG5vbmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9zdmcvY3NzL2dldENvbXB1dGVkU3R5bGUtYmFzaWMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS1iYXNp
Yy1leHBlY3RlZC50eHQKaW5kZXggNGVmOTkxNzIyNDIwNTE5NjY5N2ZlODJmN2Y2YjU4NjYwZTBm
YWRiZS4uYmQyNjhhNDYzNzU2NWQyM2I4ZDA1M2Y4MWUxMzQxN2I3ZjUxYTE1MiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS1iYXNp
Yy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9jc3MvZ2V0
Q29tcHV0ZWRTdHlsZS1iYXNpYy1leHBlY3RlZC50eHQKQEAgLTM3LDcgKzM3LDcgQEAgcmVjdDog
c3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShib3JkZXItY29sbGFwc2UpIDogW29iamVjdCBDU1NQ
cmltaXRpdmVWYWx1ZV0KIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoYm9yZGVyLWltYWdl
LW91dHNldCkgOiAwCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKGJvcmRlci1pbWFn
ZS1vdXRzZXQpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KIHJlY3Q6IHN0eWxlLmdldFBy
b3BlcnR5VmFsdWUoYm9yZGVyLWltYWdlLXJlcGVhdCkgOiBzdHJldGNoCi1yZWN0OiBzdHlsZS5n
ZXRQcm9wZXJ0eUNTU1ZhbHVlKGJvcmRlci1pbWFnZS1yZXBlYXQpIDogW29iamVjdCBDU1NQcmlt
aXRpdmVWYWx1ZV0KK3JlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoYm9yZGVyLWltYWdl
LXJlcGVhdCkgOiBbb2JqZWN0IENTU1ZhbHVlXQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1
ZShib3JkZXItaW1hZ2Utc2xpY2UpIDogMTAwJQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlDU1NW
YWx1ZShib3JkZXItaW1hZ2Utc2xpY2UpIDogW29iamVjdCBDU1NWYWx1ZV0KIHJlY3Q6IHN0eWxl
LmdldFByb3BlcnR5VmFsdWUoYm9yZGVyLWltYWdlLXNvdXJjZSkgOiBub25lCkBAIC00NzEsNyAr
NDcxLDcgQEAgcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0LW1hc2stYm94
LWltYWdlKSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmEKIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5
VmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1vdXRzZXQpIDogMAogcmVjdDogc3R5bGUuZ2V0
UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdlLW91dHNldCkgOiBbb2JqZWN0
IENTU1ByaW1pdGl2ZVZhbHVlXQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0
LW1hc2stYm94LWltYWdlLXJlcGVhdCkgOiBzdHJldGNoCi1yZWN0OiBzdHlsZS5nZXRQcm9wZXJ0
eUNTU1ZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2UtcmVwZWF0KSA6IFtvYmplY3QgQ1NTUHJp
bWl0aXZlVmFsdWVdCityZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtbWFz
ay1ib3gtaW1hZ2UtcmVwZWF0KSA6IFtvYmplY3QgQ1NTVmFsdWVdCiByZWN0OiBzdHlsZS5nZXRQ
cm9wZXJ0eVZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2Utc2xpY2UpIDogMCBmaWxsCiByZWN0
OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2Utc2xpY2Up
IDogW29iamVjdCBDU1NWYWx1ZV0KIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoLXdlYmtp
dC1tYXNrLWJveC1pbWFnZS1zb3VyY2UpIDogbm9uZQpAQCAtNTYxLDcgKzU2MSw3IEBAIGc6IHN0
eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoYm9yZGVyLWNvbGxhcHNlKSA6IFtvYmplY3QgQ1NTUHJp
bWl0aXZlVmFsdWVdCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGJvcmRlci1pbWFnZS1vdXRz
ZXQpIDogMAogZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShib3JkZXItaW1hZ2Utb3V0c2V0
KSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVdCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVl
KGJvcmRlci1pbWFnZS1yZXBlYXQpIDogc3RyZXRjaAotZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NW
YWx1ZShib3JkZXItaW1hZ2UtcmVwZWF0KSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVdCitn
OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKGJvcmRlci1pbWFnZS1yZXBlYXQpIDogW29iamVj
dCBDU1NWYWx1ZV0KIGc6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoYm9yZGVyLWltYWdlLXNsaWNl
KSA6IDEwMCUKIGc6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoYm9yZGVyLWltYWdlLXNsaWNl
KSA6IFtvYmplY3QgQ1NTVmFsdWVdCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGJvcmRlci1p
bWFnZS1zb3VyY2UpIDogbm9uZQpAQCAtOTk1LDcgKzk5NSw3IEBAIGc6IHN0eWxlLmdldFByb3Bl
cnR5Q1NTVmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZSkgOiBbb2JqZWN0IENTU1ByaW1pdGl2
ZVZhbHVlCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2Ut
b3V0c2V0KSA6IDAKIGc6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoLXdlYmtpdC1tYXNrLWJv
eC1pbWFnZS1vdXRzZXQpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KIGc6IHN0eWxlLmdl
dFByb3BlcnR5VmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1yZXBlYXQpIDogc3RyZXRjaAot
Zzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdlLXJlcGVh
dCkgOiBbb2JqZWN0IENTU1ByaW1pdGl2ZVZhbHVlXQorZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NW
YWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdlLXJlcGVhdCkgOiBbb2JqZWN0IENTU1ZhbHVlXQog
Zzogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdlLXNsaWNlKSA6
IDAgZmlsbAogZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0LW1hc2stYm94LWlt
YWdlLXNsaWNlKSA6IFtvYmplY3QgQ1NTVmFsdWVdCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVl
KC13ZWJraXQtbWFzay1ib3gtaW1hZ2Utc291cmNlKSA6IG5vbmUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N2Zy9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS1iYXNpYy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9zdmcvY3NzL2dldENvbXB1dGVkU3R5bGUtYmFzaWMtZXhwZWN0ZWQudHh0CmluZGV4
IDQwMDY3YzMwOTQxNWYyMjIwYWE2Mzg5N2E4ZjBhNjM3ODc0YWVlMjYuLjg4ZTQ1MDJiNjcxNTVm
ZWZkMTY5Njk0YTE0NmRjYjhmYjU0OTIxY2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N2Zy9j
c3MvZ2V0Q29tcHV0ZWRTdHlsZS1iYXNpYy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
c3ZnL2Nzcy9nZXRDb21wdXRlZFN0eWxlLWJhc2ljLWV4cGVjdGVkLnR4dApAQCAtMzcsNyArMzcs
NyBAQCByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKGJvcmRlci1jb2xsYXBzZSkgOiBb
b2JqZWN0IENTU1ByaW1pdGl2ZVZhbHVlXQogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShi
b3JkZXItaW1hZ2Utb3V0c2V0KSA6IDBweAogcmVjdDogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1
ZShib3JkZXItaW1hZ2Utb3V0c2V0KSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVdCiByZWN0
OiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGJvcmRlci1pbWFnZS1yZXBlYXQpIDogc3RyZXRjaAot
cmVjdDogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShib3JkZXItaW1hZ2UtcmVwZWF0KSA6IFtv
YmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVdCityZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVl
KGJvcmRlci1pbWFnZS1yZXBlYXQpIDogW29iamVjdCBDU1NWYWx1ZV0KIHJlY3Q6IHN0eWxlLmdl
dFByb3BlcnR5VmFsdWUoYm9yZGVyLWltYWdlLXNsaWNlKSA6IDEwMCUKIHJlY3Q6IHN0eWxlLmdl
dFByb3BlcnR5Q1NTVmFsdWUoYm9yZGVyLWltYWdlLXNsaWNlKSA6IFtvYmplY3QgQ1NTVmFsdWVd
CiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGJvcmRlci1pbWFnZS1zb3VyY2UpIDogbm9u
ZQpAQCAtNDY5LDcgKzQ2OSw3IEBAIHJlY3Q6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoLXdl
YmtpdC1tYXNrLWJveC1pbWFnZSkgOiBbb2JqZWN0IENTU1ByaW1pdGl2ZVZhCiByZWN0OiBzdHls
ZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2Utb3V0c2V0KSA6IDBweAog
cmVjdDogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdlLW91
dHNldCkgOiBbb2JqZWN0IENTU1ByaW1pdGl2ZVZhbHVlXQogcmVjdDogc3R5bGUuZ2V0UHJvcGVy
dHlWYWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdlLXJlcGVhdCkgOiBzdHJldGNoCi1yZWN0OiBz
dHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2UtcmVwZWF0KSA6
IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVdCityZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1Zh
bHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2UtcmVwZWF0KSA6IFtvYmplY3QgQ1NTVmFsdWVdCiBy
ZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2Utc2xpY2Up
IDogMCBmaWxsCiByZWN0OiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtbWFzay1i
b3gtaW1hZ2Utc2xpY2UpIDogW29iamVjdCBDU1NWYWx1ZV0KIHJlY3Q6IHN0eWxlLmdldFByb3Bl
cnR5VmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1zb3VyY2UpIDogbm9uZQpAQCAtNTU5LDcg
KzU1OSw3IEBAIGc6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoYm9yZGVyLWNvbGxhcHNlKSA6
IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVdCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGJv
cmRlci1pbWFnZS1vdXRzZXQpIDogMHB4CiBnOiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKGJv
cmRlci1pbWFnZS1vdXRzZXQpIDogW29iamVjdCBDU1NQcmltaXRpdmVWYWx1ZV0KIGc6IHN0eWxl
LmdldFByb3BlcnR5VmFsdWUoYm9yZGVyLWltYWdlLXJlcGVhdCkgOiBzdHJldGNoCi1nOiBzdHls
ZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKGJvcmRlci1pbWFnZS1yZXBlYXQpIDogW29iamVjdCBDU1NQ
cmltaXRpdmVWYWx1ZV0KK2c6IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoYm9yZGVyLWltYWdl
LXJlcGVhdCkgOiBbb2JqZWN0IENTU1ZhbHVlXQogZzogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShi
b3JkZXItaW1hZ2Utc2xpY2UpIDogMTAwJQogZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShi
b3JkZXItaW1hZ2Utc2xpY2UpIDogW29iamVjdCBDU1NWYWx1ZV0KIGc6IHN0eWxlLmdldFByb3Bl
cnR5VmFsdWUoYm9yZGVyLWltYWdlLXNvdXJjZSkgOiBub25lCkBAIC05OTUsNyArOTk1LDcgQEAg
Zzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdlLXJlcGVh
dCkgOiBbb2JqZWN0IENTU1ByaW1pdGkKIGc6IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoLXdlYmtp
dC1tYXNrLWJveC1pbWFnZS1zbGljZSkgOiAwIGZpbGwKIGc6IHN0eWxlLmdldFByb3BlcnR5Q1NT
VmFsdWUoLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1zbGljZSkgOiBbb2JqZWN0IENTU1ZhbHVlXQog
Zzogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgtd2Via2l0LW1hc2stYm94LWltYWdlLXNvdXJjZSkg
OiBub25lCi1nOiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1h
Z2Utc291cmNlKSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVdCitnOiBzdHlsZS5nZXRQcm9w
ZXJ0eUNTU1ZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2Utc291cmNlKSA6IFtvYmplY3QgQ1NT
VmFsdWVdCiBnOiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtbWFzay1ib3gtaW1hZ2Ut
d2lkdGgpIDogYXV0bwogZzogc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgtd2Via2l0LW1hc2st
Ym94LWltYWdlLXdpZHRoKSA6IFtvYmplY3QgQ1NTUHJpbWl0aXZlVmFsdWVdCiBnOiBzdHlsZS5n
ZXRQcm9wZXJ0eVZhbHVlKC13ZWJraXQtbWFzay1jbGlwKSA6IGJvcmRlci1ib3gK
</data>
<flag name="review"
          id="443826"
          type_id="1"
          status="-"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>