<?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>221970</bug_id>
          
          <creation_ts>2021-02-16 10:10:29 -0800</creation_ts>
          <short_desc>[Payment Request] add an `object data` to `PaymentItem` so that data specific to Apple Pay can be provided</short_desc>
          <delta_ts>2021-03-22 19:16:06 -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>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>222002</blocked>
    
    <blocked>223621</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>annulen</cc>
    
    <cc>bdakin</cc>
    
    <cc>cdumez</cc>
    
    <cc>eoconnor</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1729766</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-02-16 10:10:29 -0800</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729767</commentid>
    <comment_count>1</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-02-16 10:12:12 -0800</bug_when>
    <thetext>&lt;rdar://problem/69806999&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729768</commentid>
    <comment_count>2</comment_count>
      <attachid>420489</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-02-16 10:14:23 -0800</bug_when>
    <thetext>Created attachment 420489
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730395</commentid>
    <comment_count>3</comment_count>
      <attachid>420672</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-02-17 11:02:23 -0800</bug_when>
    <thetext>Created attachment 420672
Patch

add support for empty IDL dictionaries</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730410</commentid>
    <comment_count>4</comment_count>
      <attachid>420679</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-02-17 11:16:07 -0800</bug_when>
    <thetext>Created attachment 420679
Patch

fix style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730874</commentid>
    <comment_count>5</comment_count>
      <attachid>420679</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-02-18 08:57:27 -0800</bug_when>
    <thetext>Comment on attachment 420679
Patch

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

Why are there no tests here or in the internal part?  I&apos;m not going to approve both with zero tests.

&gt; Source/WebCore/Modules/applepay/ApplePayLineItem.h:38
&gt; +    enum class Type {

Can this be &quot;enum class Type : bool&quot; ?  Then we wouldn&apos;t need the EnumTraits below because it would already know there are only two valid values.  Also, it would use less memory.

&gt; Source/WebCore/Modules/applepay/ApplePayLineItem.h:65
&gt; +    if (!result.decodeData(decoder))

An alternative you could consider is to make ApplePayLineItem have a constructor that takes an ApplePayLineItemData, a Type, and two Strings.  Then you just decode the parent class and the child&apos;s members then construct as you return instead of constructing an empty object then filling it.

&gt; Source/WebCore/Modules/applepay/ApplePayLineItem.h:68
&gt; +#define DECODE(name, type) \

Let&apos;s not use the C preprocessor for this.  Just write it out three times.  It&apos;s a bit verbose, but that&apos;s ok.

&gt; Source/WebCore/Modules/applepay/ApplePayLineItemData.h:71
&gt; +#define DECODE(name, type) \

Ditto with the internal decoding.

&gt; Source/WebCore/Modules/applepay/ApplePaySession.cpp:164
&gt; +        // It is OK for pending types to not have an amount.
&gt; +        lineItem.amount = nullString();

This comment is neither necessary nor accurate.  It doesn&apos;t seem to be just OK but you&apos;ve made it absolutely necessary to not have an amount.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730910</commentid>
    <comment_count>6</comment_count>
      <attachid>420679</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-02-18 10:20:58 -0800</bug_when>
    <thetext>Comment on attachment 420679
Patch

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

&gt;&gt; Source/WebCore/Modules/applepay/ApplePayLineItem.h:38
&gt;&gt; +    enum class Type {
&gt; 
&gt; Can this be &quot;enum class Type : bool&quot; ?  Then we wouldn&apos;t need the EnumTraits below because it would already know there are only two valid values.  Also, it would use less memory.

Good idea.  I think I forgot to copy that part from where this code used to be actually 😅

&gt;&gt; Source/WebCore/Modules/applepay/ApplePayLineItem.h:65
&gt;&gt; +    if (!result.decodeData(decoder))
&gt; 
&gt; An alternative you could consider is to make ApplePayLineItem have a constructor that takes an ApplePayLineItemData, a Type, and two Strings.  Then you just decode the parent class and the child&apos;s members then construct as you return instead of constructing an empty object then filling it.

I was kinda following what `ResourceRequestBase` did, but I think I like your suggestion better :)

&gt;&gt; Source/WebCore/Modules/applepay/ApplePaySession.cpp:164
&gt;&gt; +        lineItem.amount = nullString();
&gt; 
&gt; This comment is neither necessary nor accurate.  It doesn&apos;t seem to be just OK but you&apos;ve made it absolutely necessary to not have an amount.

I agree, but I was trying to match the existing behavior.  Before my changes, `result.amount` would only be set to something non-`nullString()` (because the default value for `amount` in `ApplePaySessionPaymentRequest::LineItem` is `nullString()`) if the line item was not pending.  Considering the number of things that changed in this patch, I didn&apos;t want to introduce an actual functional difference and have it get lost in the &quot;sea&quot; of changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731017</commentid>
    <comment_count>7</comment_count>
      <attachid>420679</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-02-18 14:07:54 -0800</bug_when>
    <thetext>Comment on attachment 420679
Patch

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

&gt;&gt;&gt; Source/WebCore/Modules/applepay/ApplePayLineItem.h:65
&gt;&gt;&gt; +    if (!result.decodeData(decoder))
&gt;&gt; 
&gt;&gt; An alternative you could consider is to make ApplePayLineItem have a constructor that takes an ApplePayLineItemData, a Type, and two Strings.  Then you just decode the parent class and the child&apos;s members then construct as you return instead of constructing an empty object then filling it.
&gt; 
&gt; I was kinda following what `ResourceRequestBase` did, but I think I like your suggestion better :)

Actually, I think this is slightly more cumbersome in that it requires `ApplePayLineItem` to know about the structure of `ApplePayLineItemData`, whereas this approach makes it so that `ApplePayLineItemData` can change and you wouldn&apos;t need to touch `ApplePayLineItem`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731027</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-02-18 14:25:51 -0800</bug_when>
    <thetext>ResourceRequestBase isn&apos;t a good example of anything.
ApplePayLineItem inherits from ApplePayLineItemData and therefore knows the structure.  It doesn&apos;t need to decode each member, just a ApplePayLineItemData then the additional members.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731034</commentid>
    <comment_count>9</comment_count>
      <attachid>420875</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-02-18 14:46:53 -0800</bug_when>
    <thetext>Created attachment 420875
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731092</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-18 16:37:40 -0800</bug_when>
    <thetext>Committed r273113: &lt;https://commits.webkit.org/r273113&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 420875.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420489</attachid>
            <date>2021-02-16 10:14:23 -0800</date>
            <delta_ts>2021-02-17 11:02:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>69806999-OpenSource.diff</filename>
            <type>text/plain</type>
            <size>61122</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyODdkMzFhMmJmMGEuLjg3NGU0YjI4OWRiZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDc2IEBACisyMDIxLTAyLTE1ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNv
bT4KKworICAgICAgICBbUGF5bWVudCBSZXF1ZXN0XSBhZGQgYW4gYG9iamVjdCBkYXRhYCB0byBg
UGF5bWVudEl0ZW1gIHNvIHRoYXQgZGF0YSBzcGVjaWZpYyB0byBBcHBsZSBQYXkgY2FuIGJlIHBy
b3ZpZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjE5NzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5ODA2OTk5PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVz
dC9QYXltZW50SXRlbS5pZGw6CisgICAgICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXlt
ZW50SXRlbS5oOgorCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJdGVt
LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TGluZUl0ZW0uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5TGluZUl0ZW06OmVuY29kZSBjb25zdCk6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlMaW5lSXRlbTo6ZGVjb2RlKTogQWRkZWQuCisgICAg
ICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJdGVtRGF0YS5pZGw6IEFkZGVkLgor
ICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbURhdGEuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheUxpbmVJdGVtRGF0YTo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5TGluZUl0ZW1EYXRhOjpkZWNvZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGVQYXlMaW5lSXRlbURhdGE6OmRlY29kZURhdGEpOgorICAgICAgICAq
IE1vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y2hlY2tBbmRDYW5vbmljYWxpemVEYXRhKTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpjaGVja0FuZENhbm9uaWNhbGl6ZVBheW1lbnRJdGVtKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpjaGVja0FuZENhbm9uaWNhbGl6ZVRvdGFsKToKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNr
QW5kQ2Fub25pY2FsaXplRGV0YWlscyk6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50UmVxdWVz
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpzZXR0bGVEZXRh
aWxzUHJvbWlzZSk6CisgICAgICAgIEFkZCBJUEMgc3VwcG9ydCBhbmQgZXh0ZW5kIGZyb20gYEFw
cGxlUGF5TGluZUl0ZW1EYXRhYCB3aGljaCBpcyB1c2VkIHRvIHB1bGwgdmFsdWVzIG91dCBvZgor
ICAgICAgICB0aGUgYG9iamVjdCBkYXRhYCBmcm9tIGBQYXltZW50SXRlbWAuIFRoaXMgd2F5LCBi
b3RoIEFwcGxlIFBheSBKUyBhbmQgUGF5bWVudFJlcXVlc3QgY2FuIGJlCisgICAgICAgIGdpdmVu
IHRoZSBzYW1lIGRhdGEgKGFsYmVpdCBpbiBzbGlnaHRseSBkaWZmZXJlbnQgcGxhY2VzKSBhbmQg
aGF2ZSB0aGUgc2FtZSBjYXBhYmlsaXRpZXMuCisKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0QW5kVmFsaWRh
dGVUb3RhbCk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0QW5kVmFsaWRhdGUpOgorICAgICAg
ICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpsaW5lSXRlbXMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6
OnNldExpbmVJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50
UmVxdWVzdDo6dG90YWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9u
UGF5bWVudFJlcXVlc3Q6OnNldFRvdGFsKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1Bh
eW1lbnRNZXRob2RVcGRhdGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRS
ZXF1ZXN0VmFsaWRhdG9yLmg6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50UmVx
dWVzdFZhbGlkYXRvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0VmFsaWRh
dG9yOjp2YWxpZGF0ZVRvdGFsKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRT
dW1tYXJ5SXRlbXMuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRN
ZXRob2RVcGRhdGVDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRNZXRob2RVcGRh
dGU6OlBheW1lbnRNZXRob2RVcGRhdGUpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvY29j
b2EvUGF5bWVudFN1bW1hcnlJdGVtc0NvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6dG9QS1Bh
eW1lbnRTdW1tYXJ5SXRlbVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6dG9QS1BheW1lbnRTdW1t
YXJ5SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybVN1bW1hcnlJdGVtcyk6CisgICAg
ICAgICogTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5k
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1lcmdlKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpjb252ZXJ0QW5kVmFsaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlQYXlt
ZW50SGFuZGxlcjo6c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRIYW5k
bGVyOjpjb21wdXRlVG90YWxBbmRMaW5lSXRlbXMgY29uc3QpOgorICAgICAgICAqIHRlc3Rpbmcv
TW9ja1BheW1lbnRDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUGF5bWVu
dENvb3JkaW5hdG9yOjp1cGRhdGVUb3RhbEFuZExpbmVJdGVtcyk6CisgICAgICAgIEp1c3QgdXNl
IGBBcHBsZVBheUxpbmVJdGVtYCBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIGl0cyBzdHJ1Y3R1cmUg
aW4gYW5vdGhlciBvYmplY3QgKGBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0
ZW1gKS4KKworICAgICAgICAqIGluc3BlY3Rvci9XZWJJbmplY3RlZFNjcmlwdEhvc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6b2JqZWN0Rm9yUGF5bWVudERldGFpbHNNb2RpZmllcik6CisgICAg
ICAgIERyaXZlLWJ5OiBEb24ndCBhbHdheXMgc2V0IGBtb2RpZmllci50b3RhbGAgb3IgYG1vZGlm
aWVyLmFkZGl0aW9uYWxEaXNwbGF5SXRlbXNgIHNpbmNlIHRoZXkKKyAgICAgICAgbWlnaHQgbm90
IGhhdmUgYmVlbiBwcm92aWRlZC4KKyAgICAgICAgRHJpdmUtYnk6IERvbid0IGJvdGhlciBzZXR0
aW5nIGBtb2RpZmllci5kYXRhYCBzaW5jZSBpdCdzIGNsZWFyZWQgZHVyaW5nIHZhbGlkYXRpb24u
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9XZWJDb3JlQWRkaXRpb25zLm1tOgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToK
KyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMS0w
Mi0xMSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lu
dGVncmF0aW9uXSBUaGUgcm9vdCBib3gncyBkaXNwbGF5IHR5cGUgc2hvdWxkIHN0YXkgRGlzcGxh
eTo6QmxvY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0CmluZGV4IDY4Y2ZkNGEwNzI2Mi4uYmU5MGQ0M2QwYzEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTMyLDYgKzMyLDcgQEAgJChQ
Uk9KRUNUX0RJUikvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50SXRlbS5pZGwK
ICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlJbnN0YWxsbWVudEl0ZW1U
eXBlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxt
ZW50UmV0YWlsQ2hhbm5lbC5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlMaW5lSXRlbS5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlMaW5lSXRlbURhdGEuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5TWVyY2hhbnRDYXBhYmlsaXR5LmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVBheW1lbnQuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDE3MjM2NGQ5YjU1MS4uOGMx
ZjI1ZmMxNzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRw
dXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdApAQCAtMTAyLDYgKzEwMiw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTQXBwbGVQYXlJbnN0YWxsbWVudFJldGFpbENoYW5uZWwuCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0FwcGxlUGF5SW5z
dGFsbG1lbnRSZXRhaWxDaGFubmVsLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTQXBwbGVQYXlMaW5lSXRlbS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXBwbGVQYXlMaW5lSXRlbS5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0FwcGxlUGF5TGluZUl0ZW1EYXRh
LmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBcHBs
ZVBheUxpbmVJdGVtRGF0YS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0FwcGxlUGF5TWVyY2hhbnRDYXBhYmlsaXR5LmNwcAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBcHBsZVBheU1lcmNoYW50Q2FwYWJpbGl0
eS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0FwcGxl
UGF5TW9kaWZpZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBmYmE5ZWU1
YTAxMzQuLmE4ZDg3ZWUxOTJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC02
MSw2ICs2MSw3IEBAIEpTX0JJTkRJTkdfSURMUyA6PSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L2FwcGxlcGF5L0FwcGxlUGF5SW5zdGFsbG1lbnRJdGVtVHlwZS5pZGwgXAogICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50UmV0YWlsQ2hhbm5lbC5pZGwg
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJdGVtLmlkbCBc
CisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TGluZUl0ZW1EYXRhLmlk
bCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TWVyY2hhbnRDYXBh
YmlsaXR5LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5
bWVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1l
bnRBdXRob3JpemF0aW9uUmVzdWx0LmlkbCBcCkBAIC0xNzIyLDcgKzE3MjMsNyBAQCBQUkVQUk9D
RVNTX0lETFNfU0NSSVBUUyA9IFwKIAogSURMX0lOQ0xVREVTID0gXAogICAgICQoV2ViQ29yZSkv
TW9kdWxlcyBcCi0gICAgJChJRExfUEFUSFMpCisgICAgJChBRERJVElPTkFMX0JJTkRJTkdfSURM
U19QQVRIUykKIAogSURMX0NPTU1PTl9BUkdTID0gJChJRExfSU5DTFVERVM6JT0tLWluY2x1ZGUg
JSkgLS13cml0ZS1kZXBlbmRlbmNpZXMgLS1vdXRwdXREaXIgLgogCkBAIC0xODAwLDcgKzE4MDEs
NyBAQCAkKElETF9JTlRFUk1FRElBVEVfUEFUVEVSTlMpIDogJChQUkVQUk9DRVNTX0lETFNfU0NS
SVBUUykgJChJRExfQVRUUklCVVRFU19GSUxFKQogIyBnZW5lcmF0ZSBmaWxlIGluZm9ybWF0aW9u
IHdpdGhvdXQgcGF0aHMsIGFuZCB0aG9zZSBzdGlsbCBuZWVkIHRvIGJlbmVmaXQgZnJvbQogIyBz
ZXR0aW5nIHNlYXJjaCBwYXRocyB3aXRoIHZwYXRoLgogCi12cGF0aCAlLmlkbCAkKElETF9QQVRI
UykgJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzCit2cGF0aCAlLmlkbCAkKEFERElUSU9OQUxf
QklORElOR19JRExTX1BBVEhTKSAkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMKIAogIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkZWZpbmUgR0VO
RVJBVEVfQklORElOR1NfdGVtcGxhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheUxpbmVJdGVtLmgKaW5kZXggMTg3ZjY5YTRlOTY4Li5mZTBhMWQ3NThh
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlM
aW5lSXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlM
aW5lSXRlbS5oCkBAIC0yNywxOCArMjcsNzIgQEAKIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAK
LSNpbmNsdWRlICJBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oIgorI2luY2x1ZGUgIkFw
cGxlUGF5TGluZUl0ZW1EYXRhLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1zdHJ1Y3QgQXBwbGVQYXlMaW5lSXRlbSB7Ci0gICAgdXNpbmcg
VHlwZSA9IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbTo6VHlwZTsKK3N0
cnVjdCBBcHBsZVBheUxpbmVJdGVtIGZpbmFsIDogcHVibGljIEFwcGxlUGF5TGluZUl0ZW1EYXRh
IHsKKyAgICBlbnVtIGNsYXNzIFR5cGUgeworICAgICAgICBQZW5kaW5nLAorICAgICAgICBGaW5h
bCwKKyAgICB9OwogCiAgICAgVHlwZSB0eXBlIHsgVHlwZTo6RmluYWwgfTsKICAgICBTdHJpbmcg
bGFiZWw7CiAgICAgU3RyaW5nIGFtb3VudDsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgT3B0aW9uYWw8QXBwbGVQYXlMaW5lSXRlbT4gZGVjb2RlKERlY29kZXImKTsKIH07
CiAKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEFwcGxlUGF5TGluZUl0ZW06OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIEFwcGxlUGF5TGluZUl0ZW1EYXRhOjpl
bmNvZGUoZW5jb2Rlcik7CisgICAgZW5jb2RlciA8PCB0eXBlOworICAgIGVuY29kZXIgPDwgbGFi
ZWw7CisgICAgZW5jb2RlciA8PCBhbW91bnQ7CiB9CiAKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+
CitPcHRpb25hbDxBcHBsZVBheUxpbmVJdGVtPiBBcHBsZVBheUxpbmVJdGVtOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKK3sKKyAgICBBcHBsZVBheUxpbmVJdGVtIHJlc3VsdDsKKworICAgIGlm
ICghcmVzdWx0LmRlY29kZURhdGEoZGVjb2RlcikpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyNkZWZpbmUgREVDT0RFKG5hbWUsIHR5cGUpIFwKKyAgICBPcHRpb25hbDx0eXBlPiBu
YW1lOyBcCisgICAgZGVjb2RlciA+PiBuYW1lOyBcCisgICAgaWYgKCFuYW1lKSBcCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7IFwKKyAgICByZXN1bHQubmFtZSA9IFdURk1vdmUoKm5hbWUp
OyBcCisKKyAgICBERUNPREUodHlwZSwgVHlwZSkKKyAgICBERUNPREUobGFiZWwsIFN0cmluZykK
KyAgICBERUNPREUoYW1vdW50LCBTdHJpbmcpCisKKyN1bmRlZiBERUNPREUKKworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7
CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6QXBwbGVQYXlMaW5lSXRl
bTo6VHlwZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNv
cmU6OkFwcGxlUGF5TGluZUl0ZW06OlR5cGUsCisgICAgICAgIFdlYkNvcmU6OkFwcGxlUGF5TGlu
ZUl0ZW06OlR5cGU6OlBlbmRpbmcsCisgICAgICAgIFdlYkNvcmU6OkFwcGxlUGF5TGluZUl0ZW06
OlR5cGU6OkZpbmFsCisgICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5l
SXRlbS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TGluZUl0
ZW0uaWRsCmluZGV4IGRhNWYyZWVhMmUyYS4uYTQyYjc3MjRiZThmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TGluZUl0ZW0uaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbS5pZGwKQEAgLTM0
LDcgKzM0LDcgQEAKICAgICBDb25kaXRpb25hbD1BUFBMRV9QQVksCiAgICAgRXhwb3J0TWFjcm89
V0VCQ09SRV9FWFBPUlQsCiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi1dIGRpY3Rpb25hcnkg
QXBwbGVQYXlMaW5lSXRlbSB7CitdIGRpY3Rpb25hcnkgQXBwbGVQYXlMaW5lSXRlbSA6IEFwcGxl
UGF5TGluZUl0ZW1EYXRhIHsKICAgICBBcHBsZVBheUxpbmVJdGVtVHlwZSB0eXBlID0gImZpbmFs
IjsKICAgICBET01TdHJpbmcgbGFiZWw7CiAgICAgRE9NU3RyaW5nIGFtb3VudDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbURhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbURhdGEu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmUzYWM3NmZjOGYyYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlMaW5lSXRlbURhdGEuaApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKQorCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+
CisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9u
cy9BcHBsZVBheUxpbmVJdGVtRGF0YUFkZGl0aW9ucy5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworc3RydWN0IEFwcGxlUGF5TGluZUl0ZW1EYXRhIHsKKyNpZiBkZWZpbmVkKEFw
cGxlUGF5TGluZUl0ZW1EYXRhQWRkaXRpb25zX21lbWJlcnMpCisgICAgQXBwbGVQYXlMaW5lSXRl
bURhdGFBZGRpdGlvbnNfbWVtYmVycworI2VuZGlmCisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIE9wdGlvbmFsPEFwcGxlUGF5TGluZUl0ZW1EYXRhPiBkZWNvZGUoRGVjb2Rl
ciYpOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gV0FSTl9VTlVTRURfUkVUVVJOIGJv
b2wgZGVjb2RlRGF0YShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgor
dm9pZCBBcHBsZVBheUxpbmVJdGVtRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
Cit7CisjaWYgZGVmaW5lZChBcHBsZVBheUxpbmVJdGVtRGF0YUFkZGl0aW9uc19lbmNvZGUpCisg
ICAgQXBwbGVQYXlMaW5lSXRlbURhdGFBZGRpdGlvbnNfZW5jb2RlCisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTShlbmNvZGVyKTsKKyNlbmRpZgorfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgor
T3B0aW9uYWw8QXBwbGVQYXlMaW5lSXRlbURhdGE+IEFwcGxlUGF5TGluZUl0ZW1EYXRhOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBBcHBsZVBheUxpbmVJdGVtRGF0YSByZXN1bHQ7
CisgICAgaWYgKCFyZXN1bHQuZGVjb2RlRGF0YShkZWNvZGVyKSkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPgorYm9vbCBBcHBsZVBheUxpbmVJdGVtRGF0YTo6ZGVjb2RlRGF0YShEZWNvZGVyJiBkZWNv
ZGVyKQoreworI2RlZmluZSBERUNPREUobmFtZSwgdHlwZSkgXAorICAgIE9wdGlvbmFsPHR5cGU+
IG5hbWU7IFwKKyAgICBkZWNvZGVyID4+IG5hbWU7IFwKKyAgICBpZiAoIW5hbWUpIFwKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOyBcCisgICAgdGhpcy0+bmFtZSA9IFdURk1vdmUoKm5hbWUpOyBcCisK
KyNpZiBkZWZpbmVkKEFwcGxlUGF5TGluZUl0ZW1EYXRhQWRkaXRpb25zX2RlY29kZURhdGEpCisg
ICAgQXBwbGVQYXlMaW5lSXRlbURhdGFBZGRpdGlvbnNfZGVjb2RlRGF0YQorI2Vsc2UKKyAgICBV
TlVTRURfUEFSQU0oZGVjb2Rlcik7CisjZW5kaWYKKworI3VuZGVmIERFQ09ERQorCisgICAgcmV0
dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShBUFBMRV9QQVkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5TGluZUl0ZW1EYXRhLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvQXBwbGVQYXlMaW5lSXRlbURhdGEuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uM2Q0ZWI3ZDIxM2FlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJdGVtRGF0YS5pZGwKQEAgLTAsMCArMSwz
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1BUFBMRV9QQVksCisgICAgSlNH
ZW5lcmF0ZVRvSlNPYmplY3QsCitdIGRpY3Rpb25hcnkgQXBwbGVQYXlMaW5lSXRlbURhdGEgewor
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlT
ZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNz
aW9uLmNwcAppbmRleCBiNTVhNzcwYjM5NDguLjI4OTQ2OTIxZjlkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcApAQCAtMTQ1
LDQxICsxNDUsMzQgQEAgc3RhdGljIGJvb2wgdmFsaWRhdGVBbW91bnQoY29uc3QgU3RyaW5nJiBh
bW91bnRTdHJpbmcpCiAgICAgcmV0dXJuIHN0YXRlID09IFN0YXRlOjpEaWdpdCB8fCBzdGF0ZSA9
PSBTdGF0ZTo6RG90RGlnaXQgfHwgc3RhdGUgPT0gU3RhdGU6OkVuZDsKIH0KIAotc3RhdGljIEV4
Y2VwdGlvbk9yPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbT4gY29udmVy
dEFuZFZhbGlkYXRlVG90YWwoQXBwbGVQYXlMaW5lSXRlbSYmIGxpbmVJdGVtKQorc3RhdGljIEV4
Y2VwdGlvbk9yPEFwcGxlUGF5TGluZUl0ZW0+IGNvbnZlcnRBbmRWYWxpZGF0ZVRvdGFsKEFwcGxl
UGF5TGluZUl0ZW0mJiBsaW5lSXRlbSkKIHsKICAgICBpZiAoIXZhbGlkYXRlQW1vdW50KGxpbmVJ
dGVtLmFtb3VudCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsIG1ha2VT
dHJpbmcoIlwiIiArIGxpbmVJdGVtLmFtb3VudCwgIlwiIGlzIG5vdCBhIHZhbGlkIGFtb3VudC4i
KSB9OwogCi0gICAgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtIHRvdGFs
IHsgbGluZUl0ZW0udHlwZSwgbGluZUl0ZW0uYW1vdW50LCBsaW5lSXRlbS5sYWJlbCB9OwotCi0g
ICAgYXV0byB2YWxpZGF0ZWRUb3RhbCA9IFBheW1lbnRSZXF1ZXN0VmFsaWRhdG9yOjp2YWxpZGF0
ZVRvdGFsKHRvdGFsKTsKKyAgICBhdXRvIHZhbGlkYXRlZFRvdGFsID0gUGF5bWVudFJlcXVlc3RW
YWxpZGF0b3I6OnZhbGlkYXRlVG90YWwobGluZUl0ZW0pOwogICAgIGlmICh2YWxpZGF0ZWRUb3Rh
bC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlZFRvdGFsLnJlbGVhc2VF
eGNlcHRpb24oKTsKIAotICAgIHJldHVybiBXVEZNb3ZlKHRvdGFsKTsKKyAgICByZXR1cm4gV1RG
TW92ZShsaW5lSXRlbSk7CiB9CiAKLXN0YXRpYyBFeGNlcHRpb25PcjxBcHBsZVBheVNlc3Npb25Q
YXltZW50UmVxdWVzdDo6TGluZUl0ZW0+IGNvbnZlcnRBbmRWYWxpZGF0ZShBcHBsZVBheUxpbmVJ
dGVtJiYgbGluZUl0ZW0pCitzdGF0aWMgRXhjZXB0aW9uT3I8QXBwbGVQYXlMaW5lSXRlbT4gY29u
dmVydEFuZFZhbGlkYXRlKEFwcGxlUGF5TGluZUl0ZW0mJiBsaW5lSXRlbSkKIHsKLSAgICBBcHBs
ZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0gcmVzdWx0OwotCi0gICAgLy8gSXQg
aXMgT0sgZm9yIHBlbmRpbmcgdHlwZXMgdG8gbm90IGhhdmUgYW4gYW1vdW50LgotICAgIGlmIChs
aW5lSXRlbS50eXBlICE9IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbTo6
VHlwZTo6UGVuZGluZykgeworICAgIGlmIChsaW5lSXRlbS50eXBlID09IEFwcGxlUGF5TGluZUl0
ZW06OlR5cGU6OlBlbmRpbmcpIHsKKyAgICAgICAgLy8gSXQgaXMgT0sgZm9yIHBlbmRpbmcgdHlw
ZXMgdG8gbm90IGhhdmUgYW4gYW1vdW50LgorICAgICAgICBsaW5lSXRlbS5hbW91bnQgPSBudWxs
U3RyaW5nKCk7CisgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCF2YWxpZGF0ZUFtb3VudChsaW5l
SXRlbS5hbW91bnQpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwg
bWFrZVN0cmluZygiXCIiICsgbGluZUl0ZW0uYW1vdW50LCAiXCIgaXMgbm90IGEgdmFsaWQgYW1v
dW50LiIpIH07Ci0KLSAgICAgICAgcmVzdWx0LmFtb3VudCA9IGxpbmVJdGVtLmFtb3VudDsKICAg
ICB9CiAKLSAgICByZXN1bHQudHlwZSA9IGxpbmVJdGVtLnR5cGU7Ci0gICAgcmVzdWx0LmxhYmVs
ID0gbGluZUl0ZW0ubGFiZWw7Ci0KLSAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOworICAgIHJl
dHVybiBXVEZNb3ZlKGxpbmVJdGVtKTsKIH0KIAotc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3RvcjxB
cHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0+PiBjb252ZXJ0QW5kVmFsaWRh
dGUoT3B0aW9uYWw8VmVjdG9yPEFwcGxlUGF5TGluZUl0ZW0+PiYmIGxpbmVJdGVtcykKK3N0YXRp
YyBFeGNlcHRpb25PcjxWZWN0b3I8QXBwbGVQYXlMaW5lSXRlbT4+IGNvbnZlcnRBbmRWYWxpZGF0
ZShPcHRpb25hbDxWZWN0b3I8QXBwbGVQYXlMaW5lSXRlbT4+JiYgbGluZUl0ZW1zKQogewotICAg
IFZlY3RvcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0+IHJlc3VsdDsK
KyAgICBWZWN0b3I8QXBwbGVQYXlMaW5lSXRlbT4gcmVzdWx0OwogICAgIGlmICghbGluZUl0ZW1z
KQogICAgICAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblBheW1lbnRS
ZXF1ZXN0LmgKaW5kZXggMWZiZDQ3YzJlMmQ1Li4zOTg2NDc2ZTEyZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShBUFBMRV9Q
QVkpCiAKKyNpbmNsdWRlICJBcHBsZVBheUxpbmVJdGVtLmgiCiAjaW5jbHVkZSAiUGF5bWVudENv
bnRhY3QuaCIKICNpbmNsdWRlICJQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uV2ViQ29y
ZS5oIgogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CkBAIC04NSwxNiArODYsNiBAQCBwdWJs
aWM6CiAgICAgY29uc3QgTWVyY2hhbnRDYXBhYmlsaXRpZXMmIG1lcmNoYW50Q2FwYWJpbGl0aWVz
KCkgY29uc3QgeyByZXR1cm4gbV9tZXJjaGFudENhcGFiaWxpdGllczsgfQogICAgIHZvaWQgc2V0
TWVyY2hhbnRDYXBhYmlsaXRpZXMoY29uc3QgTWVyY2hhbnRDYXBhYmlsaXRpZXMmIG1lcmNoYW50
Q2FwYWJpbGl0aWVzKSB7IG1fbWVyY2hhbnRDYXBhYmlsaXRpZXMgPSBtZXJjaGFudENhcGFiaWxp
dGllczsgfQogCi0gICAgc3RydWN0IExpbmVJdGVtIHsKLSAgICAgICAgZW51bSBjbGFzcyBUeXBl
IDogYm9vbCB7Ci0gICAgICAgICAgICBQZW5kaW5nLAotICAgICAgICAgICAgRmluYWwsCi0gICAg
ICAgIH0gdHlwZSB7IFR5cGU6OkZpbmFsIH07Ci0KLSAgICAgICAgU3RyaW5nIGFtb3VudDsKLSAg
ICAgICAgU3RyaW5nIGxhYmVsOwotICAgIH07Ci0KICAgICBlbnVtIGNsYXNzIFNoaXBwaW5nVHlw
ZSB7CiAgICAgICAgIFNoaXBwaW5nLAogICAgICAgICBEZWxpdmVyeSwKQEAgLTExNCwxNSArMTA1
LDE1IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8U2hpcHBpbmdNZXRob2Q+JiBzaGlwcGlu
Z01ldGhvZHMoKSBjb25zdCB7IHJldHVybiBtX3NoaXBwaW5nTWV0aG9kczsgfQogICAgIHZvaWQg
c2V0U2hpcHBpbmdNZXRob2RzKGNvbnN0IFZlY3RvcjxTaGlwcGluZ01ldGhvZD4mIHNoaXBwaW5n
TWV0aG9kcykgeyBtX3NoaXBwaW5nTWV0aG9kcyA9IHNoaXBwaW5nTWV0aG9kczsgfQogCi0gICAg
Y29uc3QgVmVjdG9yPExpbmVJdGVtPiYgbGluZUl0ZW1zKCkgY29uc3QgeyByZXR1cm4gbV9saW5l
SXRlbXM7IH0KLSAgICB2b2lkIHNldExpbmVJdGVtcyhjb25zdCBWZWN0b3I8TGluZUl0ZW0+JiBs
aW5lSXRlbXMpIHsgbV9saW5lSXRlbXMgPSBsaW5lSXRlbXM7IH0KKyAgICBjb25zdCBWZWN0b3I8
QXBwbGVQYXlMaW5lSXRlbT4mIGxpbmVJdGVtcygpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUl0ZW1z
OyB9CisgICAgdm9pZCBzZXRMaW5lSXRlbXMoY29uc3QgVmVjdG9yPEFwcGxlUGF5TGluZUl0ZW0+
JiBsaW5lSXRlbXMpIHsgbV9saW5lSXRlbXMgPSBsaW5lSXRlbXM7IH0KIAotICAgIGNvbnN0IExp
bmVJdGVtJiB0b3RhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWw7IH07Ci0gICAgdm9pZCBzZXRU
b3RhbChjb25zdCBMaW5lSXRlbSYgdG90YWwpIHsgbV90b3RhbCA9IHRvdGFsOyB9CisgICAgY29u
c3QgQXBwbGVQYXlMaW5lSXRlbSYgdG90YWwoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsOyB9Owor
ICAgIHZvaWQgc2V0VG90YWwoY29uc3QgQXBwbGVQYXlMaW5lSXRlbSYgdG90YWwpIHsgbV90b3Rh
bCA9IHRvdGFsOyB9CiAKICAgICBzdHJ1Y3QgVG90YWxBbmRMaW5lSXRlbXMgewotICAgICAgICBB
cHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0gdG90YWw7Ci0gICAgICAgIFZl
Y3RvcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0+IGxpbmVJdGVtczsK
KyAgICAgICAgQXBwbGVQYXlMaW5lSXRlbSB0b3RhbDsKKyAgICAgICAgVmVjdG9yPEFwcGxlUGF5
TGluZUl0ZW0+IGxpbmVJdGVtczsKICAgICB9OwogCiAgICAgY29uc3QgU3RyaW5nJiBhcHBsaWNh
dGlvbkRhdGEoKSBjb25zdCB7IHJldHVybiBtX2FwcGxpY2F0aW9uRGF0YTsgfQpAQCAtMTYyLDgg
KzE1Myw4IEBAIHByaXZhdGU6CiAgICAgU2hpcHBpbmdUeXBlIG1fc2hpcHBpbmdUeXBlIHsgU2hp
cHBpbmdUeXBlOjpTaGlwcGluZyB9OwogICAgIFZlY3RvcjxTaGlwcGluZ01ldGhvZD4gbV9zaGlw
cGluZ01ldGhvZHM7CiAKLSAgICBWZWN0b3I8TGluZUl0ZW0+IG1fbGluZUl0ZW1zOwotICAgIExp
bmVJdGVtIG1fdG90YWw7CisgICAgVmVjdG9yPEFwcGxlUGF5TGluZUl0ZW0+IG1fbGluZUl0ZW1z
OworICAgIEFwcGxlUGF5TGluZUl0ZW0gbV90b3RhbDsKIAogICAgIFN0cmluZyBtX2FwcGxpY2F0
aW9uRGF0YTsKICAgICBWZWN0b3I8U3RyaW5nPiBtX3N1cHBvcnRlZENvdW50cmllczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1ldGhvZFVwZGF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kVXBkYXRl
LmgKaW5kZXggNzBlOGUzMTMxOWM2Li5kODQwZTE2M2Q1MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1ldGhvZFVwZGF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1ldGhvZFVwZGF0ZS5oCkBAIC0zNiwx
MCArMzYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFBh
eW1lbnRNZXRob2RVcGRhdGUgewogcHVibGljOgotICAgIHVzaW5nIExpbmVJdGVtID0gQXBwbGVQ
YXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtOwogICAgIHVzaW5nIFRvdGFsQW5kTGlu
ZUl0ZW1zID0gQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1z
OwogCi0gICAgUGF5bWVudE1ldGhvZFVwZGF0ZShMaW5lSXRlbSYmIHRvdGFsLCBWZWN0b3I8TGlu
ZUl0ZW0+JiYpOworICAgIFBheW1lbnRNZXRob2RVcGRhdGUoQXBwbGVQYXlMaW5lSXRlbSYmIHRv
dGFsLCBWZWN0b3I8QXBwbGVQYXlMaW5lSXRlbT4mJik7CiAgICAgZXhwbGljaXQgUGF5bWVudE1l
dGhvZFVwZGF0ZShSZXRhaW5QdHI8UEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGU+
JiYpOwogICAgIGV4cGxpY2l0IFBheW1lbnRNZXRob2RVcGRhdGUoVG90YWxBbmRMaW5lSXRlbXMm
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVu
dFJlcXVlc3RWYWxpZGF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5
bWVudFJlcXVlc3RWYWxpZGF0b3IuaAppbmRleCA2OGZhMjVkZmI5YjIuLjFhYjkwYmU1YmYwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50UmVxdWVz
dFZhbGlkYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVu
dFJlcXVlc3RWYWxpZGF0b3IuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBQYXltZW50UmVxdWVzdFZhbGlkYXRvciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEV4
Y2VwdGlvbk9yPHZvaWQ+IHZhbGlkYXRlKGNvbnN0IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1
ZXN0Jik7Ci0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+IHZhbGlkYXRlVG90YWwoY29uc3Qg
QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtJik7CisgICAgc3RhdGljIEV4
Y2VwdGlvbk9yPHZvaWQ+IHZhbGlkYXRlVG90YWwoY29uc3QgQXBwbGVQYXlMaW5lSXRlbSYpOwog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXlt
ZW50UmVxdWVzdFZhbGlkYXRvci5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
UGF5bWVudFJlcXVlc3RWYWxpZGF0b3IubW0KaW5kZXggNWZkMWFmZjdlYjBkLi5lZjlmNmU4MjQ4
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFJl
cXVlc3RWYWxpZGF0b3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9Q
YXltZW50UmVxdWVzdFZhbGlkYXRvci5tbQpAQCAtNzYsNyArNzYsNyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBQYXltZW50UmVxdWVzdFZhbGlkYXRvcjo6dmFsaWRhdGUoY29uc3QgQXBwbGVQYXlTZXNz
aW9uUGF5bWVudAogICAgIHJldHVybiB7IH07CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFBheW1l
bnRSZXF1ZXN0VmFsaWRhdG9yOjp2YWxpZGF0ZVRvdGFsKGNvbnN0IEFwcGxlUGF5U2Vzc2lvblBh
eW1lbnRSZXF1ZXN0OjpMaW5lSXRlbSYgdG90YWwpCitFeGNlcHRpb25Pcjx2b2lkPiBQYXltZW50
UmVxdWVzdFZhbGlkYXRvcjo6dmFsaWRhdGVUb3RhbChjb25zdCBBcHBsZVBheUxpbmVJdGVtJiB0
b3RhbCkKIHsKICAgICBpZiAoIXRvdGFsLmxhYmVsKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgVHlwZUVycm9yLCAiTWlzc2luZyB0b3RhbCBsYWJlbC4iIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTdW1tYXJ5SXRlbXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFN1bW1hcnlJdGVtcy5oCmluZGV4IDVl
OTUxNmEwOGZlNi4uZmZmODQ0ZDc3OTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L1BheW1lbnRTdW1tYXJ5SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTdW1tYXJ5SXRlbXMuaApAQCAtMzQsNyArMzQsNyBAQCBP
QkpDX0NMQVNTIE5TQXJyYXk7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdFQkNPUkVfRVhQT1JU
IE5TQXJyYXkgKnBsYXRmb3JtU3VtbWFyeUl0ZW1zKGNvbnN0IEFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcyYpOwotV0VCQ09SRV9FWFBPUlQgTlNBcnJheSAq
cGxhdGZvcm1TdW1tYXJ5SXRlbXMoY29uc3QgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6
OkxpbmVJdGVtJiB0b3RhbCwgY29uc3QgVmVjdG9yPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1
ZXN0OjpMaW5lSXRlbT4mKTsKK1dFQkNPUkVfRVhQT1JUIE5TQXJyYXkgKnBsYXRmb3JtU3VtbWFy
eUl0ZW1zKGNvbnN0IEFwcGxlUGF5TGluZUl0ZW0mIHRvdGFsLCBjb25zdCBWZWN0b3I8QXBwbGVQ
YXlMaW5lSXRlbT4mKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RVcGRhdGVD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1l
dGhvZFVwZGF0ZUNvY29hLm1tCmluZGV4IDVjZWI4NmFkMGU2OC4uMTY0ZDExYjZkMDc2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRo
b2RVcGRhdGVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2Nv
Y29hL1BheW1lbnRNZXRob2RVcGRhdGVDb2NvYS5tbQpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVBheW1lbnRNZXRob2RVcGRhdGU6OlBheW1lbnRNZXRob2RVcGRh
dGUoTGluZUl0ZW0mJiB0b3RhbCwgVmVjdG9yPExpbmVJdGVtPiYmIGxpbmVJdGVtcykKK1BheW1l
bnRNZXRob2RVcGRhdGU6OlBheW1lbnRNZXRob2RVcGRhdGUoQXBwbGVQYXlMaW5lSXRlbSYmIHRv
dGFsLCBWZWN0b3I8QXBwbGVQYXlMaW5lSXRlbT4mJiBsaW5lSXRlbXMpCiAgICAgOiBtX3RvdGFs
QW5kTGluZUl0ZW1zIHsgeyBXVEZNb3ZlKHRvdGFsKSwgV1RGTW92ZShsaW5lSXRlbXMpIH0gfQog
ICAgICwgbV9wbGF0Zm9ybVVwZGF0ZSB7IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1
ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0
ZW1zOnBsYXRmb3JtU3VtbWFyeUl0ZW1zKCptX3RvdGFsQW5kTGluZUl0ZW1zKV0pIH0KIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudFN1
bW1hcnlJdGVtc0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2Nv
YS9QYXltZW50U3VtbWFyeUl0ZW1zQ29jb2EubW0KaW5kZXggOGE4NzI0YTc2NDg1Li5lNzk5YTlj
Y2Q5NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2Ev
UGF5bWVudFN1bW1hcnlJdGVtc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvY29jb2EvUGF5bWVudFN1bW1hcnlJdGVtc0NvY29hLm1tCkBAIC0zOSwyNyArMzks
MzMgQEAgc3RhdGljIE5TRGVjaW1hbE51bWJlciAqdG9EZWNpbWFsTnVtYmVyKGNvbnN0IFN0cmlu
ZyYgYW1vdW50KQogICAgIHJldHVybiBbTlNEZWNpbWFsTnVtYmVyIGRlY2ltYWxOdW1iZXJXaXRo
U3RyaW5nOmFtb3VudCBsb2NhbGU6QHsgTlNMb2NhbGVEZWNpbWFsU2VwYXJhdG9yIDogQCIuIiB9
XTsKIH0KIAotc3RhdGljIFBLUGF5bWVudFN1bW1hcnlJdGVtVHlwZSB0b1BLUGF5bWVudFN1bW1h
cnlJdGVtVHlwZShBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW06OlR5cGUg
dHlwZSkKK3N0YXRpYyBQS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUgdG9QS1BheW1lbnRTdW1tYXJ5
SXRlbVR5cGUoQXBwbGVQYXlMaW5lSXRlbTo6VHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlw
ZSkgewotICAgIGNhc2UgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtOjpU
eXBlOjpGaW5hbDoKKyAgICBjYXNlIEFwcGxlUGF5TGluZUl0ZW06OlR5cGU6OkZpbmFsOgogICAg
ICAgICByZXR1cm4gUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlRmluYWw7Ci0gICAgY2FzZSBBcHBs
ZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW06OlR5cGU6OlBlbmRpbmc6CisgICAg
Y2FzZSBBcHBsZVBheUxpbmVJdGVtOjpUeXBlOjpQZW5kaW5nOgogICAgICAgICByZXR1cm4gUEtQ
YXltZW50U3VtbWFyeUl0ZW1UeXBlUGVuZGluZzsKICAgICB9CiB9CiAKLXN0YXRpYyBQS1BheW1l
bnRTdW1tYXJ5SXRlbSAqdG9QS1BheW1lbnRTdW1tYXJ5SXRlbShjb25zdCBBcHBsZVBheVNlc3Np
b25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0mIGxpbmVJdGVtKQorI2lmIFVTRShBUFBMRV9JTlRF
Uk5BTF9TREspCisjaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvUGF5bWVudFN1bW1hcnlJdGVtc0Nv
Y29hQWRkaXRpb25zLm1tPgorI2VuZGlmCisKKyNpZiAhRU5BQkxFKEFQUExFX1BBWV9MSU5FX0lU
RU1fREFUQSkKK3N0YXRpYyBQS1BheW1lbnRTdW1tYXJ5SXRlbSAqdG9QS1BheW1lbnRTdW1tYXJ5
SXRlbShjb25zdCBBcHBsZVBheUxpbmVJdGVtJiBsaW5lSXRlbSkKIHsKICAgICByZXR1cm4gW1BB
TDo6Z2V0UEtQYXltZW50U3VtbWFyeUl0ZW1DbGFzcygpIHN1bW1hcnlJdGVtV2l0aExhYmVsOmxp
bmVJdGVtLmxhYmVsIGFtb3VudDp0b0RlY2ltYWxOdW1iZXIobGluZUl0ZW0uYW1vdW50KSB0eXBl
OnRvUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlKGxpbmVJdGVtLnR5cGUpXTsKIH0KKyNlbmRpZgog
CiBOU0FycmF5ICpwbGF0Zm9ybVN1bW1hcnlJdGVtcyhjb25zdCBBcHBsZVBheVNlc3Npb25QYXlt
ZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXMmIHRvdGFsQW5kTGluZUl0ZW1zKQogewogICAg
IHJldHVybiBwbGF0Zm9ybVN1bW1hcnlJdGVtcyh0b3RhbEFuZExpbmVJdGVtcy50b3RhbCwgdG90
YWxBbmRMaW5lSXRlbXMubGluZUl0ZW1zKTsKIH0KIAotTlNBcnJheSAqcGxhdGZvcm1TdW1tYXJ5
SXRlbXMoY29uc3QgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtJiB0b3Rh
bCwgY29uc3QgVmVjdG9yPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbT4m
IGxpbmVJdGVtcykKK05TQXJyYXkgKnBsYXRmb3JtU3VtbWFyeUl0ZW1zKGNvbnN0IEFwcGxlUGF5
TGluZUl0ZW0mIHRvdGFsLCBjb25zdCBWZWN0b3I8QXBwbGVQYXlMaW5lSXRlbT4mIGxpbmVJdGVt
cykKIHsKICAgICBOU011dGFibGVBcnJheSAqcGF5bWVudFN1bW1hcnlJdGVtcyA9IFtOU011dGFi
bGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpsaW5lSXRlbXMuc2l6ZSgpICsgMV07CiAgICAgZm9y
IChhdXRvJiBsaW5lSXRlbSA6IGxpbmVJdGVtcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBw
bGVQYXlQYXltZW50SGFuZGxlci5jcHAKaW5kZXggMDUwOTZhMzU1YjI4Li43ZWMwMzcwZmZlZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVl
c3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmNwcApAQCAt
MzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQWRkcmVzc0Vycm9ycy5oIgogI2luY2x1ZGUgIkFw
cGxlUGF5Q29udGFjdEZpZWxkLmgiCisjaW5jbHVkZSAiQXBwbGVQYXlMaW5lSXRlbS5oIgogI2lu
Y2x1ZGUgIkFwcGxlUGF5TWVyY2hhbnRDYXBhYmlsaXR5LmgiCiAjaW5jbHVkZSAiQXBwbGVQYXlN
b2RpZmllci5oIgogI2luY2x1ZGUgIkFwcGxlUGF5UGF5bWVudC5oIgpAQCAtMzgsNiArMzksNyBA
QAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUg
IkpTQXBwbGVQYXlFcnJvci5oIgorI2luY2x1ZGUgIkpTQXBwbGVQYXlMaW5lSXRlbURhdGEuaCIK
ICNpbmNsdWRlICJKU0FwcGxlUGF5UGF5bWVudC5oIgogI2luY2x1ZGUgIkpTQXBwbGVQYXlQYXlt
ZW50TWV0aG9kLmgiCiAjaW5jbHVkZSAiSlNBcHBsZVBheVJlcXVlc3QuaCIKQEAgLTYxLDYgKzYz
LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCisjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL0FwcGxlUGF5UGF5bWVudEhhbmRsZXJBZGRp
dGlvbnMuY3BwPgorI2VuZGlmCisKIHN0YXRpYyBFeGNlcHRpb25PcjxBcHBsZVBheVJlcXVlc3Q+
IGNvbnZlcnRBbmRWYWxpZGF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBKU0M6
OkpTVmFsdWUgZGF0YSkKIHsKICAgICBpZiAoZGF0YS5pc0VtcHR5KCkpCkBAIC0xMjgsMjUgKzEz
NCw0OCBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8dm9pZD4gdmFsaWRhdGUoY29uc3QgUGF5bWVudEN1
cnJlbmN5QW1vdW50JiBhbW91bnQsIGNvbnN0IFN0cgogICAgIHJldHVybiB7IH07CiB9CiAKLXN0
YXRpYyBFeGNlcHRpb25PcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0+
IGNvbnZlcnRBbmRWYWxpZGF0ZShjb25zdCBQYXltZW50SXRlbSYgaXRlbSwgY29uc3QgU3RyaW5n
JiBleHBlY3RlZEN1cnJlbmN5KQorI2lmICFFTkFCTEUoQVBQTEVfUEFZX0xJTkVfSVRFTV9EQVRB
KQorc3RhdGljIHZvaWQgbWVyZ2UoQXBwbGVQYXlMaW5lSXRlbSYsIEFwcGxlUGF5TGluZUl0ZW1E
YXRhJiYpIHsgfQorI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfTElORV9JVEVNX0RBVEEpCisK
K3N0YXRpYyBFeGNlcHRpb25PcjxBcHBsZVBheUxpbmVJdGVtPiBjb252ZXJ0QW5kVmFsaWRhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgUGF5bWVudEl0ZW0mIGl0ZW0s
IGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRDdXJyZW5jeSkKIHsKICAgICBhdXRvIGV4Y2VwdGlvbiA9
IHZhbGlkYXRlKGl0ZW0uYW1vdW50LCBleHBlY3RlZEN1cnJlbmN5KTsKICAgICBpZiAoZXhjZXB0
aW9uLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gZXhjZXB0aW9uLnJlbGVhc2VFeGNl
cHRpb24oKTsKIAotICAgIEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbSBs
aW5lSXRlbTsKKworICAgIEFwcGxlUGF5TGluZUl0ZW0gbGluZUl0ZW07CiAgICAgbGluZUl0ZW0u
YW1vdW50ID0gaXRlbS5hbW91bnQudmFsdWU7Ci0gICAgbGluZUl0ZW0udHlwZSA9IGl0ZW0ucGVu
ZGluZyA/IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbTo6VHlwZTo6UGVu
ZGluZyA6IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbTo6VHlwZTo6Rmlu
YWw7CisgICAgbGluZUl0ZW0udHlwZSA9IGl0ZW0ucGVuZGluZyA/IEFwcGxlUGF5TGluZUl0ZW06
OlR5cGU6OlBlbmRpbmcgOiBBcHBsZVBheUxpbmVJdGVtOjpUeXBlOjpGaW5hbDsKICAgICBsaW5l
SXRlbS5sYWJlbCA9IGl0ZW0ubGFiZWw7CisKKyAgICBpZiAoIWl0ZW0uc2VyaWFsaXplZERhdGEu
aXNFbXB0eSgpKSB7CisgICAgICAgIGF1dG8mIGxleGljYWxHbG9iYWxPYmplY3QgPSAqY29udGV4
dC5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpKTsKKyAgICAgICAgSlNDOjpKU1ZhbHVlIGRhdGE7
CisgICAgICAgIHsKKyAgICAgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soJmxleGljYWxH
bG9iYWxPYmplY3QpOworICAgICAgICAgICAgZGF0YSA9IEpTT05QYXJzZSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgaXRlbS5zZXJpYWxpemVkRGF0YSk7CisgICAgICAgICAgICBpZiAoc2NvcGUuZXhj
ZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhj
ZXB0aW9uRXJyb3IgfTsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gYXBwbGVQYXlMaW5lSXRl
bURhdGEgPSBjb252ZXJ0RGljdGlvbmFyeTxBcHBsZVBheUxpbmVJdGVtRGF0YT4obGV4aWNhbEds
b2JhbE9iamVjdCwgV1RGTW92ZShkYXRhKSk7CisgICAgICAgIGlmIChzY29wZS5leGNlcHRpb24o
KSkKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9y
IH07CisgICAgICAgIG1lcmdlKGxpbmVJdGVtLCBXVEZNb3ZlKGFwcGxlUGF5TGluZUl0ZW1EYXRh
KSk7CisgICAgfQorCiAgICAgcmV0dXJuIHsgV1RGTW92ZShsaW5lSXRlbSkgfTsKIH0KIAotc3Rh
dGljIEV4Y2VwdGlvbk9yPFZlY3RvcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGlu
ZUl0ZW0+PiBjb252ZXJ0QW5kVmFsaWRhdGUoY29uc3QgVmVjdG9yPFBheW1lbnRJdGVtPiYgbGlu
ZUl0ZW1zLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkQ3VycmVuY3kpCitzdGF0aWMgRXhjZXB0aW9u
T3I8VmVjdG9yPEFwcGxlUGF5TGluZUl0ZW0+PiBjb252ZXJ0QW5kVmFsaWRhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgVmVjdG9yPFBheW1lbnRJdGVtPiYgbGluZUl0
ZW1zLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkQ3VycmVuY3kpCiB7Ci0gICAgVmVjdG9yPEFwcGxl
UGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbT4gcmVzdWx0OworICAgIFZlY3RvcjxB
cHBsZVBheUxpbmVJdGVtPiByZXN1bHQ7CiAgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkobGluZUl0ZW1zLnNpemUoKSk7CiAgICAgZm9yIChhdXRvJiBsaW5lSXRlbSA6IGxpbmVJdGVt
cykgewotICAgICAgICBhdXRvIGNvbnZlcnRlZExpbmVJdGVtID0gY29udmVydEFuZFZhbGlkYXRl
KGxpbmVJdGVtLCBleHBlY3RlZEN1cnJlbmN5KTsKKyAgICAgICAgYXV0byBjb252ZXJ0ZWRMaW5l
SXRlbSA9IGNvbnZlcnRBbmRWYWxpZGF0ZShjb250ZXh0LCBsaW5lSXRlbSwgZXhwZWN0ZWRDdXJy
ZW5jeSk7CiAgICAgICAgIGlmIChjb252ZXJ0ZWRMaW5lSXRlbS5oYXNFeGNlcHRpb24oKSkKICAg
ICAgICAgICAgIHJldHVybiBjb252ZXJ0ZWRMaW5lSXRlbS5yZWxlYXNlRXhjZXB0aW9uKCk7CiAg
ICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoY29udmVydGVkTGluZUl0ZW0ucmVsZWFzZVJl
dHVyblZhbHVlKCkpOwpAQCAtMjIzLDEyICsyNTIsMTIgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXBw
bGVQYXlQYXltZW50SGFuZGxlcjo6c2hvdyhEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgU3RyaW5n
IGV4cGVjdGVkQ3VycmVuY3kgPSBkZXRhaWxzLnRvdGFsLmFtb3VudC5jdXJyZW5jeTsKICAgICBy
ZXF1ZXN0LnNldEN1cnJlbmN5Q29kZShleHBlY3RlZEN1cnJlbmN5KTsKIAotICAgIGF1dG8gdG90
YWwgPSBjb252ZXJ0QW5kVmFsaWRhdGUoZGV0YWlscy50b3RhbCwgZXhwZWN0ZWRDdXJyZW5jeSk7
CisgICAgYXV0byB0b3RhbCA9IGNvbnZlcnRBbmRWYWxpZGF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCBkZXRhaWxzLnRvdGFsLCBleHBlY3RlZEN1cnJlbmN5KTsKICAgICBBU1NFUlQoIXRv
dGFsLmhhc0V4Y2VwdGlvbigpKTsKICAgICByZXF1ZXN0LnNldFRvdGFsKHRvdGFsLnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpKTsKIAogICAgIGlmIChkZXRhaWxzLmRpc3BsYXlJdGVtcykgewotICAgICAg
ICBhdXRvIGNvbnZlcnRlZExpbmVJdGVtcyA9IGNvbnZlcnRBbmRWYWxpZGF0ZSgqZGV0YWlscy5k
aXNwbGF5SXRlbXMsIGV4cGVjdGVkQ3VycmVuY3kpOworICAgICAgICBhdXRvIGNvbnZlcnRlZExp
bmVJdGVtcyA9IGNvbnZlcnRBbmRWYWxpZGF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAq
ZGV0YWlscy5kaXNwbGF5SXRlbXMsIGV4cGVjdGVkQ3VycmVuY3kpOwogICAgICAgICBpZiAoY29u
dmVydGVkTGluZUl0ZW1zLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIGNvbnZl
cnRlZExpbmVJdGVtcy5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgIHJlcXVlc3Quc2V0TGlu
ZUl0ZW1zKGNvbnZlcnRlZExpbmVJdGVtcy5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CkBAIC0yODYs
MTQgKzMxNSwxNCBAQCBFeGNlcHRpb25PcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6
VG90YWxBbmRMaW5lSXRlbXM+IEFwcGxlUGF5UGF5bWVudEhhbgogICAgIGF1dG8mIGRldGFpbHMg
PSBtX3BheW1lbnRSZXF1ZXN0LT5wYXltZW50RGV0YWlscygpOwogICAgIFN0cmluZyBjdXJyZW5j
eSA9IGRldGFpbHMudG90YWwuYW1vdW50LmN1cnJlbmN5OwogCi0gICAgYXV0byBjb252ZXJ0ZWRU
b3RhbCA9IGNvbnZlcnRBbmRWYWxpZGF0ZShkZXRhaWxzLnRvdGFsLCBjdXJyZW5jeSk7CisgICAg
YXV0byBjb252ZXJ0ZWRUb3RhbCA9IGNvbnZlcnRBbmRWYWxpZGF0ZSgqc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCBkZXRhaWxzLnRvdGFsLCBjdXJyZW5jeSk7CiAgICAgaWYgKGNvbnZlcnRlZFRv
dGFsLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gY29udmVydGVkVG90YWwucmVsZWFz
ZUV4Y2VwdGlvbigpOwogICAgIGF1dG8gdG90YWwgPSBjb252ZXJ0ZWRUb3RhbC5yZWxlYXNlUmV0
dXJuVmFsdWUoKTsKIAotICAgIFZlY3RvcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6
TGluZUl0ZW0+IGxpbmVJdGVtczsKKyAgICBWZWN0b3I8QXBwbGVQYXlMaW5lSXRlbT4gbGluZUl0
ZW1zOwogICAgIGlmIChkZXRhaWxzLmRpc3BsYXlJdGVtcykgewotICAgICAgICBhdXRvIGNvbnZl
cnRlZExpbmVJdGVtcyA9IGNvbnZlcnRBbmRWYWxpZGF0ZSgqZGV0YWlscy5kaXNwbGF5SXRlbXMs
IGN1cnJlbmN5KTsKKyAgICAgICAgYXV0byBjb252ZXJ0ZWRMaW5lSXRlbXMgPSBjb252ZXJ0QW5k
VmFsaWRhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKmRldGFpbHMuZGlzcGxheUl0ZW1z
LCBjdXJyZW5jeSk7CiAgICAgICAgIGlmIChjb252ZXJ0ZWRMaW5lSXRlbXMuaGFzRXhjZXB0aW9u
KCkpCiAgICAgICAgICAgICByZXR1cm4gY29udmVydGVkTGluZUl0ZW1zLnJlbGVhc2VFeGNlcHRp
b24oKTsKICAgICAgICAgbGluZUl0ZW1zID0gY29udmVydGVkTGluZUl0ZW1zLnJlbGVhc2VSZXR1
cm5WYWx1ZSgpOwpAQCAtMzMzLDEzICszNjIsMTMgQEAgRXhjZXB0aW9uT3I8QXBwbGVQYXlTZXNz
aW9uUGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBBcHBsZVBheVBheW1lbnRIYW4K
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgaWYgKG1vZGlmaWVyLnRv
dGFsKSB7Ci0gICAgICAgICAgICAgICAgYXV0byB0b3RhbE92ZXJyaWRlID0gY29udmVydEFuZFZh
bGlkYXRlKCptb2RpZmllci50b3RhbCwgY3VycmVuY3kpOworICAgICAgICAgICAgICAgIGF1dG8g
dG90YWxPdmVycmlkZSA9IGNvbnZlcnRBbmRWYWxpZGF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCAqbW9kaWZpZXIudG90YWwsIGN1cnJlbmN5KTsKICAgICAgICAgICAgICAgICBpZiAodG90
YWxPdmVycmlkZS5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRv
dGFsT3ZlcnJpZGUucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAgICAgIHRvdGFsID0g
dG90YWxPdmVycmlkZS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgYXV0byBhZGRpdGlvbmFsRGlzcGxheUl0ZW1zID0gY29udmVydEFuZFZhbGlkYXRl
KG1vZGlmaWVyLmFkZGl0aW9uYWxEaXNwbGF5SXRlbXMsIGN1cnJlbmN5KTsKKyAgICAgICAgICAg
IGF1dG8gYWRkaXRpb25hbERpc3BsYXlJdGVtcyA9IGNvbnZlcnRBbmRWYWxpZGF0ZSgqc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCBtb2RpZmllci5hZGRpdGlvbmFsRGlzcGxheUl0ZW1zLCBjdXJy
ZW5jeSk7CiAgICAgICAgICAgICBpZiAoYWRkaXRpb25hbERpc3BsYXlJdGVtcy5oYXNFeGNlcHRp
b24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gYWRkaXRpb25hbERpc3BsYXlJdGVtcy5yZWxl
YXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBsaW5lSXRlbXMuYXBwZW5kVmVjdG9yKGFkZGl0
aW9uYWxEaXNwbGF5SXRlbXMucmVsZWFzZVJldHVyblZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SXRlbS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SXRlbS5oCmluZGV4IGQ1Nzk0
NzZmZjQ4My4uZjE1YjllYWVhZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3BheW1lbnRyZXF1ZXN0L1BheW1lbnRJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wYXltZW50cmVxdWVzdC9QYXltZW50SXRlbS5oCkBAIC0yOCw2ICsyOCw4IEBACiAjaWYgRU5B
QkxFKFBBWU1FTlRfUkVRVUVTVCkKIAogI2luY2x1ZGUgIlBheW1lbnRDdXJyZW5jeUFtb3VudC5o
IgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0Lmg+CisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvU3Ryb25nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM2LDYgKzM4LDEwIEBAIHN0cnVjdCBQYXltZW50SXRlbSB7
CiAgICAgU3RyaW5nIGxhYmVsOwogICAgIFBheW1lbnRDdXJyZW5jeUFtb3VudCBhbW91bnQ7CiAg
ICAgYm9vbCBwZW5kaW5nIHsgZmFsc2UgfTsKKyAgICBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0
PiBkYXRhOworCisgICAgLy8gTm90IGZyb20gdGhlIElETC4gU2V0IGJ5IGBkYXRhYCB3aGVuIHRo
aXMgaXMgdmFsaWRhdGVkIGJ5IGBQYXltZW50UmVxdWVzdGAuCisgICAgU3RyaW5nIHNlcmlhbGl6
ZWREYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SXRlbS5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRJdGVtLmlkbAppbmRleCBkYTFh
ZTdmM2EzZjcuLjFjMGJjNjZmZTMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wYXltZW50cmVxdWVzdC9QYXltZW50SXRlbS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SXRlbS5pZGwKQEAgLTI5LDQgKzI5LDUgQEAKICAg
ICByZXF1aXJlZCBET01TdHJpbmcgbGFiZWw7CiAgICAgcmVxdWlyZWQgUGF5bWVudEN1cnJlbmN5
QW1vdW50IGFtb3VudDsKICAgICBib29sZWFuIHBlbmRpbmcgPSBmYWxzZTsKKyAgICBvYmplY3Qg
ZGF0YTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1
ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJl
cXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCmluZGV4IDI4OGJhNWUwZTdjYi4uZWUwZDNhYWViNjdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1l
bnRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0
L1BheW1lbnRSZXF1ZXN0LmNwcApAQCAtMTQxLDYgKzE0MSwyMSBAQCBzdGF0aWMgYm9vbCBpc1Zh
bGlkRGVjaW1hbE1vbmV0YXJ5VmFsdWUoU3RyaW5nVmlldyB2YWx1ZSkKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdGF0aWMgRXhjZXB0aW9uT3I8U3RyaW5n
PiBjaGVja0FuZENhbm9uaWNhbGl6ZURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgVCYgdmFsdWUpCit7CisgICAgU3RyaW5nIHNlcmlhbGl6ZWREYXRhOworICAgIGlmICh2YWx1
ZS5kYXRhKSB7CisgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGNvbnRleHQuZ2xvYmFsT2Jq
ZWN0KCk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGdsb2JhbE9i
amVjdC0+dm0oKSk7CisgICAgICAgIHNlcmlhbGl6ZWREYXRhID0gSlNPTlN0cmluZ2lmeShnbG9i
YWxPYmplY3QsIHZhbHVlLmRhdGEuZ2V0KCksIDApOworICAgICAgICBpZiAoc2NvcGUuZXhjZXB0
aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25F
cnJvciB9OworICAgICAgICB2YWx1ZS5kYXRhLmNsZWFyKCk7CisgICAgfQorICAgIHJldHVybiB7
IFdURk1vdmUoc2VyaWFsaXplZERhdGEpIH07Cit9CisKIC8vIEltcGxlbWVudHMgdGhlICJjaGVj
ayBhbmQgY2Fub25pY2FsaXplIGFtb3VudCIgdmFsaWRpdHkgY2hlY2tlcgogLy8gaHR0cHM6Ly93
d3cudzMub3JnL1RSL3BheW1lbnQtcmVxdWVzdC8jZGZuLWNoZWNrLWFuZC1jYW5vbmljYWxpemUt
YW1vdW50CiBzdGF0aWMgRXhjZXB0aW9uT3I8dm9pZD4gY2hlY2tBbmRDYW5vbmljYWxpemVBbW91
bnQoUGF5bWVudEN1cnJlbmN5QW1vdW50JiBhbW91bnQpCkBAIC0xNTUsMjAgKzE3MCwzNCBAQCBz
dGF0aWMgRXhjZXB0aW9uT3I8dm9pZD4gY2hlY2tBbmRDYW5vbmljYWxpemVBbW91bnQoUGF5bWVu
dEN1cnJlbmN5QW1vdW50JiBhbW91bgogICAgIHJldHVybiB7IH07CiB9CiAKLS8vIEltcGxlbWVu
dHMgdGhlICJjaGVjayBhbmQgY2Fub25pY2FsaXplIHRvdGFsIiB2YWxpZGl0eSBjaGVja2VyCi0v
LyBodHRwczovL3d3dy53My5vcmcvVFIvcGF5bWVudC1yZXF1ZXN0LyNkZm4tY2hlY2stYW5kLWNh
bm9uaWNhbGl6ZS10b3RhbAotc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+IGNoZWNrQW5kQ2Fub25p
Y2FsaXplVG90YWwoUGF5bWVudEN1cnJlbmN5QW1vdW50JiB0b3RhbCkKK2VudW0gY2xhc3MgTmVn
YXRpdmVBbW91bnRBbGxvd2VkIHsgWWVzLCBObyB9Oworc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+
IGNoZWNrQW5kQ2Fub25pY2FsaXplUGF5bWVudEl0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgUGF5bWVudEl0ZW0mIGl0ZW0sIE5lZ2F0aXZlQW1vdW50QWxsb3dlZCBuZWdhdGl2
ZUFtb3VudEFsbG93ZWQpCiB7Ci0gICAgYXV0byBleGNlcHRpb24gPSBjaGVja0FuZENhbm9uaWNh
bGl6ZUFtb3VudCh0b3RhbCk7CisgICAgYXV0byBleGNlcHRpb24gPSBjaGVja0FuZENhbm9uaWNh
bGl6ZUFtb3VudChpdGVtLmFtb3VudCk7CiAgICAgaWYgKGV4Y2VwdGlvbi5oYXNFeGNlcHRpb24o
KSkKLSAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbjsKKyAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbi5y
ZWxlYXNlRXhjZXB0aW9uKCk7CiAKLSAgICBpZiAodG90YWwudmFsdWVbMF0gPT0gJy0nKQorICAg
IGlmIChuZWdhdGl2ZUFtb3VudEFsbG93ZWQgPT0gTmVnYXRpdmVBbW91bnRBbGxvd2VkOjpObyAm
JiBpdGVtLmFtb3VudC52YWx1ZVswXSA9PSAnLScpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBUeXBlRXJyb3IsICJUb3RhbCBjdXJyZW5jeSB2YWx1ZXMgY2Fubm90IGJlIG5lZ2F0aXZlLiJf
cyB9OwogCisgICAgaWYgKGl0ZW0uZGF0YSkgeworICAgICAgICBhdXRvIGRhdGFSZXN1bHQgPSBj
aGVja0FuZENhbm9uaWNhbGl6ZURhdGEoY29udGV4dCwgaXRlbSk7CisgICAgICAgIGlmIChkYXRh
UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGRhdGFSZXN1bHQucmVs
ZWFzZUV4Y2VwdGlvbigpOworCisgICAgICAgIGl0ZW0uc2VyaWFsaXplZERhdGEgPSBkYXRhUmVz
dWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgIH0KKwogICAgIHJldHVybiB7IH07CiB9CiAK
Ky8vIEltcGxlbWVudHMgdGhlICJjaGVjayBhbmQgY2Fub25pY2FsaXplIHRvdGFsIiB2YWxpZGl0
eSBjaGVja2VyCisvLyBodHRwczovL3d3dy53My5vcmcvVFIvcGF5bWVudC1yZXF1ZXN0LyNkZm4t
Y2hlY2stYW5kLWNhbm9uaWNhbGl6ZS10b3RhbAorc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+IGNo
ZWNrQW5kQ2Fub25pY2FsaXplVG90YWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
UGF5bWVudEl0ZW0mIHRvdGFsKQoreworICAgIHJldHVybiBjaGVja0FuZENhbm9uaWNhbGl6ZVBh
eW1lbnRJdGVtKGNvbnRleHQsIHRvdGFsLCBOZWdhdGl2ZUFtb3VudEFsbG93ZWQ6Ok5vKTsKK30K
KwogLy8gSW1wbGVtZW50cyAidmFsaWRhdGUgYSBzdGFuZGFyZGl6ZWQgcGF5bWVudCBtZXRob2Qg
aWRlbnRpZmllciIKIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9wYXltZW50LW1ldGhvZC1pZC8j
dmFsaWRpdHktMAogc3RhdGljIGJvb2wgaXNWYWxpZFN0YW5kYXJkaXplZFBheW1lbnRNZXRob2RJ
ZGVudGlmaWVyKFN0cmluZ1ZpZXcgaWRlbnRpZmllcikKQEAgLTI0OSw5ICsyNzgsOSBAQCBzdGF0
aWMgRXhjZXB0aW9uT3I8c3RkOjp0dXBsZTxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+Pj4gY2hlY2tB
bmRDYW5vbmljYWxpemVEZXRhaQogewogICAgIGlmIChkZXRhaWxzLmRpc3BsYXlJdGVtcykgewog
ICAgICAgICBmb3IgKGF1dG8mIGl0ZW0gOiAqZGV0YWlscy5kaXNwbGF5SXRlbXMpIHsKLSAgICAg
ICAgICAgIGF1dG8gZXhjZXB0aW9uID0gY2hlY2tBbmRDYW5vbmljYWxpemVBbW91bnQoaXRlbS5h
bW91bnQpOwotICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uLnJlbGVhc2VFeGNlcHRpb24oKTsKKyAgICAgICAg
ICAgIGF1dG8gcGF5bWVudEl0ZW1SZXN1bHQgPSBjaGVja0FuZENhbm9uaWNhbGl6ZVBheW1lbnRJ
dGVtKGNvbnRleHQsIGl0ZW0sIE5lZ2F0aXZlQW1vdW50QWxsb3dlZDo6WWVzKTsKKyAgICAgICAg
ICAgIGlmIChwYXltZW50SXRlbVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gcGF5bWVudEl0ZW1SZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICB9
CiAgICAgfQogCkBAIC0yOTIsMjUgKzMyMSwyNCBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp0
dXBsZTxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+Pj4gY2hlY2tBbmRDYW5vbmljYWxpemVEZXRhaQog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAobW9kaWZpZXIudG90YWwpIHsKLSAgICAg
ICAgICAgICAgICBhdXRvIGV4Y2VwdGlvbiA9IGNoZWNrQW5kQ2Fub25pY2FsaXplVG90YWwobW9k
aWZpZXIudG90YWwtPmFtb3VudCk7Ci0gICAgICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbi5oYXNF
eGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbi5yZWxlYXNl
RXhjZXB0aW9uKCk7CisgICAgICAgICAgICAgICAgYXV0byB0b3RhbFJlc3VsdCA9IGNoZWNrQW5k
Q2Fub25pY2FsaXplVG90YWwoY29udGV4dCwgKm1vZGlmaWVyLnRvdGFsKTsKKyAgICAgICAgICAg
ICAgICBpZiAodG90YWxSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0b3RhbFJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIGZvciAoYXV0byYgaXRlbSA6IG1vZGlmaWVyLmFkZGl0aW9uYWxEaXNwbGF5
SXRlbXMpIHsKLSAgICAgICAgICAgICAgICBhdXRvIGV4Y2VwdGlvbiA9IGNoZWNrQW5kQ2Fub25p
Y2FsaXplQW1vdW50KGl0ZW0uYW1vdW50KTsKLSAgICAgICAgICAgICAgICBpZiAoZXhjZXB0aW9u
Lmhhc0V4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uLnJl
bGVhc2VFeGNlcHRpb24oKTsKKyAgICAgICAgICAgICAgICBhdXRvIHBheW1lbnRJdGVtUmVzdWx0
ID0gY2hlY2tBbmRDYW5vbmljYWxpemVQYXltZW50SXRlbShjb250ZXh0LCBpdGVtLCBOZWdhdGl2
ZUFtb3VudEFsbG93ZWQ6Olllcyk7CisgICAgICAgICAgICAgICAgaWYgKHBheW1lbnRJdGVtUmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGF5bWVudEl0
ZW1SZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBTdHJpbmcgc2VyaWFsaXplZERhdGE7CiAgICAgICAgICAgICBpZiAobW9kaWZpZXIuZGF0YSkg
ewotICAgICAgICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGNvbnRleHQuZ2xvYmFsT2Jq
ZWN0KCk7Ci0gICAgICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
Z2xvYmFsT2JqZWN0LT52bSgpKTsKLSAgICAgICAgICAgICAgICBzZXJpYWxpemVkRGF0YSA9IEpT
T05TdHJpbmdpZnkoZ2xvYmFsT2JqZWN0LCBtb2RpZmllci5kYXRhLmdldCgpLCAwKTsKLSAgICAg
ICAgICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH07Ci0gICAgICAgICAgICAg
ICAgbW9kaWZpZXIuZGF0YS5jbGVhcigpOworICAgICAgICAgICAgICAgIGF1dG8gZGF0YVJlc3Vs
dCA9IGNoZWNrQW5kQ2Fub25pY2FsaXplRGF0YShjb250ZXh0LCBtb2RpZmllcik7CisgICAgICAg
ICAgICAgICAgaWYgKGRhdGFSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBkYXRhUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgICAgICAgICAg
ICAgIHNlcmlhbGl6ZWREYXRhID0gZGF0YVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIHNlcmlhbGl6ZWRNb2RpZmllckRhdGEudW5jaGVja2Vk
QXBwZW5kKFdURk1vdmUoc2VyaWFsaXplZERhdGEpKTsKICAgICAgICAgfQpAQCAtMzgwLDcgKzQw
OCw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxQYXltZW50UmVxdWVzdD4+IFBheW1lbnRSZXF1ZXN0Ojpj
cmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBWZWN0CiAgICAgICAgIHNlcmlhbGl6ZWRNZXRob2RE
YXRhLnVuY2hlY2tlZEFwcGVuZCh7IFdURk1vdmUoKmlkZW50aWZpZXIpLCBXVEZNb3ZlKHNlcmlh
bGl6ZWREYXRhKSB9KTsKICAgICB9CiAKLSAgICBhdXRvIHRvdGFsUmVzdWx0ID0gY2hlY2tBbmRD
YW5vbmljYWxpemVUb3RhbChkZXRhaWxzLnRvdGFsLmFtb3VudCk7CisgICAgYXV0byB0b3RhbFJl
c3VsdCA9IGNoZWNrQW5kQ2Fub25pY2FsaXplVG90YWwoZG9jdW1lbnQsIGRldGFpbHMudG90YWwp
OwogICAgIGlmICh0b3RhbFJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIHRv
dGFsUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKIApAQCAtNjgxLDcgKzcwOSw3IEBAIHZvaWQg
UGF5bWVudFJlcXVlc3Q6OnNldHRsZURldGFpbHNQcm9taXNlKFVwZGF0ZVJlYXNvbiByZWFzb24p
CiAgICAgfQogCiAgICAgaWYgKGRldGFpbHNVcGRhdGUudG90YWwpIHsKLSAgICAgICAgYXV0byB0
b3RhbFJlc3VsdCA9IGNoZWNrQW5kQ2Fub25pY2FsaXplVG90YWwoZGV0YWlsc1VwZGF0ZS50b3Rh
bC0+YW1vdW50KTsKKyAgICAgICAgYXV0byB0b3RhbFJlc3VsdCA9IGNoZWNrQW5kQ2Fub25pY2Fs
aXplVG90YWwoY29udGV4dCwgKmRldGFpbHNVcGRhdGUudG90YWwpOwogICAgICAgICBpZiAodG90
YWxSZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgIGFib3J0V2l0aEV4Y2VwdGlv
bih0b3RhbFJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKaW5kZXggZThlYjk5YzI0ZmViLi4wMjgzMjUwNDI0NzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTAyLTE1ICBEZXZpbiBSb3Vzc28gIDxk
cm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBbUGF5bWVudCBSZXF1ZXN0XSBhZGQgYW4gYG9i
amVjdCBkYXRhYCB0byBgUGF5bWVudEl0ZW1gIHNvIHRoYXQgZGF0YSBzcGVjaWZpYyB0byBBcHBs
ZSBQYXkgY2FuIGJlIHByb3ZpZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjE5NzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5ODA2OTk5Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFsL2Nv
Y29hL1Bhc3NLaXRTb2Z0TGluay5oOgorICAgICAgICAqIHBhbC9jb2NvYS9QYXNzS2l0U29mdExp
bmsubW06CisgICAgICAgICogcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg6CisKIDIwMjEtMDIt
MTAgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBN
b3ZlIHBhbC9zcGkvY29jb2EvQ29yZVRleHRTUEkuaCB0byBwYWwvc3BpL2NmL0NvcmVUZXh0U1BJ
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRM
aW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oCmlu
ZGV4IDc3ZWFkYjM0ZmExMC4uNmZhNmZhYjFjZDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmgKQEAgLTc4LDQgKzc4LDggQEAgU09GVF9MSU5L
X0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRFcnJvclBvc3RhbEFk
ZHJlc3NVc2VySW5mb0sKIAogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBQYXNz
S2l0LCBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21haW5BbmRTb3Vy
Y2VBcHBsaWNhdGlvbiwgdm9pZCwgKE5TU3RyaW5nICppZGVudGlmaWVyLCBOU1N0cmluZyAqZG9t
YWluLCBOU1N0cmluZyAqc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyLCBQS0Nh
bk1ha2VQYXltZW50c0NvbXBsZXRpb24gY29tcGxldGlvbiksIChpZGVudGlmaWVyLCBkb21haW4s
IHNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciwgY29tcGxldGlvbikpCiAKKyNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1Bhc3NL
aXRTb2Z0TGlua0FkZGl0aW9ucy5oPgorI2VuZGlmCisKICNlbmRpZiAvLyBVU0UoUEFTU0tJVCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5r
Lm1tIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsubW0KaW5k
ZXggYWI4NzNiOWM1ZmMxLi42NWZhMTFmYzQ1YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLm1tCkBAIC05MSw0ICs5MSw4IEBAIFNPRlRfTElO
S19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50
RXJyb3JQb3N0YWxBZGRyCiAKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJVEhfRVhQ
T1JUKFBBTCwgUGFzc0tpdCwgUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVy
RG9tYWluQW5kU291cmNlQXBwbGljYXRpb24sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwg
TlNTdHJpbmcgKmRvbWFpbiwgTlNTdHJpbmcgKnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRl
bnRpZmllciwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRlbnRp
ZmllciwgZG9tYWluLCBzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIsIGNvbXBs
ZXRpb24pLCBQQUxfRVhQT1JUKQogCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbXBv
cnQgPFdlYktpdEFkZGl0aW9ucy9QYXNzS2l0U29mdExpbmtBZGRpdGlvbnMubW0+CisjZW5kaWYK
KwogI2VuZGlmIC8vIFVTRShQQVNTS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
Y29jb2EvUGFzc0tpdFNQSS5oCmluZGV4IDJiNjc4ZjkxYTdmOC4uMWUwYTIxMTEwMGZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oCkBAIC01OSw2
ICs1OSw4IEBAIFdURl9FWFRFUk5fQ19FTkQKICNpbXBvcnQgPFBhc3NLaXQvUEtQYXltZW50UmVx
dWVzdF9Qcml2YXRlLmg+CiAjZW5kaWYKIAorI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1Bhc3NL
aXRTUElBZGRpdGlvbnMuaD4KKwogI2Vsc2UKIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0
aW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDIyZDA0NjZlZTlmOC4uMWIxZTIx
MTQ1OGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtNjI1LDYgKzYyNSw3IEBAIGxp
c3QoQVBQRU5EIFdlYkNvcmVfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5pZGwKICAgICBNb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5SW5zdGFsbG1lbnRSZXRhaWxDaGFubmVsLmlkbAogICAgIE1vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlMaW5lSXRlbS5pZGwKKyAgICBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TGluZUl0ZW1E
YXRhLmlkbAogICAgIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlNZXJjaGFudENhcGFiaWxpdHku
aWRsCiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnQuaWRsCiAgICAgTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0LmlkbApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXNDb2NvYS50eHQKaW5kZXggNzk3ZjUzMWM4NWY2Li43YmFkMGQxMTk0ZjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
U291cmNlc0NvY29hLnR4dApAQCAtMzEsNiArMzEsNyBAQCBKU0FwcGxlUGF5SW5zdGFsbG1lbnRJ
dGVtLmNwcAogSlNBcHBsZVBheUluc3RhbGxtZW50SXRlbVR5cGUuY3BwCiBKU0FwcGxlUGF5SW5z
dGFsbG1lbnRSZXRhaWxDaGFubmVsLmNwcAogSlNBcHBsZVBheUxpbmVJdGVtLmNwcAorSlNBcHBs
ZVBheUxpbmVJdGVtRGF0YS5jcHAKIEpTQXBwbGVQYXlNZXJjaGFudENhcGFiaWxpdHkuY3BwCiBK
U0FwcGxlUGF5TW9kaWZpZXIuY3BwCiBKU0FwcGxlUGF5UGF5bWVudC5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4YzE1ZWI2
NDgwMzcuLmU2YTkwODc1ZmFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjMzMyw3ICsyMzMzLDcgQEAKIAkJN0M2NTIzMTgx
RTAwREJCNTAwNjc3RjIyIC8qIEpTQXBwbGVQYXlQYXltZW50TWV0aG9kLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzY1MjMwRTFFMDBEQkI0MDA2NzdG
MjIgLyogSlNBcHBsZVBheVBheW1lbnRNZXRob2QuaCAqLzsgfTsKIAkJN0M2NTIzMUExRTAwREJC
NTAwNjc3RjIyIC8qIEpTQXBwbGVQYXlQYXltZW50UGFzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M2NTIzMTAxRTAwREJCNDAwNjc3RjIyIC8qIEpT
QXBwbGVQYXlQYXltZW50UGFzcy5oICovOyB9OwogCQk3QzY1NzlFMDFFMDA3OUY5MDBFM0EyN0Eg
LyogQXBwbGVQYXlQYXltZW50UmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0M2NTc5REYxRTAwNzlGOTAwRTNBMjdBIC8qIEFwcGxlUGF5UGF5
bWVudFJlcXVlc3QuaCAqLzsgfTsKLQkJN0M2NTc5RTMxRTAwODI3MDAwRTNBMjdBIC8qIEFwcGxl
UGF5TGluZUl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDNjU3OUUyMUUwMDgyNzAwMEUzQTI3QSAvKiBBcHBsZVBheUxpbmVJdGVtLmggKi87IH07
CisJCTdDNjU3OUUzMUUwMDgyNzAwMEUzQTI3QSAvKiBBcHBsZVBheUxpbmVJdGVtLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzY1NzlFMjFFMDA4Mjcw
MDBFM0EyN0EgLyogQXBwbGVQYXlMaW5lSXRlbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDNjU3OUU4MUUwMDgzMTYwMEUzQTI3QSAvKiBBcHBs
ZVBheVNoaXBwaW5nTWV0aG9kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QzY1NzlFNzFFMDA4MzE2MDBFM0EyN0EgLyogQXBwbGVQYXlTaGlwcGluZ01l
dGhvZC5oICovOyB9OwogCQk3QzY1NzlGMDFFMDA4NTY2MDBFM0EyN0EgLyogSlNBcHBsZVBheUxp
bmVJdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QzY1NzlFQTFFMDA4NTY2MDBFM0EyN0EgLyogSlNBcHBsZVBheUxpbmVJdGVtLmggKi87IH07CiAJ
CTdDNjU3OUYyMUUwMDg1NjYwMEUzQTI3QSAvKiBKU0FwcGxlUGF5UGF5bWVudFJlcXVlc3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNjU3OUVDMUUw
MDg1NjYwMEUzQTI3QSAvKiBKU0FwcGxlUGF5UGF5bWVudFJlcXVlc3QuaCAqLzsgfTsKQEAgLTI5
MzUsNiArMjkzNSw4IEBACiAJCTk0RTgzOTU2MURGQjJCQzQwMDdCQzZBNyAvKiBKU0NTU05hbWVz
cGFjZVJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk0RTgzOTU0MURGQjJCQTYwMDdCQzZBNyAvKiBKU0NTU05hbWVzcGFjZVJ1bGUuaCAqLzsgfTsK
IAkJOTUyMDc2MDUxRjI2NzVGRTAwN0QyQUFCIC8qIENhbGxUcmFjZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MjA3NjAxMUYyNjc1RjkwMDdEMkFB
QiAvKiBDYWxsVHJhY2VyLmggKi87IH07CiAJCTk1MjA3NjA2MUYyNjc1RkUwMDdEMkFBQiAvKiBD
YWxsVHJhY2VyVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk1MjA3NjAyMUYyNjc1RjkwMDdEMkFBQiAvKiBDYWxsVHJhY2VyVHlwZXMuaCAqLzsg
fTsKKwkJOTU2RkM0QkIyNUQ0OUM3QjAwRjdCM0EyIC8qIEFwcGxlUGF5TGluZUl0ZW1EYXRhLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTZGQzRCODI1
RDQ5QzdBMDBGN0IzQTIgLyogQXBwbGVQYXlMaW5lSXRlbURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5NTZGQzRCQjI1RDQ5QzdCMDBGN0Iz
QTMgLyogSlNBcHBsZVBheUxpbmVJdGVtRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTU2RkM0QkEyNUQ0OUM3RDAwRjdCM0EyIC8qIEpTQXBwbGVQ
YXlMaW5lSXRlbURhdGEuaCAqLzsgfTsKIAkJOTVBMUUyRTkyNUNDNzVBOTAwMjY4QzhFIC8qIE1l
ZGlhQ29udHJvbHNDb250ZXh0TWVudUl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk1QTFFMkU3MjVDQzc1QTgwMDI2OEM4RSAvKiBNZWRpYUNvbnRy
b2xzQ29udGV4dE1lbnVJdGVtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJOTVERjlEMjUyNTJCRURCMjAwMEQ3RjQ2IC8qIFBvaW50ZXJDaGFyYWN0
ZXJpc3RpY3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk1REY5RDIzMjUyQkVEOTkwMDBEN0Y0NiAvKiBQb2ludGVyQ2hhcmFjdGVyaXN0aWNzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTcwNTk5N0Ex
MDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MDU5OTc2MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xp
Y3lDaGVja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTExNzYyLDYgKzExNzY0LDEwIEBACiAJCTk1MjA3NjAwMUYyNjc1RjkwMDdEMkFBQiAv
KiBDYWxsVHJhY2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhbGxUcmFjZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NTIwNzYwMTFGMjY3NUY5MDA3RDJBQUIgLyogQ2Fs
bFRyYWNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsVHJhY2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTk1MjA3NjAyMUYyNjc1RjkwMDdEMkFBQiAvKiBDYWxsVHJhY2VyVHlwZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ2FsbFRyYWNlclR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTk1NkZDNEI4MjVENDlDN0EwMEY3QjNBMiAvKiBBcHBsZVBheUxpbmVJdGVtRGF0
YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBsZVBheUxpbmVJdGVtRGF0
YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NTZGQzRCODI1RDQ5QzdDMDBGN0Iz
QTIgLyogSlNBcHBsZVBheUxpbmVJdGVtRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0FwcGxlUGF5TGluZUl0ZW1EYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTU2RkM0QkEyNUQ0OUM3QjAwRjdCM0EyIC8qIEFwcGxlUGF5TGluZUl0
ZW1EYXRhLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBcHBsZVBheUxpbmVJdGVtRGF0YS5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk1NkZDNEJBMjVENDlDN0QwMEY3QjNB
MiAvKiBKU0FwcGxlUGF5TGluZUl0ZW1EYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTQXBwbGVQYXlMaW5lSXRlbURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTVBMUUyRTcyNUNDNzVBODAwMjY4QzhFIC8qIE1lZGlhQ29udHJvbHNDb250ZXh0TWVu
dUl0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFDb250cm9sc0Nv
bnRleHRNZW51SXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NURGOUQyMzI1
MkJFRDk5MDAwRDdGNDYgLyogUG9pbnRlckNoYXJhY3RlcmlzdGljcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQb2ludGVyQ2hhcmFjdGVyaXN0aWNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk3MDU5OTc1MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvbGljeUNoZWNrZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTgzMzUsNiArMTgzNDEsOCBAQAogCQkJCUExM0I2MTY5MjQ3
NURGQzUwMEJCRTZERSAvKiBBcHBsZVBheUluc3RhbGxtZW50UmV0YWlsQ2hhbm5lbC5pZGwgKi8s
CiAJCQkJN0M2NTc5RTIxRTAwODI3MDAwRTNBMjdBIC8qIEFwcGxlUGF5TGluZUl0ZW0uaCAqLywK
IAkJCQk3QzY1NzlFNDFFMDA4MkM4MDBFM0EyN0EgLyogQXBwbGVQYXlMaW5lSXRlbS5pZGwgKi8s
CisJCQkJOTU2RkM0QjgyNUQ0OUM3QTAwRjdCM0EyIC8qIEFwcGxlUGF5TGluZUl0ZW1EYXRhLmgg
Ki8sCisJCQkJOTU2RkM0QkEyNUQ0OUM3QjAwRjdCM0EyIC8qIEFwcGxlUGF5TGluZUl0ZW1EYXRh
LmlkbCAqLywKIAkJCQlBMURGNUFBODFGODA3MEQ0MDA1OEE0NzcgLyogQXBwbGVQYXlNZXJjaGFu
dENhcGFiaWxpdHkuY3BwICovLAogCQkJCUExREY1QTgzMUY3RUJERjIwMDU4QTQ3NyAvKiBBcHBs
ZVBheU1lcmNoYW50Q2FwYWJpbGl0eS5oICovLAogCQkJCUExREY1QTg1MUY3RUJERjIwMDU4QTQ3
NyAvKiBBcHBsZVBheU1lcmNoYW50Q2FwYWJpbGl0eS5pZGwgKi8sCkBAIC0xODU0NSw2ICsxODU1
Myw4IEBACiAJCQkJQTEzQjYxNkYyNDc1RTMxMjAwQkJFNkRFIC8qIEpTQXBwbGVQYXlJbnN0YWxs
bWVudFJldGFpbENoYW5uZWwuaCAqLywKIAkJCQk3QzY1NzlFOTFFMDA4NTY2MDBFM0EyN0EgLyog
SlNBcHBsZVBheUxpbmVJdGVtLmNwcCAqLywKIAkJCQk3QzY1NzlFQTFFMDA4NTY2MDBFM0EyN0Eg
LyogSlNBcHBsZVBheUxpbmVJdGVtLmggKi8sCisJCQkJOTU2RkM0QjgyNUQ0OUM3QzAwRjdCM0Ey
IC8qIEpTQXBwbGVQYXlMaW5lSXRlbURhdGEuY3BwICovLAorCQkJCTk1NkZDNEJBMjVENDlDN0Qw
MEY3QjNBMiAvKiBKU0FwcGxlUGF5TGluZUl0ZW1EYXRhLmggKi8sCiAJCQkJQTFERjVBODkxRjdF
QzAwMDAwNThBNDc3IC8qIEpTQXBwbGVQYXlNZXJjaGFudENhcGFiaWxpdHkuY3BwICovLAogCQkJ
CUExREY1QThBMUY3RUMwMDAwMDU4QTQ3NyAvKiBKU0FwcGxlUGF5TWVyY2hhbnRDYXBhYmlsaXR5
LmggKi8sCiAJCQkJQTFGNkQwMEExRkUwOTkyMTAwMTgwNzhDIC8qIEpTQXBwbGVQYXlNb2RpZmll
ci5jcHAgKi8sCkBAIC0zMTE1OCw2ICszMTE2OCw3IEBACiAJCQkJQTExNzUwQTEyNDc0NjhGNzAw
RDREMjZDIC8qIEFwcGxlUGF5SW5zdGFsbG1lbnRJdGVtVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTEzQjYxNkIyNDc1RTA0ODAwQkJFNkRFIC8qIEFwcGxlUGF5SW5zdGFsbG1lbnRSZXRhaWxD
aGFubmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzY1NzlFMzFFMDA4MjcwMDBFM0EyN0EgLyog
QXBwbGVQYXlMaW5lSXRlbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTU2RkM0QkIyNUQ0OUM3QjAw
RjdCM0EyIC8qIEFwcGxlUGF5TGluZUl0ZW1EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMURG
NUE4NjFGN0VCREYyMDA1OEE0NzcgLyogQXBwbGVQYXlNZXJjaGFudENhcGFiaWxpdHkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUExRjZDRkZGMUZFMDk2MjEwMDE4MDc4QyAvKiBBcHBsZVBheU1vZGlm
aWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzY1MjMwMTFFMDBEMDM0MDA2NzdGMjIgLyogQXBw
bGVQYXlQYXltZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMyNzI0LDYgKzMyNzM1LDcgQEAKIAkJ
CQlBMTNCNjE3NjI0NzVFMzdBMDBCQkU2REUgLyogSlNBcHBsZVBheUluc3RhbGxtZW50SXRlbVR5
cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExM0I2MTc3MjQ3NUUzQTMwMEJCRTZERSAvKiBKU0Fw
cGxlUGF5SW5zdGFsbG1lbnRSZXRhaWxDaGFubmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzY1
NzlGMDFFMDA4NTY2MDBFM0EyN0EgLyogSlNBcHBsZVBheUxpbmVJdGVtLmggaW4gSGVhZGVycyAq
LywKKwkJCQk5NTZGQzRCQjI1RDQ5QzdCMDBGN0IzQTMgLyogSlNBcHBsZVBheUxpbmVJdGVtRGF0
YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFERjVBOEUxRjdFQzAwMjAwNThBNDc3IC8qIEpTQXBw
bGVQYXlNZXJjaGFudENhcGFiaWxpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRjZEMDEyMUZF
MDk5QjQwMDE4MDc4QyAvKiBKU0FwcGxlUGF5TW9kaWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTdDNjUyMzE0MUUwMERCQjQwMDY3N0YyMiAvKiBKU0FwcGxlUGF5UGF5bWVudC5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViSW5qZWN0ZWRT
Y3JpcHRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJJbmplY3RlZFNjcmlw
dEhvc3QuY3BwCmluZGV4IDZjZWEyNDY2NGJhZS4uNDFmMzNiMTI1MWViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcApAQCAtMTEy
LDE1ICsxMTIsMTYgQEAgc3RhdGljIEpTT2JqZWN0KiBvYmplY3RGb3JQYXltZW50U2hpcHBpbmdP
cHRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZXhlYywgY28KIAogc3RhdGljIEpTT2JqZWN0
KiBvYmplY3RGb3JQYXltZW50RGV0YWlsc01vZGlmaWVyKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGV4ZWMsIGNvbnN0IFBheW1lbnREZXRhaWxzTW9kaWZpZXImIG1vZGlmaWVyKQogewotICAgIGF1
dG8qIGFkZGl0aW9uYWxEaXNwbGF5SXRlbXMgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51
bGxwdHIpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtb2RpZmllci5hZGRpdGlvbmFs
RGlzcGxheUl0ZW1zLnNpemUoKTsgKytpKQotICAgICAgICBhZGRpdGlvbmFsRGlzcGxheUl0ZW1z
LT5wdXREaXJlY3RJbmRleChleGVjLCBpLCBvYmplY3RGb3JQYXltZW50SXRlbSh2bSwgZXhlYywg
bW9kaWZpZXIuYWRkaXRpb25hbERpc3BsYXlJdGVtc1tpXSkpOwotCiAgICAgYXV0byogb2JqZWN0
ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CiAgICAgb2JqZWN0LT5wdXREaXJlY3Qodm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzdXBwb3J0ZWRNZXRob2RzIiksIGpzU3RyaW5n
KHZtLCBtb2RpZmllci5zdXBwb3J0ZWRNZXRob2RzKSk7Ci0gICAgb2JqZWN0LT5wdXREaXJlY3Qo
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0b3RhbCIpLCAhbW9kaWZpZXIudG90YWwg
PyBqc051bGwoKSA6IG9iamVjdEZvclBheW1lbnRJdGVtKHZtLCBleGVjLCAqbW9kaWZpZXIudG90
YWwpKTsKLSAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgImFkZGl0aW9uYWxEaXNwbGF5SXRlbXMiKSwgYWRkaXRpb25hbERpc3BsYXlJdGVtcyk7Ci0g
ICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJkYXRh
IiksICFtb2RpZmllci5kYXRhID8ganNOdWxsKCkgOiBtb2RpZmllci5kYXRhLmdldCgpKTsKKyAg
ICBpZiAobW9kaWZpZXIudG90YWwpCisgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidG90YWwiKSwgb2JqZWN0Rm9yUGF5bWVudEl0ZW0odm0s
IGV4ZWMsICptb2RpZmllci50b3RhbCkpOworICAgIGlmICghbW9kaWZpZXIuYWRkaXRpb25hbERp
c3BsYXlJdGVtcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byogYWRkaXRpb25hbERpc3BsYXlJ
dGVtcyA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0cik7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtb2RpZmllci5hZGRpdGlvbmFsRGlzcGxheUl0ZW1zLnNpemUo
KTsgKytpKQorICAgICAgICAgICAgYWRkaXRpb25hbERpc3BsYXlJdGVtcy0+cHV0RGlyZWN0SW5k
ZXgoZXhlYywgaSwgb2JqZWN0Rm9yUGF5bWVudEl0ZW0odm0sIGV4ZWMsIG1vZGlmaWVyLmFkZGl0
aW9uYWxEaXNwbGF5SXRlbXNbaV0pKTsKKyAgICAgICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJhZGRpdGlvbmFsRGlzcGxheUl0ZW1zIiksIGFkZGl0
aW9uYWxEaXNwbGF5SXRlbXMpOworICAgIH0KICAgICByZXR1cm4gb2JqZWN0OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJDb3JlQWRkaXRpb25zLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViQ29yZUFkZGl0aW9ucy5tbQppbmRl
eCBkNWM3MWNiYzJlMWYuLmFmNjNkYTJmMjE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvV2ViQ29yZUFkZGl0aW9ucy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9XZWJDb3JlQWRkaXRpb25zLm1tCkBAIC0yNCwzICsyNCw3IEBACiAgKi8K
IAogI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2lt
cG9ydCA8V2ViS2l0QWRkaXRpb25zL1dlYkNvcmVBZGRpdGlvbnMubW0+CisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuY3BwCmluZGV4
IDAwZmQ2NjBkZThiNy4uMTZjMWQ5Njk3MjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAKQEAgLTEyOSwyMSArMTI5LDEwIEBAIHZv
aWQgTW9ja1BheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29u
c3QgUGF5bWVudE1lcmNoYW50U2VzCiAgICAgfSk7CiB9CiAKLXN0YXRpYyBBcHBsZVBheUxpbmVJ
dGVtIGNvbnZlcnQoY29uc3QgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVt
JiBsaW5lSXRlbSkKLXsKLSAgICBBcHBsZVBheUxpbmVJdGVtIHJlc3VsdDsKLSAgICByZXN1bHQu
dHlwZSA9IGxpbmVJdGVtLnR5cGU7Ci0gICAgcmVzdWx0LmxhYmVsID0gbGluZUl0ZW0ubGFiZWw7
Ci0gICAgcmVzdWx0LmFtb3VudCA9IGxpbmVJdGVtLmFtb3VudDsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCiB2b2lkIE1vY2tQYXltZW50Q29vcmRpbmF0b3I6OnVwZGF0ZVRvdGFsQW5kTGluZUl0
ZW1zKGNvbnN0IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVt
cyYgdG90YWxBbmRMaW5lSXRlbXMpCiB7Ci0gICAgbV90b3RhbCA9IGNvbnZlcnQodG90YWxBbmRM
aW5lSXRlbXMudG90YWwpOwotICAgIG1fbGluZUl0ZW1zLmNsZWFyKCk7Ci0gICAgZm9yIChhdXRv
JiBsaW5lSXRlbSA6IHRvdGFsQW5kTGluZUl0ZW1zLmxpbmVJdGVtcykKLSAgICAgICAgbV9saW5l
SXRlbXMuYXBwZW5kKGNvbnZlcnQobGluZUl0ZW0pKTsKKyAgICBtX3RvdGFsID0gdG90YWxBbmRM
aW5lSXRlbXMudG90YWw7CisgICAgbV9saW5lSXRlbXMgPSB0b3RhbEFuZExpbmVJdGVtcy5saW5l
SXRlbXM7CiB9CiAKIHZvaWQgTW9ja1BheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVTaGlwcGlu
Z01ldGhvZFNlbGVjdGlvbihPcHRpb25hbDxTaGlwcGluZ01ldGhvZFVwZGF0ZT4mJiBzaGlwcGlu
Z01ldGhvZFVwZGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOWJjZWU1YTZkNTU5Li4wNWU4NDljNmJhZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMDItMTUgIERldmluIFJvdXNzbyAgPGRyb3Vz
c29AYXBwbGUuY29tPgorCisgICAgICAgIFtQYXltZW50IFJlcXVlc3RdIGFkZCBhbiBgb2JqZWN0
IGRhdGFgIHRvIGBQYXltZW50SXRlbWAgc28gdGhhdCBkYXRhIHNwZWNpZmljIHRvIEFwcGxlIFBh
eSBjYW4gYmUgcHJvdmlkZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyMTk3MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk4MDY5OTk+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1
bWVudENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPEFwcGxlUGF5
U2Vzc2lvblBheW1lbnRSZXF1ZXN0Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+Ojpk
ZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPEFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0OjpMaW5lSXRlbT46OmVuY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtPjo6ZGVj
b2RlKTogRGVsZXRlZC4KKyAgICAgICAgSnVzdCB1c2UgYEFwcGxlUGF5TGluZUl0ZW1gIGluc3Rl
YWQgb2YgZHVwbGljYXRpbmcgaXRzIHN0cnVjdHVyZSBpbiBhbm90aGVyIG9iamVjdCAoYEFwcGxl
UGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbWApLgorCiAyMDIxLTAyLTExICBNYW51
ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIGV2
ZW50LmN0cmxLZXkgYW5kIG90aGVyIGFyZSBmYWxzZSBpbiBrZXlkb3duIGV2ZW50CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0Nv
Y29hLm1tCmluZGV4IDY3M2U5YjU4OGRmMC4uZDM1Y2Y2ZWFiZWJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5t
bQpAQCAtMjc5LDEyICsyNzksMTIgQEAgYm9vbCBBcmd1bWVudENvZGVyPEFwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEFwcGwKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIHJlcXVlc3Quc2V0U2hpcHBpbmdNZXRob2RzKHNoaXBwaW5nTWV0
aG9kcyk7CiAKLSAgICBWZWN0b3I8QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJ
dGVtPiBsaW5lSXRlbXM7CisgICAgVmVjdG9yPEFwcGxlUGF5TGluZUl0ZW0+IGxpbmVJdGVtczsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxpbmVJdGVtcykpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICByZXF1ZXN0LnNldExpbmVJdGVtcyhsaW5lSXRlbXMpOwogCi0gICAgT3B0aW9uYWw8
QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtPiB0b3RhbDsKKyAgICBPcHRp
b25hbDxBcHBsZVBheUxpbmVJdGVtPiB0b3RhbDsKICAgICBkZWNvZGVyID4+IHRvdGFsOwogICAg
IGlmICghdG90YWwpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM0MiwyNiArMzQyLDYgQEAg
Ym9vbCBBcmd1bWVudENvZGVyPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpDb250YWN0
RmllbGRzPjo6ZGVjb2RlKERlY29kZXIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBcmd1
bWVudENvZGVyPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbT46OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6
TGluZUl0ZW0mIGxpbmVJdGVtKQotewotICAgIGVuY29kZXIgPDwgbGluZUl0ZW0udHlwZTsKLSAg
ICBlbmNvZGVyIDw8IGxpbmVJdGVtLmxhYmVsOwotICAgIGVuY29kZXIgPDwgbGluZUl0ZW0uYW1v
dW50OwotfQotCi1PcHRpb25hbDxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0
ZW0+IEFyZ3VtZW50Q29kZXI8QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVt
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCi17Ci0gICAgV2ViQ29yZTo6QXBwbGVQYXlTZXNz
aW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtIGxpbmVJdGVtOwotICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUobGluZUl0ZW0udHlwZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAg
aWYgKCFkZWNvZGVyLmRlY29kZShsaW5lSXRlbS5sYWJlbCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShsaW5lSXRlbS5hbW91bnQpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIFdURk1vdmUobGluZUl0ZW0p
OwotfQotCiB2b2lkIEFyZ3VtZW50Q29kZXI8QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6
Ok1lcmNoYW50Q2FwYWJpbGl0aWVzPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEFw
cGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpNZXJjaGFudENhcGFiaWxpdGllcyYgbWVyY2hh
bnRDYXBhYmlsaXRpZXMpCiB7CiAgICAgZW5jb2RlciA8PCBtZXJjaGFudENhcGFiaWxpdGllcy5z
dXBwb3J0czNEUzsKQEAgLTQxNCwxMiArMzk0LDEyIEBAIHZvaWQgQXJndW1lbnRDb2RlcjxBcHBs
ZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+OjplbmNvZGUoRW5j
CiAKIE9wdGlvbmFsPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJ
dGVtcz4gQXJndW1lbnRDb2RlcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6VG90YWxB
bmRMaW5lSXRlbXM+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxB
cHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0+IHRvdGFsOworICAgIE9wdGlv
bmFsPEFwcGxlUGF5TGluZUl0ZW0+IHRvdGFsOwogICAgIGRlY29kZXIgPj4gdG90YWw7CiAgICAg
aWYgKCF0b3RhbCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRp
b25hbDxWZWN0b3I8QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtPj4gbGlu
ZUl0ZW1zOworICAgIE9wdGlvbmFsPFZlY3RvcjxBcHBsZVBheUxpbmVJdGVtPj4gbGluZUl0ZW1z
OwogICAgIGRlY29kZXIgPj4gbGluZUl0ZW1zOwogICAgIGlmICghbGluZUl0ZW1zKQogICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaAppbmRleCAwMGMxNDNmYmJiODkuLjQxMDQ5ZjZhNGJmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTU0LDEwICs1NCw2
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DdXJsUHJveHlTZXR0aW5ncy5oPgogI2VuZGlmCiAKLSNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9XZWJD
b3JlQXJndW1lbnRDb2RlcnNBZGRpdGlvbnMuaD4KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKICNpbmNsdWRlIDxXZWJDb3JlL0NETUluc3RhbmNlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9DRE1JbnN0YW5jZVNlc3Npb24uaD4KQEAgLTcxMSwxNyArNzA3LDExIEBAIHRlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVu
dFJlcXVlc3Q+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNv
cmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jik7CiAgICAgc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9u
UGF5bWVudFJlcXVlc3QmKTsKIH07Ci0KIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkNvbnRhY3RGaWVsZHM+IHsK
ICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5
U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpDb250YWN0RmllbGRzJik7CiAgICAgc3RhdGljIFdBUk5f
VU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6QXBwbGVQYXlTZXNz
aW9uUGF5bWVudFJlcXVlc3Q6OkNvbnRhY3RGaWVsZHMmKTsKIH07CiAKLXRlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6
OkxpbmVJdGVtPiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJD
b3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0mKTsKLSAgICBzdGF0
aWMgT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJ
dGVtPiBkZWNvZGUoRGVjb2RlciYpOwotfTsKLQogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TWVyY2hhbnRDYXBh
YmlsaXRpZXM+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNv
cmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpNZXJjaGFudENhcGFiaWxpdGllcyYp
OwogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdl
YkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpNZXJjaGFudENhcGFiaWxpdGll
cyYpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDcyZjJjZTY1ZmYyNS4uNDQyMmExZmE4NjMzIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMjEtMDItMTUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisg
ICAgICAgIFtQYXltZW50IFJlcXVlc3RdIGFkZCBhbiBgb2JqZWN0IGRhdGFgIHRvIGBQYXltZW50
SXRlbWAgc28gdGhhdCBkYXRhIHNwZWNpZmljIHRvIEFwcGxlIFBheSBjYW4gYmUgcHJvdmlkZWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTk3MAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk4MDY5OTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9wYXltZW50
cmVxdWVzdC9wYXltZW50LXJlcXVlc3QtaW50ZXJuYWwtcHJvcGVydGllcy5odHRwcy1leHBlY3Rl
ZC50eHQ6CisKIDIwMjEtMDItMTEgIE1hbnVlbCBSZWdvIENhc2Fzbm92YXMgIDxyZWdvQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW1dQRV0gZXZlbnQuY3RybEtleSBhbmQgb3RoZXIgYXJlIGZhbHNl
IGluIGtleWRvd24gZXZlbnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVxdWVzdC1pbnRlcm5hbC1wcm9wZXJ0aWVz
Lmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Bh
eW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVxdWVzdC1pbnRlcm5hbC1wcm9wZXJ0aWVzLmh0dHBzLWV4
cGVjdGVkLnR4dAppbmRleCBjZDllMGNhYzY2NDAuLjBkYWQ2ZTJhMThhNyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1y
ZXF1ZXN0LWludGVybmFsLXByb3BlcnRpZXMuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVxdWVz
dC1pbnRlcm5hbC1wcm9wZXJ0aWVzLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtNzAsOSArNzAsNyBA
QCBJTlRFUk5BTCBQUk9QRVJUWTogZGV0YWlsczogewogICAgICAgICAgICJ2YWx1ZSI6ICI5OS4w
MCIKICAgICAgICAgfSwKICAgICAgICAgInBlbmRpbmciOiBmYWxzZQotICAgICAgfSwKLSAgICAg
ICJhZGRpdGlvbmFsRGlzcGxheUl0ZW1zIjogW10sCi0gICAgICAiZGF0YSI6IG51bGwKKyAgICAg
IH0KICAgICB9CiAgIF0KIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420672</attachid>
            <date>2021-02-17 11:02:23 -0800</date>
            <delta_ts>2021-02-17 11:16:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221970-20210217120222.patch</filename>
            <type>text/plain</type>
            <size>80402</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmZGY5YWMwMmE2YTA1ODBkYmY5ZWQ4YWNiY2E4MTY3NjFjNjYyODg3Li5m
OGMwNTBmMmExZDUxMGI4MTE3MjcwNjcxNjk4OTI5NTRkMmFkMDFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsOTEgQEAKKzIwMjEtMDItMTUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFtQYXltZW50IFJlcXVlc3RdIGFkZCBhbiBgb2JqZWN0IGRhdGFgIHRvIGBQ
YXltZW50SXRlbWAgc28gdGhhdCBkYXRhIHNwZWNpZmljIHRvIEFwcGxlIFBheSBjYW4gYmUgcHJv
dmlkZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MTk3MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk4MDY5OTk+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0
L1BheW1lbnRJdGVtLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1l
bnRJdGVtLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TGluZUl0ZW0u
aWRsOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbS5oOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGVQYXlMaW5lSXRlbTo6ZW5jb2RlIGNvbnN0KTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBcHBsZVBheUxpbmVJdGVtOjpkZWNvZGUpOiBBZGRlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TGluZUl0ZW1EYXRhLmlkbDogQWRkZWQuCisg
ICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJdGVtRGF0YS5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5TGluZUl0ZW1EYXRhOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlMaW5lSXRlbURhdGE6OmRlY29kZSk6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsZVBheUxpbmVJdGVtRGF0YTo6ZGVjb2RlRGF0YSk6CisgICAgICAgICog
TW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjaGVja0FuZENhbm9uaWNhbGl6ZURhdGEpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OmNoZWNrQW5kQ2Fub25pY2FsaXplUGF5bWVudEl0ZW0pOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OmNoZWNrQW5kQ2Fub25pY2FsaXplVG90YWwpOgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tB
bmRDYW5vbmljYWxpemVEZXRhaWxzKToKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OnNldHRsZURldGFp
bHNQcm9taXNlKToKKyAgICAgICAgQWRkIElQQyBzdXBwb3J0IGFuZCBleHRlbmQgZnJvbSBgQXBw
bGVQYXlMaW5lSXRlbURhdGFgIHdoaWNoIGlzIHVzZWQgdG8gcHVsbCB2YWx1ZXMgb3V0IG9mCisg
ICAgICAgIHRoZSBgb2JqZWN0IGRhdGFgIGZyb20gYFBheW1lbnRJdGVtYC4gVGhpcyB3YXksIGJv
dGggQXBwbGUgUGF5IEpTIGFuZCBQYXltZW50UmVxdWVzdCBjYW4gYmUKKyAgICAgICAgZ2l2ZW4g
dGhlIHNhbWUgZGF0YSAoYWxiZWl0IGluIHNsaWdodGx5IGRpZmZlcmVudCBwbGFjZXMpIGFuZCBo
YXZlIHRoZSBzYW1lIGNhcGFiaWxpdGllcy4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkv
QXBwbGVQYXlTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRBbmRWYWxpZGF0
ZVRvdGFsKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRBbmRWYWxpZGF0ZSk6CisgICAgICAg
ICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OmxpbmVJdGVtcyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6
c2V0TGluZUl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRS
ZXF1ZXN0Ojp0b3RhbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25Q
YXltZW50UmVxdWVzdDo6c2V0VG90YWwpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5
bWVudE1ldGhvZFVwZGF0ZS5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFJl
cXVlc3RWYWxpZGF0b3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRSZXF1
ZXN0VmFsaWRhdG9yLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudFJlcXVlc3RWYWxpZGF0
b3I6OnZhbGlkYXRlVG90YWwpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFN1
bW1hcnlJdGVtcy5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1l
dGhvZFVwZGF0ZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudE1ldGhvZFVwZGF0
ZTo6UGF5bWVudE1ldGhvZFVwZGF0ZSk6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9jb2Nv
YS9QYXltZW50U3VtbWFyeUl0ZW1zQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjp0b1BLUGF5
bWVudFN1bW1hcnlJdGVtVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjp0b1BLUGF5bWVudFN1bW1h
cnlJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtU3VtbWFyeUl0ZW1zKToKKyAgICAg
ICAgKiBNb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWVyZ2UpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OmNvbnZlcnRBbmRWYWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVBheW1l
bnRIYW5kbGVyOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudEhhbmRs
ZXI6OmNvbXB1dGVUb3RhbEFuZExpbmVJdGVtcyBjb25zdCk6CisgICAgICAgICogdGVzdGluZy9N
b2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tQYXltZW50
Q29vcmRpbmF0b3I6OnVwZGF0ZVRvdGFsQW5kTGluZUl0ZW1zKToKKyAgICAgICAgSnVzdCB1c2Ug
YEFwcGxlUGF5TGluZUl0ZW1gIGluc3RlYWQgb2YgZHVwbGljYXRpbmcgaXRzIHN0cnVjdHVyZSBp
biBhbm90aGVyIG9iamVjdCAoYEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRl
bWApLgorCisgICAgICAgICogaW5zcGVjdG9yL1dlYkluamVjdGVkU2NyaXB0SG9zdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpvYmplY3RGb3JQYXltZW50RGV0YWlsc01vZGlmaWVyKToKKyAgICAg
ICAgRHJpdmUtYnk6IERvbid0IGFsd2F5cyBzZXQgYG1vZGlmaWVyLnRvdGFsYCBvciBgbW9kaWZp
ZXIuYWRkaXRpb25hbERpc3BsYXlJdGVtc2Agc2luY2UgdGhleQorICAgICAgICBtaWdodCBub3Qg
aGF2ZSBiZWVuIHByb3ZpZGVkLgorICAgICAgICBEcml2ZS1ieTogRG9uJ3QgYm90aGVyIHNldHRp
bmcgYG1vZGlmaWVyLmRhdGFgIHNpbmNlIGl0J3MgY2xlYXJlZCBkdXJpbmcgdmFsaWRhdGlvbi4K
KworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAg
ICAoR2VuZXJhdGVEaWN0aW9uYXJ5SW1wbGVtZW50YXRpb25Db250ZW50KToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLmRlcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERpY3Rpb25hcnlXaXRoT25seUNvbmRpdGlv
bmFsTWVtYmVycy5pZGw6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3REaWN0aW9uYXJ5V2l0aE9ubHlDb25kaXRpb25hbE1lbWJlcnMuaDogQWRkZWQuCisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERpY3Rpb25hcnlXaXRoT25s
eUNvbmRpdGlvbmFsTWVtYmVycy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29udmVy
dERpY3Rpb25hcnk8VGVzdERpY3Rpb25hcnlXaXRoT25seUNvbmRpdGlvbmFsTWVtYmVycz4pOgor
ICAgICAgICAoV2ViQ29yZTo6Y29udmVydERpY3Rpb25hcnlUb0pTKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEVtcHR5RGljdGlvbmFyeS5pZGw6IEFkZGVkLgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbXB0eURpY3Rpb25hcnkuaDogQWRk
ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVtcHR5RGljdGlv
bmFyeS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydERpY3Rpb25hcnk8VGVz
dEVtcHR5RGljdGlvbmFyeT4pOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydERpY3Rpb25hcnlU
b0pTKToKKyAgICAgICAgTW9kaWZ5IHRoZSBJREwgY29kZSBnZW5lcmF0b3IgdG8gYmUgYWJsZSB0
byBoYW5kbGUgZW1wdHkgSURMIGRpY3Rpb25hcmllcy4KKworICAgICAgICAqIHBsYXRmb3JtL2Nv
Y29hL1dlYkNvcmVBZGRpdGlvbnMubW06CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoK
KyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNt
YWtlOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIxLTAyLTE3ICBEZXZpbiBSb3Vzc28gIDxkcm91
c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBBZGQgYW4gb3ZlcmZsb3cgYnV0dG9uIHRo
YXQncyBzaG93biB3aGVuIGNvbnRyb2xzIGFyZSBkcm9wcGVkIHNvIHRoYXQgaXQncyBzdGlsbCBw
b3NzaWJsZSB0byB0cmlnZ2VyIHRoZSBkcm9wcGVkIGJ1dHRvbidzIGFjdGlvbnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nCmluZGV4IDliNGQyODdhNmQ4OGI2N2RlZjM5MTVkODk3NjJjYTBkMDI5MmMwYWQuLjU5
YzlmYTNiNWFlM2JlYjUwNTg1OGYyZWYwNTNlODFkNTUxNjYwMjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTAyLTE1ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KKworICAgICAgICBbUGF5bWVudCBSZXF1ZXN0XSBhZGQgYW4gYG9iamVjdCBkYXRh
YCB0byBgUGF5bWVudEl0ZW1gIHNvIHRoYXQgZGF0YSBzcGVjaWZpYyB0byBBcHBsZSBQYXkgY2Fu
IGJlIHByb3ZpZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjE5NzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5ODA2OTk5PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFsL2NvY29hL1Bhc3NL
aXRTb2Z0TGluay5oOgorICAgICAgICAqIHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsubW06Cisg
ICAgICAgICogcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg6CisKIDIwMjEtMDItMTUgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
Zml4IHRoZSBBcHBsZSBpbnRlcm5hbCBpT1MgYnVpbGQgYWZ0ZXIgcjI3Mjg3OApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCBkODdkMzY3YTc3MzA0YWZiY2M4ZDIxODE0NjYxZmZlNzljODYzYzAxLi45NjAyNjMyMTUzMjE3
ZjI4NTQ5YmM3MjAxYzY5MmZlYmRlZDNjZjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisy
MDIxLTAyLTE1ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBb
UGF5bWVudCBSZXF1ZXN0XSBhZGQgYW4gYG9iamVjdCBkYXRhYCB0byBgUGF5bWVudEl0ZW1gIHNv
IHRoYXQgZGF0YSBzcGVjaWZpYyB0byBBcHBsZSBQYXkgY2FuIGJlIHByb3ZpZGVkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE5NzAKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzY5ODA2OTk5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAg
ICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdD46OmRl
Y29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8QXBwbGVQYXlTZXNzaW9uUGF5bWVu
dFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJn
dW1lbnRDb2RlcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0+OjplbmNv
ZGUpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPEFwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbT46OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgIEp1
c3QgdXNlIGBBcHBsZVBheUxpbmVJdGVtYCBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIGl0cyBzdHJ1
Y3R1cmUgaW4gYW5vdGhlciBvYmplY3QgKGBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6
TGluZUl0ZW1gKS4KKwogMjAyMS0wMi0xNyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5j
b20+CiAKICAgICAgICAgW2lPU10gQWRkIHN1cHBvcnQgZm9yIGFkZGl0aW9uYWwgYWNjZXNzaWJp
bGl0eSBpbWFnZSBleHRyYWN0aW9uIGNvbnRleHRtZW51IGFjdGlvbnMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IDY4Y2ZkNGEwNzI2MjUz
NDhhY2U1N2I5M2ZkYTc3M2VjYjJjNjgxN2YuLmJlOTBkNDNkMGMxMjhiMTRlZDYzMDk1MjUyZjRh
ZmE0YTQwMTZlMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdApAQCAtMzIsNiArMzIsNyBAQCAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL2FwcGxl
cGF5L0FwcGxlUGF5SW5zdGFsbG1lbnRJdGVtLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50SXRlbVR5cGUuaWRsCiAkKFBST0pFQ1RfRElSKS9N
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5SW5zdGFsbG1lbnRSZXRhaWxDaGFubmVsLmlkbAogJChQ
Uk9KRUNUX0RJUikvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJdGVtLmlkbAorJChQUk9K
RUNUX0RJUikvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJdGVtRGF0YS5pZGwKICQoUFJP
SkVDVF9ESVIpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlNZXJjaGFudENhcGFiaWxpdHkuaWRs
CiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudC5pZGwKICQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50QXV0aG9yaXphdGlv
blJlc3VsdC5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QKaW5kZXggMTcyMzY0ZDliNTUxMTA5MjRkZDkzYzdkYWNjNjg2MjlmZDc5YmU3Yy4u
OGMxZjI1ZmMxNzJmZWRiNzdjMGE3NDdhMTJhOWRiMGE5MDg1N2M5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTEwMiw2ICsxMDIs
OCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0FwcGxl
UGF5SW5zdGFsbG1lbnRSZXRhaWxDaGFubmVsLgogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNBcHBsZVBheUluc3RhbGxtZW50UmV0YWlsQ2hhbm5lbC5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0FwcGxlUGF5TGlu
ZUl0ZW0uY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0FwcGxlUGF5TGluZUl0ZW0uaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNBcHBsZVBheUxpbmVJdGVtRGF0YS5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXBwbGVQYXlMaW5lSXRlbURhdGEuaAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBcHBsZVBheU1lcmNoYW50
Q2FwYWJpbGl0eS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTQXBwbGVQYXlNZXJjaGFudENhcGFiaWxpdHkuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBcHBsZVBheU1vZGlmaWVyLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZmJhOWVlNWEwMTM0OWZiNjFhYmNiYWEyZDViMjQ0M2Uw
MjBjZTliOS4uYThkODdlZTE5MmVhN2RiOGUxNzE3YWM0MGU3MDM4NjA2ZDU1MzU2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC02MSw2ICs2MSw3IEBAIEpTX0JJTkRJTkdfSURM
UyA6PSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5SW5zdGFsbG1l
bnRJdGVtVHlwZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eUluc3RhbGxtZW50UmV0YWlsQ2hhbm5lbC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheUxpbmVJdGVtLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5TGluZUl0ZW1EYXRhLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L2FwcGxlcGF5L0FwcGxlUGF5TWVyY2hhbnRDYXBhYmlsaXR5LmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudC5pZGwgXAogICAgICQoV2ViQ29yZSkv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0LmlkbCBc
CkBAIC0xNzIyLDcgKzE3MjMsNyBAQCBQUkVQUk9DRVNTX0lETFNfU0NSSVBUUyA9IFwKIAogSURM
X0lOQ0xVREVTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcyBcCi0gICAgJChJRExfUEFUSFMp
CisgICAgJChBRERJVElPTkFMX0JJTkRJTkdfSURMU19QQVRIUykKIAogSURMX0NPTU1PTl9BUkdT
ID0gJChJRExfSU5DTFVERVM6JT0tLWluY2x1ZGUgJSkgLS13cml0ZS1kZXBlbmRlbmNpZXMgLS1v
dXRwdXREaXIgLgogCkBAIC0xODAwLDcgKzE4MDEsNyBAQCAkKElETF9JTlRFUk1FRElBVEVfUEFU
VEVSTlMpIDogJChQUkVQUk9DRVNTX0lETFNfU0NSSVBUUykgJChJRExfQVRUUklCVVRFU19GSUxF
KQogIyBnZW5lcmF0ZSBmaWxlIGluZm9ybWF0aW9uIHdpdGhvdXQgcGF0aHMsIGFuZCB0aG9zZSBz
dGlsbCBuZWVkIHRvIGJlbmVmaXQgZnJvbQogIyBzZXR0aW5nIHNlYXJjaCBwYXRocyB3aXRoIHZw
YXRoLgogCi12cGF0aCAlLmlkbCAkKElETF9QQVRIUykgJChXZWJDb3JlKS9iaW5kaW5ncy9zY3Jp
cHRzCit2cGF0aCAlLmlkbCAkKEFERElUSU9OQUxfQklORElOR19JRExTX1BBVEhTKSAkKFdlYkNv
cmUpL2JpbmRpbmdzL3NjcmlwdHMKIAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiBkZWZpbmUgR0VORVJBVEVfQklORElOR1NfdGVtcGxhdGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRl
bS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJdGVtLmgK
aW5kZXggMTg3ZjY5YTRlOTY4NGM2MTlhNWFmOWE1NGJmNzMxMjE2ZDE0NzIzZC4uMzVlMGU2OWQ2
MTU2ZTYxZWIyNjg5YjFkM2FlY2M1YzlkOWU2NmM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJdGVtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJdGVtLmgKQEAgLTI3LDE4ICsyNyw3MiBA
QAogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIAotI2luY2x1ZGUgIkFwcGxlUGF5U2Vzc2lvblBh
eW1lbnRSZXF1ZXN0LmgiCisjaW5jbHVkZSAiQXBwbGVQYXlMaW5lSXRlbURhdGEuaCIKKyNpbmNs
dWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0cnVjdCBB
cHBsZVBheUxpbmVJdGVtIHsKLSAgICB1c2luZyBUeXBlID0gQXBwbGVQYXlTZXNzaW9uUGF5bWVu
dFJlcXVlc3Q6OkxpbmVJdGVtOjpUeXBlOworc3RydWN0IEFwcGxlUGF5TGluZUl0ZW0gZmluYWwg
OiBwdWJsaWMgQXBwbGVQYXlMaW5lSXRlbURhdGEgeworICAgIGVudW0gY2xhc3MgVHlwZSB7Cisg
ICAgICAgIFBlbmRpbmcsCisgICAgICAgIEZpbmFsLAorICAgIH07CiAKICAgICBUeXBlIHR5cGUg
eyBUeXBlOjpGaW5hbCB9OwogICAgIFN0cmluZyBsYWJlbDsKICAgICBTdHJpbmcgYW1vdW50Owor
CisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxBcHBsZVBheUxp
bmVJdGVtPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4K
K3ZvaWQgQXBwbGVQYXlMaW5lSXRlbTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7
CisgICAgQXBwbGVQYXlMaW5lSXRlbURhdGE6OmVuY29kZShlbmNvZGVyKTsKKyAgICBlbmNvZGVy
IDw8IHR5cGU7CisgICAgZW5jb2RlciA8PCBsYWJlbDsKKyAgICBlbmNvZGVyIDw8IGFtb3VudDsK
IH0KIAordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPEFwcGxlUGF5TGluZUl0ZW0+
IEFwcGxlUGF5TGluZUl0ZW06OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIEFwcGxl
UGF5TGluZUl0ZW0gcmVzdWx0OworCisgICAgaWYgKCFyZXN1bHQuZGVjb2RlRGF0YShkZWNvZGVy
KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworI2RlZmluZSBERUNPREUobmFtZSwg
dHlwZSkgXAorICAgIE9wdGlvbmFsPHR5cGU+IG5hbWU7IFwKKyAgICBkZWNvZGVyID4+IG5hbWU7
IFwKKyAgICBpZiAoIW5hbWUpIFwKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsgXAorICAg
IHJlc3VsdC5uYW1lID0gV1RGTW92ZSgqbmFtZSk7IFwKKworICAgIERFQ09ERSh0eXBlLCBUeXBl
KQorICAgIERFQ09ERShsYWJlbCwgU3RyaW5nKQorICAgIERFQ09ERShhbW91bnQsIFN0cmluZykK
KworI3VuZGVmIERFQ09ERQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRy
YWl0czxXZWJDb3JlOjpBcHBsZVBheUxpbmVJdGVtOjpUeXBlPiB7CisgICAgdXNpbmcgdmFsdWVz
ID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6QXBwbGVQYXlMaW5lSXRlbTo6VHlwZSwK
KyAgICAgICAgV2ViQ29yZTo6QXBwbGVQYXlMaW5lSXRlbTo6VHlwZTo6UGVuZGluZywKKyAgICAg
ICAgV2ViQ29yZTo6QXBwbGVQYXlMaW5lSXRlbTo6VHlwZTo6RmluYWwKKyAgICA+OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV1RGCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJdGVtLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbS5pZGwKaW5kZXggZGE1ZjJlZWEyZTJhZDM1
MGU2NzI3ZWI1ZjZkZTc1MmM5NzhhOGNlZS4uYTQyYjc3MjRiZThmNjg3ODU1ZDQ2MDk2M2ZkYjgx
YTRiZDcxOWE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheUxpbmVJdGVtLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5TGluZUl0ZW0uaWRsCkBAIC0zNCw3ICszNCw3IEBACiAgICAgQ29uZGl0aW9uYWw9
QVBQTEVfUEFZLAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAogICAgIEpTR2VuZXJh
dGVUb0pTT2JqZWN0LAotXSBkaWN0aW9uYXJ5IEFwcGxlUGF5TGluZUl0ZW0geworXSBkaWN0aW9u
YXJ5IEFwcGxlUGF5TGluZUl0ZW0gOiBBcHBsZVBheUxpbmVJdGVtRGF0YSB7CiAgICAgQXBwbGVQ
YXlMaW5lSXRlbVR5cGUgdHlwZSA9ICJmaW5hbCI7CiAgICAgRE9NU3RyaW5nIGxhYmVsOwogICAg
IERPTVN0cmluZyBhbW91bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5TGluZUl0ZW1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5TGluZUl0ZW1EYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTNhYzc2ZmM4ZjJhNzFk
MmVmODU3N2FmMDM4NWRjNmZiYmQ1NjdlOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbURhdGEuaApAQCAtMCwwICsxLDkx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKQor
CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQorI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9BcHBsZVBheUxpbmVJdGVtRGF0YUFkZGl0aW9u
cy5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEFwcGxlUGF5TGlu
ZUl0ZW1EYXRhIHsKKyNpZiBkZWZpbmVkKEFwcGxlUGF5TGluZUl0ZW1EYXRhQWRkaXRpb25zX21l
bWJlcnMpCisgICAgQXBwbGVQYXlMaW5lSXRlbURhdGFBZGRpdGlvbnNfbWVtYmVycworI2VuZGlm
CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEFwcGxlUGF5
TGluZUl0ZW1EYXRhPiBkZWNvZGUoRGVjb2RlciYpOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlRGF0YShEZWNvZGVyJik7Cit9Owor
Cit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBBcHBsZVBheUxpbmVJdGVtRGF0YTo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisjaWYgZGVmaW5lZChBcHBsZVBheUxpbmVJ
dGVtRGF0YUFkZGl0aW9uc19lbmNvZGUpCisgICAgQXBwbGVQYXlMaW5lSXRlbURhdGFBZGRpdGlv
bnNfZW5jb2RlCisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShlbmNvZGVyKTsKKyNlbmRpZgorfQor
Cit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8QXBwbGVQYXlMaW5lSXRlbURhdGE+
IEFwcGxlUGF5TGluZUl0ZW1EYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBB
cHBsZVBheUxpbmVJdGVtRGF0YSByZXN1bHQ7CisgICAgaWYgKCFyZXN1bHQuZGVjb2RlRGF0YShk
ZWNvZGVyKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorYm9vbCBBcHBsZVBheUxpbmVJdGVtRGF0
YTo6ZGVjb2RlRGF0YShEZWNvZGVyJiBkZWNvZGVyKQoreworI2RlZmluZSBERUNPREUobmFtZSwg
dHlwZSkgXAorICAgIE9wdGlvbmFsPHR5cGU+IG5hbWU7IFwKKyAgICBkZWNvZGVyID4+IG5hbWU7
IFwKKyAgICBpZiAoIW5hbWUpIFwKKyAgICAgICAgcmV0dXJuIGZhbHNlOyBcCisgICAgdGhpcy0+
bmFtZSA9IFdURk1vdmUoKm5hbWUpOyBcCisKKyNpZiBkZWZpbmVkKEFwcGxlUGF5TGluZUl0ZW1E
YXRhQWRkaXRpb25zX2RlY29kZURhdGEpCisgICAgQXBwbGVQYXlMaW5lSXRlbURhdGFBZGRpdGlv
bnNfZGVjb2RlRGF0YQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CisjZW5kaWYK
KworI3VuZGVmIERFQ09ERQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TGluZUl0ZW1EYXRhLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbURhdGEuaWRsCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjNkNGViN2QyMTNhZTA1NTJlZDliZjc0Y2ZkOTU4NGQxMTY2MzZlNDMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TGlu
ZUl0ZW1EYXRhLmlkbApAQCAtMCwwICsxLDMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRp
dGlvbmFsPUFQUExFX1BBWSwKKyAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKK10gZGljdGlvbmFy
eSBBcHBsZVBheUxpbmVJdGVtRGF0YSB7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwCmluZGV4IGI1NWE3NzBiMzk0ODVkYTE3
MTc0NThjOTZkMjNkZmQ1MmY2MGI5YjguLjI4OTQ2OTIxZjlkMWExNmNjODQwY2UzM2EzYjRiN2Nh
ZDM5NWYzNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5U2Vzc2lvbi5jcHAKQEAgLTE0NSw0MSArMTQ1LDM0IEBAIHN0YXRpYyBib29sIHZhbGlk
YXRlQW1vdW50KGNvbnN0IFN0cmluZyYgYW1vdW50U3RyaW5nKQogICAgIHJldHVybiBzdGF0ZSA9
PSBTdGF0ZTo6RGlnaXQgfHwgc3RhdGUgPT0gU3RhdGU6OkRvdERpZ2l0IHx8IHN0YXRlID09IFN0
YXRlOjpFbmQ7CiB9CiAKLXN0YXRpYyBFeGNlcHRpb25PcjxBcHBsZVBheVNlc3Npb25QYXltZW50
UmVxdWVzdDo6TGluZUl0ZW0+IGNvbnZlcnRBbmRWYWxpZGF0ZVRvdGFsKEFwcGxlUGF5TGluZUl0
ZW0mJiBsaW5lSXRlbSkKK3N0YXRpYyBFeGNlcHRpb25PcjxBcHBsZVBheUxpbmVJdGVtPiBjb252
ZXJ0QW5kVmFsaWRhdGVUb3RhbChBcHBsZVBheUxpbmVJdGVtJiYgbGluZUl0ZW0pCiB7CiAgICAg
aWYgKCF2YWxpZGF0ZUFtb3VudChsaW5lSXRlbS5hbW91bnQpKQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgVHlwZUVycm9yLCBtYWtlU3RyaW5nKCJcIiIgKyBsaW5lSXRlbS5hbW91bnQsICJc
IiBpcyBub3QgYSB2YWxpZCBhbW91bnQuIikgfTsKIAotICAgIEFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0OjpMaW5lSXRlbSB0b3RhbCB7IGxpbmVJdGVtLnR5cGUsIGxpbmVJdGVtLmFtb3Vu
dCwgbGluZUl0ZW0ubGFiZWwgfTsKLQotICAgIGF1dG8gdmFsaWRhdGVkVG90YWwgPSBQYXltZW50
UmVxdWVzdFZhbGlkYXRvcjo6dmFsaWRhdGVUb3RhbCh0b3RhbCk7CisgICAgYXV0byB2YWxpZGF0
ZWRUb3RhbCA9IFBheW1lbnRSZXF1ZXN0VmFsaWRhdG9yOjp2YWxpZGF0ZVRvdGFsKGxpbmVJdGVt
KTsKICAgICBpZiAodmFsaWRhdGVkVG90YWwuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biB2YWxpZGF0ZWRUb3RhbC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAKLSAgICByZXR1cm4gV1RGTW92
ZSh0b3RhbCk7CisgICAgcmV0dXJuIFdURk1vdmUobGluZUl0ZW0pOwogfQogCi1zdGF0aWMgRXhj
ZXB0aW9uT3I8QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtPiBjb252ZXJ0
QW5kVmFsaWRhdGUoQXBwbGVQYXlMaW5lSXRlbSYmIGxpbmVJdGVtKQorc3RhdGljIEV4Y2VwdGlv
bk9yPEFwcGxlUGF5TGluZUl0ZW0+IGNvbnZlcnRBbmRWYWxpZGF0ZShBcHBsZVBheUxpbmVJdGVt
JiYgbGluZUl0ZW0pCiB7Ci0gICAgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJ
dGVtIHJlc3VsdDsKLQotICAgIC8vIEl0IGlzIE9LIGZvciBwZW5kaW5nIHR5cGVzIHRvIG5vdCBo
YXZlIGFuIGFtb3VudC4KLSAgICBpZiAobGluZUl0ZW0udHlwZSAhPSBBcHBsZVBheVNlc3Npb25Q
YXltZW50UmVxdWVzdDo6TGluZUl0ZW06OlR5cGU6OlBlbmRpbmcpIHsKKyAgICBpZiAobGluZUl0
ZW0udHlwZSA9PSBBcHBsZVBheUxpbmVJdGVtOjpUeXBlOjpQZW5kaW5nKSB7CisgICAgICAgIC8v
IEl0IGlzIE9LIGZvciBwZW5kaW5nIHR5cGVzIHRvIG5vdCBoYXZlIGFuIGFtb3VudC4KKyAgICAg
ICAgbGluZUl0ZW0uYW1vdW50ID0gbnVsbFN0cmluZygpOworICAgIH0gZWxzZSB7CiAgICAgICAg
IGlmICghdmFsaWRhdGVBbW91bnQobGluZUl0ZW0uYW1vdW50KSkKICAgICAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBUeXBlRXJyb3IsIG1ha2VTdHJpbmcoIlwiIiArIGxpbmVJdGVtLmFtb3Vu
dCwgIlwiIGlzIG5vdCBhIHZhbGlkIGFtb3VudC4iKSB9OwotCi0gICAgICAgIHJlc3VsdC5hbW91
bnQgPSBsaW5lSXRlbS5hbW91bnQ7CiAgICAgfQogCi0gICAgcmVzdWx0LnR5cGUgPSBsaW5lSXRl
bS50eXBlOwotICAgIHJlc3VsdC5sYWJlbCA9IGxpbmVJdGVtLmxhYmVsOwotCi0gICAgcmV0dXJu
IFdURk1vdmUocmVzdWx0KTsKKyAgICByZXR1cm4gV1RGTW92ZShsaW5lSXRlbSk7CiB9CiAKLXN0
YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6Okxp
bmVJdGVtPj4gY29udmVydEFuZFZhbGlkYXRlKE9wdGlvbmFsPFZlY3RvcjxBcHBsZVBheUxpbmVJ
dGVtPj4mJiBsaW5lSXRlbXMpCitzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPEFwcGxlUGF5TGlu
ZUl0ZW0+PiBjb252ZXJ0QW5kVmFsaWRhdGUoT3B0aW9uYWw8VmVjdG9yPEFwcGxlUGF5TGluZUl0
ZW0+PiYmIGxpbmVJdGVtcykKIHsKLSAgICBWZWN0b3I8QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJl
cXVlc3Q6OkxpbmVJdGVtPiByZXN1bHQ7CisgICAgVmVjdG9yPEFwcGxlUGF5TGluZUl0ZW0+IHJl
c3VsdDsKICAgICBpZiAoIWxpbmVJdGVtcykKICAgICAgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNlc3Npb25QYXltZW50UmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oCmluZGV4IDFmYmQ0N2MyZTJkNTY2YTBi
NjliYWNjMWE1YTVhYmNiYTZmYTNkYTAuLjM5ODY0NzZlMTJkZmY3ZmM5OGI3ZTk1NDgyYzVlNmU0
NWMwYjBiMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmgKQEAgLTI3LDYgKzI3LDcg
QEAKIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKKyNpbmNsdWRlICJBcHBsZVBheUxpbmVJdGVt
LmgiCiAjaW5jbHVkZSAiUGF5bWVudENvbnRhY3QuaCIKICNpbmNsdWRlICJQYXltZW50SW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uV2ViQ29yZS5oIgogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+
CkBAIC04NSwxNiArODYsNiBAQCBwdWJsaWM6CiAgICAgY29uc3QgTWVyY2hhbnRDYXBhYmlsaXRp
ZXMmIG1lcmNoYW50Q2FwYWJpbGl0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9tZXJjaGFudENhcGFi
aWxpdGllczsgfQogICAgIHZvaWQgc2V0TWVyY2hhbnRDYXBhYmlsaXRpZXMoY29uc3QgTWVyY2hh
bnRDYXBhYmlsaXRpZXMmIG1lcmNoYW50Q2FwYWJpbGl0aWVzKSB7IG1fbWVyY2hhbnRDYXBhYmls
aXRpZXMgPSBtZXJjaGFudENhcGFiaWxpdGllczsgfQogCi0gICAgc3RydWN0IExpbmVJdGVtIHsK
LSAgICAgICAgZW51bSBjbGFzcyBUeXBlIDogYm9vbCB7Ci0gICAgICAgICAgICBQZW5kaW5nLAot
ICAgICAgICAgICAgRmluYWwsCi0gICAgICAgIH0gdHlwZSB7IFR5cGU6OkZpbmFsIH07Ci0KLSAg
ICAgICAgU3RyaW5nIGFtb3VudDsKLSAgICAgICAgU3RyaW5nIGxhYmVsOwotICAgIH07Ci0KICAg
ICBlbnVtIGNsYXNzIFNoaXBwaW5nVHlwZSB7CiAgICAgICAgIFNoaXBwaW5nLAogICAgICAgICBE
ZWxpdmVyeSwKQEAgLTExNCwxNSArMTA1LDE1IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8
U2hpcHBpbmdNZXRob2Q+JiBzaGlwcGluZ01ldGhvZHMoKSBjb25zdCB7IHJldHVybiBtX3NoaXBw
aW5nTWV0aG9kczsgfQogICAgIHZvaWQgc2V0U2hpcHBpbmdNZXRob2RzKGNvbnN0IFZlY3RvcjxT
aGlwcGluZ01ldGhvZD4mIHNoaXBwaW5nTWV0aG9kcykgeyBtX3NoaXBwaW5nTWV0aG9kcyA9IHNo
aXBwaW5nTWV0aG9kczsgfQogCi0gICAgY29uc3QgVmVjdG9yPExpbmVJdGVtPiYgbGluZUl0ZW1z
KCkgY29uc3QgeyByZXR1cm4gbV9saW5lSXRlbXM7IH0KLSAgICB2b2lkIHNldExpbmVJdGVtcyhj
b25zdCBWZWN0b3I8TGluZUl0ZW0+JiBsaW5lSXRlbXMpIHsgbV9saW5lSXRlbXMgPSBsaW5lSXRl
bXM7IH0KKyAgICBjb25zdCBWZWN0b3I8QXBwbGVQYXlMaW5lSXRlbT4mIGxpbmVJdGVtcygpIGNv
bnN0IHsgcmV0dXJuIG1fbGluZUl0ZW1zOyB9CisgICAgdm9pZCBzZXRMaW5lSXRlbXMoY29uc3Qg
VmVjdG9yPEFwcGxlUGF5TGluZUl0ZW0+JiBsaW5lSXRlbXMpIHsgbV9saW5lSXRlbXMgPSBsaW5l
SXRlbXM7IH0KIAotICAgIGNvbnN0IExpbmVJdGVtJiB0b3RhbCgpIGNvbnN0IHsgcmV0dXJuIG1f
dG90YWw7IH07Ci0gICAgdm9pZCBzZXRUb3RhbChjb25zdCBMaW5lSXRlbSYgdG90YWwpIHsgbV90
b3RhbCA9IHRvdGFsOyB9CisgICAgY29uc3QgQXBwbGVQYXlMaW5lSXRlbSYgdG90YWwoKSBjb25z
dCB7IHJldHVybiBtX3RvdGFsOyB9OworICAgIHZvaWQgc2V0VG90YWwoY29uc3QgQXBwbGVQYXlM
aW5lSXRlbSYgdG90YWwpIHsgbV90b3RhbCA9IHRvdGFsOyB9CiAKICAgICBzdHJ1Y3QgVG90YWxB
bmRMaW5lSXRlbXMgewotICAgICAgICBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGlu
ZUl0ZW0gdG90YWw7Ci0gICAgICAgIFZlY3RvcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dDo6TGluZUl0ZW0+IGxpbmVJdGVtczsKKyAgICAgICAgQXBwbGVQYXlMaW5lSXRlbSB0b3RhbDsK
KyAgICAgICAgVmVjdG9yPEFwcGxlUGF5TGluZUl0ZW0+IGxpbmVJdGVtczsKICAgICB9OwogCiAg
ICAgY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbkRhdGEoKSBjb25zdCB7IHJldHVybiBtX2FwcGxp
Y2F0aW9uRGF0YTsgfQpAQCAtMTYyLDggKzE1Myw4IEBAIHByaXZhdGU6CiAgICAgU2hpcHBpbmdU
eXBlIG1fc2hpcHBpbmdUeXBlIHsgU2hpcHBpbmdUeXBlOjpTaGlwcGluZyB9OwogICAgIFZlY3Rv
cjxTaGlwcGluZ01ldGhvZD4gbV9zaGlwcGluZ01ldGhvZHM7CiAKLSAgICBWZWN0b3I8TGluZUl0
ZW0+IG1fbGluZUl0ZW1zOwotICAgIExpbmVJdGVtIG1fdG90YWw7CisgICAgVmVjdG9yPEFwcGxl
UGF5TGluZUl0ZW0+IG1fbGluZUl0ZW1zOworICAgIEFwcGxlUGF5TGluZUl0ZW0gbV90b3RhbDsK
IAogICAgIFN0cmluZyBtX2FwcGxpY2F0aW9uRGF0YTsKICAgICBWZWN0b3I8U3RyaW5nPiBtX3N1
cHBvcnRlZENvdW50cmllczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvUGF5bWVudE1ldGhvZFVwZGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9QYXltZW50TWV0aG9kVXBkYXRlLmgKaW5kZXggNzBlOGUzMTMxOWM2ODJiNzBmODM1MGMw
NTY4NDE0NmU5OTA5MmE3Yy4uZDg0MGUxNjNkNTA1YjAwYzIxOWExNmZjMzk4ZjViZjM4NDM4ZjM4
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0
aG9kVXBkYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
TWV0aG9kVXBkYXRlLmgKQEAgLTM2LDEwICszNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgUGF5bWVudE1ldGhvZFVwZGF0ZSB7CiBwdWJsaWM6Ci0gICAg
dXNpbmcgTGluZUl0ZW0gPSBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW07
CiAgICAgdXNpbmcgVG90YWxBbmRMaW5lSXRlbXMgPSBBcHBsZVBheVNlc3Npb25QYXltZW50UmVx
dWVzdDo6VG90YWxBbmRMaW5lSXRlbXM7CiAKLSAgICBQYXltZW50TWV0aG9kVXBkYXRlKExpbmVJ
dGVtJiYgdG90YWwsIFZlY3RvcjxMaW5lSXRlbT4mJik7CisgICAgUGF5bWVudE1ldGhvZFVwZGF0
ZShBcHBsZVBheUxpbmVJdGVtJiYgdG90YWwsIFZlY3RvcjxBcHBsZVBheUxpbmVJdGVtPiYmKTsK
ICAgICBleHBsaWNpdCBQYXltZW50TWV0aG9kVXBkYXRlKFJldGFpblB0cjxQS1BheW1lbnRSZXF1
ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZT4mJik7CiAgICAgZXhwbGljaXQgUGF5bWVudE1ldGhvZFVw
ZGF0ZShUb3RhbEFuZExpbmVJdGVtcyYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50UmVxdWVzdFZhbGlkYXRvci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50UmVxdWVzdFZhbGlkYXRvci5oCmluZGV4IDY4ZmEy
NWRmYjliMjk5YTBmZGQ2MmJkMGViYTFiMzdiNzdhNDg2N2MuLjFhYjkwYmU1YmYwMWNhMGZiMjE2
MjUzOTVkOWZhZmJiZDQ5N2RmMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvUGF5bWVudFJlcXVlc3RWYWxpZGF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L1BheW1lbnRSZXF1ZXN0VmFsaWRhdG9yLmgKQEAgLTM1LDcgKzM1LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUGF5bWVudFJlcXVlc3RWYWxpZGF0b3Igewog
cHVibGljOgogICAgIHN0YXRpYyBFeGNlcHRpb25Pcjx2b2lkPiB2YWxpZGF0ZShjb25zdCBBcHBs
ZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYpOwotICAgIHN0YXRpYyBFeGNlcHRpb25Pcjx2b2lk
PiB2YWxpZGF0ZVRvdGFsKGNvbnN0IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5l
SXRlbSYpOworICAgIHN0YXRpYyBFeGNlcHRpb25Pcjx2b2lkPiB2YWxpZGF0ZVRvdGFsKGNvbnN0
IEFwcGxlUGF5TGluZUl0ZW0mKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFJlcXVlc3RWYWxpZGF0b3IubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRSZXF1ZXN0VmFsaWRhdG9yLm1tCmluZGV4IDVm
ZDFhZmY3ZWIwZDhlZTkxOTQzY2ZmOTJlMDZlMzYyYzYwNjNiNGIuLmVmOWY2ZTgyNDg0NjVmZTNh
ZmIzYTYzZDZiYmYyOGY3MGU4MWQzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvUGF5bWVudFJlcXVlc3RWYWxpZGF0b3IubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50UmVxdWVzdFZhbGlkYXRvci5tbQpAQCAtNzYsNyAr
NzYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQYXltZW50UmVxdWVzdFZhbGlkYXRvcjo6dmFsaWRh
dGUoY29uc3QgQXBwbGVQYXlTZXNzaW9uUGF5bWVudAogICAgIHJldHVybiB7IH07CiB9CiAKLUV4
Y2VwdGlvbk9yPHZvaWQ+IFBheW1lbnRSZXF1ZXN0VmFsaWRhdG9yOjp2YWxpZGF0ZVRvdGFsKGNv
bnN0IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbSYgdG90YWwpCitFeGNl
cHRpb25Pcjx2b2lkPiBQYXltZW50UmVxdWVzdFZhbGlkYXRvcjo6dmFsaWRhdGVUb3RhbChjb25z
dCBBcHBsZVBheUxpbmVJdGVtJiB0b3RhbCkKIHsKICAgICBpZiAoIXRvdGFsLmxhYmVsKQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiTWlzc2luZyB0b3RhbCBsYWJlbC4i
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRT
dW1tYXJ5SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFN1
bW1hcnlJdGVtcy5oCmluZGV4IDVlOTUxNmEwOGZlNmI1MThmMTYyOWJhMDFjZTNiNzY0ODhkNmJm
NGEuLmZmZjg0NGQ3Nzk1YjM5NWRlYTEyMDFjMTM3MDZmZTczZDk2ZjhmOWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFN1bW1hcnlJdGVtcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFN1bW1hcnlJdGVtcy5o
CkBAIC0zNCw3ICszNCw3IEBAIE9CSkNfQ0xBU1MgTlNBcnJheTsKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogV0VCQ09SRV9FWFBPUlQgTlNBcnJheSAqcGxhdGZvcm1TdW1tYXJ5SXRlbXMoY29uc3Qg
QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zJik7Ci1XRUJD
T1JFX0VYUE9SVCBOU0FycmF5ICpwbGF0Zm9ybVN1bW1hcnlJdGVtcyhjb25zdCBBcHBsZVBheVNl
c3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0mIHRvdGFsLCBjb25zdCBWZWN0b3I8QXBwbGVQ
YXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtPiYpOworV0VCQ09SRV9FWFBPUlQgTlNB
cnJheSAqcGxhdGZvcm1TdW1tYXJ5SXRlbXMoY29uc3QgQXBwbGVQYXlMaW5lSXRlbSYgdG90YWws
IGNvbnN0IFZlY3RvcjxBcHBsZVBheUxpbmVJdGVtPiYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2Ev
UGF5bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9jb2NvYS9QYXltZW50TWV0aG9kVXBkYXRlQ29jb2EubW0KaW5kZXggNWNlYjg2YWQwZTY4
YTI1OGQ5NDRiODc1NzI5OTBlMDBhODJiOGZmMi4uMTY0ZDExYjZkMDc2OTdhOWQwOTU5NTY1YzZm
YzFkNjg3OGZhYTUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9jb2NvYS9QYXltZW50TWV0aG9kVXBkYXRlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0aG9kVXBkYXRlQ29jb2EubW0KQEAgLTMz
LDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXltZW50TWV0aG9kVXBkYXRl
OjpQYXltZW50TWV0aG9kVXBkYXRlKExpbmVJdGVtJiYgdG90YWwsIFZlY3RvcjxMaW5lSXRlbT4m
JiBsaW5lSXRlbXMpCitQYXltZW50TWV0aG9kVXBkYXRlOjpQYXltZW50TWV0aG9kVXBkYXRlKEFw
cGxlUGF5TGluZUl0ZW0mJiB0b3RhbCwgVmVjdG9yPEFwcGxlUGF5TGluZUl0ZW0+JiYgbGluZUl0
ZW1zKQogICAgIDogbV90b3RhbEFuZExpbmVJdGVtcyB7IHsgV1RGTW92ZSh0b3RhbCksIFdURk1v
dmUobGluZUl0ZW1zKSB9IH0KICAgICAsIG1fcGxhdGZvcm1VcGRhdGUgeyBhZG9wdE5TKFtQQUw6
OmFsbG9jUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGVJbnN0YW5jZSgpIGluaXRX
aXRoUGF5bWVudFN1bW1hcnlJdGVtczpwbGF0Zm9ybVN1bW1hcnlJdGVtcygqbV90b3RhbEFuZExp
bmVJdGVtcyldKSB9CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L2NvY29hL1BheW1lbnRTdW1tYXJ5SXRlbXNDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudFN1bW1hcnlJdGVtc0NvY29hLm1tCmluZGV4IDhh
ODcyNGE3NjQ4NTBkNmYwNzVmMDQ5ZDljMThlNmEwZjVhZjYxZjcuLmU3OTlhOWNjZDk1MWRiMzAz
YmE2MjcwY2E5MzI0MWMwZDg0NzQ0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudFN1bW1hcnlJdGVtc0NvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudFN1bW1hcnlJdGVtc0NvY29h
Lm1tCkBAIC0zOSwyNyArMzksMzMgQEAgc3RhdGljIE5TRGVjaW1hbE51bWJlciAqdG9EZWNpbWFs
TnVtYmVyKGNvbnN0IFN0cmluZyYgYW1vdW50KQogICAgIHJldHVybiBbTlNEZWNpbWFsTnVtYmVy
IGRlY2ltYWxOdW1iZXJXaXRoU3RyaW5nOmFtb3VudCBsb2NhbGU6QHsgTlNMb2NhbGVEZWNpbWFs
U2VwYXJhdG9yIDogQCIuIiB9XTsKIH0KIAotc3RhdGljIFBLUGF5bWVudFN1bW1hcnlJdGVtVHlw
ZSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtVHlwZShBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dDo6TGluZUl0ZW06OlR5cGUgdHlwZSkKK3N0YXRpYyBQS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUg
dG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUoQXBwbGVQYXlMaW5lSXRlbTo6VHlwZSB0eXBlKQog
ewogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJl
cXVlc3Q6OkxpbmVJdGVtOjpUeXBlOjpGaW5hbDoKKyAgICBjYXNlIEFwcGxlUGF5TGluZUl0ZW06
OlR5cGU6OkZpbmFsOgogICAgICAgICByZXR1cm4gUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlRmlu
YWw7Ci0gICAgY2FzZSBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW06OlR5
cGU6OlBlbmRpbmc6CisgICAgY2FzZSBBcHBsZVBheUxpbmVJdGVtOjpUeXBlOjpQZW5kaW5nOgog
ICAgICAgICByZXR1cm4gUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlUGVuZGluZzsKICAgICB9CiB9
CiAKLXN0YXRpYyBQS1BheW1lbnRTdW1tYXJ5SXRlbSAqdG9QS1BheW1lbnRTdW1tYXJ5SXRlbShj
b25zdCBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0mIGxpbmVJdGVtKQor
I2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvUGF5
bWVudFN1bW1hcnlJdGVtc0NvY29hQWRkaXRpb25zLm1tPgorI2VuZGlmCisKKyNpZiAhRU5BQkxF
KEFQUExFX1BBWV9MSU5FX0lURU1fREFUQSkKK3N0YXRpYyBQS1BheW1lbnRTdW1tYXJ5SXRlbSAq
dG9QS1BheW1lbnRTdW1tYXJ5SXRlbShjb25zdCBBcHBsZVBheUxpbmVJdGVtJiBsaW5lSXRlbSkK
IHsKICAgICByZXR1cm4gW1BBTDo6Z2V0UEtQYXltZW50U3VtbWFyeUl0ZW1DbGFzcygpIHN1bW1h
cnlJdGVtV2l0aExhYmVsOmxpbmVJdGVtLmxhYmVsIGFtb3VudDp0b0RlY2ltYWxOdW1iZXIobGlu
ZUl0ZW0uYW1vdW50KSB0eXBlOnRvUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlKGxpbmVJdGVtLnR5
cGUpXTsKIH0KKyNlbmRpZgogCiBOU0FycmF5ICpwbGF0Zm9ybVN1bW1hcnlJdGVtcyhjb25zdCBB
cHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXMmIHRvdGFsQW5k
TGluZUl0ZW1zKQogewogICAgIHJldHVybiBwbGF0Zm9ybVN1bW1hcnlJdGVtcyh0b3RhbEFuZExp
bmVJdGVtcy50b3RhbCwgdG90YWxBbmRMaW5lSXRlbXMubGluZUl0ZW1zKTsKIH0KIAotTlNBcnJh
eSAqcGxhdGZvcm1TdW1tYXJ5SXRlbXMoY29uc3QgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3Q6OkxpbmVJdGVtJiB0b3RhbCwgY29uc3QgVmVjdG9yPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRS
ZXF1ZXN0OjpMaW5lSXRlbT4mIGxpbmVJdGVtcykKK05TQXJyYXkgKnBsYXRmb3JtU3VtbWFyeUl0
ZW1zKGNvbnN0IEFwcGxlUGF5TGluZUl0ZW0mIHRvdGFsLCBjb25zdCBWZWN0b3I8QXBwbGVQYXlM
aW5lSXRlbT4mIGxpbmVJdGVtcykKIHsKICAgICBOU011dGFibGVBcnJheSAqcGF5bWVudFN1bW1h
cnlJdGVtcyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpsaW5lSXRlbXMuc2l6
ZSgpICsgMV07CiAgICAgZm9yIChhdXRvJiBsaW5lSXRlbSA6IGxpbmVJdGVtcykgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBs
ZVBheVBheW1lbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
cGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHAKaW5kZXggMDUwOTZhMzU1
YjI4Mzc0MTAzMGRhNWQ2MDFlOWQyMjMzNzkwYTRiOC4uN2VjMDM3MGZmZWZlMzM2Mjg5MWZmMTUy
N2QyZTE4YWU1ZDFiODk2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVu
dEhhbmRsZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJBZGRyZXNzRXJyb3Jz
LmgiCiAjaW5jbHVkZSAiQXBwbGVQYXlDb250YWN0RmllbGQuaCIKKyNpbmNsdWRlICJBcHBsZVBh
eUxpbmVJdGVtLmgiCiAjaW5jbHVkZSAiQXBwbGVQYXlNZXJjaGFudENhcGFiaWxpdHkuaCIKICNp
bmNsdWRlICJBcHBsZVBheU1vZGlmaWVyLmgiCiAjaW5jbHVkZSAiQXBwbGVQYXlQYXltZW50Lmgi
CkBAIC0zOCw2ICszOSw3IEBACiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiSlNBcHBsZVBheUVycm9yLmgiCisjaW5jbHVkZSAiSlNBcHBsZVBh
eUxpbmVJdGVtRGF0YS5oIgogI2luY2x1ZGUgIkpTQXBwbGVQYXlQYXltZW50LmgiCiAjaW5jbHVk
ZSAiSlNBcHBsZVBheVBheW1lbnRNZXRob2QuaCIKICNpbmNsdWRlICJKU0FwcGxlUGF5UmVxdWVz
dC5oIgpAQCAtNjEsNiArNjMsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjaWYgVVNF
KEFQUExFX0lOVEVSTkFMX1NESykKKyNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBwbGVQYXlQ
YXltZW50SGFuZGxlckFkZGl0aW9ucy5jcHA+CisjZW5kaWYKKwogc3RhdGljIEV4Y2VwdGlvbk9y
PEFwcGxlUGF5UmVxdWVzdD4gY29udmVydEFuZFZhbGlkYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIEpTQzo6SlNWYWx1ZSBkYXRhKQogewogICAgIGlmIChkYXRhLmlzRW1wdHko
KSkKQEAgLTEyOCwyNSArMTM0LDQ4IEBAIHN0YXRpYyBFeGNlcHRpb25Pcjx2b2lkPiB2YWxpZGF0
ZShjb25zdCBQYXltZW50Q3VycmVuY3lBbW91bnQmIGFtb3VudCwgY29uc3QgU3RyCiAgICAgcmV0
dXJuIHsgfTsKIH0KIAotc3RhdGljIEV4Y2VwdGlvbk9yPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRS
ZXF1ZXN0OjpMaW5lSXRlbT4gY29udmVydEFuZFZhbGlkYXRlKGNvbnN0IFBheW1lbnRJdGVtJiBp
dGVtLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkQ3VycmVuY3kpCisjaWYgIUVOQUJMRShBUFBMRV9Q
QVlfTElORV9JVEVNX0RBVEEpCitzdGF0aWMgdm9pZCBtZXJnZShBcHBsZVBheUxpbmVJdGVtJiwg
QXBwbGVQYXlMaW5lSXRlbURhdGEmJikgeyB9CisjZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BBWV9M
SU5FX0lURU1fREFUQSkKKworc3RhdGljIEV4Y2VwdGlvbk9yPEFwcGxlUGF5TGluZUl0ZW0+IGNv
bnZlcnRBbmRWYWxpZGF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBQ
YXltZW50SXRlbSYgaXRlbSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZEN1cnJlbmN5KQogewogICAg
IGF1dG8gZXhjZXB0aW9uID0gdmFsaWRhdGUoaXRlbS5hbW91bnQsIGV4cGVjdGVkQ3VycmVuY3kp
OwogICAgIGlmIChleGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBleGNl
cHRpb24ucmVsZWFzZUV4Y2VwdGlvbigpOwogCi0gICAgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJl
cXVlc3Q6OkxpbmVJdGVtIGxpbmVJdGVtOworCisgICAgQXBwbGVQYXlMaW5lSXRlbSBsaW5lSXRl
bTsKICAgICBsaW5lSXRlbS5hbW91bnQgPSBpdGVtLmFtb3VudC52YWx1ZTsKLSAgICBsaW5lSXRl
bS50eXBlID0gaXRlbS5wZW5kaW5nID8gQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6Okxp
bmVJdGVtOjpUeXBlOjpQZW5kaW5nIDogQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6Okxp
bmVJdGVtOjpUeXBlOjpGaW5hbDsKKyAgICBsaW5lSXRlbS50eXBlID0gaXRlbS5wZW5kaW5nID8g
QXBwbGVQYXlMaW5lSXRlbTo6VHlwZTo6UGVuZGluZyA6IEFwcGxlUGF5TGluZUl0ZW06OlR5cGU6
OkZpbmFsOwogICAgIGxpbmVJdGVtLmxhYmVsID0gaXRlbS5sYWJlbDsKKworICAgIGlmICghaXRl
bS5zZXJpYWxpemVkRGF0YS5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byYgbGV4aWNhbEdsb2Jh
bE9iamVjdCA9ICpjb250ZXh0Lmdsb2JhbE9iamVjdCgpOworICAgICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCkpOworICAgICAgICBK
U0M6OkpTVmFsdWUgZGF0YTsKKyAgICAgICAgeworICAgICAgICAgICAgSlNDOjpKU0xvY2tIb2xk
ZXIgbG9jaygmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICBkYXRhID0gSlNPTlBh
cnNlKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBpdGVtLnNlcmlhbGl6ZWREYXRhKTsKKyAgICAgICAg
ICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9OworICAgICAgICB9CisKKyAgICAgICAgYXV0
byBhcHBsZVBheUxpbmVJdGVtRGF0YSA9IGNvbnZlcnREaWN0aW9uYXJ5PEFwcGxlUGF5TGluZUl0
ZW1EYXRhPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgaWYg
KHNjb3BlLmV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEV4aXN0
aW5nRXhjZXB0aW9uRXJyb3IgfTsKKyAgICAgICAgbWVyZ2UobGluZUl0ZW0sIFdURk1vdmUoYXBw
bGVQYXlMaW5lSXRlbURhdGEpKTsKKyAgICB9CisKICAgICByZXR1cm4geyBXVEZNb3ZlKGxpbmVJ
dGVtKSB9OwogfQogCi1zdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPEFwcGxlUGF5U2Vzc2lvblBh
eW1lbnRSZXF1ZXN0OjpMaW5lSXRlbT4+IGNvbnZlcnRBbmRWYWxpZGF0ZShjb25zdCBWZWN0b3I8
UGF5bWVudEl0ZW0+JiBsaW5lSXRlbXMsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRDdXJyZW5jeSkK
K3N0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8QXBwbGVQYXlMaW5lSXRlbT4+IGNvbnZlcnRBbmRW
YWxpZGF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBWZWN0b3I8UGF5
bWVudEl0ZW0+JiBsaW5lSXRlbXMsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRDdXJyZW5jeSkKIHsK
LSAgICBWZWN0b3I8QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtPiByZXN1
bHQ7CisgICAgVmVjdG9yPEFwcGxlUGF5TGluZUl0ZW0+IHJlc3VsdDsKICAgICByZXN1bHQucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShsaW5lSXRlbXMuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIGxp
bmVJdGVtIDogbGluZUl0ZW1zKSB7Ci0gICAgICAgIGF1dG8gY29udmVydGVkTGluZUl0ZW0gPSBj
b252ZXJ0QW5kVmFsaWRhdGUobGluZUl0ZW0sIGV4cGVjdGVkQ3VycmVuY3kpOworICAgICAgICBh
dXRvIGNvbnZlcnRlZExpbmVJdGVtID0gY29udmVydEFuZFZhbGlkYXRlKGNvbnRleHQsIGxpbmVJ
dGVtLCBleHBlY3RlZEN1cnJlbmN5KTsKICAgICAgICAgaWYgKGNvbnZlcnRlZExpbmVJdGVtLmhh
c0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlZExpbmVJdGVtLnJlbGVh
c2VFeGNlcHRpb24oKTsKICAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChjb252ZXJ0ZWRM
aW5lSXRlbS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CkBAIC0yMjMsMTIgKzI1MiwxMiBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpzaG93KERvY3VtZW50JiBkb2N1
bWVudCkKICAgICBTdHJpbmcgZXhwZWN0ZWRDdXJyZW5jeSA9IGRldGFpbHMudG90YWwuYW1vdW50
LmN1cnJlbmN5OwogICAgIHJlcXVlc3Quc2V0Q3VycmVuY3lDb2RlKGV4cGVjdGVkQ3VycmVuY3kp
OwogCi0gICAgYXV0byB0b3RhbCA9IGNvbnZlcnRBbmRWYWxpZGF0ZShkZXRhaWxzLnRvdGFsLCBl
eHBlY3RlZEN1cnJlbmN5KTsKKyAgICBhdXRvIHRvdGFsID0gY29udmVydEFuZFZhbGlkYXRlKCpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGRldGFpbHMudG90YWwsIGV4cGVjdGVkQ3VycmVuY3kp
OwogICAgIEFTU0VSVCghdG90YWwuaGFzRXhjZXB0aW9uKCkpOwogICAgIHJlcXVlc3Quc2V0VG90
YWwodG90YWwucmVsZWFzZVJldHVyblZhbHVlKCkpOwogCiAgICAgaWYgKGRldGFpbHMuZGlzcGxh
eUl0ZW1zKSB7Ci0gICAgICAgIGF1dG8gY29udmVydGVkTGluZUl0ZW1zID0gY29udmVydEFuZFZh
bGlkYXRlKCpkZXRhaWxzLmRpc3BsYXlJdGVtcywgZXhwZWN0ZWRDdXJyZW5jeSk7CisgICAgICAg
IGF1dG8gY29udmVydGVkTGluZUl0ZW1zID0gY29udmVydEFuZFZhbGlkYXRlKCpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksICpkZXRhaWxzLmRpc3BsYXlJdGVtcywgZXhwZWN0ZWRDdXJyZW5jeSk7
CiAgICAgICAgIGlmIChjb252ZXJ0ZWRMaW5lSXRlbXMuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAg
ICAgICByZXR1cm4gY29udmVydGVkTGluZUl0ZW1zLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAg
ICAgcmVxdWVzdC5zZXRMaW5lSXRlbXMoY29udmVydGVkTGluZUl0ZW1zLnJlbGVhc2VSZXR1cm5W
YWx1ZSgpKTsKQEAgLTI4NiwxNCArMzE1LDE0IEBAIEV4Y2VwdGlvbk9yPEFwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4gQXBwbGVQYXlQYXltZW50SGFuCiAg
ICAgYXV0byYgZGV0YWlscyA9IG1fcGF5bWVudFJlcXVlc3QtPnBheW1lbnREZXRhaWxzKCk7CiAg
ICAgU3RyaW5nIGN1cnJlbmN5ID0gZGV0YWlscy50b3RhbC5hbW91bnQuY3VycmVuY3k7CiAKLSAg
ICBhdXRvIGNvbnZlcnRlZFRvdGFsID0gY29udmVydEFuZFZhbGlkYXRlKGRldGFpbHMudG90YWws
IGN1cnJlbmN5KTsKKyAgICBhdXRvIGNvbnZlcnRlZFRvdGFsID0gY29udmVydEFuZFZhbGlkYXRl
KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGRldGFpbHMudG90YWwsIGN1cnJlbmN5KTsKICAg
ICBpZiAoY29udmVydGVkVG90YWwuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBjb252
ZXJ0ZWRUb3RhbC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgYXV0byB0b3RhbCA9IGNvbnZlcnRl
ZFRvdGFsLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogCi0gICAgVmVjdG9yPEFwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbT4gbGluZUl0ZW1zOworICAgIFZlY3RvcjxBcHBsZVBh
eUxpbmVJdGVtPiBsaW5lSXRlbXM7CiAgICAgaWYgKGRldGFpbHMuZGlzcGxheUl0ZW1zKSB7Ci0g
ICAgICAgIGF1dG8gY29udmVydGVkTGluZUl0ZW1zID0gY29udmVydEFuZFZhbGlkYXRlKCpkZXRh
aWxzLmRpc3BsYXlJdGVtcywgY3VycmVuY3kpOworICAgICAgICBhdXRvIGNvbnZlcnRlZExpbmVJ
dGVtcyA9IGNvbnZlcnRBbmRWYWxpZGF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqZGV0
YWlscy5kaXNwbGF5SXRlbXMsIGN1cnJlbmN5KTsKICAgICAgICAgaWYgKGNvbnZlcnRlZExpbmVJ
dGVtcy5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZWRMaW5lSXRl
bXMucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICBsaW5lSXRlbXMgPSBjb252ZXJ0ZWRMaW5l
SXRlbXMucmVsZWFzZVJldHVyblZhbHVlKCk7CkBAIC0zMzMsMTMgKzM2MiwxMyBAQCBFeGNlcHRp
b25PcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+IEFw
cGxlUGF5UGF5bWVudEhhbgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAg
ICBpZiAobW9kaWZpZXIudG90YWwpIHsKLSAgICAgICAgICAgICAgICBhdXRvIHRvdGFsT3ZlcnJp
ZGUgPSBjb252ZXJ0QW5kVmFsaWRhdGUoKm1vZGlmaWVyLnRvdGFsLCBjdXJyZW5jeSk7CisgICAg
ICAgICAgICAgICAgYXV0byB0b3RhbE92ZXJyaWRlID0gY29udmVydEFuZFZhbGlkYXRlKCpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksICptb2RpZmllci50b3RhbCwgY3VycmVuY3kpOwogICAgICAg
ICAgICAgICAgIGlmICh0b3RhbE92ZXJyaWRlLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdG90YWxPdmVycmlkZS5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAg
ICAgICAgICAgdG90YWwgPSB0b3RhbE92ZXJyaWRlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGFkZGl0aW9uYWxEaXNwbGF5SXRlbXMgPSBj
b252ZXJ0QW5kVmFsaWRhdGUobW9kaWZpZXIuYWRkaXRpb25hbERpc3BsYXlJdGVtcywgY3VycmVu
Y3kpOworICAgICAgICAgICAgYXV0byBhZGRpdGlvbmFsRGlzcGxheUl0ZW1zID0gY29udmVydEFu
ZFZhbGlkYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1vZGlmaWVyLmFkZGl0aW9uYWxE
aXNwbGF5SXRlbXMsIGN1cnJlbmN5KTsKICAgICAgICAgICAgIGlmIChhZGRpdGlvbmFsRGlzcGxh
eUl0ZW1zLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBhZGRpdGlvbmFs
RGlzcGxheUl0ZW1zLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIGxpbmVJdGVtcy5h
cHBlbmRWZWN0b3IoYWRkaXRpb25hbERpc3BsYXlJdGVtcy5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1l
bnRJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRJ
dGVtLmgKaW5kZXggZDU3OTQ3NmZmNDgzMTI2NWMzYjdjM2Q2NTE0OWRkYzA1NTRiYTZiZi4uZjE1
YjllYWVhZWU0NjRlNzg5OTEyYzdkZTZmNDBiNjdiNzZhNzJiMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SXRlbS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudEl0ZW0uaApAQCAtMjgsNiAr
MjgsOCBAQAogI2lmIEVOQUJMRShQQVlNRU5UX1JFUVVFU1QpCiAKICNpbmNsdWRlICJQYXltZW50
Q3VycmVuY3lBbW91bnQuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdC5oPgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNiw2ICszOCwxMCBAQCBzdHJ1
Y3QgUGF5bWVudEl0ZW0gewogICAgIFN0cmluZyBsYWJlbDsKICAgICBQYXltZW50Q3VycmVuY3lB
bW91bnQgYW1vdW50OwogICAgIGJvb2wgcGVuZGluZyB7IGZhbHNlIH07CisgICAgSlNDOjpTdHJv
bmc8SlNDOjpKU09iamVjdD4gZGF0YTsKKworICAgIC8vIE5vdCBmcm9tIHRoZSBJREwuIFNldCBi
eSBgZGF0YWAgd2hlbiB0aGlzIGlzIHZhbGlkYXRlZCBieSBgUGF5bWVudFJlcXVlc3RgLgorICAg
IFN0cmluZyBzZXJpYWxpemVkRGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudEl0
ZW0uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SXRl
bS5pZGwKaW5kZXggZGExYWU3ZjNhM2Y3OGI1YzI3MzVhYzY1ZWZiMGFjZGE5MmRhZmUzNC4uMWMw
YmM2NmZlMzE1ZTI2YWM4NWIxOTM3OGNiNzA2YzE1MzNlNWUxMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SXRlbS5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SXRlbS5pZGwKQEAgLTI5
LDQgKzI5LDUgQEAKICAgICByZXF1aXJlZCBET01TdHJpbmcgbGFiZWw7CiAgICAgcmVxdWlyZWQg
UGF5bWVudEN1cnJlbmN5QW1vdW50IGFtb3VudDsKICAgICBib29sZWFuIHBlbmRpbmcgPSBmYWxz
ZTsKKyAgICBvYmplY3QgZGF0YTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCmluZGV4IDI4OGJhNWUwZTdj
YjI3YTFkNmRiMjJhNjk5MzI4NWM1NjQ3NWI3M2YuLmVlMGQzYWFlYjY3ZjA0MGYwNjk0ODg5ZWNm
NzU1NDE0NjU5NWNlYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVu
dHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCkBAIC0xNDEsNiArMTQxLDIxIEBAIHN0
YXRpYyBib29sIGlzVmFsaWREZWNpbWFsTW9uZXRhcnlWYWx1ZShTdHJpbmdWaWV3IHZhbHVlKQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0YXRpYyBFeGNl
cHRpb25PcjxTdHJpbmc+IGNoZWNrQW5kQ2Fub25pY2FsaXplRGF0YShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBUJiB2YWx1ZSkKK3sKKyAgICBTdHJpbmcgc2VyaWFsaXplZERhdGE7
CisgICAgaWYgKHZhbHVlLmRhdGEpIHsKKyAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gY29u
dGV4dC5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUoZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAgc2VyaWFsaXplZERhdGEgPSBKU09O
U3RyaW5naWZ5KGdsb2JhbE9iamVjdCwgdmFsdWUuZGF0YS5nZXQoKSwgMCk7CisgICAgICAgIGlm
IChzY29wZS5leGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBFeGlz
dGluZ0V4Y2VwdGlvbkVycm9yIH07CisgICAgICAgIHZhbHVlLmRhdGEuY2xlYXIoKTsKKyAgICB9
CisgICAgcmV0dXJuIHsgV1RGTW92ZShzZXJpYWxpemVkRGF0YSkgfTsKK30KKwogLy8gSW1wbGVt
ZW50cyB0aGUgImNoZWNrIGFuZCBjYW5vbmljYWxpemUgYW1vdW50IiB2YWxpZGl0eSBjaGVja2Vy
CiAvLyBodHRwczovL3d3dy53My5vcmcvVFIvcGF5bWVudC1yZXF1ZXN0LyNkZm4tY2hlY2stYW5k
LWNhbm9uaWNhbGl6ZS1hbW91bnQKIHN0YXRpYyBFeGNlcHRpb25Pcjx2b2lkPiBjaGVja0FuZENh
bm9uaWNhbGl6ZUFtb3VudChQYXltZW50Q3VycmVuY3lBbW91bnQmIGFtb3VudCkKQEAgLTE1NSwy
MCArMTcwLDM0IEBAIHN0YXRpYyBFeGNlcHRpb25Pcjx2b2lkPiBjaGVja0FuZENhbm9uaWNhbGl6
ZUFtb3VudChQYXltZW50Q3VycmVuY3lBbW91bnQmIGFtb3VuCiAgICAgcmV0dXJuIHsgfTsKIH0K
IAotLy8gSW1wbGVtZW50cyB0aGUgImNoZWNrIGFuZCBjYW5vbmljYWxpemUgdG90YWwiIHZhbGlk
aXR5IGNoZWNrZXIKLS8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9wYXltZW50LXJlcXVlc3QvI2Rm
bi1jaGVjay1hbmQtY2Fub25pY2FsaXplLXRvdGFsCi1zdGF0aWMgRXhjZXB0aW9uT3I8dm9pZD4g
Y2hlY2tBbmRDYW5vbmljYWxpemVUb3RhbChQYXltZW50Q3VycmVuY3lBbW91bnQmIHRvdGFsKQor
ZW51bSBjbGFzcyBOZWdhdGl2ZUFtb3VudEFsbG93ZWQgeyBZZXMsIE5vIH07CitzdGF0aWMgRXhj
ZXB0aW9uT3I8dm9pZD4gY2hlY2tBbmRDYW5vbmljYWxpemVQYXltZW50SXRlbShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBQYXltZW50SXRlbSYgaXRlbSwgTmVnYXRpdmVBbW91bnRB
bGxvd2VkIG5lZ2F0aXZlQW1vdW50QWxsb3dlZCkKIHsKLSAgICBhdXRvIGV4Y2VwdGlvbiA9IGNo
ZWNrQW5kQ2Fub25pY2FsaXplQW1vdW50KHRvdGFsKTsKKyAgICBhdXRvIGV4Y2VwdGlvbiA9IGNo
ZWNrQW5kQ2Fub25pY2FsaXplQW1vdW50KGl0ZW0uYW1vdW50KTsKICAgICBpZiAoZXhjZXB0aW9u
Lmhhc0V4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gZXhjZXB0aW9uOworICAgICAgICByZXR1
cm4gZXhjZXB0aW9uLnJlbGVhc2VFeGNlcHRpb24oKTsKIAotICAgIGlmICh0b3RhbC52YWx1ZVsw
XSA9PSAnLScpCisgICAgaWYgKG5lZ2F0aXZlQW1vdW50QWxsb3dlZCA9PSBOZWdhdGl2ZUFtb3Vu
dEFsbG93ZWQ6Ok5vICYmIGl0ZW0uYW1vdW50LnZhbHVlWzBdID09ICctJykKICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlRvdGFsIGN1cnJlbmN5IHZhbHVlcyBjYW5ub3Qg
YmUgbmVnYXRpdmUuIl9zIH07CiAKKyAgICBpZiAoaXRlbS5kYXRhKSB7CisgICAgICAgIGF1dG8g
ZGF0YVJlc3VsdCA9IGNoZWNrQW5kQ2Fub25pY2FsaXplRGF0YShjb250ZXh0LCBpdGVtKTsKKyAg
ICAgICAgaWYgKGRhdGFSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4g
ZGF0YVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICAgICAgaXRlbS5zZXJpYWxpemVk
RGF0YSA9IGRhdGFSZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgfQorCiAgICAgcmV0
dXJuIHsgfTsKIH0KIAorLy8gSW1wbGVtZW50cyB0aGUgImNoZWNrIGFuZCBjYW5vbmljYWxpemUg
dG90YWwiIHZhbGlkaXR5IGNoZWNrZXIKKy8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9wYXltZW50
LXJlcXVlc3QvI2Rmbi1jaGVjay1hbmQtY2Fub25pY2FsaXplLXRvdGFsCitzdGF0aWMgRXhjZXB0
aW9uT3I8dm9pZD4gY2hlY2tBbmRDYW5vbmljYWxpemVUb3RhbChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBQYXltZW50SXRlbSYgdG90YWwpCit7CisgICAgcmV0dXJuIGNoZWNrQW5k
Q2Fub25pY2FsaXplUGF5bWVudEl0ZW0oY29udGV4dCwgdG90YWwsIE5lZ2F0aXZlQW1vdW50QWxs
b3dlZDo6Tm8pOworfQorCiAvLyBJbXBsZW1lbnRzICJ2YWxpZGF0ZSBhIHN0YW5kYXJkaXplZCBw
YXltZW50IG1ldGhvZCBpZGVudGlmaWVyIgogLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3BheW1l
bnQtbWV0aG9kLWlkLyN2YWxpZGl0eS0wCiBzdGF0aWMgYm9vbCBpc1ZhbGlkU3RhbmRhcmRpemVk
UGF5bWVudE1ldGhvZElkZW50aWZpZXIoU3RyaW5nVmlldyBpZGVudGlmaWVyKQpAQCAtMjQ5LDkg
KzI3OCw5IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnR1cGxlPFN0cmluZywgVmVjdG9yPFN0
cmluZz4+PiBjaGVja0FuZENhbm9uaWNhbGl6ZURldGFpCiB7CiAgICAgaWYgKGRldGFpbHMuZGlz
cGxheUl0ZW1zKSB7CiAgICAgICAgIGZvciAoYXV0byYgaXRlbSA6ICpkZXRhaWxzLmRpc3BsYXlJ
dGVtcykgewotICAgICAgICAgICAgYXV0byBleGNlcHRpb24gPSBjaGVja0FuZENhbm9uaWNhbGl6
ZUFtb3VudChpdGVtLmFtb3VudCk7Ci0gICAgICAgICAgICBpZiAoZXhjZXB0aW9uLmhhc0V4Y2Vw
dGlvbigpKQotICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24ucmVsZWFzZUV4Y2VwdGlv
bigpOworICAgICAgICAgICAgYXV0byBwYXltZW50SXRlbVJlc3VsdCA9IGNoZWNrQW5kQ2Fub25p
Y2FsaXplUGF5bWVudEl0ZW0oY29udGV4dCwgaXRlbSwgTmVnYXRpdmVBbW91bnRBbGxvd2VkOjpZ
ZXMpOworICAgICAgICAgICAgaWYgKHBheW1lbnRJdGVtUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBwYXltZW50SXRlbVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9u
KCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI5MiwyNSArMzIxLDI0IEBAIHN0YXRpYyBFeGNl
cHRpb25PcjxzdGQ6OnR1cGxlPFN0cmluZywgVmVjdG9yPFN0cmluZz4+PiBjaGVja0FuZENhbm9u
aWNhbGl6ZURldGFpCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChtb2RpZmllci50
b3RhbCkgewotICAgICAgICAgICAgICAgIGF1dG8gZXhjZXB0aW9uID0gY2hlY2tBbmRDYW5vbmlj
YWxpemVUb3RhbChtb2RpZmllci50b3RhbC0+YW1vdW50KTsKLSAgICAgICAgICAgICAgICBpZiAo
ZXhjZXB0aW9uLmhhc0V4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhj
ZXB0aW9uLnJlbGVhc2VFeGNlcHRpb24oKTsKKyAgICAgICAgICAgICAgICBhdXRvIHRvdGFsUmVz
dWx0ID0gY2hlY2tBbmRDYW5vbmljYWxpemVUb3RhbChjb250ZXh0LCAqbW9kaWZpZXIudG90YWwp
OworICAgICAgICAgICAgICAgIGlmICh0b3RhbFJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgZm9yIChhdXRvJiBpdGVtIDogbW9kaWZpZXIuYWRk
aXRpb25hbERpc3BsYXlJdGVtcykgewotICAgICAgICAgICAgICAgIGF1dG8gZXhjZXB0aW9uID0g
Y2hlY2tBbmRDYW5vbmljYWxpemVBbW91bnQoaXRlbS5hbW91bnQpOwotICAgICAgICAgICAgICAg
IGlmIChleGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBleGNlcHRpb24ucmVsZWFzZUV4Y2VwdGlvbigpOworICAgICAgICAgICAgICAgIGF1dG8gcGF5
bWVudEl0ZW1SZXN1bHQgPSBjaGVja0FuZENhbm9uaWNhbGl6ZVBheW1lbnRJdGVtKGNvbnRleHQs
IGl0ZW0sIE5lZ2F0aXZlQW1vdW50QWxsb3dlZDo6WWVzKTsKKyAgICAgICAgICAgICAgICBpZiAo
cGF5bWVudEl0ZW1SZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBwYXltZW50SXRlbVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIFN0cmluZyBzZXJpYWxpemVkRGF0YTsKICAgICAgICAgICAgIGlmICht
b2RpZmllci5kYXRhKSB7Ci0gICAgICAgICAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gY29u
dGV4dC5nbG9iYWxPYmplY3QoKTsKLSAgICAgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRShnbG9iYWxPYmplY3QtPnZtKCkpOwotICAgICAgICAgICAgICAgIHNlcmlh
bGl6ZWREYXRhID0gSlNPTlN0cmluZ2lmeShnbG9iYWxPYmplY3QsIG1vZGlmaWVyLmRhdGEuZ2V0
KCksIDApOwotICAgICAgICAgICAgICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfTsK
LSAgICAgICAgICAgICAgICBtb2RpZmllci5kYXRhLmNsZWFyKCk7CisgICAgICAgICAgICAgICAg
YXV0byBkYXRhUmVzdWx0ID0gY2hlY2tBbmRDYW5vbmljYWxpemVEYXRhKGNvbnRleHQsIG1vZGlm
aWVyKTsKKyAgICAgICAgICAgICAgICBpZiAoZGF0YVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwor
CisgICAgICAgICAgICAgICAgc2VyaWFsaXplZERhdGEgPSBkYXRhUmVzdWx0LnJlbGVhc2VSZXR1
cm5WYWx1ZSgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgc2VyaWFsaXplZE1vZGlmaWVy
RGF0YS51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShzZXJpYWxpemVkRGF0YSkpOwogICAgICAgICB9
CkBAIC0zODAsNyArNDA4LDcgQEAgRXhjZXB0aW9uT3I8UmVmPFBheW1lbnRSZXF1ZXN0Pj4gUGF5
bWVudFJlcXVlc3Q6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFZlY3QKICAgICAgICAgc2Vy
aWFsaXplZE1ldGhvZERhdGEudW5jaGVja2VkQXBwZW5kKHsgV1RGTW92ZSgqaWRlbnRpZmllciks
IFdURk1vdmUoc2VyaWFsaXplZERhdGEpIH0pOwogICAgIH0KIAotICAgIGF1dG8gdG90YWxSZXN1
bHQgPSBjaGVja0FuZENhbm9uaWNhbGl6ZVRvdGFsKGRldGFpbHMudG90YWwuYW1vdW50KTsKKyAg
ICBhdXRvIHRvdGFsUmVzdWx0ID0gY2hlY2tBbmRDYW5vbmljYWxpemVUb3RhbChkb2N1bWVudCwg
ZGV0YWlscy50b3RhbCk7CiAgICAgaWYgKHRvdGFsUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm4gdG90YWxSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogCkBAIC02ODEsNyAr
NzA5LDcgQEAgdm9pZCBQYXltZW50UmVxdWVzdDo6c2V0dGxlRGV0YWlsc1Byb21pc2UoVXBkYXRl
UmVhc29uIHJlYXNvbikKICAgICB9CiAKICAgICBpZiAoZGV0YWlsc1VwZGF0ZS50b3RhbCkgewot
ICAgICAgICBhdXRvIHRvdGFsUmVzdWx0ID0gY2hlY2tBbmRDYW5vbmljYWxpemVUb3RhbChkZXRh
aWxzVXBkYXRlLnRvdGFsLT5hbW91bnQpOworICAgICAgICBhdXRvIHRvdGFsUmVzdWx0ID0gY2hl
Y2tBbmRDYW5vbmljYWxpemVUb3RhbChjb250ZXh0LCAqZGV0YWlsc1VwZGF0ZS50b3RhbCk7CiAg
ICAgICAgIGlmICh0b3RhbFJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgYWJv
cnRXaXRoRXhjZXB0aW9uKHRvdGFsUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bh
c3NLaXRTb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29m
dExpbmsuaAppbmRleCA3N2VhZGIzNGZhMTBjNDI0OWFmNWY3ZGE2NmQzMWNjYzJiNzkwNTAzLi42
ZmE2ZmFiMWNkMDU5YjZiMTM1MTFhNDA1MmExMGI4YTQwYmNjOTg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmgKQEAgLTc4LDQgKzc4LDggQEAg
U09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRFcnJv
clBvc3RhbEFkZHJlc3NVc2VySW5mb0sKIAogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIo
UEFMLCBQYXNzS2l0LCBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21h
aW5BbmRTb3VyY2VBcHBsaWNhdGlvbiwgdm9pZCwgKE5TU3RyaW5nICppZGVudGlmaWVyLCBOU1N0
cmluZyAqZG9tYWluLCBOU1N0cmluZyAqc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlm
aWVyLCBQS0Nhbk1ha2VQYXltZW50c0NvbXBsZXRpb24gY29tcGxldGlvbiksIChpZGVudGlmaWVy
LCBkb21haW4sIHNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciwgY29tcGxldGlv
bikpCiAKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2ltcG9ydCA8V2ViS2l0QWRkaXRp
b25zL1Bhc3NLaXRTb2Z0TGlua0FkZGl0aW9ucy5oPgorI2VuZGlmCisKICNlbmRpZiAvLyBVU0Uo
UEFTU0tJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tp
dFNvZnRMaW5rLm1tIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29mdExp
bmsubW0KaW5kZXggYWI4NzNiOWM1ZmMxZTcyZjdhZmY4MzU3ODQ2ZTRmM2RmMTYwYjU3Zi4uNjVm
YTExZmM0NWM3Y2JmNjljYWEyN2U3MjQ0N2IzNzRiNTM1YTI0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsubW0KQEAgLTkxLDQgKzkxLDggQEAg
U09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQ
S1BheW1lbnRFcnJvclBvc3RhbEFkZHIKIAogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0Vf
V0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElk
ZW50aWZpZXJEb21haW5BbmRTb3VyY2VBcHBsaWNhdGlvbiwgdm9pZCwgKE5TU3RyaW5nICppZGVu
dGlmaWVyLCBOU1N0cmluZyAqZG9tYWluLCBOU1N0cmluZyAqc291cmNlQXBwbGljYXRpb25TZWNv
bmRhcnlJZGVudGlmaWVyLCBQS0Nhbk1ha2VQYXltZW50c0NvbXBsZXRpb24gY29tcGxldGlvbiks
IChpZGVudGlmaWVyLCBkb21haW4sIHNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmll
ciwgY29tcGxldGlvbiksIFBBTF9FWFBPUlQpCiAKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQorI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1Bhc3NLaXRTb2Z0TGlua0FkZGl0aW9ucy5tbT4K
KyNlbmRpZgorCiAjZW5kaWYgLy8gVVNFKFBBU1NLSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmgKaW5kZXggMmI2NzhmOTFhN2Y4YmI4MmRhOTZiMjg0
YzZkYTkwY2EwNWM2YTQ2ZS4uMWUwYTIxMTEwMGZlOWEzNTcyNmVmZDBiZjZkN2ZiNmVmMGEzYjAy
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQ
SS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaApA
QCAtNTksNiArNTksOCBAQCBXVEZfRVhURVJOX0NfRU5ECiAjaW1wb3J0IDxQYXNzS2l0L1BLUGF5
bWVudFJlcXVlc3RfUHJpdmF0ZS5oPgogI2VuZGlmCiAKKyNpbXBvcnQgPFdlYktpdEFkZGl0aW9u
cy9QYXNzS2l0U1BJQWRkaXRpb25zLmg+CisKICNlbHNlCiAKICNpbXBvcnQgPEZvdW5kYXRpb24v
Rm91bmRhdGlvbi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCA3NmQwYzkzODAyNTEz
MWY3NDlmYTgxZTA5MzE1ZTViMzU0N2MxNzZkLi5hOGZhMDcyYjU4YTBkNTg5MGQxOWIxYjU2YTg3
MzA4ZTYyN2VkMmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtNjI0LDYgKzYyNCw3
IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5pZGwKICAgICBNb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5SW5zdGFsbG1lbnRSZXRhaWxDaGFubmVsLmlkbAogICAgIE1vZHVsZXMvYXBwbGVw
YXkvQXBwbGVQYXlMaW5lSXRlbS5pZGwKKyAgICBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TGlu
ZUl0ZW1EYXRhLmlkbAogICAgIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlNZXJjaGFudENhcGFi
aWxpdHkuaWRsCiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnQuaWRsCiAgICAg
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0LmlkbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMzAyODY4NTJkNGY4ODNiMjIzZjBhMWQ1OGY2ZWQ2
YzRhOTZlZTViMS4uYmY2YWUxNjE4N2FiYTA3MTU3MmRhMDc5MjNhYzMzMGIyMjhmNjljNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zMSw2ICszMSw3IEBAIEpTQXBwbGVQYXlJbnN0YWxs
bWVudEl0ZW0uY3BwCiBKU0FwcGxlUGF5SW5zdGFsbG1lbnRJdGVtVHlwZS5jcHAKIEpTQXBwbGVQ
YXlJbnN0YWxsbWVudFJldGFpbENoYW5uZWwuY3BwCiBKU0FwcGxlUGF5TGluZUl0ZW0uY3BwCitK
U0FwcGxlUGF5TGluZUl0ZW1EYXRhLmNwcAogSlNBcHBsZVBheU1lcmNoYW50Q2FwYWJpbGl0eS5j
cHAKIEpTQXBwbGVQYXlNb2RpZmllci5jcHAKIEpTQXBwbGVQYXlQYXltZW50LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI2
NzJmMGFjMzQ3MjgxNTk1NTU3ODMwNWJlYWYyYzUyNjE4ZDM2YWEuLjliMDlhZjg2MDRkMGYyNTU0
YzU2YjMzYjAxMDkzZjQyZWRjMTgzYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIzMzcsNyArMjMzNyw3IEBACiAJCTdDNjUy
MzE4MUUwMERCQjUwMDY3N0YyMiAvKiBKU0FwcGxlUGF5UGF5bWVudE1ldGhvZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M2NTIzMEUxRTAwREJCNDAw
Njc3RjIyIC8qIEpTQXBwbGVQYXlQYXltZW50TWV0aG9kLmggKi87IH07CiAJCTdDNjUyMzFBMUUw
MERCQjUwMDY3N0YyMiAvKiBKU0FwcGxlUGF5UGF5bWVudFBhc3MuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNjUyMzEwMUUwMERCQjQwMDY3N0YyMiAv
KiBKU0FwcGxlUGF5UGF5bWVudFBhc3MuaCAqLzsgfTsKIAkJN0M2NTc5RTAxRTAwNzlGOTAwRTNB
MjdBIC8qIEFwcGxlUGF5UGF5bWVudFJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNjU3OURGMUUwMDc5RjkwMEUzQTI3QSAvKiBBcHBsZVBh
eVBheW1lbnRSZXF1ZXN0LmggKi87IH07Ci0JCTdDNjU3OUUzMUUwMDgyNzAwMEUzQTI3QSAvKiBB
cHBsZVBheUxpbmVJdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzY1NzlFMjFFMDA4MjcwMDBFM0EyN0EgLyogQXBwbGVQYXlMaW5lSXRlbS5oICov
OyB9OworCQk3QzY1NzlFMzFFMDA4MjcwMDBFM0EyN0EgLyogQXBwbGVQYXlMaW5lSXRlbS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M2NTc5RTIxRTAw
ODI3MDAwRTNBMjdBIC8qIEFwcGxlUGF5TGluZUl0ZW0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzY1NzlFODFFMDA4MzE2MDBFM0EyN0EgLyog
QXBwbGVQYXlTaGlwcGluZ01ldGhvZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0M2NTc5RTcxRTAwODMxNjAwRTNBMjdBIC8qIEFwcGxlUGF5U2hpcHBp
bmdNZXRob2QuaCAqLzsgfTsKIAkJN0M2NTc5RjAxRTAwODU2NjAwRTNBMjdBIC8qIEpTQXBwbGVQ
YXlMaW5lSXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0M2NTc5RUExRTAwODU2NjAwRTNBMjdBIC8qIEpTQXBwbGVQYXlMaW5lSXRlbS5oICovOyB9
OwogCQk3QzY1NzlGMjFFMDA4NTY2MDBFM0EyN0EgLyogSlNBcHBsZVBheVBheW1lbnRSZXF1ZXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzY1NzlF
QzFFMDA4NTY2MDBFM0EyN0EgLyogSlNBcHBsZVBheVBheW1lbnRSZXF1ZXN0LmggKi87IH07CkBA
IC0yOTM5LDYgKzI5MzksOCBAQAogCQk5NEU4Mzk1NjFERkIyQkM0MDA3QkM2QTcgLyogSlNDU1NO
YW1lc3BhY2VSdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5NEU4Mzk1NDFERkIyQkE2MDA3QkM2QTcgLyogSlNDU1NOYW1lc3BhY2VSdWxlLmggKi87
IH07CiAJCTk1MjA3NjA1MUYyNjc1RkUwMDdEMkFBQiAvKiBDYWxsVHJhY2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTIwNzYwMTFGMjY3NUY5MDA3
RDJBQUIgLyogQ2FsbFRyYWNlci5oICovOyB9OwogCQk5NTIwNzYwNjFGMjY3NUZFMDA3RDJBQUIg
LyogQ2FsbFRyYWNlclR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5NTIwNzYwMjFGMjY3NUY5MDA3RDJBQUIgLyogQ2FsbFRyYWNlclR5cGVzLmgg
Ki87IH07CisJCTk1NkZDNEJCMjVENDlDN0IwMEY3QjNBMiAvKiBBcHBsZVBheUxpbmVJdGVtRGF0
YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTU2RkM0
QjgyNUQ0OUM3QTAwRjdCM0EyIC8qIEFwcGxlUGF5TGluZUl0ZW1EYXRhLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTU2RkM0QkIyNUQ0OUM3QjAw
RjdCM0EzIC8qIEpTQXBwbGVQYXlMaW5lSXRlbURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1NkZDNEJBMjVENDlDN0QwMEY3QjNBMiAvKiBKU0Fw
cGxlUGF5TGluZUl0ZW1EYXRhLmggKi87IH07CiAJCTk1QTFFMkU5MjVDQzc1QTkwMDI2OEM4RSAv
KiBNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUExRTJFNzI1Q0M3NUE4MDAyNjhDOEUgLyogTWVkaWFD
b250cm9sc0NvbnRleHRNZW51SXRlbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTk1REY5RDI1MjUyQkVEQjIwMDBEN0Y0NiAvKiBQb2ludGVyQ2hh
cmFjdGVyaXN0aWNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5NURGOUQyMzI1MkJFRDk5MDAwRDdGNDYgLyogUG9pbnRlckNoYXJhY3RlcmlzdGljcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3MDU5
OTdBMTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzA1OTk3NjEwN0Q5NzUyMDBBNTBBN0MgLyog
UG9saWN5Q2hlY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0xMTc3Miw2ICsxMTc3NCwxMCBAQAogCQk5NTIwNzYwMDFGMjY3NUY5MDA3RDJB
QUIgLyogQ2FsbFRyYWNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsVHJhY2VyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTUyMDc2MDExRjI2NzVGOTAwN0QyQUFCIC8q
IENhbGxUcmFjZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbFRyYWNlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5NTIwNzYwMjFGMjY3NUY5MDA3RDJBQUIgLyogQ2FsbFRyYWNlclR5
cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxUcmFjZXJUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5NTZGQzRCODI1RDQ5QzdBMDBGN0IzQTIgLyogQXBwbGVQYXlMaW5lSXRl
bURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXBwbGVQYXlMaW5lSXRl
bURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTU2RkM0QjgyNUQ0OUM3QzAw
RjdCM0EyIC8qIEpTQXBwbGVQYXlMaW5lSXRlbURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNBcHBsZVBheUxpbmVJdGVtRGF0YS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTk1NkZDNEJBMjVENDlDN0IwMEY3QjNBMiAvKiBBcHBsZVBheUxp
bmVJdGVtRGF0YS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXBwbGVQYXlMaW5lSXRlbURh
dGEuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NTZGQzRCQTI1RDQ5QzdEMDBG
N0IzQTIgLyogSlNBcHBsZVBheUxpbmVJdGVtRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0FwcGxlUGF5TGluZUl0ZW1EYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk1QTFFMkU3MjVDQzc1QTgwMDI2OEM4RSAvKiBNZWRpYUNvbnRyb2xzQ29udGV4
dE1lbnVJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQ29udHJv
bHNDb250ZXh0TWVudUl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTVERjlE
MjMyNTJCRUQ5OTAwMEQ3RjQ2IC8qIFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3MuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUG9pbnRlckNoYXJhY3RlcmlzdGljcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5NzA1OTk3NTEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2hlY2tlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2xpY3lDaGVja2VyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MzQzLDYgKzE4MzQ5LDggQEAKIAkJCQlBMTNCNjE2
OTI0NzVERkM1MDBCQkU2REUgLyogQXBwbGVQYXlJbnN0YWxsbWVudFJldGFpbENoYW5uZWwuaWRs
ICovLAogCQkJCTdDNjU3OUUyMUUwMDgyNzAwMEUzQTI3QSAvKiBBcHBsZVBheUxpbmVJdGVtLmgg
Ki8sCiAJCQkJN0M2NTc5RTQxRTAwODJDODAwRTNBMjdBIC8qIEFwcGxlUGF5TGluZUl0ZW0uaWRs
ICovLAorCQkJCTk1NkZDNEI4MjVENDlDN0EwMEY3QjNBMiAvKiBBcHBsZVBheUxpbmVJdGVtRGF0
YS5oICovLAorCQkJCTk1NkZDNEJBMjVENDlDN0IwMEY3QjNBMiAvKiBBcHBsZVBheUxpbmVJdGVt
RGF0YS5pZGwgKi8sCiAJCQkJQTFERjVBQTgxRjgwNzBENDAwNThBNDc3IC8qIEFwcGxlUGF5TWVy
Y2hhbnRDYXBhYmlsaXR5LmNwcCAqLywKIAkJCQlBMURGNUE4MzFGN0VCREYyMDA1OEE0NzcgLyog
QXBwbGVQYXlNZXJjaGFudENhcGFiaWxpdHkuaCAqLywKIAkJCQlBMURGNUE4NTFGN0VCREYyMDA1
OEE0NzcgLyogQXBwbGVQYXlNZXJjaGFudENhcGFiaWxpdHkuaWRsICovLApAQCAtMTg1NTMsNiAr
MTg1NjEsOCBAQAogCQkJCUExM0I2MTZGMjQ3NUUzMTIwMEJCRTZERSAvKiBKU0FwcGxlUGF5SW5z
dGFsbG1lbnRSZXRhaWxDaGFubmVsLmggKi8sCiAJCQkJN0M2NTc5RTkxRTAwODU2NjAwRTNBMjdB
IC8qIEpTQXBwbGVQYXlMaW5lSXRlbS5jcHAgKi8sCiAJCQkJN0M2NTc5RUExRTAwODU2NjAwRTNB
MjdBIC8qIEpTQXBwbGVQYXlMaW5lSXRlbS5oICovLAorCQkJCTk1NkZDNEI4MjVENDlDN0MwMEY3
QjNBMiAvKiBKU0FwcGxlUGF5TGluZUl0ZW1EYXRhLmNwcCAqLywKKwkJCQk5NTZGQzRCQTI1RDQ5
QzdEMDBGN0IzQTIgLyogSlNBcHBsZVBheUxpbmVJdGVtRGF0YS5oICovLAogCQkJCUExREY1QTg5
MUY3RUMwMDAwMDU4QTQ3NyAvKiBKU0FwcGxlUGF5TWVyY2hhbnRDYXBhYmlsaXR5LmNwcCAqLywK
IAkJCQlBMURGNUE4QTFGN0VDMDAwMDA1OEE0NzcgLyogSlNBcHBsZVBheU1lcmNoYW50Q2FwYWJp
bGl0eS5oICovLAogCQkJCUExRjZEMDBBMUZFMDk5MjEwMDE4MDc4QyAvKiBKU0FwcGxlUGF5TW9k
aWZpZXIuY3BwICovLApAQCAtMzExNzIsNiArMzExODIsNyBAQAogCQkJCUExMTc1MEExMjQ3NDY4
RjcwMEQ0RDI2QyAvKiBBcHBsZVBheUluc3RhbGxtZW50SXRlbVR5cGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUExM0I2MTZCMjQ3NUUwNDgwMEJCRTZERSAvKiBBcHBsZVBheUluc3RhbGxtZW50UmV0
YWlsQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M2NTc5RTMxRTAwODI3MDAwRTNBMjdB
IC8qIEFwcGxlUGF5TGluZUl0ZW0uaCBpbiBIZWFkZXJzICovLAorCQkJCTk1NkZDNEJCMjVENDlD
N0IwMEY3QjNBMiAvKiBBcHBsZVBheUxpbmVJdGVtRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTFERjVBODYxRjdFQkRGMjAwNThBNDc3IC8qIEFwcGxlUGF5TWVyY2hhbnRDYXBhYmlsaXR5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBMUY2Q0ZGRjFGRTA5NjIxMDAxODA3OEMgLyogQXBwbGVQYXlN
b2RpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M2NTIzMDExRTAwRDAzNDAwNjc3RjIyIC8q
IEFwcGxlUGF5UGF5bWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjczOCw2ICszMjc0OSw3IEBA
CiAJCQkJQTEzQjYxNzYyNDc1RTM3QTAwQkJFNkRFIC8qIEpTQXBwbGVQYXlJbnN0YWxsbWVudEl0
ZW1UeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTNCNjE3NzI0NzVFM0EzMDBCQkU2REUgLyog
SlNBcHBsZVBheUluc3RhbGxtZW50UmV0YWlsQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
N0M2NTc5RjAxRTAwODU2NjAwRTNBMjdBIC8qIEpTQXBwbGVQYXlMaW5lSXRlbS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJOTU2RkM0QkIyNUQ0OUM3QjAwRjdCM0EzIC8qIEpTQXBwbGVQYXlMaW5lSXRl
bURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUExREY1QThFMUY3RUMwMDIwMDU4QTQ3NyAvKiBK
U0FwcGxlUGF5TWVyY2hhbnRDYXBhYmlsaXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUY2RDAx
MjFGRTA5OUI0MDAxODA3OEMgLyogSlNBcHBsZVBheU1vZGlmaWVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3QzY1MjMxNDFFMDBEQkI0MDA2NzdGMjIgLyogSlNBcHBsZVBheVBheW1lbnQuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQppbmRleCBiZTliYTRjZGQyYTk4ZjM5NjU3MWI0NjFkNzAwMzkxODk3MzMz
NGNhLi4wMzlkYWMzYzY1Y2ViMDAzOTBjNTM0ZTY4ODI0YzMxNmJmN2RiNGM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAt
MjY5Myw2ICsyNjkzLDggQEAgc3ViIEdlbmVyYXRlRGljdGlvbmFyeUltcGxlbWVudGF0aW9uQ29u
dGVudAogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNET01HbG9iYWxPYmplY3QuaCIpOwog
ICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiPEphdmFTY3JpcHRDb3JlL09iamVjdENvbnN0cnVj
dG9yLmg+Iik7CiAKKyAgICAgICAgbXkgJGhhc1VuY29uZGl0aW9uYWxNZW1iZXIgPSAwOworCiAg
ICAgICAgICRyZXN1bHQgLj0gIkpTQzo6SlNPYmplY3QqIGNvbnZlcnREaWN0aW9uYXJ5VG9KUyhK
U0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0LCBjb25zdCAke2NsYXNzTmFtZX0mIGRpY3Rpb25hcnkpXG4iOwogICAg
ICAgICAkcmVzdWx0IC49ICJ7XG4iOwogICAgICAgICAkcmVzdWx0IC49ICIgICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTtcblxuIjsKQEAgLTI3MTcsNiArMjcx
OSw4IEBAIHN1YiBHZW5lcmF0ZURpY3Rpb25hcnlJbXBsZW1lbnRhdGlvbkNvbnRlbnQKICAgICAg
ICAgICAgICAgICBpZiAoJGNvbmRpdGlvbmFsKSB7CiAgICAgICAgICAgICAgICAgICAgIG15ICRj
b25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3Ry
aW5nRnJvbUF0dHJpYnV0ZVZhbHVlKCRjb25kaXRpb25hbCk7CiAgICAgICAgICAgICAgICAgICAg
ICRyZXN1bHQgLj0gIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIjsKKyAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAkaGFzVW5jb25kaXRpb25hbE1lbWJlciA9
IDE7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgIyAxLiBMZXQga2V5IGJl
IHRoZSBpZGVudGlmaWVyIG9mIG1lbWJlci4KQEAgLTI3NTUsNiArMjc1OSwxMSBAQCBzdWIgR2Vu
ZXJhdGVEaWN0aW9uYXJ5SW1wbGVtZW50YXRpb25Db250ZW50CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KIAorICAgICAgICBpZiAoISRoYXNVbmNvbmRpdGlvbmFsTWVtYmVyKSB7CisgICAgICAg
ICAgICAkcmVzdWx0IC49ICIgICAgVU5VU0VEX1BBUkFNKGRpY3Rpb25hcnkpO1xuIjsKKyAgICAg
ICAgICAgICRyZXN1bHQgLj0gIiAgICBVTlVTRURfUEFSQU0odm0pO1xuXG4iOworICAgICAgICB9
CisKICAgICAgICAgJHJlc3VsdCAuPSAiICAgIHJldHVybiByZXN1bHQ7XG4iOwogICAgICAgICAk
cmVzdWx0IC49ICJ9XG5cbiI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERpY3Rpb25hcnlXaXRoT25seUNvbmRpdGlvbmFs
TWVtYmVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RGljdGlvbmFyeVdpdGhPbmx5Q29uZGl0aW9uYWxNZW1iZXJzLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
YTUxZGVkNGQ2MDhmZTk5ZmQzNDlhYzgxYmZkY2I3NTJiZDA1MzQ0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERpY3Rpb25h
cnlXaXRoT25seUNvbmRpdGlvbmFsTWVtYmVycy5jcHAKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAg
ICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisg
ICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4g
RE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNUZXN0
RGljdGlvbmFyeVdpdGhPbmx5Q29uZGl0aW9uYWxNZW1iZXJzLmgiCisKKyNpbmNsdWRlICJKU0RP
TUNvbnZlcnROdW1iZXJzLmgiCisjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvT2JqZWN0Q29uc3RydWN0b3IuaD4KKworCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBu
YW1lc3BhY2UgSlNDOworCit0ZW1wbGF0ZTw+IFRlc3REaWN0aW9uYXJ5V2l0aE9ubHlDb25kaXRp
b25hbE1lbWJlcnMgY29udmVydERpY3Rpb25hcnk8VGVzdERpY3Rpb25hcnlXaXRoT25seUNvbmRp
dGlvbmFsTWVtYmVycz4oSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCit7CisgICAgVk0mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
Ym9vbCBpc051bGxPclVuZGVmaW5lZCA9IHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCk7CisgICAg
YXV0byogb2JqZWN0ID0gaXNOdWxsT3JVbmRlZmluZWQgPyBudWxscHRyIDogdmFsdWUuZ2V0T2Jq
ZWN0KCk7CisgICAgaWYgKFVOTElLRUxZKCFpc051bGxPclVuZGVmaW5lZCAmJiAhb2JqZWN0KSkg
eworICAgICAgICB0aHJvd1R5cGVFcnJvcigmbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIFRlc3REaWN0aW9uYXJ5V2l0aE9u
bHlDb25kaXRpb25hbE1lbWJlcnMgcmVzdWx0OworI2lmIEVOQUJMRShURVNUX0NPTkRJVElPTkFM
KQorICAgIEpTVmFsdWUgY29uZGl0aW9uYWxBdHRyVmFsdWU7CisgICAgaWYgKGlzTnVsbE9yVW5k
ZWZpbmVkKQorICAgICAgICBjb25kaXRpb25hbEF0dHJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7Cisg
ICAgZWxzZSB7CisgICAgICAgIGNvbmRpdGlvbmFsQXR0clZhbHVlID0gb2JqZWN0LT5nZXQoJmxl
eGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb25kaXRpb25h
bEF0dHIiKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsK
KyAgICB9CisgICAgaWYgKCFjb25kaXRpb25hbEF0dHJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Cisg
ICAgICAgIHJlc3VsdC5jb25kaXRpb25hbEF0dHIgPSBjb252ZXJ0PElETERvdWJsZT4obGV4aWNh
bEdsb2JhbE9iamVjdCwgY29uZGl0aW9uYWxBdHRyVmFsdWUpOworICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworSlNDOjpKU09iamVjdCogY29udmVydERpY3Rpb25hcnlUb0pTKEpTQzo6SlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QsIGNvbnN0IFRlc3REaWN0aW9uYXJ5V2l0aE9ubHlDb25kaXRpb25hbE1lbWJlcnMm
IGRpY3Rpb25hcnkpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKKworICAgIGF1dG8gcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoJmxleGlj
YWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC5vYmplY3RQcm90b3R5cGUoKSk7CisKKyNpZiBF
TkFCTEUoVEVTVF9DT05ESVRJT05BTCkKKyAgICBpZiAoIUlETERvdWJsZTo6aXNOdWxsVmFsdWUo
ZGljdGlvbmFyeS5jb25kaXRpb25hbEF0dHIpKSB7CisgICAgICAgIGF1dG8gY29uZGl0aW9uYWxB
dHRyVmFsdWUgPSB0b0pTPElETERvdWJsZT4oSURMRG91YmxlOjpleHRyYWN0VmFsdWVGcm9tTnVs
bGFibGUoZGljdGlvbmFyeS5jb25kaXRpb25hbEF0dHIpKTsKKyAgICAgICAgcmVzdWx0LT5wdXRE
aXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbmRpdGlvbmFsQXR0
ciIpLCBjb25kaXRpb25hbEF0dHJWYWx1ZSk7CisgICAgfQorI2VuZGlmCisgICAgVU5VU0VEX1BB
UkFNKGRpY3Rpb25hcnkpOworICAgIFVOVVNFRF9QQVJBTSh2bSk7CisKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGljdGlvbmFyeVdpdGhPbmx5Q29u
ZGl0aW9uYWxNZW1iZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RGljdGlvbmFyeVdpdGhPbmx5Q29uZGl0aW9uYWxNZW1iZXJzLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjI1NjU2NjJlYjYyMzdhNGZlNDBjOGZkZjAzNTk5OTFjOTEzY2IzNQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REaWN0
aW9uYXJ5V2l0aE9ubHlDb25kaXRpb25hbE1lbWJlcnMuaApAQCAtMCwwICsxLDMyIEBACisvKgor
ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4K
KyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBs
LiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNET01Db252
ZXJ0RGljdGlvbmFyeS5oIgorI2luY2x1ZGUgIlRlc3REaWN0aW9uYXJ5V2l0aE9ubHlDb25kaXRp
b25hbE1lbWJlcnMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTw+IFRlc3RE
aWN0aW9uYXJ5V2l0aE9ubHlDb25kaXRpb25hbE1lbWJlcnMgY29udmVydERpY3Rpb25hcnk8VGVz
dERpY3Rpb25hcnlXaXRoT25seUNvbmRpdGlvbmFsTWVtYmVycz4oSlNDOjpKU0dsb2JhbE9iamVj
dCYsIEpTQzo6SlNWYWx1ZSk7CisKK0pTQzo6SlNPYmplY3QqIGNvbnZlcnREaWN0aW9uYXJ5VG9K
UyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNET01HbG9iYWxPYmplY3QmLCBjb25zdCBUZXN0RGlj
dGlvbmFyeVdpdGhPbmx5Q29uZGl0aW9uYWxNZW1iZXJzJik7CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFbXB0eURpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEVtcHR5RGljdGlvbmFyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTcyNWRl
MzAxYzc5YWIwOWRiNDkzMjk3NGQ1MmM3ZGMxODE2MTViZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbXB0eURpY3Rpb25h
cnkuY3BwCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl
IFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5l
cmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTVGVzdEVtcHR5RGljdGlvbmFyeS5oIgorCisjaW5j
bHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJ
bmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT2JqZWN0Q29uc3RydWN0b3IuaD4K
KworCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCit0ZW1wbGF0
ZTw+IFRlc3RFbXB0eURpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdEVtcHR5RGljdGlv
bmFyeT4oSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUp
Cit7CisgICAgVk0mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYm9vbCBpc051
bGxPclVuZGVmaW5lZCA9IHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCk7CisgICAgYXV0byogb2Jq
ZWN0ID0gaXNOdWxsT3JVbmRlZmluZWQgPyBudWxscHRyIDogdmFsdWUuZ2V0T2JqZWN0KCk7Cisg
ICAgaWYgKFVOTElLRUxZKCFpc051bGxPclVuZGVmaW5lZCAmJiAhb2JqZWN0KSkgeworICAgICAg
ICB0aHJvd1R5cGVFcnJvcigmbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7CisgICAg
ICAgIHJldHVybiB7IH07CisgICAgfQorICAgIFRlc3RFbXB0eURpY3Rpb25hcnkgcmVzdWx0Owor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0pTQzo6SlNPYmplY3QqIGNvbnZlcnREaWN0aW9uYXJ5
VG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBjb25zdCBUZXN0RW1wdHlEaWN0aW9uYXJ5JiBkaWN0aW9u
YXJ5KQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CisKKyAgICBhdXRvIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJvdG90eXBlKCkpOworCisgICAgVU5VU0VEX1BB
UkFNKGRpY3Rpb25hcnkpOworICAgIFVOVVNFRF9QQVJBTSh2bSk7CisKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW1wdHlEaWN0aW9uYXJ5LmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW1wdHlEaWN0aW9u
YXJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNDkyZDYyZjVmMTllMDk1YzJhNWRjM2ViMDA5YWYxZmQ4ZTZlYWEz
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFbXB0eURpY3Rpb25hcnkuaApAQCAtMCwwICsxLDMyIEBACisvKgorICAgIFRo
aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBU
aGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBO
T1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNET01Db252ZXJ0RGlj
dGlvbmFyeS5oIgorI2luY2x1ZGUgIlRlc3RFbXB0eURpY3Rpb25hcnkuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCit0ZW1wbGF0ZTw+IFRlc3RFbXB0eURpY3Rpb25hcnkgY29udmVydERpY3Rp
b25hcnk8VGVzdEVtcHR5RGljdGlvbmFyeT4oSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNW
YWx1ZSk7CisKK0pTQzo6SlNPYmplY3QqIGNvbnZlcnREaWN0aW9uYXJ5VG9KUyhKU0M6OkpTR2xv
YmFsT2JqZWN0JiwgSlNET01HbG9iYWxPYmplY3QmLCBjb25zdCBUZXN0RW1wdHlEaWN0aW9uYXJ5
Jik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2ll
cy5kZXAKaW5kZXggYmFjNWQyZDgzZTU3YTZjMzE1YTE1NWY0NWY1MmM2NWJkZjA4Y2QzZC4uYzk4
OTg5YTQ4MDJkZmI2MGM3NDJlYTdlNDlhOWEyOWRiY2Y2NTUwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5k
ZXAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRh
bERlcGVuZGVuY2llcy5kZXAKQEAgLTc5LDkgKzc5LDE1IEBAIFdlYkRPTVRlc3REZXJpdmVkRGlj
dGlvbmFyeS5oOgogSlNUZXN0RGVyaXZlZERpY3Rpb25hcnkyLmg6IAogRE9NVGVzdERlcml2ZWRE
aWN0aW9uYXJ5Mi5oOiAKIFdlYkRPTVRlc3REZXJpdmVkRGljdGlvbmFyeTIuaDogCitKU1Rlc3RE
aWN0aW9uYXJ5V2l0aE9ubHlDb25kaXRpb25hbE1lbWJlcnMuaDogCitET01UZXN0RGljdGlvbmFy
eVdpdGhPbmx5Q29uZGl0aW9uYWxNZW1iZXJzLmg6IAorV2ViRE9NVGVzdERpY3Rpb25hcnlXaXRo
T25seUNvbmRpdGlvbmFsTWVtYmVycy5oOiAKIEpTVGVzdERvbWFpblNlY3VyaXR5Lmg6IAogRE9N
VGVzdERvbWFpblNlY3VyaXR5Lmg6IAogV2ViRE9NVGVzdERvbWFpblNlY3VyaXR5Lmg6IAorSlNU
ZXN0RW1wdHlEaWN0aW9uYXJ5Lmg6IAorRE9NVGVzdEVtcHR5RGljdGlvbmFyeS5oOiAKK1dlYkRP
TVRlc3RFbXB0eURpY3Rpb25hcnkuaDogCiBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmg6IFRlc3RF
bmFibGVkQnlTZXR0aW5nU3VwcGxlbWVudGFsLmlkbAogRE9NVGVzdEVuYWJsZWRCeVNldHRpbmcu
aDogVGVzdEVuYWJsZWRCeVNldHRpbmdTdXBwbGVtZW50YWwuaWRsCiBXZWJET01UZXN0RW5hYmxl
ZEJ5U2V0dGluZy5oOiBUZXN0RW5hYmxlZEJ5U2V0dGluZ1N1cHBsZW1lbnRhbC5pZGwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RGljdGlvbmFy
eVdpdGhPbmx5Q29uZGl0aW9uYWxNZW1iZXJzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0RGljdGlvbmFyeVdpdGhPbmx5Q29uZGl0aW9uYWxNZW1iZXJzLmlk
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43ODVlZTU0OGIyN2IyZmQ0OTdkZGIyZjIwMTIzNmEzM2U2M2E2MGM3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3REaWN0aW9uYXJ5V2l0aE9ubHlDb25kaXRpb25hbE1lbWJlcnMuaWRsCkBAIC0wLDAgKzEsMzMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybSwgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJ
bmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAg
SlNHZW5lcmF0ZVRvSlNPYmplY3QsCitdIGRpY3Rpb25hcnkgVGVzdERpY3Rpb25hcnlXaXRoT25s
eUNvbmRpdGlvbmFsTWVtYmVycyB7CisgICAgW0NvbmRpdGlvbmFsPVRFU1RfQ09ORElUSU9OQUxd
IGRvdWJsZSBjb25kaXRpb25hbEF0dHI7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RFbXB0eURpY3Rpb25hcnkuaWRsIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RFbXB0eURpY3Rpb25hcnkuaWRsCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQxZjNjMjAyM2EwMDkxMjQxOTBjNjY5YWI4ZjQ3NjEyMDJlYzAyMmQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEVtcHR5
RGljdGlvbmFyeS5pZGwKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3JtLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKK10gZGlj
dGlvbmFyeSBUZXN0RW1wdHlEaWN0aW9uYXJ5IHsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9XZWJJbmplY3RlZFNjcmlwdEhvc3QuY3BwCmluZGV4IDZjZWEyNDY2NGJhZTI3
NmVmNGRiNDRkOWE4MGE5NjJjMjQ5OGEyNmMuLjQxZjMzYjEyNTFlYmQ2YjA3NDIzMjI0NzY4ZWNh
NWJkMjJjZTBhYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJJbmpl
Y3RlZFNjcmlwdEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJJbmpl
Y3RlZFNjcmlwdEhvc3QuY3BwCkBAIC0xMTIsMTUgKzExMiwxNiBAQCBzdGF0aWMgSlNPYmplY3Qq
IG9iamVjdEZvclBheW1lbnRTaGlwcGluZ09wdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBl
eGVjLCBjbwogCiBzdGF0aWMgSlNPYmplY3QqIG9iamVjdEZvclBheW1lbnREZXRhaWxzTW9kaWZp
ZXIoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgUGF5bWVudERldGFpbHNNb2Rp
ZmllciYgbW9kaWZpZXIpCiB7Ci0gICAgYXV0byogYWRkaXRpb25hbERpc3BsYXlJdGVtcyA9IGNv
bnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0cik7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1vZGlmaWVyLmFkZGl0aW9uYWxEaXNwbGF5SXRlbXMuc2l6ZSgpOyArK2kpCi0gICAg
ICAgIGFkZGl0aW9uYWxEaXNwbGF5SXRlbXMtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGksIG9iamVj
dEZvclBheW1lbnRJdGVtKHZtLCBleGVjLCBtb2RpZmllci5hZGRpdGlvbmFsRGlzcGxheUl0ZW1z
W2ldKSk7Ci0KICAgICBhdXRvKiBvYmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsK
ICAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInN1
cHBvcnRlZE1ldGhvZHMiKSwganNTdHJpbmcodm0sIG1vZGlmaWVyLnN1cHBvcnRlZE1ldGhvZHMp
KTsKLSAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InRvdGFsIiksICFtb2RpZmllci50b3RhbCA/IGpzTnVsbCgpIDogb2JqZWN0Rm9yUGF5bWVudEl0
ZW0odm0sIGV4ZWMsICptb2RpZmllci50b3RhbCkpOwotICAgIG9iamVjdC0+cHV0RGlyZWN0KHZt
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYWRkaXRpb25hbERpc3BsYXlJdGVtcyIpLCBh
ZGRpdGlvbmFsRGlzcGxheUl0ZW1zKTsKLSAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImRhdGEiKSwgIW1vZGlmaWVyLmRhdGEgPyBqc051bGwoKSA6
IG1vZGlmaWVyLmRhdGEuZ2V0KCkpOworICAgIGlmIChtb2RpZmllci50b3RhbCkKKyAgICAgICAg
b2JqZWN0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0b3RhbCIp
LCBvYmplY3RGb3JQYXltZW50SXRlbSh2bSwgZXhlYywgKm1vZGlmaWVyLnRvdGFsKSk7CisgICAg
aWYgKCFtb2RpZmllci5hZGRpdGlvbmFsRGlzcGxheUl0ZW1zLmlzRW1wdHkoKSkgeworICAgICAg
ICBhdXRvKiBhZGRpdGlvbmFsRGlzcGxheUl0ZW1zID0gY29uc3RydWN0RW1wdHlBcnJheShleGVj
LCBudWxscHRyKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1vZGlmaWVyLmFk
ZGl0aW9uYWxEaXNwbGF5SXRlbXMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBhZGRpdGlvbmFs
RGlzcGxheUl0ZW1zLT5wdXREaXJlY3RJbmRleChleGVjLCBpLCBvYmplY3RGb3JQYXltZW50SXRl
bSh2bSwgZXhlYywgbW9kaWZpZXIuYWRkaXRpb25hbERpc3BsYXlJdGVtc1tpXSkpOworICAgICAg
ICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImFkZGl0
aW9uYWxEaXNwbGF5SXRlbXMiKSwgYWRkaXRpb25hbERpc3BsYXlJdGVtcyk7CisgICAgfQogICAg
IHJldHVybiBvYmplY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1dlYkNvcmVBZGRpdGlvbnMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9XZWJDb3JlQWRkaXRpb25zLm1tCmluZGV4IGQ1YzcxY2JjMmUxZjIyNDkyOWUxOTg0Y2Q3MWY5
YWRkZDYyMDRkMzkuLmFmNjNkYTJmMjE2YmU2ZTM2NTIzMzBhNmY5YzYyY2E3Y2YwMWZjNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYkNvcmVBZGRpdGlvbnMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViQ29yZUFkZGl0aW9ucy5t
bQpAQCAtMjQsMyArMjQsNyBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgorCisjaWYgVVNF
KEFQUExFX0lOVEVSTkFMX1NESykKKyNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9XZWJDb3JlQWRk
aXRpb25zLm1tPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tQYXltZW50Q29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5
bWVudENvb3JkaW5hdG9yLmNwcAppbmRleCAwMGZkNjYwZGU4YjdhN2JkNzFkYWYyOTlhYjYzZmU1
MWZhMTgzNTA0Li4xNmMxZDk2OTcyMTA5Y2RmYTIxZDI0YjIxMTIyMGMyZWM1MjIyYmQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAK
QEAgLTEyOSwyMSArMTI5LDEwIEBAIHZvaWQgTW9ja1BheW1lbnRDb29yZGluYXRvcjo6Y29tcGxl
dGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgUGF5bWVudE1lcmNoYW50U2VzCiAgICAgfSk7CiB9
CiAKLXN0YXRpYyBBcHBsZVBheUxpbmVJdGVtIGNvbnZlcnQoY29uc3QgQXBwbGVQYXlTZXNzaW9u
UGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtJiBsaW5lSXRlbSkKLXsKLSAgICBBcHBsZVBheUxpbmVJ
dGVtIHJlc3VsdDsKLSAgICByZXN1bHQudHlwZSA9IGxpbmVJdGVtLnR5cGU7Ci0gICAgcmVzdWx0
LmxhYmVsID0gbGluZUl0ZW0ubGFiZWw7Ci0gICAgcmVzdWx0LmFtb3VudCA9IGxpbmVJdGVtLmFt
b3VudDsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiB2b2lkIE1vY2tQYXltZW50Q29vcmRpbmF0
b3I6OnVwZGF0ZVRvdGFsQW5kTGluZUl0ZW1zKGNvbnN0IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRS
ZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcyYgdG90YWxBbmRMaW5lSXRlbXMpCiB7Ci0gICAgbV90
b3RhbCA9IGNvbnZlcnQodG90YWxBbmRMaW5lSXRlbXMudG90YWwpOwotICAgIG1fbGluZUl0ZW1z
LmNsZWFyKCk7Ci0gICAgZm9yIChhdXRvJiBsaW5lSXRlbSA6IHRvdGFsQW5kTGluZUl0ZW1zLmxp
bmVJdGVtcykKLSAgICAgICAgbV9saW5lSXRlbXMuYXBwZW5kKGNvbnZlcnQobGluZUl0ZW0pKTsK
KyAgICBtX3RvdGFsID0gdG90YWxBbmRMaW5lSXRlbXMudG90YWw7CisgICAgbV9saW5lSXRlbXMg
PSB0b3RhbEFuZExpbmVJdGVtcy5saW5lSXRlbXM7CiB9CiAKIHZvaWQgTW9ja1BheW1lbnRDb29y
ZGluYXRvcjo6Y29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihPcHRpb25hbDxTaGlwcGlu
Z01ldGhvZFVwZGF0ZT4mJiBzaGlwcGluZ01ldGhvZFVwZGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KaW5k
ZXggNjczZTliNTg4ZGYwZTc2NjJkYzUwYTQ1NjRkOTZlMWFjNWIxN2FiNS4uZDM1Y2Y2ZWFiZWJk
MTA5OGFjOGMxZjAyYmYwNTA2OTcxYTg0MzMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTI3OSwx
MiArMjc5LDEyIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVx
dWVzdD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBBcHBsCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICByZXF1ZXN0LnNldFNoaXBwaW5nTWV0aG9kcyhzaGlwcGluZ01ldGhvZHMpOwogCi0g
ICAgVmVjdG9yPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbT4gbGluZUl0
ZW1zOworICAgIFZlY3RvcjxBcHBsZVBheUxpbmVJdGVtPiBsaW5lSXRlbXM7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShsaW5lSXRlbXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmVx
dWVzdC5zZXRMaW5lSXRlbXMobGluZUl0ZW1zKTsKIAotICAgIE9wdGlvbmFsPEFwcGxlUGF5U2Vz
c2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbT4gdG90YWw7CisgICAgT3B0aW9uYWw8QXBwbGVQ
YXlMaW5lSXRlbT4gdG90YWw7CiAgICAgZGVjb2RlciA+PiB0b3RhbDsKICAgICBpZiAoIXRvdGFs
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNDIsMjYgKzM0Miw2IEBAIGJvb2wgQXJndW1l
bnRDb2RlcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6Q29udGFjdEZpZWxkcz46OmRl
Y29kZShEZWNvZGVyCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXJndW1lbnRDb2RlcjxB
cHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtJiBs
aW5lSXRlbSkKLXsKLSAgICBlbmNvZGVyIDw8IGxpbmVJdGVtLnR5cGU7Ci0gICAgZW5jb2RlciA8
PCBsaW5lSXRlbS5sYWJlbDsKLSAgICBlbmNvZGVyIDw8IGxpbmVJdGVtLmFtb3VudDsKLX0KLQot
T3B0aW9uYWw8QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtPiBBcmd1bWVu
dENvZGVyPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbT46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQotewotICAgIFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRS
ZXF1ZXN0OjpMaW5lSXRlbSBsaW5lSXRlbTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxpbmVJ
dGVtLnR5cGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUobGluZUl0ZW0ubGFiZWwpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGluZUl0ZW0uYW1vdW50KSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiBXVEZNb3ZlKGxpbmVJdGVtKTsKLX0KLQogdm9p
ZCBBcmd1bWVudENvZGVyPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpNZXJjaGFudENh
cGFiaWxpdGllcz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBBcHBsZVBheVNlc3Np
b25QYXltZW50UmVxdWVzdDo6TWVyY2hhbnRDYXBhYmlsaXRpZXMmIG1lcmNoYW50Q2FwYWJpbGl0
aWVzKQogewogICAgIGVuY29kZXIgPDwgbWVyY2hhbnRDYXBhYmlsaXRpZXMuc3VwcG9ydHMzRFM7
CkBAIC00MTQsMTIgKzM5NCwxMiBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8QXBwbGVQYXlTZXNzaW9u
UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPjo6ZW5jb2RlKEVuYwogCiBPcHRpb25h
bDxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+IEFyZ3Vt
ZW50Q29kZXI8QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1z
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8QXBwbGVQYXlTZXNz
aW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtPiB0b3RhbDsKKyAgICBPcHRpb25hbDxBcHBsZVBh
eUxpbmVJdGVtPiB0b3RhbDsKICAgICBkZWNvZGVyID4+IHRvdGFsOwogICAgIGlmICghdG90YWwp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8VmVjdG9y
PEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbT4+IGxpbmVJdGVtczsKKyAg
ICBPcHRpb25hbDxWZWN0b3I8QXBwbGVQYXlMaW5lSXRlbT4+IGxpbmVJdGVtczsKICAgICBkZWNv
ZGVyID4+IGxpbmVJdGVtczsKICAgICBpZiAoIWxpbmVJdGVtcykKICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgKaW5kZXggNmY3MjE4MGY5ODUzMjczZTNmMTZmNjEwYjRkNTMxZjFhY2YxOGFlNi4uMjYwOThl
ZmRkYjRhZmYyZWJlZjdiMmZjYTYxZDVjZmEwMDc1NzRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTU0LDEwICs1NCw2IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9DdXJsUHJveHlTZXR0aW5ncy5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9XZWJDb3JlQXJndW1lbnRD
b2RlcnNBZGRpdGlvbnMuaD4KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
ICNpbmNsdWRlIDxXZWJDb3JlL0NETUluc3RhbmNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DRE1J
bnN0YW5jZVNlc3Npb24uaD4KQEAgLTcwNSwxNyArNzAxLDExIEBAIHRlbXBsYXRlPD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q+IHsK
ICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5
U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jik7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3QmKTsKIH07Ci0KIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6QXBw
bGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkNvbnRhY3RGaWVsZHM+IHsKICAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0OjpDb250YWN0RmllbGRzJik7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJl
cXVlc3Q6OkNvbnRhY3RGaWVsZHMmKTsKIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtPiB7
Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBh
eVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0mKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8
V2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtPiBkZWNvZGUo
RGVjb2RlciYpOwotfTsKLQogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TWVyY2hhbnRDYXBhYmlsaXRpZXM+IHsK
ICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5
U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpNZXJjaGFudENhcGFiaWxpdGllcyYpOwogICAgIHN0YXRp
YyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OkFwcGxl
UGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpNZXJjaGFudENhcGFiaWxpdGllcyYpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGY2M2U5MGVmNDZiNGMxZjQ2MGE3OWE0NzExMTkzOWNiYTAwNWM0YjUuLmZmODNmZjYwNWMxOGI3
OWYwMTA1NDgwZDQ0ODAzMzMyYWNhNGI0NzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0w
Mi0xNSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgW1BheW1l
bnQgUmVxdWVzdF0gYWRkIGFuIGBvYmplY3QgZGF0YWAgdG8gYFBheW1lbnRJdGVtYCBzbyB0aGF0
IGRhdGEgc3BlY2lmaWMgdG8gQXBwbGUgUGF5IGNhbiBiZSBwcm92aWRlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxOTcwCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS82OTgwNjk5OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3BheW1lbnRyZXF1ZXN0L3BheW1l
bnQtcmVxdWVzdC1pbnRlcm5hbC1wcm9wZXJ0aWVzLmh0dHBzLWV4cGVjdGVkLnR4dDoKKwogMjAy
MS0wMi0xNyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lP
U10gZG9uJ3QgInByb21vdGUiIG1lZGlhIGNvbnRyb2xzIGNvbnRleHRtZW51IGl0ZW1zIGlmIHRo
ZXkgYXJlIHRoZSBvbmx5IGl0ZW0gYmVpbmcgc2hvd24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVxdWVzdC1pbnRl
cm5hbC1wcm9wZXJ0aWVzLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVxdWVzdC1pbnRlcm5hbC1wcm9w
ZXJ0aWVzLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCBjZDllMGNhYzY2NDBjMmRiZDRlMWE5NmQ5
NmExNmE3ZjYyMmI3ODAxLi4wZGFkNmUyYTE4YTc2ZGY3NGUzNzAyYzQzMTQ0ODAyZWQzMzFlNWJk
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9wYXltZW50cmVx
dWVzdC9wYXltZW50LXJlcXVlc3QtaW50ZXJuYWwtcHJvcGVydGllcy5odHRwcy1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcGF5bWVudHJlcXVlc3Qv
cGF5bWVudC1yZXF1ZXN0LWludGVybmFsLXByb3BlcnRpZXMuaHR0cHMtZXhwZWN0ZWQudHh0CkBA
IC03MCw5ICs3MCw3IEBAIElOVEVSTkFMIFBST1BFUlRZOiBkZXRhaWxzOiB7CiAgICAgICAgICAg
InZhbHVlIjogIjk5LjAwIgogICAgICAgICB9LAogICAgICAgICAicGVuZGluZyI6IGZhbHNlCi0g
ICAgICB9LAotICAgICAgImFkZGl0aW9uYWxEaXNwbGF5SXRlbXMiOiBbXSwKLSAgICAgICJkYXRh
IjogbnVsbAorICAgICAgfQogICAgIH0KICAgXQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420679</attachid>
            <date>2021-02-17 11:16:07 -0800</date>
            <delta_ts>2021-02-18 14:46:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221970-20210217121606.patch</filename>
            <type>text/plain</type>
            <size>80402</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmZGY5YWMwMmE2YTA1ODBkYmY5ZWQ4YWNiY2E4MTY3NjFjNjYyODg3Li5m
OGMwNTBmMmExZDUxMGI4MTE3MjcwNjcxNjk4OTI5NTRkMmFkMDFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsOTEgQEAKKzIwMjEtMDItMTUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFtQYXltZW50IFJlcXVlc3RdIGFkZCBhbiBgb2JqZWN0IGRhdGFgIHRvIGBQ
YXltZW50SXRlbWAgc28gdGhhdCBkYXRhIHNwZWNpZmljIHRvIEFwcGxlIFBheSBjYW4gYmUgcHJv
dmlkZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MTk3MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk4MDY5OTk+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0
L1BheW1lbnRJdGVtLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1l
bnRJdGVtLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TGluZUl0ZW0u
aWRsOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbS5oOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGVQYXlMaW5lSXRlbTo6ZW5jb2RlIGNvbnN0KTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBcHBsZVBheUxpbmVJdGVtOjpkZWNvZGUpOiBBZGRlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TGluZUl0ZW1EYXRhLmlkbDogQWRkZWQuCisg
ICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJdGVtRGF0YS5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5TGluZUl0ZW1EYXRhOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlMaW5lSXRlbURhdGE6OmRlY29kZSk6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsZVBheUxpbmVJdGVtRGF0YTo6ZGVjb2RlRGF0YSk6CisgICAgICAgICog
TW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjaGVja0FuZENhbm9uaWNhbGl6ZURhdGEpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OmNoZWNrQW5kQ2Fub25pY2FsaXplUGF5bWVudEl0ZW0pOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OmNoZWNrQW5kQ2Fub25pY2FsaXplVG90YWwpOgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tB
bmRDYW5vbmljYWxpemVEZXRhaWxzKToKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OnNldHRsZURldGFp
bHNQcm9taXNlKToKKyAgICAgICAgQWRkIElQQyBzdXBwb3J0IGFuZCBleHRlbmQgZnJvbSBgQXBw
bGVQYXlMaW5lSXRlbURhdGFgIHdoaWNoIGlzIHVzZWQgdG8gcHVsbCB2YWx1ZXMgb3V0IG9mCisg
ICAgICAgIHRoZSBgb2JqZWN0IGRhdGFgIGZyb20gYFBheW1lbnRJdGVtYC4gVGhpcyB3YXksIGJv
dGggQXBwbGUgUGF5IEpTIGFuZCBQYXltZW50UmVxdWVzdCBjYW4gYmUKKyAgICAgICAgZ2l2ZW4g
dGhlIHNhbWUgZGF0YSAoYWxiZWl0IGluIHNsaWdodGx5IGRpZmZlcmVudCBwbGFjZXMpIGFuZCBo
YXZlIHRoZSBzYW1lIGNhcGFiaWxpdGllcy4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkv
QXBwbGVQYXlTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRBbmRWYWxpZGF0
ZVRvdGFsKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRBbmRWYWxpZGF0ZSk6CisgICAgICAg
ICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OmxpbmVJdGVtcyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6
c2V0TGluZUl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRS
ZXF1ZXN0Ojp0b3RhbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25Q
YXltZW50UmVxdWVzdDo6c2V0VG90YWwpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5
bWVudE1ldGhvZFVwZGF0ZS5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFJl
cXVlc3RWYWxpZGF0b3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRSZXF1
ZXN0VmFsaWRhdG9yLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudFJlcXVlc3RWYWxpZGF0
b3I6OnZhbGlkYXRlVG90YWwpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFN1
bW1hcnlJdGVtcy5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1l
dGhvZFVwZGF0ZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudE1ldGhvZFVwZGF0
ZTo6UGF5bWVudE1ldGhvZFVwZGF0ZSk6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9jb2Nv
YS9QYXltZW50U3VtbWFyeUl0ZW1zQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjp0b1BLUGF5
bWVudFN1bW1hcnlJdGVtVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjp0b1BLUGF5bWVudFN1bW1h
cnlJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtU3VtbWFyeUl0ZW1zKToKKyAgICAg
ICAgKiBNb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWVyZ2UpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OmNvbnZlcnRBbmRWYWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVBheW1l
bnRIYW5kbGVyOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudEhhbmRs
ZXI6OmNvbXB1dGVUb3RhbEFuZExpbmVJdGVtcyBjb25zdCk6CisgICAgICAgICogdGVzdGluZy9N
b2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tQYXltZW50
Q29vcmRpbmF0b3I6OnVwZGF0ZVRvdGFsQW5kTGluZUl0ZW1zKToKKyAgICAgICAgSnVzdCB1c2Ug
YEFwcGxlUGF5TGluZUl0ZW1gIGluc3RlYWQgb2YgZHVwbGljYXRpbmcgaXRzIHN0cnVjdHVyZSBp
biBhbm90aGVyIG9iamVjdCAoYEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRl
bWApLgorCisgICAgICAgICogaW5zcGVjdG9yL1dlYkluamVjdGVkU2NyaXB0SG9zdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpvYmplY3RGb3JQYXltZW50RGV0YWlsc01vZGlmaWVyKToKKyAgICAg
ICAgRHJpdmUtYnk6IERvbid0IGFsd2F5cyBzZXQgYG1vZGlmaWVyLnRvdGFsYCBvciBgbW9kaWZp
ZXIuYWRkaXRpb25hbERpc3BsYXlJdGVtc2Agc2luY2UgdGhleQorICAgICAgICBtaWdodCBub3Qg
aGF2ZSBiZWVuIHByb3ZpZGVkLgorICAgICAgICBEcml2ZS1ieTogRG9uJ3QgYm90aGVyIHNldHRp
bmcgYG1vZGlmaWVyLmRhdGFgIHNpbmNlIGl0J3MgY2xlYXJlZCBkdXJpbmcgdmFsaWRhdGlvbi4K
KworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAg
ICAoR2VuZXJhdGVEaWN0aW9uYXJ5SW1wbGVtZW50YXRpb25Db250ZW50KToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLmRlcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERpY3Rpb25hcnlXaXRoT25seUNvbmRpdGlv
bmFsTWVtYmVycy5pZGw6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3REaWN0aW9uYXJ5V2l0aE9ubHlDb25kaXRpb25hbE1lbWJlcnMuaDogQWRkZWQuCisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERpY3Rpb25hcnlXaXRoT25s
eUNvbmRpdGlvbmFsTWVtYmVycy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29udmVy
dERpY3Rpb25hcnk8VGVzdERpY3Rpb25hcnlXaXRoT25seUNvbmRpdGlvbmFsTWVtYmVycz4pOgor
ICAgICAgICAoV2ViQ29yZTo6Y29udmVydERpY3Rpb25hcnlUb0pTKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEVtcHR5RGljdGlvbmFyeS5pZGw6IEFkZGVkLgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbXB0eURpY3Rpb25hcnkuaDogQWRk
ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVtcHR5RGljdGlv
bmFyeS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydERpY3Rpb25hcnk8VGVz
dEVtcHR5RGljdGlvbmFyeT4pOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydERpY3Rpb25hcnlU
b0pTKToKKyAgICAgICAgTW9kaWZ5IHRoZSBJREwgY29kZSBnZW5lcmF0b3IgdG8gYmUgYWJsZSB0
byBoYW5kbGUgZW1wdHkgSURMIGRpY3Rpb25hcmllcy4KKworICAgICAgICAqIHBsYXRmb3JtL2Nv
Y29hL1dlYkNvcmVBZGRpdGlvbnMubW06CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoK
KyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNt
YWtlOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIxLTAyLTE3ICBEZXZpbiBSb3Vzc28gIDxkcm91
c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBBZGQgYW4gb3ZlcmZsb3cgYnV0dG9uIHRo
YXQncyBzaG93biB3aGVuIGNvbnRyb2xzIGFyZSBkcm9wcGVkIHNvIHRoYXQgaXQncyBzdGlsbCBw
b3NzaWJsZSB0byB0cmlnZ2VyIHRoZSBkcm9wcGVkIGJ1dHRvbidzIGFjdGlvbnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nCmluZGV4IDliNGQyODdhNmQ4OGI2N2RlZjM5MTVkODk3NjJjYTBkMDI5MmMwYWQuLjU5
YzlmYTNiNWFlM2JlYjUwNTg1OGYyZWYwNTNlODFkNTUxNjYwMjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTAyLTE1ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KKworICAgICAgICBbUGF5bWVudCBSZXF1ZXN0XSBhZGQgYW4gYG9iamVjdCBkYXRh
YCB0byBgUGF5bWVudEl0ZW1gIHNvIHRoYXQgZGF0YSBzcGVjaWZpYyB0byBBcHBsZSBQYXkgY2Fu
IGJlIHByb3ZpZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjE5NzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5ODA2OTk5PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFsL2NvY29hL1Bhc3NL
aXRTb2Z0TGluay5oOgorICAgICAgICAqIHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsubW06Cisg
ICAgICAgICogcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg6CisKIDIwMjEtMDItMTUgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
Zml4IHRoZSBBcHBsZSBpbnRlcm5hbCBpT1MgYnVpbGQgYWZ0ZXIgcjI3Mjg3OApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCBkODdkMzY3YTc3MzA0YWZiY2M4ZDIxODE0NjYxZmZlNzljODYzYzAxLi45NjAyNjMyMTUzMjE3
ZjI4NTQ5YmM3MjAxYzY5MmZlYmRlZDNjZjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisy
MDIxLTAyLTE1ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBb
UGF5bWVudCBSZXF1ZXN0XSBhZGQgYW4gYG9iamVjdCBkYXRhYCB0byBgUGF5bWVudEl0ZW1gIHNv
IHRoYXQgZGF0YSBzcGVjaWZpYyB0byBBcHBsZSBQYXkgY2FuIGJlIHByb3ZpZGVkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE5NzAKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzY5ODA2OTk5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAg
ICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdD46OmRl
Y29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8QXBwbGVQYXlTZXNzaW9uUGF5bWVu
dFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJn
dW1lbnRDb2RlcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0+OjplbmNv
ZGUpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPEFwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbT46OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgIEp1
c3QgdXNlIGBBcHBsZVBheUxpbmVJdGVtYCBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIGl0cyBzdHJ1
Y3R1cmUgaW4gYW5vdGhlciBvYmplY3QgKGBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6
TGluZUl0ZW1gKS4KKwogMjAyMS0wMi0xNyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5j
b20+CiAKICAgICAgICAgW2lPU10gQWRkIHN1cHBvcnQgZm9yIGFkZGl0aW9uYWwgYWNjZXNzaWJp
bGl0eSBpbWFnZSBleHRyYWN0aW9uIGNvbnRleHRtZW51IGFjdGlvbnMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IDY4Y2ZkNGEwNzI2MjUz
NDhhY2U1N2I5M2ZkYTc3M2VjYjJjNjgxN2YuLmJlOTBkNDNkMGMxMjhiMTRlZDYzMDk1MjUyZjRh
ZmE0YTQwMTZlMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdApAQCAtMzIsNiArMzIsNyBAQCAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL2FwcGxl
cGF5L0FwcGxlUGF5SW5zdGFsbG1lbnRJdGVtLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50SXRlbVR5cGUuaWRsCiAkKFBST0pFQ1RfRElSKS9N
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5SW5zdGFsbG1lbnRSZXRhaWxDaGFubmVsLmlkbAogJChQ
Uk9KRUNUX0RJUikvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJdGVtLmlkbAorJChQUk9K
RUNUX0RJUikvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJdGVtRGF0YS5pZGwKICQoUFJP
SkVDVF9ESVIpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlNZXJjaGFudENhcGFiaWxpdHkuaWRs
CiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudC5pZGwKICQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50QXV0aG9yaXphdGlv
blJlc3VsdC5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QKaW5kZXggMTcyMzY0ZDliNTUxMTA5MjRkZDkzYzdkYWNjNjg2MjlmZDc5YmU3Yy4u
OGMxZjI1ZmMxNzJmZWRiNzdjMGE3NDdhMTJhOWRiMGE5MDg1N2M5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTEwMiw2ICsxMDIs
OCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0FwcGxl
UGF5SW5zdGFsbG1lbnRSZXRhaWxDaGFubmVsLgogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNBcHBsZVBheUluc3RhbGxtZW50UmV0YWlsQ2hhbm5lbC5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0FwcGxlUGF5TGlu
ZUl0ZW0uY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0FwcGxlUGF5TGluZUl0ZW0uaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNBcHBsZVBheUxpbmVJdGVtRGF0YS5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXBwbGVQYXlMaW5lSXRlbURhdGEuaAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBcHBsZVBheU1lcmNoYW50
Q2FwYWJpbGl0eS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTQXBwbGVQYXlNZXJjaGFudENhcGFiaWxpdHkuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBcHBsZVBheU1vZGlmaWVyLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZmJhOWVlNWEwMTM0OWZiNjFhYmNiYWEyZDViMjQ0M2Uw
MjBjZTliOS4uYThkODdlZTE5MmVhN2RiOGUxNzE3YWM0MGU3MDM4NjA2ZDU1MzU2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC02MSw2ICs2MSw3IEBAIEpTX0JJTkRJTkdfSURM
UyA6PSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5SW5zdGFsbG1l
bnRJdGVtVHlwZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eUluc3RhbGxtZW50UmV0YWlsQ2hhbm5lbC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheUxpbmVJdGVtLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5TGluZUl0ZW1EYXRhLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L2FwcGxlcGF5L0FwcGxlUGF5TWVyY2hhbnRDYXBhYmlsaXR5LmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudC5pZGwgXAogICAgICQoV2ViQ29yZSkv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0LmlkbCBc
CkBAIC0xNzIyLDcgKzE3MjMsNyBAQCBQUkVQUk9DRVNTX0lETFNfU0NSSVBUUyA9IFwKIAogSURM
X0lOQ0xVREVTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcyBcCi0gICAgJChJRExfUEFUSFMp
CisgICAgJChBRERJVElPTkFMX0JJTkRJTkdfSURMU19QQVRIUykKIAogSURMX0NPTU1PTl9BUkdT
ID0gJChJRExfSU5DTFVERVM6JT0tLWluY2x1ZGUgJSkgLS13cml0ZS1kZXBlbmRlbmNpZXMgLS1v
dXRwdXREaXIgLgogCkBAIC0xODAwLDcgKzE4MDEsNyBAQCAkKElETF9JTlRFUk1FRElBVEVfUEFU
VEVSTlMpIDogJChQUkVQUk9DRVNTX0lETFNfU0NSSVBUUykgJChJRExfQVRUUklCVVRFU19GSUxF
KQogIyBnZW5lcmF0ZSBmaWxlIGluZm9ybWF0aW9uIHdpdGhvdXQgcGF0aHMsIGFuZCB0aG9zZSBz
dGlsbCBuZWVkIHRvIGJlbmVmaXQgZnJvbQogIyBzZXR0aW5nIHNlYXJjaCBwYXRocyB3aXRoIHZw
YXRoLgogCi12cGF0aCAlLmlkbCAkKElETF9QQVRIUykgJChXZWJDb3JlKS9iaW5kaW5ncy9zY3Jp
cHRzCit2cGF0aCAlLmlkbCAkKEFERElUSU9OQUxfQklORElOR19JRExTX1BBVEhTKSAkKFdlYkNv
cmUpL2JpbmRpbmdzL3NjcmlwdHMKIAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiBkZWZpbmUgR0VORVJBVEVfQklORElOR1NfdGVtcGxhdGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRl
bS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJdGVtLmgK
aW5kZXggMTg3ZjY5YTRlOTY4NGM2MTlhNWFmOWE1NGJmNzMxMjE2ZDE0NzIzZC4uNjA5MTcyNWM3
NTk0ZDdmNjYxNjUwYzJjNmFjNTljMTg4ZjUwOGZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJdGVtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJdGVtLmgKQEAgLTI3LDE4ICsyNyw3MiBA
QAogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIAotI2luY2x1ZGUgIkFwcGxlUGF5U2Vzc2lvblBh
eW1lbnRSZXF1ZXN0LmgiCisjaW5jbHVkZSAiQXBwbGVQYXlMaW5lSXRlbURhdGEuaCIKKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0cnVjdCBB
cHBsZVBheUxpbmVJdGVtIHsKLSAgICB1c2luZyBUeXBlID0gQXBwbGVQYXlTZXNzaW9uUGF5bWVu
dFJlcXVlc3Q6OkxpbmVJdGVtOjpUeXBlOworc3RydWN0IEFwcGxlUGF5TGluZUl0ZW0gZmluYWwg
OiBwdWJsaWMgQXBwbGVQYXlMaW5lSXRlbURhdGEgeworICAgIGVudW0gY2xhc3MgVHlwZSB7Cisg
ICAgICAgIFBlbmRpbmcsCisgICAgICAgIEZpbmFsLAorICAgIH07CiAKICAgICBUeXBlIHR5cGUg
eyBUeXBlOjpGaW5hbCB9OwogICAgIFN0cmluZyBsYWJlbDsKICAgICBTdHJpbmcgYW1vdW50Owor
CisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxBcHBsZVBheUxp
bmVJdGVtPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4K
K3ZvaWQgQXBwbGVQYXlMaW5lSXRlbTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7
CisgICAgQXBwbGVQYXlMaW5lSXRlbURhdGE6OmVuY29kZShlbmNvZGVyKTsKKyAgICBlbmNvZGVy
IDw8IHR5cGU7CisgICAgZW5jb2RlciA8PCBsYWJlbDsKKyAgICBlbmNvZGVyIDw8IGFtb3VudDsK
IH0KIAordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPEFwcGxlUGF5TGluZUl0ZW0+
IEFwcGxlUGF5TGluZUl0ZW06OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIEFwcGxl
UGF5TGluZUl0ZW0gcmVzdWx0OworCisgICAgaWYgKCFyZXN1bHQuZGVjb2RlRGF0YShkZWNvZGVy
KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworI2RlZmluZSBERUNPREUobmFtZSwg
dHlwZSkgXAorICAgIE9wdGlvbmFsPHR5cGU+IG5hbWU7IFwKKyAgICBkZWNvZGVyID4+IG5hbWU7
IFwKKyAgICBpZiAoIW5hbWUpIFwKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsgXAorICAg
IHJlc3VsdC5uYW1lID0gV1RGTW92ZSgqbmFtZSk7IFwKKworICAgIERFQ09ERSh0eXBlLCBUeXBl
KQorICAgIERFQ09ERShsYWJlbCwgU3RyaW5nKQorICAgIERFQ09ERShhbW91bnQsIFN0cmluZykK
KworI3VuZGVmIERFQ09ERQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRy
YWl0czxXZWJDb3JlOjpBcHBsZVBheUxpbmVJdGVtOjpUeXBlPiB7CisgICAgdXNpbmcgdmFsdWVz
ID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6QXBwbGVQYXlMaW5lSXRlbTo6VHlwZSwK
KyAgICAgICAgV2ViQ29yZTo6QXBwbGVQYXlMaW5lSXRlbTo6VHlwZTo6UGVuZGluZywKKyAgICAg
ICAgV2ViQ29yZTo6QXBwbGVQYXlMaW5lSXRlbTo6VHlwZTo6RmluYWwKKyAgICA+OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV1RGCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJdGVtLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbS5pZGwKaW5kZXggZGE1ZjJlZWEyZTJhZDM1
MGU2NzI3ZWI1ZjZkZTc1MmM5NzhhOGNlZS4uYTQyYjc3MjRiZThmNjg3ODU1ZDQ2MDk2M2ZkYjgx
YTRiZDcxOWE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheUxpbmVJdGVtLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5TGluZUl0ZW0uaWRsCkBAIC0zNCw3ICszNCw3IEBACiAgICAgQ29uZGl0aW9uYWw9
QVBQTEVfUEFZLAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAogICAgIEpTR2VuZXJh
dGVUb0pTT2JqZWN0LAotXSBkaWN0aW9uYXJ5IEFwcGxlUGF5TGluZUl0ZW0geworXSBkaWN0aW9u
YXJ5IEFwcGxlUGF5TGluZUl0ZW0gOiBBcHBsZVBheUxpbmVJdGVtRGF0YSB7CiAgICAgQXBwbGVQ
YXlMaW5lSXRlbVR5cGUgdHlwZSA9ICJmaW5hbCI7CiAgICAgRE9NU3RyaW5nIGxhYmVsOwogICAg
IERPTVN0cmluZyBhbW91bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5TGluZUl0ZW1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5TGluZUl0ZW1EYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTNhYzc2ZmM4ZjJhNzFk
MmVmODU3N2FmMDM4NWRjNmZiYmQ1NjdlOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbURhdGEuaApAQCAtMCwwICsxLDkx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKQor
CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQorI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9BcHBsZVBheUxpbmVJdGVtRGF0YUFkZGl0aW9u
cy5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEFwcGxlUGF5TGlu
ZUl0ZW1EYXRhIHsKKyNpZiBkZWZpbmVkKEFwcGxlUGF5TGluZUl0ZW1EYXRhQWRkaXRpb25zX21l
bWJlcnMpCisgICAgQXBwbGVQYXlMaW5lSXRlbURhdGFBZGRpdGlvbnNfbWVtYmVycworI2VuZGlm
CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEFwcGxlUGF5
TGluZUl0ZW1EYXRhPiBkZWNvZGUoRGVjb2RlciYpOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlRGF0YShEZWNvZGVyJik7Cit9Owor
Cit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBBcHBsZVBheUxpbmVJdGVtRGF0YTo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisjaWYgZGVmaW5lZChBcHBsZVBheUxpbmVJ
dGVtRGF0YUFkZGl0aW9uc19lbmNvZGUpCisgICAgQXBwbGVQYXlMaW5lSXRlbURhdGFBZGRpdGlv
bnNfZW5jb2RlCisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShlbmNvZGVyKTsKKyNlbmRpZgorfQor
Cit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8QXBwbGVQYXlMaW5lSXRlbURhdGE+
IEFwcGxlUGF5TGluZUl0ZW1EYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBB
cHBsZVBheUxpbmVJdGVtRGF0YSByZXN1bHQ7CisgICAgaWYgKCFyZXN1bHQuZGVjb2RlRGF0YShk
ZWNvZGVyKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorYm9vbCBBcHBsZVBheUxpbmVJdGVtRGF0
YTo6ZGVjb2RlRGF0YShEZWNvZGVyJiBkZWNvZGVyKQoreworI2RlZmluZSBERUNPREUobmFtZSwg
dHlwZSkgXAorICAgIE9wdGlvbmFsPHR5cGU+IG5hbWU7IFwKKyAgICBkZWNvZGVyID4+IG5hbWU7
IFwKKyAgICBpZiAoIW5hbWUpIFwKKyAgICAgICAgcmV0dXJuIGZhbHNlOyBcCisgICAgdGhpcy0+
bmFtZSA9IFdURk1vdmUoKm5hbWUpOyBcCisKKyNpZiBkZWZpbmVkKEFwcGxlUGF5TGluZUl0ZW1E
YXRhQWRkaXRpb25zX2RlY29kZURhdGEpCisgICAgQXBwbGVQYXlMaW5lSXRlbURhdGFBZGRpdGlv
bnNfZGVjb2RlRGF0YQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CisjZW5kaWYK
KworI3VuZGVmIERFQ09ERQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TGluZUl0ZW1EYXRhLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbURhdGEuaWRsCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjNkNGViN2QyMTNhZTA1NTJlZDliZjc0Y2ZkOTU4NGQxMTY2MzZlNDMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TGlu
ZUl0ZW1EYXRhLmlkbApAQCAtMCwwICsxLDMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRp
dGlvbmFsPUFQUExFX1BBWSwKKyAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKK10gZGljdGlvbmFy
eSBBcHBsZVBheUxpbmVJdGVtRGF0YSB7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwCmluZGV4IGI1NWE3NzBiMzk0ODVkYTE3
MTc0NThjOTZkMjNkZmQ1MmY2MGI5YjguLjI4OTQ2OTIxZjlkMWExNmNjODQwY2UzM2EzYjRiN2Nh
ZDM5NWYzNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5U2Vzc2lvbi5jcHAKQEAgLTE0NSw0MSArMTQ1LDM0IEBAIHN0YXRpYyBib29sIHZhbGlk
YXRlQW1vdW50KGNvbnN0IFN0cmluZyYgYW1vdW50U3RyaW5nKQogICAgIHJldHVybiBzdGF0ZSA9
PSBTdGF0ZTo6RGlnaXQgfHwgc3RhdGUgPT0gU3RhdGU6OkRvdERpZ2l0IHx8IHN0YXRlID09IFN0
YXRlOjpFbmQ7CiB9CiAKLXN0YXRpYyBFeGNlcHRpb25PcjxBcHBsZVBheVNlc3Npb25QYXltZW50
UmVxdWVzdDo6TGluZUl0ZW0+IGNvbnZlcnRBbmRWYWxpZGF0ZVRvdGFsKEFwcGxlUGF5TGluZUl0
ZW0mJiBsaW5lSXRlbSkKK3N0YXRpYyBFeGNlcHRpb25PcjxBcHBsZVBheUxpbmVJdGVtPiBjb252
ZXJ0QW5kVmFsaWRhdGVUb3RhbChBcHBsZVBheUxpbmVJdGVtJiYgbGluZUl0ZW0pCiB7CiAgICAg
aWYgKCF2YWxpZGF0ZUFtb3VudChsaW5lSXRlbS5hbW91bnQpKQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgVHlwZUVycm9yLCBtYWtlU3RyaW5nKCJcIiIgKyBsaW5lSXRlbS5hbW91bnQsICJc
IiBpcyBub3QgYSB2YWxpZCBhbW91bnQuIikgfTsKIAotICAgIEFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0OjpMaW5lSXRlbSB0b3RhbCB7IGxpbmVJdGVtLnR5cGUsIGxpbmVJdGVtLmFtb3Vu
dCwgbGluZUl0ZW0ubGFiZWwgfTsKLQotICAgIGF1dG8gdmFsaWRhdGVkVG90YWwgPSBQYXltZW50
UmVxdWVzdFZhbGlkYXRvcjo6dmFsaWRhdGVUb3RhbCh0b3RhbCk7CisgICAgYXV0byB2YWxpZGF0
ZWRUb3RhbCA9IFBheW1lbnRSZXF1ZXN0VmFsaWRhdG9yOjp2YWxpZGF0ZVRvdGFsKGxpbmVJdGVt
KTsKICAgICBpZiAodmFsaWRhdGVkVG90YWwuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biB2YWxpZGF0ZWRUb3RhbC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAKLSAgICByZXR1cm4gV1RGTW92
ZSh0b3RhbCk7CisgICAgcmV0dXJuIFdURk1vdmUobGluZUl0ZW0pOwogfQogCi1zdGF0aWMgRXhj
ZXB0aW9uT3I8QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtPiBjb252ZXJ0
QW5kVmFsaWRhdGUoQXBwbGVQYXlMaW5lSXRlbSYmIGxpbmVJdGVtKQorc3RhdGljIEV4Y2VwdGlv
bk9yPEFwcGxlUGF5TGluZUl0ZW0+IGNvbnZlcnRBbmRWYWxpZGF0ZShBcHBsZVBheUxpbmVJdGVt
JiYgbGluZUl0ZW0pCiB7Ci0gICAgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJ
dGVtIHJlc3VsdDsKLQotICAgIC8vIEl0IGlzIE9LIGZvciBwZW5kaW5nIHR5cGVzIHRvIG5vdCBo
YXZlIGFuIGFtb3VudC4KLSAgICBpZiAobGluZUl0ZW0udHlwZSAhPSBBcHBsZVBheVNlc3Npb25Q
YXltZW50UmVxdWVzdDo6TGluZUl0ZW06OlR5cGU6OlBlbmRpbmcpIHsKKyAgICBpZiAobGluZUl0
ZW0udHlwZSA9PSBBcHBsZVBheUxpbmVJdGVtOjpUeXBlOjpQZW5kaW5nKSB7CisgICAgICAgIC8v
IEl0IGlzIE9LIGZvciBwZW5kaW5nIHR5cGVzIHRvIG5vdCBoYXZlIGFuIGFtb3VudC4KKyAgICAg
ICAgbGluZUl0ZW0uYW1vdW50ID0gbnVsbFN0cmluZygpOworICAgIH0gZWxzZSB7CiAgICAgICAg
IGlmICghdmFsaWRhdGVBbW91bnQobGluZUl0ZW0uYW1vdW50KSkKICAgICAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBUeXBlRXJyb3IsIG1ha2VTdHJpbmcoIlwiIiArIGxpbmVJdGVtLmFtb3Vu
dCwgIlwiIGlzIG5vdCBhIHZhbGlkIGFtb3VudC4iKSB9OwotCi0gICAgICAgIHJlc3VsdC5hbW91
bnQgPSBsaW5lSXRlbS5hbW91bnQ7CiAgICAgfQogCi0gICAgcmVzdWx0LnR5cGUgPSBsaW5lSXRl
bS50eXBlOwotICAgIHJlc3VsdC5sYWJlbCA9IGxpbmVJdGVtLmxhYmVsOwotCi0gICAgcmV0dXJu
IFdURk1vdmUocmVzdWx0KTsKKyAgICByZXR1cm4gV1RGTW92ZShsaW5lSXRlbSk7CiB9CiAKLXN0
YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6Okxp
bmVJdGVtPj4gY29udmVydEFuZFZhbGlkYXRlKE9wdGlvbmFsPFZlY3RvcjxBcHBsZVBheUxpbmVJ
dGVtPj4mJiBsaW5lSXRlbXMpCitzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPEFwcGxlUGF5TGlu
ZUl0ZW0+PiBjb252ZXJ0QW5kVmFsaWRhdGUoT3B0aW9uYWw8VmVjdG9yPEFwcGxlUGF5TGluZUl0
ZW0+PiYmIGxpbmVJdGVtcykKIHsKLSAgICBWZWN0b3I8QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJl
cXVlc3Q6OkxpbmVJdGVtPiByZXN1bHQ7CisgICAgVmVjdG9yPEFwcGxlUGF5TGluZUl0ZW0+IHJl
c3VsdDsKICAgICBpZiAoIWxpbmVJdGVtcykKICAgICAgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNlc3Npb25QYXltZW50UmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oCmluZGV4IDFmYmQ0N2MyZTJkNTY2YTBi
NjliYWNjMWE1YTVhYmNiYTZmYTNkYTAuLjM5ODY0NzZlMTJkZmY3ZmM5OGI3ZTk1NDgyYzVlNmU0
NWMwYjBiMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmgKQEAgLTI3LDYgKzI3LDcg
QEAKIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKKyNpbmNsdWRlICJBcHBsZVBheUxpbmVJdGVt
LmgiCiAjaW5jbHVkZSAiUGF5bWVudENvbnRhY3QuaCIKICNpbmNsdWRlICJQYXltZW50SW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uV2ViQ29yZS5oIgogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+
CkBAIC04NSwxNiArODYsNiBAQCBwdWJsaWM6CiAgICAgY29uc3QgTWVyY2hhbnRDYXBhYmlsaXRp
ZXMmIG1lcmNoYW50Q2FwYWJpbGl0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9tZXJjaGFudENhcGFi
aWxpdGllczsgfQogICAgIHZvaWQgc2V0TWVyY2hhbnRDYXBhYmlsaXRpZXMoY29uc3QgTWVyY2hh
bnRDYXBhYmlsaXRpZXMmIG1lcmNoYW50Q2FwYWJpbGl0aWVzKSB7IG1fbWVyY2hhbnRDYXBhYmls
aXRpZXMgPSBtZXJjaGFudENhcGFiaWxpdGllczsgfQogCi0gICAgc3RydWN0IExpbmVJdGVtIHsK
LSAgICAgICAgZW51bSBjbGFzcyBUeXBlIDogYm9vbCB7Ci0gICAgICAgICAgICBQZW5kaW5nLAot
ICAgICAgICAgICAgRmluYWwsCi0gICAgICAgIH0gdHlwZSB7IFR5cGU6OkZpbmFsIH07Ci0KLSAg
ICAgICAgU3RyaW5nIGFtb3VudDsKLSAgICAgICAgU3RyaW5nIGxhYmVsOwotICAgIH07Ci0KICAg
ICBlbnVtIGNsYXNzIFNoaXBwaW5nVHlwZSB7CiAgICAgICAgIFNoaXBwaW5nLAogICAgICAgICBE
ZWxpdmVyeSwKQEAgLTExNCwxNSArMTA1LDE1IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8
U2hpcHBpbmdNZXRob2Q+JiBzaGlwcGluZ01ldGhvZHMoKSBjb25zdCB7IHJldHVybiBtX3NoaXBw
aW5nTWV0aG9kczsgfQogICAgIHZvaWQgc2V0U2hpcHBpbmdNZXRob2RzKGNvbnN0IFZlY3RvcjxT
aGlwcGluZ01ldGhvZD4mIHNoaXBwaW5nTWV0aG9kcykgeyBtX3NoaXBwaW5nTWV0aG9kcyA9IHNo
aXBwaW5nTWV0aG9kczsgfQogCi0gICAgY29uc3QgVmVjdG9yPExpbmVJdGVtPiYgbGluZUl0ZW1z
KCkgY29uc3QgeyByZXR1cm4gbV9saW5lSXRlbXM7IH0KLSAgICB2b2lkIHNldExpbmVJdGVtcyhj
b25zdCBWZWN0b3I8TGluZUl0ZW0+JiBsaW5lSXRlbXMpIHsgbV9saW5lSXRlbXMgPSBsaW5lSXRl
bXM7IH0KKyAgICBjb25zdCBWZWN0b3I8QXBwbGVQYXlMaW5lSXRlbT4mIGxpbmVJdGVtcygpIGNv
bnN0IHsgcmV0dXJuIG1fbGluZUl0ZW1zOyB9CisgICAgdm9pZCBzZXRMaW5lSXRlbXMoY29uc3Qg
VmVjdG9yPEFwcGxlUGF5TGluZUl0ZW0+JiBsaW5lSXRlbXMpIHsgbV9saW5lSXRlbXMgPSBsaW5l
SXRlbXM7IH0KIAotICAgIGNvbnN0IExpbmVJdGVtJiB0b3RhbCgpIGNvbnN0IHsgcmV0dXJuIG1f
dG90YWw7IH07Ci0gICAgdm9pZCBzZXRUb3RhbChjb25zdCBMaW5lSXRlbSYgdG90YWwpIHsgbV90
b3RhbCA9IHRvdGFsOyB9CisgICAgY29uc3QgQXBwbGVQYXlMaW5lSXRlbSYgdG90YWwoKSBjb25z
dCB7IHJldHVybiBtX3RvdGFsOyB9OworICAgIHZvaWQgc2V0VG90YWwoY29uc3QgQXBwbGVQYXlM
aW5lSXRlbSYgdG90YWwpIHsgbV90b3RhbCA9IHRvdGFsOyB9CiAKICAgICBzdHJ1Y3QgVG90YWxB
bmRMaW5lSXRlbXMgewotICAgICAgICBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGlu
ZUl0ZW0gdG90YWw7Ci0gICAgICAgIFZlY3RvcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dDo6TGluZUl0ZW0+IGxpbmVJdGVtczsKKyAgICAgICAgQXBwbGVQYXlMaW5lSXRlbSB0b3RhbDsK
KyAgICAgICAgVmVjdG9yPEFwcGxlUGF5TGluZUl0ZW0+IGxpbmVJdGVtczsKICAgICB9OwogCiAg
ICAgY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbkRhdGEoKSBjb25zdCB7IHJldHVybiBtX2FwcGxp
Y2F0aW9uRGF0YTsgfQpAQCAtMTYyLDggKzE1Myw4IEBAIHByaXZhdGU6CiAgICAgU2hpcHBpbmdU
eXBlIG1fc2hpcHBpbmdUeXBlIHsgU2hpcHBpbmdUeXBlOjpTaGlwcGluZyB9OwogICAgIFZlY3Rv
cjxTaGlwcGluZ01ldGhvZD4gbV9zaGlwcGluZ01ldGhvZHM7CiAKLSAgICBWZWN0b3I8TGluZUl0
ZW0+IG1fbGluZUl0ZW1zOwotICAgIExpbmVJdGVtIG1fdG90YWw7CisgICAgVmVjdG9yPEFwcGxl
UGF5TGluZUl0ZW0+IG1fbGluZUl0ZW1zOworICAgIEFwcGxlUGF5TGluZUl0ZW0gbV90b3RhbDsK
IAogICAgIFN0cmluZyBtX2FwcGxpY2F0aW9uRGF0YTsKICAgICBWZWN0b3I8U3RyaW5nPiBtX3N1
cHBvcnRlZENvdW50cmllczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvUGF5bWVudE1ldGhvZFVwZGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9QYXltZW50TWV0aG9kVXBkYXRlLmgKaW5kZXggNzBlOGUzMTMxOWM2ODJiNzBmODM1MGMw
NTY4NDE0NmU5OTA5MmE3Yy4uZDg0MGUxNjNkNTA1YjAwYzIxOWExNmZjMzk4ZjViZjM4NDM4ZjM4
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0
aG9kVXBkYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
TWV0aG9kVXBkYXRlLmgKQEAgLTM2LDEwICszNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgUGF5bWVudE1ldGhvZFVwZGF0ZSB7CiBwdWJsaWM6Ci0gICAg
dXNpbmcgTGluZUl0ZW0gPSBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW07
CiAgICAgdXNpbmcgVG90YWxBbmRMaW5lSXRlbXMgPSBBcHBsZVBheVNlc3Npb25QYXltZW50UmVx
dWVzdDo6VG90YWxBbmRMaW5lSXRlbXM7CiAKLSAgICBQYXltZW50TWV0aG9kVXBkYXRlKExpbmVJ
dGVtJiYgdG90YWwsIFZlY3RvcjxMaW5lSXRlbT4mJik7CisgICAgUGF5bWVudE1ldGhvZFVwZGF0
ZShBcHBsZVBheUxpbmVJdGVtJiYgdG90YWwsIFZlY3RvcjxBcHBsZVBheUxpbmVJdGVtPiYmKTsK
ICAgICBleHBsaWNpdCBQYXltZW50TWV0aG9kVXBkYXRlKFJldGFpblB0cjxQS1BheW1lbnRSZXF1
ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZT4mJik7CiAgICAgZXhwbGljaXQgUGF5bWVudE1ldGhvZFVw
ZGF0ZShUb3RhbEFuZExpbmVJdGVtcyYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50UmVxdWVzdFZhbGlkYXRvci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50UmVxdWVzdFZhbGlkYXRvci5oCmluZGV4IDY4ZmEy
NWRmYjliMjk5YTBmZGQ2MmJkMGViYTFiMzdiNzdhNDg2N2MuLjFhYjkwYmU1YmYwMWNhMGZiMjE2
MjUzOTVkOWZhZmJiZDQ5N2RmMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvUGF5bWVudFJlcXVlc3RWYWxpZGF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L1BheW1lbnRSZXF1ZXN0VmFsaWRhdG9yLmgKQEAgLTM1LDcgKzM1LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUGF5bWVudFJlcXVlc3RWYWxpZGF0b3Igewog
cHVibGljOgogICAgIHN0YXRpYyBFeGNlcHRpb25Pcjx2b2lkPiB2YWxpZGF0ZShjb25zdCBBcHBs
ZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYpOwotICAgIHN0YXRpYyBFeGNlcHRpb25Pcjx2b2lk
PiB2YWxpZGF0ZVRvdGFsKGNvbnN0IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5l
SXRlbSYpOworICAgIHN0YXRpYyBFeGNlcHRpb25Pcjx2b2lkPiB2YWxpZGF0ZVRvdGFsKGNvbnN0
IEFwcGxlUGF5TGluZUl0ZW0mKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFJlcXVlc3RWYWxpZGF0b3IubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRSZXF1ZXN0VmFsaWRhdG9yLm1tCmluZGV4IDVm
ZDFhZmY3ZWIwZDhlZTkxOTQzY2ZmOTJlMDZlMzYyYzYwNjNiNGIuLmVmOWY2ZTgyNDg0NjVmZTNh
ZmIzYTYzZDZiYmYyOGY3MGU4MWQzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvUGF5bWVudFJlcXVlc3RWYWxpZGF0b3IubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50UmVxdWVzdFZhbGlkYXRvci5tbQpAQCAtNzYsNyAr
NzYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQYXltZW50UmVxdWVzdFZhbGlkYXRvcjo6dmFsaWRh
dGUoY29uc3QgQXBwbGVQYXlTZXNzaW9uUGF5bWVudAogICAgIHJldHVybiB7IH07CiB9CiAKLUV4
Y2VwdGlvbk9yPHZvaWQ+IFBheW1lbnRSZXF1ZXN0VmFsaWRhdG9yOjp2YWxpZGF0ZVRvdGFsKGNv
bnN0IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbSYgdG90YWwpCitFeGNl
cHRpb25Pcjx2b2lkPiBQYXltZW50UmVxdWVzdFZhbGlkYXRvcjo6dmFsaWRhdGVUb3RhbChjb25z
dCBBcHBsZVBheUxpbmVJdGVtJiB0b3RhbCkKIHsKICAgICBpZiAoIXRvdGFsLmxhYmVsKQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiTWlzc2luZyB0b3RhbCBsYWJlbC4i
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRT
dW1tYXJ5SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFN1
bW1hcnlJdGVtcy5oCmluZGV4IDVlOTUxNmEwOGZlNmI1MThmMTYyOWJhMDFjZTNiNzY0ODhkNmJm
NGEuLmZmZjg0NGQ3Nzk1YjM5NWRlYTEyMDFjMTM3MDZmZTczZDk2ZjhmOWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFN1bW1hcnlJdGVtcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFN1bW1hcnlJdGVtcy5o
CkBAIC0zNCw3ICszNCw3IEBAIE9CSkNfQ0xBU1MgTlNBcnJheTsKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogV0VCQ09SRV9FWFBPUlQgTlNBcnJheSAqcGxhdGZvcm1TdW1tYXJ5SXRlbXMoY29uc3Qg
QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zJik7Ci1XRUJD
T1JFX0VYUE9SVCBOU0FycmF5ICpwbGF0Zm9ybVN1bW1hcnlJdGVtcyhjb25zdCBBcHBsZVBheVNl
c3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0mIHRvdGFsLCBjb25zdCBWZWN0b3I8QXBwbGVQ
YXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtPiYpOworV0VCQ09SRV9FWFBPUlQgTlNB
cnJheSAqcGxhdGZvcm1TdW1tYXJ5SXRlbXMoY29uc3QgQXBwbGVQYXlMaW5lSXRlbSYgdG90YWws
IGNvbnN0IFZlY3RvcjxBcHBsZVBheUxpbmVJdGVtPiYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2Ev
UGF5bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9jb2NvYS9QYXltZW50TWV0aG9kVXBkYXRlQ29jb2EubW0KaW5kZXggNWNlYjg2YWQwZTY4
YTI1OGQ5NDRiODc1NzI5OTBlMDBhODJiOGZmMi4uMTY0ZDExYjZkMDc2OTdhOWQwOTU5NTY1YzZm
YzFkNjg3OGZhYTUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9jb2NvYS9QYXltZW50TWV0aG9kVXBkYXRlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0aG9kVXBkYXRlQ29jb2EubW0KQEAgLTMz
LDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXltZW50TWV0aG9kVXBkYXRl
OjpQYXltZW50TWV0aG9kVXBkYXRlKExpbmVJdGVtJiYgdG90YWwsIFZlY3RvcjxMaW5lSXRlbT4m
JiBsaW5lSXRlbXMpCitQYXltZW50TWV0aG9kVXBkYXRlOjpQYXltZW50TWV0aG9kVXBkYXRlKEFw
cGxlUGF5TGluZUl0ZW0mJiB0b3RhbCwgVmVjdG9yPEFwcGxlUGF5TGluZUl0ZW0+JiYgbGluZUl0
ZW1zKQogICAgIDogbV90b3RhbEFuZExpbmVJdGVtcyB7IHsgV1RGTW92ZSh0b3RhbCksIFdURk1v
dmUobGluZUl0ZW1zKSB9IH0KICAgICAsIG1fcGxhdGZvcm1VcGRhdGUgeyBhZG9wdE5TKFtQQUw6
OmFsbG9jUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGVJbnN0YW5jZSgpIGluaXRX
aXRoUGF5bWVudFN1bW1hcnlJdGVtczpwbGF0Zm9ybVN1bW1hcnlJdGVtcygqbV90b3RhbEFuZExp
bmVJdGVtcyldKSB9CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L2NvY29hL1BheW1lbnRTdW1tYXJ5SXRlbXNDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudFN1bW1hcnlJdGVtc0NvY29hLm1tCmluZGV4IDhh
ODcyNGE3NjQ4NTBkNmYwNzVmMDQ5ZDljMThlNmEwZjVhZjYxZjcuLmU3OTlhOWNjZDk1MWRiMzAz
YmE2MjcwY2E5MzI0MWMwZDg0NzQ0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudFN1bW1hcnlJdGVtc0NvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudFN1bW1hcnlJdGVtc0NvY29h
Lm1tCkBAIC0zOSwyNyArMzksMzMgQEAgc3RhdGljIE5TRGVjaW1hbE51bWJlciAqdG9EZWNpbWFs
TnVtYmVyKGNvbnN0IFN0cmluZyYgYW1vdW50KQogICAgIHJldHVybiBbTlNEZWNpbWFsTnVtYmVy
IGRlY2ltYWxOdW1iZXJXaXRoU3RyaW5nOmFtb3VudCBsb2NhbGU6QHsgTlNMb2NhbGVEZWNpbWFs
U2VwYXJhdG9yIDogQCIuIiB9XTsKIH0KIAotc3RhdGljIFBLUGF5bWVudFN1bW1hcnlJdGVtVHlw
ZSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtVHlwZShBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dDo6TGluZUl0ZW06OlR5cGUgdHlwZSkKK3N0YXRpYyBQS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUg
dG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUoQXBwbGVQYXlMaW5lSXRlbTo6VHlwZSB0eXBlKQog
ewogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJl
cXVlc3Q6OkxpbmVJdGVtOjpUeXBlOjpGaW5hbDoKKyAgICBjYXNlIEFwcGxlUGF5TGluZUl0ZW06
OlR5cGU6OkZpbmFsOgogICAgICAgICByZXR1cm4gUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlRmlu
YWw7Ci0gICAgY2FzZSBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW06OlR5
cGU6OlBlbmRpbmc6CisgICAgY2FzZSBBcHBsZVBheUxpbmVJdGVtOjpUeXBlOjpQZW5kaW5nOgog
ICAgICAgICByZXR1cm4gUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlUGVuZGluZzsKICAgICB9CiB9
CiAKLXN0YXRpYyBQS1BheW1lbnRTdW1tYXJ5SXRlbSAqdG9QS1BheW1lbnRTdW1tYXJ5SXRlbShj
b25zdCBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0mIGxpbmVJdGVtKQor
I2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvUGF5
bWVudFN1bW1hcnlJdGVtc0NvY29hQWRkaXRpb25zLm1tPgorI2VuZGlmCisKKyNpZiAhRU5BQkxF
KEFQUExFX1BBWV9MSU5FX0lURU1fREFUQSkKK3N0YXRpYyBQS1BheW1lbnRTdW1tYXJ5SXRlbSAq
dG9QS1BheW1lbnRTdW1tYXJ5SXRlbShjb25zdCBBcHBsZVBheUxpbmVJdGVtJiBsaW5lSXRlbSkK
IHsKICAgICByZXR1cm4gW1BBTDo6Z2V0UEtQYXltZW50U3VtbWFyeUl0ZW1DbGFzcygpIHN1bW1h
cnlJdGVtV2l0aExhYmVsOmxpbmVJdGVtLmxhYmVsIGFtb3VudDp0b0RlY2ltYWxOdW1iZXIobGlu
ZUl0ZW0uYW1vdW50KSB0eXBlOnRvUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlKGxpbmVJdGVtLnR5
cGUpXTsKIH0KKyNlbmRpZgogCiBOU0FycmF5ICpwbGF0Zm9ybVN1bW1hcnlJdGVtcyhjb25zdCBB
cHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXMmIHRvdGFsQW5k
TGluZUl0ZW1zKQogewogICAgIHJldHVybiBwbGF0Zm9ybVN1bW1hcnlJdGVtcyh0b3RhbEFuZExp
bmVJdGVtcy50b3RhbCwgdG90YWxBbmRMaW5lSXRlbXMubGluZUl0ZW1zKTsKIH0KIAotTlNBcnJh
eSAqcGxhdGZvcm1TdW1tYXJ5SXRlbXMoY29uc3QgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3Q6OkxpbmVJdGVtJiB0b3RhbCwgY29uc3QgVmVjdG9yPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRS
ZXF1ZXN0OjpMaW5lSXRlbT4mIGxpbmVJdGVtcykKK05TQXJyYXkgKnBsYXRmb3JtU3VtbWFyeUl0
ZW1zKGNvbnN0IEFwcGxlUGF5TGluZUl0ZW0mIHRvdGFsLCBjb25zdCBWZWN0b3I8QXBwbGVQYXlM
aW5lSXRlbT4mIGxpbmVJdGVtcykKIHsKICAgICBOU011dGFibGVBcnJheSAqcGF5bWVudFN1bW1h
cnlJdGVtcyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpsaW5lSXRlbXMuc2l6
ZSgpICsgMV07CiAgICAgZm9yIChhdXRvJiBsaW5lSXRlbSA6IGxpbmVJdGVtcykgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBs
ZVBheVBheW1lbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
cGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHAKaW5kZXggMDUwOTZhMzU1
YjI4Mzc0MTAzMGRhNWQ2MDFlOWQyMjMzNzkwYTRiOC4uN2VjMDM3MGZmZWZlMzM2Mjg5MWZmMTUy
N2QyZTE4YWU1ZDFiODk2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVu
dEhhbmRsZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJBZGRyZXNzRXJyb3Jz
LmgiCiAjaW5jbHVkZSAiQXBwbGVQYXlDb250YWN0RmllbGQuaCIKKyNpbmNsdWRlICJBcHBsZVBh
eUxpbmVJdGVtLmgiCiAjaW5jbHVkZSAiQXBwbGVQYXlNZXJjaGFudENhcGFiaWxpdHkuaCIKICNp
bmNsdWRlICJBcHBsZVBheU1vZGlmaWVyLmgiCiAjaW5jbHVkZSAiQXBwbGVQYXlQYXltZW50Lmgi
CkBAIC0zOCw2ICszOSw3IEBACiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiSlNBcHBsZVBheUVycm9yLmgiCisjaW5jbHVkZSAiSlNBcHBsZVBh
eUxpbmVJdGVtRGF0YS5oIgogI2luY2x1ZGUgIkpTQXBwbGVQYXlQYXltZW50LmgiCiAjaW5jbHVk
ZSAiSlNBcHBsZVBheVBheW1lbnRNZXRob2QuaCIKICNpbmNsdWRlICJKU0FwcGxlUGF5UmVxdWVz
dC5oIgpAQCAtNjEsNiArNjMsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjaWYgVVNF
KEFQUExFX0lOVEVSTkFMX1NESykKKyNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBwbGVQYXlQ
YXltZW50SGFuZGxlckFkZGl0aW9ucy5jcHA+CisjZW5kaWYKKwogc3RhdGljIEV4Y2VwdGlvbk9y
PEFwcGxlUGF5UmVxdWVzdD4gY29udmVydEFuZFZhbGlkYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIEpTQzo6SlNWYWx1ZSBkYXRhKQogewogICAgIGlmIChkYXRhLmlzRW1wdHko
KSkKQEAgLTEyOCwyNSArMTM0LDQ4IEBAIHN0YXRpYyBFeGNlcHRpb25Pcjx2b2lkPiB2YWxpZGF0
ZShjb25zdCBQYXltZW50Q3VycmVuY3lBbW91bnQmIGFtb3VudCwgY29uc3QgU3RyCiAgICAgcmV0
dXJuIHsgfTsKIH0KIAotc3RhdGljIEV4Y2VwdGlvbk9yPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRS
ZXF1ZXN0OjpMaW5lSXRlbT4gY29udmVydEFuZFZhbGlkYXRlKGNvbnN0IFBheW1lbnRJdGVtJiBp
dGVtLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkQ3VycmVuY3kpCisjaWYgIUVOQUJMRShBUFBMRV9Q
QVlfTElORV9JVEVNX0RBVEEpCitzdGF0aWMgdm9pZCBtZXJnZShBcHBsZVBheUxpbmVJdGVtJiwg
QXBwbGVQYXlMaW5lSXRlbURhdGEmJikgeyB9CisjZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BBWV9M
SU5FX0lURU1fREFUQSkKKworc3RhdGljIEV4Y2VwdGlvbk9yPEFwcGxlUGF5TGluZUl0ZW0+IGNv
bnZlcnRBbmRWYWxpZGF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBQ
YXltZW50SXRlbSYgaXRlbSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZEN1cnJlbmN5KQogewogICAg
IGF1dG8gZXhjZXB0aW9uID0gdmFsaWRhdGUoaXRlbS5hbW91bnQsIGV4cGVjdGVkQ3VycmVuY3kp
OwogICAgIGlmIChleGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBleGNl
cHRpb24ucmVsZWFzZUV4Y2VwdGlvbigpOwogCi0gICAgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJl
cXVlc3Q6OkxpbmVJdGVtIGxpbmVJdGVtOworCisgICAgQXBwbGVQYXlMaW5lSXRlbSBsaW5lSXRl
bTsKICAgICBsaW5lSXRlbS5hbW91bnQgPSBpdGVtLmFtb3VudC52YWx1ZTsKLSAgICBsaW5lSXRl
bS50eXBlID0gaXRlbS5wZW5kaW5nID8gQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6Okxp
bmVJdGVtOjpUeXBlOjpQZW5kaW5nIDogQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6Okxp
bmVJdGVtOjpUeXBlOjpGaW5hbDsKKyAgICBsaW5lSXRlbS50eXBlID0gaXRlbS5wZW5kaW5nID8g
QXBwbGVQYXlMaW5lSXRlbTo6VHlwZTo6UGVuZGluZyA6IEFwcGxlUGF5TGluZUl0ZW06OlR5cGU6
OkZpbmFsOwogICAgIGxpbmVJdGVtLmxhYmVsID0gaXRlbS5sYWJlbDsKKworICAgIGlmICghaXRl
bS5zZXJpYWxpemVkRGF0YS5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byYgbGV4aWNhbEdsb2Jh
bE9iamVjdCA9ICpjb250ZXh0Lmdsb2JhbE9iamVjdCgpOworICAgICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCkpOworICAgICAgICBK
U0M6OkpTVmFsdWUgZGF0YTsKKyAgICAgICAgeworICAgICAgICAgICAgSlNDOjpKU0xvY2tIb2xk
ZXIgbG9jaygmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICBkYXRhID0gSlNPTlBh
cnNlKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBpdGVtLnNlcmlhbGl6ZWREYXRhKTsKKyAgICAgICAg
ICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9OworICAgICAgICB9CisKKyAgICAgICAgYXV0
byBhcHBsZVBheUxpbmVJdGVtRGF0YSA9IGNvbnZlcnREaWN0aW9uYXJ5PEFwcGxlUGF5TGluZUl0
ZW1EYXRhPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgaWYg
KHNjb3BlLmV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEV4aXN0
aW5nRXhjZXB0aW9uRXJyb3IgfTsKKyAgICAgICAgbWVyZ2UobGluZUl0ZW0sIFdURk1vdmUoYXBw
bGVQYXlMaW5lSXRlbURhdGEpKTsKKyAgICB9CisKICAgICByZXR1cm4geyBXVEZNb3ZlKGxpbmVJ
dGVtKSB9OwogfQogCi1zdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPEFwcGxlUGF5U2Vzc2lvblBh
eW1lbnRSZXF1ZXN0OjpMaW5lSXRlbT4+IGNvbnZlcnRBbmRWYWxpZGF0ZShjb25zdCBWZWN0b3I8
UGF5bWVudEl0ZW0+JiBsaW5lSXRlbXMsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRDdXJyZW5jeSkK
K3N0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8QXBwbGVQYXlMaW5lSXRlbT4+IGNvbnZlcnRBbmRW
YWxpZGF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBWZWN0b3I8UGF5
bWVudEl0ZW0+JiBsaW5lSXRlbXMsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRDdXJyZW5jeSkKIHsK
LSAgICBWZWN0b3I8QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtPiByZXN1
bHQ7CisgICAgVmVjdG9yPEFwcGxlUGF5TGluZUl0ZW0+IHJlc3VsdDsKICAgICByZXN1bHQucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShsaW5lSXRlbXMuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIGxp
bmVJdGVtIDogbGluZUl0ZW1zKSB7Ci0gICAgICAgIGF1dG8gY29udmVydGVkTGluZUl0ZW0gPSBj
b252ZXJ0QW5kVmFsaWRhdGUobGluZUl0ZW0sIGV4cGVjdGVkQ3VycmVuY3kpOworICAgICAgICBh
dXRvIGNvbnZlcnRlZExpbmVJdGVtID0gY29udmVydEFuZFZhbGlkYXRlKGNvbnRleHQsIGxpbmVJ
dGVtLCBleHBlY3RlZEN1cnJlbmN5KTsKICAgICAgICAgaWYgKGNvbnZlcnRlZExpbmVJdGVtLmhh
c0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlZExpbmVJdGVtLnJlbGVh
c2VFeGNlcHRpb24oKTsKICAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChjb252ZXJ0ZWRM
aW5lSXRlbS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CkBAIC0yMjMsMTIgKzI1MiwxMiBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpzaG93KERvY3VtZW50JiBkb2N1
bWVudCkKICAgICBTdHJpbmcgZXhwZWN0ZWRDdXJyZW5jeSA9IGRldGFpbHMudG90YWwuYW1vdW50
LmN1cnJlbmN5OwogICAgIHJlcXVlc3Quc2V0Q3VycmVuY3lDb2RlKGV4cGVjdGVkQ3VycmVuY3kp
OwogCi0gICAgYXV0byB0b3RhbCA9IGNvbnZlcnRBbmRWYWxpZGF0ZShkZXRhaWxzLnRvdGFsLCBl
eHBlY3RlZEN1cnJlbmN5KTsKKyAgICBhdXRvIHRvdGFsID0gY29udmVydEFuZFZhbGlkYXRlKCpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGRldGFpbHMudG90YWwsIGV4cGVjdGVkQ3VycmVuY3kp
OwogICAgIEFTU0VSVCghdG90YWwuaGFzRXhjZXB0aW9uKCkpOwogICAgIHJlcXVlc3Quc2V0VG90
YWwodG90YWwucmVsZWFzZVJldHVyblZhbHVlKCkpOwogCiAgICAgaWYgKGRldGFpbHMuZGlzcGxh
eUl0ZW1zKSB7Ci0gICAgICAgIGF1dG8gY29udmVydGVkTGluZUl0ZW1zID0gY29udmVydEFuZFZh
bGlkYXRlKCpkZXRhaWxzLmRpc3BsYXlJdGVtcywgZXhwZWN0ZWRDdXJyZW5jeSk7CisgICAgICAg
IGF1dG8gY29udmVydGVkTGluZUl0ZW1zID0gY29udmVydEFuZFZhbGlkYXRlKCpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksICpkZXRhaWxzLmRpc3BsYXlJdGVtcywgZXhwZWN0ZWRDdXJyZW5jeSk7
CiAgICAgICAgIGlmIChjb252ZXJ0ZWRMaW5lSXRlbXMuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAg
ICAgICByZXR1cm4gY29udmVydGVkTGluZUl0ZW1zLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAg
ICAgcmVxdWVzdC5zZXRMaW5lSXRlbXMoY29udmVydGVkTGluZUl0ZW1zLnJlbGVhc2VSZXR1cm5W
YWx1ZSgpKTsKQEAgLTI4NiwxNCArMzE1LDE0IEBAIEV4Y2VwdGlvbk9yPEFwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4gQXBwbGVQYXlQYXltZW50SGFuCiAg
ICAgYXV0byYgZGV0YWlscyA9IG1fcGF5bWVudFJlcXVlc3QtPnBheW1lbnREZXRhaWxzKCk7CiAg
ICAgU3RyaW5nIGN1cnJlbmN5ID0gZGV0YWlscy50b3RhbC5hbW91bnQuY3VycmVuY3k7CiAKLSAg
ICBhdXRvIGNvbnZlcnRlZFRvdGFsID0gY29udmVydEFuZFZhbGlkYXRlKGRldGFpbHMudG90YWws
IGN1cnJlbmN5KTsKKyAgICBhdXRvIGNvbnZlcnRlZFRvdGFsID0gY29udmVydEFuZFZhbGlkYXRl
KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGRldGFpbHMudG90YWwsIGN1cnJlbmN5KTsKICAg
ICBpZiAoY29udmVydGVkVG90YWwuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBjb252
ZXJ0ZWRUb3RhbC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgYXV0byB0b3RhbCA9IGNvbnZlcnRl
ZFRvdGFsLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogCi0gICAgVmVjdG9yPEFwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbT4gbGluZUl0ZW1zOworICAgIFZlY3RvcjxBcHBsZVBh
eUxpbmVJdGVtPiBsaW5lSXRlbXM7CiAgICAgaWYgKGRldGFpbHMuZGlzcGxheUl0ZW1zKSB7Ci0g
ICAgICAgIGF1dG8gY29udmVydGVkTGluZUl0ZW1zID0gY29udmVydEFuZFZhbGlkYXRlKCpkZXRh
aWxzLmRpc3BsYXlJdGVtcywgY3VycmVuY3kpOworICAgICAgICBhdXRvIGNvbnZlcnRlZExpbmVJ
dGVtcyA9IGNvbnZlcnRBbmRWYWxpZGF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqZGV0
YWlscy5kaXNwbGF5SXRlbXMsIGN1cnJlbmN5KTsKICAgICAgICAgaWYgKGNvbnZlcnRlZExpbmVJ
dGVtcy5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZWRMaW5lSXRl
bXMucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICBsaW5lSXRlbXMgPSBjb252ZXJ0ZWRMaW5l
SXRlbXMucmVsZWFzZVJldHVyblZhbHVlKCk7CkBAIC0zMzMsMTMgKzM2MiwxMyBAQCBFeGNlcHRp
b25PcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+IEFw
cGxlUGF5UGF5bWVudEhhbgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAg
ICBpZiAobW9kaWZpZXIudG90YWwpIHsKLSAgICAgICAgICAgICAgICBhdXRvIHRvdGFsT3ZlcnJp
ZGUgPSBjb252ZXJ0QW5kVmFsaWRhdGUoKm1vZGlmaWVyLnRvdGFsLCBjdXJyZW5jeSk7CisgICAg
ICAgICAgICAgICAgYXV0byB0b3RhbE92ZXJyaWRlID0gY29udmVydEFuZFZhbGlkYXRlKCpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksICptb2RpZmllci50b3RhbCwgY3VycmVuY3kpOwogICAgICAg
ICAgICAgICAgIGlmICh0b3RhbE92ZXJyaWRlLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdG90YWxPdmVycmlkZS5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAg
ICAgICAgICAgdG90YWwgPSB0b3RhbE92ZXJyaWRlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGFkZGl0aW9uYWxEaXNwbGF5SXRlbXMgPSBj
b252ZXJ0QW5kVmFsaWRhdGUobW9kaWZpZXIuYWRkaXRpb25hbERpc3BsYXlJdGVtcywgY3VycmVu
Y3kpOworICAgICAgICAgICAgYXV0byBhZGRpdGlvbmFsRGlzcGxheUl0ZW1zID0gY29udmVydEFu
ZFZhbGlkYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1vZGlmaWVyLmFkZGl0aW9uYWxE
aXNwbGF5SXRlbXMsIGN1cnJlbmN5KTsKICAgICAgICAgICAgIGlmIChhZGRpdGlvbmFsRGlzcGxh
eUl0ZW1zLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBhZGRpdGlvbmFs
RGlzcGxheUl0ZW1zLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIGxpbmVJdGVtcy5h
cHBlbmRWZWN0b3IoYWRkaXRpb25hbERpc3BsYXlJdGVtcy5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1l
bnRJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRJ
dGVtLmgKaW5kZXggZDU3OTQ3NmZmNDgzMTI2NWMzYjdjM2Q2NTE0OWRkYzA1NTRiYTZiZi4uZjE1
YjllYWVhZWU0NjRlNzg5OTEyYzdkZTZmNDBiNjdiNzZhNzJiMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SXRlbS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudEl0ZW0uaApAQCAtMjgsNiAr
MjgsOCBAQAogI2lmIEVOQUJMRShQQVlNRU5UX1JFUVVFU1QpCiAKICNpbmNsdWRlICJQYXltZW50
Q3VycmVuY3lBbW91bnQuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdC5oPgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNiw2ICszOCwxMCBAQCBzdHJ1
Y3QgUGF5bWVudEl0ZW0gewogICAgIFN0cmluZyBsYWJlbDsKICAgICBQYXltZW50Q3VycmVuY3lB
bW91bnQgYW1vdW50OwogICAgIGJvb2wgcGVuZGluZyB7IGZhbHNlIH07CisgICAgSlNDOjpTdHJv
bmc8SlNDOjpKU09iamVjdD4gZGF0YTsKKworICAgIC8vIE5vdCBmcm9tIHRoZSBJREwuIFNldCBi
eSBgZGF0YWAgd2hlbiB0aGlzIGlzIHZhbGlkYXRlZCBieSBgUGF5bWVudFJlcXVlc3RgLgorICAg
IFN0cmluZyBzZXJpYWxpemVkRGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudEl0
ZW0uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SXRl
bS5pZGwKaW5kZXggZGExYWU3ZjNhM2Y3OGI1YzI3MzVhYzY1ZWZiMGFjZGE5MmRhZmUzNC4uMWMw
YmM2NmZlMzE1ZTI2YWM4NWIxOTM3OGNiNzA2YzE1MzNlNWUxMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SXRlbS5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SXRlbS5pZGwKQEAgLTI5
LDQgKzI5LDUgQEAKICAgICByZXF1aXJlZCBET01TdHJpbmcgbGFiZWw7CiAgICAgcmVxdWlyZWQg
UGF5bWVudEN1cnJlbmN5QW1vdW50IGFtb3VudDsKICAgICBib29sZWFuIHBlbmRpbmcgPSBmYWxz
ZTsKKyAgICBvYmplY3QgZGF0YTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCmluZGV4IDI4OGJhNWUwZTdj
YjI3YTFkNmRiMjJhNjk5MzI4NWM1NjQ3NWI3M2YuLmVlMGQzYWFlYjY3ZjA0MGYwNjk0ODg5ZWNm
NzU1NDE0NjU5NWNlYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVu
dHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCkBAIC0xNDEsNiArMTQxLDIxIEBAIHN0
YXRpYyBib29sIGlzVmFsaWREZWNpbWFsTW9uZXRhcnlWYWx1ZShTdHJpbmdWaWV3IHZhbHVlKQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0YXRpYyBFeGNl
cHRpb25PcjxTdHJpbmc+IGNoZWNrQW5kQ2Fub25pY2FsaXplRGF0YShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBUJiB2YWx1ZSkKK3sKKyAgICBTdHJpbmcgc2VyaWFsaXplZERhdGE7
CisgICAgaWYgKHZhbHVlLmRhdGEpIHsKKyAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gY29u
dGV4dC5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUoZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAgc2VyaWFsaXplZERhdGEgPSBKU09O
U3RyaW5naWZ5KGdsb2JhbE9iamVjdCwgdmFsdWUuZGF0YS5nZXQoKSwgMCk7CisgICAgICAgIGlm
IChzY29wZS5leGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBFeGlz
dGluZ0V4Y2VwdGlvbkVycm9yIH07CisgICAgICAgIHZhbHVlLmRhdGEuY2xlYXIoKTsKKyAgICB9
CisgICAgcmV0dXJuIHsgV1RGTW92ZShzZXJpYWxpemVkRGF0YSkgfTsKK30KKwogLy8gSW1wbGVt
ZW50cyB0aGUgImNoZWNrIGFuZCBjYW5vbmljYWxpemUgYW1vdW50IiB2YWxpZGl0eSBjaGVja2Vy
CiAvLyBodHRwczovL3d3dy53My5vcmcvVFIvcGF5bWVudC1yZXF1ZXN0LyNkZm4tY2hlY2stYW5k
LWNhbm9uaWNhbGl6ZS1hbW91bnQKIHN0YXRpYyBFeGNlcHRpb25Pcjx2b2lkPiBjaGVja0FuZENh
bm9uaWNhbGl6ZUFtb3VudChQYXltZW50Q3VycmVuY3lBbW91bnQmIGFtb3VudCkKQEAgLTE1NSwy
MCArMTcwLDM0IEBAIHN0YXRpYyBFeGNlcHRpb25Pcjx2b2lkPiBjaGVja0FuZENhbm9uaWNhbGl6
ZUFtb3VudChQYXltZW50Q3VycmVuY3lBbW91bnQmIGFtb3VuCiAgICAgcmV0dXJuIHsgfTsKIH0K
IAotLy8gSW1wbGVtZW50cyB0aGUgImNoZWNrIGFuZCBjYW5vbmljYWxpemUgdG90YWwiIHZhbGlk
aXR5IGNoZWNrZXIKLS8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9wYXltZW50LXJlcXVlc3QvI2Rm
bi1jaGVjay1hbmQtY2Fub25pY2FsaXplLXRvdGFsCi1zdGF0aWMgRXhjZXB0aW9uT3I8dm9pZD4g
Y2hlY2tBbmRDYW5vbmljYWxpemVUb3RhbChQYXltZW50Q3VycmVuY3lBbW91bnQmIHRvdGFsKQor
ZW51bSBjbGFzcyBOZWdhdGl2ZUFtb3VudEFsbG93ZWQgeyBZZXMsIE5vIH07CitzdGF0aWMgRXhj
ZXB0aW9uT3I8dm9pZD4gY2hlY2tBbmRDYW5vbmljYWxpemVQYXltZW50SXRlbShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBQYXltZW50SXRlbSYgaXRlbSwgTmVnYXRpdmVBbW91bnRB
bGxvd2VkIG5lZ2F0aXZlQW1vdW50QWxsb3dlZCkKIHsKLSAgICBhdXRvIGV4Y2VwdGlvbiA9IGNo
ZWNrQW5kQ2Fub25pY2FsaXplQW1vdW50KHRvdGFsKTsKKyAgICBhdXRvIGV4Y2VwdGlvbiA9IGNo
ZWNrQW5kQ2Fub25pY2FsaXplQW1vdW50KGl0ZW0uYW1vdW50KTsKICAgICBpZiAoZXhjZXB0aW9u
Lmhhc0V4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gZXhjZXB0aW9uOworICAgICAgICByZXR1
cm4gZXhjZXB0aW9uLnJlbGVhc2VFeGNlcHRpb24oKTsKIAotICAgIGlmICh0b3RhbC52YWx1ZVsw
XSA9PSAnLScpCisgICAgaWYgKG5lZ2F0aXZlQW1vdW50QWxsb3dlZCA9PSBOZWdhdGl2ZUFtb3Vu
dEFsbG93ZWQ6Ok5vICYmIGl0ZW0uYW1vdW50LnZhbHVlWzBdID09ICctJykKICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlRvdGFsIGN1cnJlbmN5IHZhbHVlcyBjYW5ub3Qg
YmUgbmVnYXRpdmUuIl9zIH07CiAKKyAgICBpZiAoaXRlbS5kYXRhKSB7CisgICAgICAgIGF1dG8g
ZGF0YVJlc3VsdCA9IGNoZWNrQW5kQ2Fub25pY2FsaXplRGF0YShjb250ZXh0LCBpdGVtKTsKKyAg
ICAgICAgaWYgKGRhdGFSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4g
ZGF0YVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICAgICAgaXRlbS5zZXJpYWxpemVk
RGF0YSA9IGRhdGFSZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgfQorCiAgICAgcmV0
dXJuIHsgfTsKIH0KIAorLy8gSW1wbGVtZW50cyB0aGUgImNoZWNrIGFuZCBjYW5vbmljYWxpemUg
dG90YWwiIHZhbGlkaXR5IGNoZWNrZXIKKy8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9wYXltZW50
LXJlcXVlc3QvI2Rmbi1jaGVjay1hbmQtY2Fub25pY2FsaXplLXRvdGFsCitzdGF0aWMgRXhjZXB0
aW9uT3I8dm9pZD4gY2hlY2tBbmRDYW5vbmljYWxpemVUb3RhbChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBQYXltZW50SXRlbSYgdG90YWwpCit7CisgICAgcmV0dXJuIGNoZWNrQW5k
Q2Fub25pY2FsaXplUGF5bWVudEl0ZW0oY29udGV4dCwgdG90YWwsIE5lZ2F0aXZlQW1vdW50QWxs
b3dlZDo6Tm8pOworfQorCiAvLyBJbXBsZW1lbnRzICJ2YWxpZGF0ZSBhIHN0YW5kYXJkaXplZCBw
YXltZW50IG1ldGhvZCBpZGVudGlmaWVyIgogLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3BheW1l
bnQtbWV0aG9kLWlkLyN2YWxpZGl0eS0wCiBzdGF0aWMgYm9vbCBpc1ZhbGlkU3RhbmRhcmRpemVk
UGF5bWVudE1ldGhvZElkZW50aWZpZXIoU3RyaW5nVmlldyBpZGVudGlmaWVyKQpAQCAtMjQ5LDkg
KzI3OCw5IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnR1cGxlPFN0cmluZywgVmVjdG9yPFN0
cmluZz4+PiBjaGVja0FuZENhbm9uaWNhbGl6ZURldGFpCiB7CiAgICAgaWYgKGRldGFpbHMuZGlz
cGxheUl0ZW1zKSB7CiAgICAgICAgIGZvciAoYXV0byYgaXRlbSA6ICpkZXRhaWxzLmRpc3BsYXlJ
dGVtcykgewotICAgICAgICAgICAgYXV0byBleGNlcHRpb24gPSBjaGVja0FuZENhbm9uaWNhbGl6
ZUFtb3VudChpdGVtLmFtb3VudCk7Ci0gICAgICAgICAgICBpZiAoZXhjZXB0aW9uLmhhc0V4Y2Vw
dGlvbigpKQotICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24ucmVsZWFzZUV4Y2VwdGlv
bigpOworICAgICAgICAgICAgYXV0byBwYXltZW50SXRlbVJlc3VsdCA9IGNoZWNrQW5kQ2Fub25p
Y2FsaXplUGF5bWVudEl0ZW0oY29udGV4dCwgaXRlbSwgTmVnYXRpdmVBbW91bnRBbGxvd2VkOjpZ
ZXMpOworICAgICAgICAgICAgaWYgKHBheW1lbnRJdGVtUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBwYXltZW50SXRlbVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9u
KCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI5MiwyNSArMzIxLDI0IEBAIHN0YXRpYyBFeGNl
cHRpb25PcjxzdGQ6OnR1cGxlPFN0cmluZywgVmVjdG9yPFN0cmluZz4+PiBjaGVja0FuZENhbm9u
aWNhbGl6ZURldGFpCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChtb2RpZmllci50
b3RhbCkgewotICAgICAgICAgICAgICAgIGF1dG8gZXhjZXB0aW9uID0gY2hlY2tBbmRDYW5vbmlj
YWxpemVUb3RhbChtb2RpZmllci50b3RhbC0+YW1vdW50KTsKLSAgICAgICAgICAgICAgICBpZiAo
ZXhjZXB0aW9uLmhhc0V4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhj
ZXB0aW9uLnJlbGVhc2VFeGNlcHRpb24oKTsKKyAgICAgICAgICAgICAgICBhdXRvIHRvdGFsUmVz
dWx0ID0gY2hlY2tBbmRDYW5vbmljYWxpemVUb3RhbChjb250ZXh0LCAqbW9kaWZpZXIudG90YWwp
OworICAgICAgICAgICAgICAgIGlmICh0b3RhbFJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgZm9yIChhdXRvJiBpdGVtIDogbW9kaWZpZXIuYWRk
aXRpb25hbERpc3BsYXlJdGVtcykgewotICAgICAgICAgICAgICAgIGF1dG8gZXhjZXB0aW9uID0g
Y2hlY2tBbmRDYW5vbmljYWxpemVBbW91bnQoaXRlbS5hbW91bnQpOwotICAgICAgICAgICAgICAg
IGlmIChleGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBleGNlcHRpb24ucmVsZWFzZUV4Y2VwdGlvbigpOworICAgICAgICAgICAgICAgIGF1dG8gcGF5
bWVudEl0ZW1SZXN1bHQgPSBjaGVja0FuZENhbm9uaWNhbGl6ZVBheW1lbnRJdGVtKGNvbnRleHQs
IGl0ZW0sIE5lZ2F0aXZlQW1vdW50QWxsb3dlZDo6WWVzKTsKKyAgICAgICAgICAgICAgICBpZiAo
cGF5bWVudEl0ZW1SZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBwYXltZW50SXRlbVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIFN0cmluZyBzZXJpYWxpemVkRGF0YTsKICAgICAgICAgICAgIGlmICht
b2RpZmllci5kYXRhKSB7Ci0gICAgICAgICAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gY29u
dGV4dC5nbG9iYWxPYmplY3QoKTsKLSAgICAgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRShnbG9iYWxPYmplY3QtPnZtKCkpOwotICAgICAgICAgICAgICAgIHNlcmlh
bGl6ZWREYXRhID0gSlNPTlN0cmluZ2lmeShnbG9iYWxPYmplY3QsIG1vZGlmaWVyLmRhdGEuZ2V0
KCksIDApOwotICAgICAgICAgICAgICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfTsK
LSAgICAgICAgICAgICAgICBtb2RpZmllci5kYXRhLmNsZWFyKCk7CisgICAgICAgICAgICAgICAg
YXV0byBkYXRhUmVzdWx0ID0gY2hlY2tBbmRDYW5vbmljYWxpemVEYXRhKGNvbnRleHQsIG1vZGlm
aWVyKTsKKyAgICAgICAgICAgICAgICBpZiAoZGF0YVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwor
CisgICAgICAgICAgICAgICAgc2VyaWFsaXplZERhdGEgPSBkYXRhUmVzdWx0LnJlbGVhc2VSZXR1
cm5WYWx1ZSgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgc2VyaWFsaXplZE1vZGlmaWVy
RGF0YS51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShzZXJpYWxpemVkRGF0YSkpOwogICAgICAgICB9
CkBAIC0zODAsNyArNDA4LDcgQEAgRXhjZXB0aW9uT3I8UmVmPFBheW1lbnRSZXF1ZXN0Pj4gUGF5
bWVudFJlcXVlc3Q6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFZlY3QKICAgICAgICAgc2Vy
aWFsaXplZE1ldGhvZERhdGEudW5jaGVja2VkQXBwZW5kKHsgV1RGTW92ZSgqaWRlbnRpZmllciks
IFdURk1vdmUoc2VyaWFsaXplZERhdGEpIH0pOwogICAgIH0KIAotICAgIGF1dG8gdG90YWxSZXN1
bHQgPSBjaGVja0FuZENhbm9uaWNhbGl6ZVRvdGFsKGRldGFpbHMudG90YWwuYW1vdW50KTsKKyAg
ICBhdXRvIHRvdGFsUmVzdWx0ID0gY2hlY2tBbmRDYW5vbmljYWxpemVUb3RhbChkb2N1bWVudCwg
ZGV0YWlscy50b3RhbCk7CiAgICAgaWYgKHRvdGFsUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm4gdG90YWxSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogCkBAIC02ODEsNyAr
NzA5LDcgQEAgdm9pZCBQYXltZW50UmVxdWVzdDo6c2V0dGxlRGV0YWlsc1Byb21pc2UoVXBkYXRl
UmVhc29uIHJlYXNvbikKICAgICB9CiAKICAgICBpZiAoZGV0YWlsc1VwZGF0ZS50b3RhbCkgewot
ICAgICAgICBhdXRvIHRvdGFsUmVzdWx0ID0gY2hlY2tBbmRDYW5vbmljYWxpemVUb3RhbChkZXRh
aWxzVXBkYXRlLnRvdGFsLT5hbW91bnQpOworICAgICAgICBhdXRvIHRvdGFsUmVzdWx0ID0gY2hl
Y2tBbmRDYW5vbmljYWxpemVUb3RhbChjb250ZXh0LCAqZGV0YWlsc1VwZGF0ZS50b3RhbCk7CiAg
ICAgICAgIGlmICh0b3RhbFJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgYWJv
cnRXaXRoRXhjZXB0aW9uKHRvdGFsUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bh
c3NLaXRTb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29m
dExpbmsuaAppbmRleCA3N2VhZGIzNGZhMTBjNDI0OWFmNWY3ZGE2NmQzMWNjYzJiNzkwNTAzLi42
ZmE2ZmFiMWNkMDU5YjZiMTM1MTFhNDA1MmExMGI4YTQwYmNjOTg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmgKQEAgLTc4LDQgKzc4LDggQEAg
U09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRFcnJv
clBvc3RhbEFkZHJlc3NVc2VySW5mb0sKIAogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIo
UEFMLCBQYXNzS2l0LCBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21h
aW5BbmRTb3VyY2VBcHBsaWNhdGlvbiwgdm9pZCwgKE5TU3RyaW5nICppZGVudGlmaWVyLCBOU1N0
cmluZyAqZG9tYWluLCBOU1N0cmluZyAqc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlm
aWVyLCBQS0Nhbk1ha2VQYXltZW50c0NvbXBsZXRpb24gY29tcGxldGlvbiksIChpZGVudGlmaWVy
LCBkb21haW4sIHNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciwgY29tcGxldGlv
bikpCiAKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2ltcG9ydCA8V2ViS2l0QWRkaXRp
b25zL1Bhc3NLaXRTb2Z0TGlua0FkZGl0aW9ucy5oPgorI2VuZGlmCisKICNlbmRpZiAvLyBVU0Uo
UEFTU0tJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tp
dFNvZnRMaW5rLm1tIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29mdExp
bmsubW0KaW5kZXggYWI4NzNiOWM1ZmMxZTcyZjdhZmY4MzU3ODQ2ZTRmM2RmMTYwYjU3Zi4uNjVm
YTExZmM0NWM3Y2JmNjljYWEyN2U3MjQ0N2IzNzRiNTM1YTI0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsubW0KQEAgLTkxLDQgKzkxLDggQEAg
U09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQ
S1BheW1lbnRFcnJvclBvc3RhbEFkZHIKIAogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0Vf
V0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElk
ZW50aWZpZXJEb21haW5BbmRTb3VyY2VBcHBsaWNhdGlvbiwgdm9pZCwgKE5TU3RyaW5nICppZGVu
dGlmaWVyLCBOU1N0cmluZyAqZG9tYWluLCBOU1N0cmluZyAqc291cmNlQXBwbGljYXRpb25TZWNv
bmRhcnlJZGVudGlmaWVyLCBQS0Nhbk1ha2VQYXltZW50c0NvbXBsZXRpb24gY29tcGxldGlvbiks
IChpZGVudGlmaWVyLCBkb21haW4sIHNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmll
ciwgY29tcGxldGlvbiksIFBBTF9FWFBPUlQpCiAKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQorI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1Bhc3NLaXRTb2Z0TGlua0FkZGl0aW9ucy5tbT4K
KyNlbmRpZgorCiAjZW5kaWYgLy8gVVNFKFBBU1NLSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmgKaW5kZXggMmI2NzhmOTFhN2Y4YmI4MmRhOTZiMjg0
YzZkYTkwY2EwNWM2YTQ2ZS4uMWUwYTIxMTEwMGZlOWEzNTcyNmVmZDBiZjZkN2ZiNmVmMGEzYjAy
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQ
SS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaApA
QCAtNTksNiArNTksOCBAQCBXVEZfRVhURVJOX0NfRU5ECiAjaW1wb3J0IDxQYXNzS2l0L1BLUGF5
bWVudFJlcXVlc3RfUHJpdmF0ZS5oPgogI2VuZGlmCiAKKyNpbXBvcnQgPFdlYktpdEFkZGl0aW9u
cy9QYXNzS2l0U1BJQWRkaXRpb25zLmg+CisKICNlbHNlCiAKICNpbXBvcnQgPEZvdW5kYXRpb24v
Rm91bmRhdGlvbi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCA3NmQwYzkzODAyNTEz
MWY3NDlmYTgxZTA5MzE1ZTViMzU0N2MxNzZkLi5hOGZhMDcyYjU4YTBkNTg5MGQxOWIxYjU2YTg3
MzA4ZTYyN2VkMmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtNjI0LDYgKzYyNCw3
IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheUluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5pZGwKICAgICBNb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5SW5zdGFsbG1lbnRSZXRhaWxDaGFubmVsLmlkbAogICAgIE1vZHVsZXMvYXBwbGVw
YXkvQXBwbGVQYXlMaW5lSXRlbS5pZGwKKyAgICBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TGlu
ZUl0ZW1EYXRhLmlkbAogICAgIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlNZXJjaGFudENhcGFi
aWxpdHkuaWRsCiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnQuaWRsCiAgICAg
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0LmlkbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMzAyODY4NTJkNGY4ODNiMjIzZjBhMWQ1OGY2ZWQ2
YzRhOTZlZTViMS4uYmY2YWUxNjE4N2FiYTA3MTU3MmRhMDc5MjNhYzMzMGIyMjhmNjljNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zMSw2ICszMSw3IEBAIEpTQXBwbGVQYXlJbnN0YWxs
bWVudEl0ZW0uY3BwCiBKU0FwcGxlUGF5SW5zdGFsbG1lbnRJdGVtVHlwZS5jcHAKIEpTQXBwbGVQ
YXlJbnN0YWxsbWVudFJldGFpbENoYW5uZWwuY3BwCiBKU0FwcGxlUGF5TGluZUl0ZW0uY3BwCitK
U0FwcGxlUGF5TGluZUl0ZW1EYXRhLmNwcAogSlNBcHBsZVBheU1lcmNoYW50Q2FwYWJpbGl0eS5j
cHAKIEpTQXBwbGVQYXlNb2RpZmllci5jcHAKIEpTQXBwbGVQYXlQYXltZW50LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI2
NzJmMGFjMzQ3MjgxNTk1NTU3ODMwNWJlYWYyYzUyNjE4ZDM2YWEuLjliMDlhZjg2MDRkMGYyNTU0
YzU2YjMzYjAxMDkzZjQyZWRjMTgzYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIzMzcsNyArMjMzNyw3IEBACiAJCTdDNjUy
MzE4MUUwMERCQjUwMDY3N0YyMiAvKiBKU0FwcGxlUGF5UGF5bWVudE1ldGhvZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M2NTIzMEUxRTAwREJCNDAw
Njc3RjIyIC8qIEpTQXBwbGVQYXlQYXltZW50TWV0aG9kLmggKi87IH07CiAJCTdDNjUyMzFBMUUw
MERCQjUwMDY3N0YyMiAvKiBKU0FwcGxlUGF5UGF5bWVudFBhc3MuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNjUyMzEwMUUwMERCQjQwMDY3N0YyMiAv
KiBKU0FwcGxlUGF5UGF5bWVudFBhc3MuaCAqLzsgfTsKIAkJN0M2NTc5RTAxRTAwNzlGOTAwRTNB
MjdBIC8qIEFwcGxlUGF5UGF5bWVudFJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNjU3OURGMUUwMDc5RjkwMEUzQTI3QSAvKiBBcHBsZVBh
eVBheW1lbnRSZXF1ZXN0LmggKi87IH07Ci0JCTdDNjU3OUUzMUUwMDgyNzAwMEUzQTI3QSAvKiBB
cHBsZVBheUxpbmVJdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzY1NzlFMjFFMDA4MjcwMDBFM0EyN0EgLyogQXBwbGVQYXlMaW5lSXRlbS5oICov
OyB9OworCQk3QzY1NzlFMzFFMDA4MjcwMDBFM0EyN0EgLyogQXBwbGVQYXlMaW5lSXRlbS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M2NTc5RTIxRTAw
ODI3MDAwRTNBMjdBIC8qIEFwcGxlUGF5TGluZUl0ZW0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzY1NzlFODFFMDA4MzE2MDBFM0EyN0EgLyog
QXBwbGVQYXlTaGlwcGluZ01ldGhvZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0M2NTc5RTcxRTAwODMxNjAwRTNBMjdBIC8qIEFwcGxlUGF5U2hpcHBp
bmdNZXRob2QuaCAqLzsgfTsKIAkJN0M2NTc5RjAxRTAwODU2NjAwRTNBMjdBIC8qIEpTQXBwbGVQ
YXlMaW5lSXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0M2NTc5RUExRTAwODU2NjAwRTNBMjdBIC8qIEpTQXBwbGVQYXlMaW5lSXRlbS5oICovOyB9
OwogCQk3QzY1NzlGMjFFMDA4NTY2MDBFM0EyN0EgLyogSlNBcHBsZVBheVBheW1lbnRSZXF1ZXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzY1NzlF
QzFFMDA4NTY2MDBFM0EyN0EgLyogSlNBcHBsZVBheVBheW1lbnRSZXF1ZXN0LmggKi87IH07CkBA
IC0yOTM5LDYgKzI5MzksOCBAQAogCQk5NEU4Mzk1NjFERkIyQkM0MDA3QkM2QTcgLyogSlNDU1NO
YW1lc3BhY2VSdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5NEU4Mzk1NDFERkIyQkE2MDA3QkM2QTcgLyogSlNDU1NOYW1lc3BhY2VSdWxlLmggKi87
IH07CiAJCTk1MjA3NjA1MUYyNjc1RkUwMDdEMkFBQiAvKiBDYWxsVHJhY2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTIwNzYwMTFGMjY3NUY5MDA3
RDJBQUIgLyogQ2FsbFRyYWNlci5oICovOyB9OwogCQk5NTIwNzYwNjFGMjY3NUZFMDA3RDJBQUIg
LyogQ2FsbFRyYWNlclR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5NTIwNzYwMjFGMjY3NUY5MDA3RDJBQUIgLyogQ2FsbFRyYWNlclR5cGVzLmgg
Ki87IH07CisJCTk1NkZDNEJCMjVENDlDN0IwMEY3QjNBMiAvKiBBcHBsZVBheUxpbmVJdGVtRGF0
YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTU2RkM0
QjgyNUQ0OUM3QTAwRjdCM0EyIC8qIEFwcGxlUGF5TGluZUl0ZW1EYXRhLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTU2RkM0QkIyNUQ0OUM3QjAw
RjdCM0EzIC8qIEpTQXBwbGVQYXlMaW5lSXRlbURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1NkZDNEJBMjVENDlDN0QwMEY3QjNBMiAvKiBKU0Fw
cGxlUGF5TGluZUl0ZW1EYXRhLmggKi87IH07CiAJCTk1QTFFMkU5MjVDQzc1QTkwMDI2OEM4RSAv
KiBNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUExRTJFNzI1Q0M3NUE4MDAyNjhDOEUgLyogTWVkaWFD
b250cm9sc0NvbnRleHRNZW51SXRlbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTk1REY5RDI1MjUyQkVEQjIwMDBEN0Y0NiAvKiBQb2ludGVyQ2hh
cmFjdGVyaXN0aWNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5NURGOUQyMzI1MkJFRDk5MDAwRDdGNDYgLyogUG9pbnRlckNoYXJhY3RlcmlzdGljcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3MDU5
OTdBMTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzA1OTk3NjEwN0Q5NzUyMDBBNTBBN0MgLyog
UG9saWN5Q2hlY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0xMTc3Miw2ICsxMTc3NCwxMCBAQAogCQk5NTIwNzYwMDFGMjY3NUY5MDA3RDJB
QUIgLyogQ2FsbFRyYWNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsVHJhY2VyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTUyMDc2MDExRjI2NzVGOTAwN0QyQUFCIC8q
IENhbGxUcmFjZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbFRyYWNlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5NTIwNzYwMjFGMjY3NUY5MDA3RDJBQUIgLyogQ2FsbFRyYWNlclR5
cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxUcmFjZXJUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5NTZGQzRCODI1RDQ5QzdBMDBGN0IzQTIgLyogQXBwbGVQYXlMaW5lSXRl
bURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXBwbGVQYXlMaW5lSXRl
bURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTU2RkM0QjgyNUQ0OUM3QzAw
RjdCM0EyIC8qIEpTQXBwbGVQYXlMaW5lSXRlbURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNBcHBsZVBheUxpbmVJdGVtRGF0YS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTk1NkZDNEJBMjVENDlDN0IwMEY3QjNBMiAvKiBBcHBsZVBheUxp
bmVJdGVtRGF0YS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXBwbGVQYXlMaW5lSXRlbURh
dGEuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NTZGQzRCQTI1RDQ5QzdEMDBG
N0IzQTIgLyogSlNBcHBsZVBheUxpbmVJdGVtRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0FwcGxlUGF5TGluZUl0ZW1EYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk1QTFFMkU3MjVDQzc1QTgwMDI2OEM4RSAvKiBNZWRpYUNvbnRyb2xzQ29udGV4
dE1lbnVJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQ29udHJv
bHNDb250ZXh0TWVudUl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTVERjlE
MjMyNTJCRUQ5OTAwMEQ3RjQ2IC8qIFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3MuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUG9pbnRlckNoYXJhY3RlcmlzdGljcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5NzA1OTk3NTEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2hlY2tlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2xpY3lDaGVja2VyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MzQzLDYgKzE4MzQ5LDggQEAKIAkJCQlBMTNCNjE2
OTI0NzVERkM1MDBCQkU2REUgLyogQXBwbGVQYXlJbnN0YWxsbWVudFJldGFpbENoYW5uZWwuaWRs
ICovLAogCQkJCTdDNjU3OUUyMUUwMDgyNzAwMEUzQTI3QSAvKiBBcHBsZVBheUxpbmVJdGVtLmgg
Ki8sCiAJCQkJN0M2NTc5RTQxRTAwODJDODAwRTNBMjdBIC8qIEFwcGxlUGF5TGluZUl0ZW0uaWRs
ICovLAorCQkJCTk1NkZDNEI4MjVENDlDN0EwMEY3QjNBMiAvKiBBcHBsZVBheUxpbmVJdGVtRGF0
YS5oICovLAorCQkJCTk1NkZDNEJBMjVENDlDN0IwMEY3QjNBMiAvKiBBcHBsZVBheUxpbmVJdGVt
RGF0YS5pZGwgKi8sCiAJCQkJQTFERjVBQTgxRjgwNzBENDAwNThBNDc3IC8qIEFwcGxlUGF5TWVy
Y2hhbnRDYXBhYmlsaXR5LmNwcCAqLywKIAkJCQlBMURGNUE4MzFGN0VCREYyMDA1OEE0NzcgLyog
QXBwbGVQYXlNZXJjaGFudENhcGFiaWxpdHkuaCAqLywKIAkJCQlBMURGNUE4NTFGN0VCREYyMDA1
OEE0NzcgLyogQXBwbGVQYXlNZXJjaGFudENhcGFiaWxpdHkuaWRsICovLApAQCAtMTg1NTMsNiAr
MTg1NjEsOCBAQAogCQkJCUExM0I2MTZGMjQ3NUUzMTIwMEJCRTZERSAvKiBKU0FwcGxlUGF5SW5z
dGFsbG1lbnRSZXRhaWxDaGFubmVsLmggKi8sCiAJCQkJN0M2NTc5RTkxRTAwODU2NjAwRTNBMjdB
IC8qIEpTQXBwbGVQYXlMaW5lSXRlbS5jcHAgKi8sCiAJCQkJN0M2NTc5RUExRTAwODU2NjAwRTNB
MjdBIC8qIEpTQXBwbGVQYXlMaW5lSXRlbS5oICovLAorCQkJCTk1NkZDNEI4MjVENDlDN0MwMEY3
QjNBMiAvKiBKU0FwcGxlUGF5TGluZUl0ZW1EYXRhLmNwcCAqLywKKwkJCQk5NTZGQzRCQTI1RDQ5
QzdEMDBGN0IzQTIgLyogSlNBcHBsZVBheUxpbmVJdGVtRGF0YS5oICovLAogCQkJCUExREY1QTg5
MUY3RUMwMDAwMDU4QTQ3NyAvKiBKU0FwcGxlUGF5TWVyY2hhbnRDYXBhYmlsaXR5LmNwcCAqLywK
IAkJCQlBMURGNUE4QTFGN0VDMDAwMDA1OEE0NzcgLyogSlNBcHBsZVBheU1lcmNoYW50Q2FwYWJp
bGl0eS5oICovLAogCQkJCUExRjZEMDBBMUZFMDk5MjEwMDE4MDc4QyAvKiBKU0FwcGxlUGF5TW9k
aWZpZXIuY3BwICovLApAQCAtMzExNzIsNiArMzExODIsNyBAQAogCQkJCUExMTc1MEExMjQ3NDY4
RjcwMEQ0RDI2QyAvKiBBcHBsZVBheUluc3RhbGxtZW50SXRlbVR5cGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUExM0I2MTZCMjQ3NUUwNDgwMEJCRTZERSAvKiBBcHBsZVBheUluc3RhbGxtZW50UmV0
YWlsQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M2NTc5RTMxRTAwODI3MDAwRTNBMjdB
IC8qIEFwcGxlUGF5TGluZUl0ZW0uaCBpbiBIZWFkZXJzICovLAorCQkJCTk1NkZDNEJCMjVENDlD
N0IwMEY3QjNBMiAvKiBBcHBsZVBheUxpbmVJdGVtRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTFERjVBODYxRjdFQkRGMjAwNThBNDc3IC8qIEFwcGxlUGF5TWVyY2hhbnRDYXBhYmlsaXR5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBMUY2Q0ZGRjFGRTA5NjIxMDAxODA3OEMgLyogQXBwbGVQYXlN
b2RpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M2NTIzMDExRTAwRDAzNDAwNjc3RjIyIC8q
IEFwcGxlUGF5UGF5bWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjczOCw2ICszMjc0OSw3IEBA
CiAJCQkJQTEzQjYxNzYyNDc1RTM3QTAwQkJFNkRFIC8qIEpTQXBwbGVQYXlJbnN0YWxsbWVudEl0
ZW1UeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTNCNjE3NzI0NzVFM0EzMDBCQkU2REUgLyog
SlNBcHBsZVBheUluc3RhbGxtZW50UmV0YWlsQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
N0M2NTc5RjAxRTAwODU2NjAwRTNBMjdBIC8qIEpTQXBwbGVQYXlMaW5lSXRlbS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJOTU2RkM0QkIyNUQ0OUM3QjAwRjdCM0EzIC8qIEpTQXBwbGVQYXlMaW5lSXRl
bURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUExREY1QThFMUY3RUMwMDIwMDU4QTQ3NyAvKiBK
U0FwcGxlUGF5TWVyY2hhbnRDYXBhYmlsaXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUY2RDAx
MjFGRTA5OUI0MDAxODA3OEMgLyogSlNBcHBsZVBheU1vZGlmaWVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3QzY1MjMxNDFFMDBEQkI0MDA2NzdGMjIgLyogSlNBcHBsZVBheVBheW1lbnQuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQppbmRleCBiZTliYTRjZGQyYTk4ZjM5NjU3MWI0NjFkNzAwMzkxODk3MzMz
NGNhLi4wMzlkYWMzYzY1Y2ViMDAzOTBjNTM0ZTY4ODI0YzMxNmJmN2RiNGM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAt
MjY5Myw2ICsyNjkzLDggQEAgc3ViIEdlbmVyYXRlRGljdGlvbmFyeUltcGxlbWVudGF0aW9uQ29u
dGVudAogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNET01HbG9iYWxPYmplY3QuaCIpOwog
ICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiPEphdmFTY3JpcHRDb3JlL09iamVjdENvbnN0cnVj
dG9yLmg+Iik7CiAKKyAgICAgICAgbXkgJGhhc1VuY29uZGl0aW9uYWxNZW1iZXIgPSAwOworCiAg
ICAgICAgICRyZXN1bHQgLj0gIkpTQzo6SlNPYmplY3QqIGNvbnZlcnREaWN0aW9uYXJ5VG9KUyhK
U0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0LCBjb25zdCAke2NsYXNzTmFtZX0mIGRpY3Rpb25hcnkpXG4iOwogICAg
ICAgICAkcmVzdWx0IC49ICJ7XG4iOwogICAgICAgICAkcmVzdWx0IC49ICIgICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTtcblxuIjsKQEAgLTI3MTcsNiArMjcx
OSw4IEBAIHN1YiBHZW5lcmF0ZURpY3Rpb25hcnlJbXBsZW1lbnRhdGlvbkNvbnRlbnQKICAgICAg
ICAgICAgICAgICBpZiAoJGNvbmRpdGlvbmFsKSB7CiAgICAgICAgICAgICAgICAgICAgIG15ICRj
b25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3Ry
aW5nRnJvbUF0dHJpYnV0ZVZhbHVlKCRjb25kaXRpb25hbCk7CiAgICAgICAgICAgICAgICAgICAg
ICRyZXN1bHQgLj0gIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIjsKKyAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAkaGFzVW5jb25kaXRpb25hbE1lbWJlciA9
IDE7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgIyAxLiBMZXQga2V5IGJl
IHRoZSBpZGVudGlmaWVyIG9mIG1lbWJlci4KQEAgLTI3NTUsNiArMjc1OSwxMSBAQCBzdWIgR2Vu
ZXJhdGVEaWN0aW9uYXJ5SW1wbGVtZW50YXRpb25Db250ZW50CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KIAorICAgICAgICBpZiAoISRoYXNVbmNvbmRpdGlvbmFsTWVtYmVyKSB7CisgICAgICAg
ICAgICAkcmVzdWx0IC49ICIgICAgVU5VU0VEX1BBUkFNKGRpY3Rpb25hcnkpO1xuIjsKKyAgICAg
ICAgICAgICRyZXN1bHQgLj0gIiAgICBVTlVTRURfUEFSQU0odm0pO1xuXG4iOworICAgICAgICB9
CisKICAgICAgICAgJHJlc3VsdCAuPSAiICAgIHJldHVybiByZXN1bHQ7XG4iOwogICAgICAgICAk
cmVzdWx0IC49ICJ9XG5cbiI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERpY3Rpb25hcnlXaXRoT25seUNvbmRpdGlvbmFs
TWVtYmVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RGljdGlvbmFyeVdpdGhPbmx5Q29uZGl0aW9uYWxNZW1iZXJzLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
YTUxZGVkNGQ2MDhmZTk5ZmQzNDlhYzgxYmZkY2I3NTJiZDA1MzQ0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERpY3Rpb25h
cnlXaXRoT25seUNvbmRpdGlvbmFsTWVtYmVycy5jcHAKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAg
ICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisg
ICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4g
RE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNUZXN0
RGljdGlvbmFyeVdpdGhPbmx5Q29uZGl0aW9uYWxNZW1iZXJzLmgiCisKKyNpbmNsdWRlICJKU0RP
TUNvbnZlcnROdW1iZXJzLmgiCisjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvT2JqZWN0Q29uc3RydWN0b3IuaD4KKworCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBu
YW1lc3BhY2UgSlNDOworCit0ZW1wbGF0ZTw+IFRlc3REaWN0aW9uYXJ5V2l0aE9ubHlDb25kaXRp
b25hbE1lbWJlcnMgY29udmVydERpY3Rpb25hcnk8VGVzdERpY3Rpb25hcnlXaXRoT25seUNvbmRp
dGlvbmFsTWVtYmVycz4oSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCit7CisgICAgVk0mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
Ym9vbCBpc051bGxPclVuZGVmaW5lZCA9IHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCk7CisgICAg
YXV0byogb2JqZWN0ID0gaXNOdWxsT3JVbmRlZmluZWQgPyBudWxscHRyIDogdmFsdWUuZ2V0T2Jq
ZWN0KCk7CisgICAgaWYgKFVOTElLRUxZKCFpc051bGxPclVuZGVmaW5lZCAmJiAhb2JqZWN0KSkg
eworICAgICAgICB0aHJvd1R5cGVFcnJvcigmbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIFRlc3REaWN0aW9uYXJ5V2l0aE9u
bHlDb25kaXRpb25hbE1lbWJlcnMgcmVzdWx0OworI2lmIEVOQUJMRShURVNUX0NPTkRJVElPTkFM
KQorICAgIEpTVmFsdWUgY29uZGl0aW9uYWxBdHRyVmFsdWU7CisgICAgaWYgKGlzTnVsbE9yVW5k
ZWZpbmVkKQorICAgICAgICBjb25kaXRpb25hbEF0dHJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7Cisg
ICAgZWxzZSB7CisgICAgICAgIGNvbmRpdGlvbmFsQXR0clZhbHVlID0gb2JqZWN0LT5nZXQoJmxl
eGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb25kaXRpb25h
bEF0dHIiKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsK
KyAgICB9CisgICAgaWYgKCFjb25kaXRpb25hbEF0dHJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Cisg
ICAgICAgIHJlc3VsdC5jb25kaXRpb25hbEF0dHIgPSBjb252ZXJ0PElETERvdWJsZT4obGV4aWNh
bEdsb2JhbE9iamVjdCwgY29uZGl0aW9uYWxBdHRyVmFsdWUpOworICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworSlNDOjpKU09iamVjdCogY29udmVydERpY3Rpb25hcnlUb0pTKEpTQzo6SlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QsIGNvbnN0IFRlc3REaWN0aW9uYXJ5V2l0aE9ubHlDb25kaXRpb25hbE1lbWJlcnMm
IGRpY3Rpb25hcnkpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKKworICAgIGF1dG8gcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoJmxleGlj
YWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC5vYmplY3RQcm90b3R5cGUoKSk7CisKKyNpZiBF
TkFCTEUoVEVTVF9DT05ESVRJT05BTCkKKyAgICBpZiAoIUlETERvdWJsZTo6aXNOdWxsVmFsdWUo
ZGljdGlvbmFyeS5jb25kaXRpb25hbEF0dHIpKSB7CisgICAgICAgIGF1dG8gY29uZGl0aW9uYWxB
dHRyVmFsdWUgPSB0b0pTPElETERvdWJsZT4oSURMRG91YmxlOjpleHRyYWN0VmFsdWVGcm9tTnVs
bGFibGUoZGljdGlvbmFyeS5jb25kaXRpb25hbEF0dHIpKTsKKyAgICAgICAgcmVzdWx0LT5wdXRE
aXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbmRpdGlvbmFsQXR0
ciIpLCBjb25kaXRpb25hbEF0dHJWYWx1ZSk7CisgICAgfQorI2VuZGlmCisgICAgVU5VU0VEX1BB
UkFNKGRpY3Rpb25hcnkpOworICAgIFVOVVNFRF9QQVJBTSh2bSk7CisKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGljdGlvbmFyeVdpdGhPbmx5Q29u
ZGl0aW9uYWxNZW1iZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RGljdGlvbmFyeVdpdGhPbmx5Q29uZGl0aW9uYWxNZW1iZXJzLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjI1NjU2NjJlYjYyMzdhNGZlNDBjOGZkZjAzNTk5OTFjOTEzY2IzNQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REaWN0
aW9uYXJ5V2l0aE9ubHlDb25kaXRpb25hbE1lbWJlcnMuaApAQCAtMCwwICsxLDMyIEBACisvKgor
ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4K
KyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBs
LiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNET01Db252
ZXJ0RGljdGlvbmFyeS5oIgorI2luY2x1ZGUgIlRlc3REaWN0aW9uYXJ5V2l0aE9ubHlDb25kaXRp
b25hbE1lbWJlcnMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTw+IFRlc3RE
aWN0aW9uYXJ5V2l0aE9ubHlDb25kaXRpb25hbE1lbWJlcnMgY29udmVydERpY3Rpb25hcnk8VGVz
dERpY3Rpb25hcnlXaXRoT25seUNvbmRpdGlvbmFsTWVtYmVycz4oSlNDOjpKU0dsb2JhbE9iamVj
dCYsIEpTQzo6SlNWYWx1ZSk7CisKK0pTQzo6SlNPYmplY3QqIGNvbnZlcnREaWN0aW9uYXJ5VG9K
UyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNET01HbG9iYWxPYmplY3QmLCBjb25zdCBUZXN0RGlj
dGlvbmFyeVdpdGhPbmx5Q29uZGl0aW9uYWxNZW1iZXJzJik7CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFbXB0eURpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEVtcHR5RGljdGlvbmFyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTcyNWRl
MzAxYzc5YWIwOWRiNDkzMjk3NGQ1MmM3ZGMxODE2MTViZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbXB0eURpY3Rpb25h
cnkuY3BwCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl
IFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5l
cmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTVGVzdEVtcHR5RGljdGlvbmFyeS5oIgorCisjaW5j
bHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJ
bmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT2JqZWN0Q29uc3RydWN0b3IuaD4K
KworCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCit0ZW1wbGF0
ZTw+IFRlc3RFbXB0eURpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdEVtcHR5RGljdGlv
bmFyeT4oSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUp
Cit7CisgICAgVk0mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYm9vbCBpc051
bGxPclVuZGVmaW5lZCA9IHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCk7CisgICAgYXV0byogb2Jq
ZWN0ID0gaXNOdWxsT3JVbmRlZmluZWQgPyBudWxscHRyIDogdmFsdWUuZ2V0T2JqZWN0KCk7Cisg
ICAgaWYgKFVOTElLRUxZKCFpc051bGxPclVuZGVmaW5lZCAmJiAhb2JqZWN0KSkgeworICAgICAg
ICB0aHJvd1R5cGVFcnJvcigmbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7CisgICAg
ICAgIHJldHVybiB7IH07CisgICAgfQorICAgIFRlc3RFbXB0eURpY3Rpb25hcnkgcmVzdWx0Owor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0pTQzo6SlNPYmplY3QqIGNvbnZlcnREaWN0aW9uYXJ5
VG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBjb25zdCBUZXN0RW1wdHlEaWN0aW9uYXJ5JiBkaWN0aW9u
YXJ5KQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CisKKyAgICBhdXRvIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJvdG90eXBlKCkpOworCisgICAgVU5VU0VEX1BB
UkFNKGRpY3Rpb25hcnkpOworICAgIFVOVVNFRF9QQVJBTSh2bSk7CisKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW1wdHlEaWN0aW9uYXJ5LmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW1wdHlEaWN0aW9u
YXJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNDkyZDYyZjVmMTllMDk1YzJhNWRjM2ViMDA5YWYxZmQ4ZTZlYWEz
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFbXB0eURpY3Rpb25hcnkuaApAQCAtMCwwICsxLDMyIEBACisvKgorICAgIFRo
aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBU
aGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBO
T1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNET01Db252ZXJ0RGlj
dGlvbmFyeS5oIgorI2luY2x1ZGUgIlRlc3RFbXB0eURpY3Rpb25hcnkuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCit0ZW1wbGF0ZTw+IFRlc3RFbXB0eURpY3Rpb25hcnkgY29udmVydERpY3Rp
b25hcnk8VGVzdEVtcHR5RGljdGlvbmFyeT4oSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNW
YWx1ZSk7CisKK0pTQzo6SlNPYmplY3QqIGNvbnZlcnREaWN0aW9uYXJ5VG9KUyhKU0M6OkpTR2xv
YmFsT2JqZWN0JiwgSlNET01HbG9iYWxPYmplY3QmLCBjb25zdCBUZXN0RW1wdHlEaWN0aW9uYXJ5
Jik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2ll
cy5kZXAKaW5kZXggYmFjNWQyZDgzZTU3YTZjMzE1YTE1NWY0NWY1MmM2NWJkZjA4Y2QzZC4uYzk4
OTg5YTQ4MDJkZmI2MGM3NDJlYTdlNDlhOWEyOWRiY2Y2NTUwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5k
ZXAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRh
bERlcGVuZGVuY2llcy5kZXAKQEAgLTc5LDkgKzc5LDE1IEBAIFdlYkRPTVRlc3REZXJpdmVkRGlj
dGlvbmFyeS5oOgogSlNUZXN0RGVyaXZlZERpY3Rpb25hcnkyLmg6IAogRE9NVGVzdERlcml2ZWRE
aWN0aW9uYXJ5Mi5oOiAKIFdlYkRPTVRlc3REZXJpdmVkRGljdGlvbmFyeTIuaDogCitKU1Rlc3RE
aWN0aW9uYXJ5V2l0aE9ubHlDb25kaXRpb25hbE1lbWJlcnMuaDogCitET01UZXN0RGljdGlvbmFy
eVdpdGhPbmx5Q29uZGl0aW9uYWxNZW1iZXJzLmg6IAorV2ViRE9NVGVzdERpY3Rpb25hcnlXaXRo
T25seUNvbmRpdGlvbmFsTWVtYmVycy5oOiAKIEpTVGVzdERvbWFpblNlY3VyaXR5Lmg6IAogRE9N
VGVzdERvbWFpblNlY3VyaXR5Lmg6IAogV2ViRE9NVGVzdERvbWFpblNlY3VyaXR5Lmg6IAorSlNU
ZXN0RW1wdHlEaWN0aW9uYXJ5Lmg6IAorRE9NVGVzdEVtcHR5RGljdGlvbmFyeS5oOiAKK1dlYkRP
TVRlc3RFbXB0eURpY3Rpb25hcnkuaDogCiBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmg6IFRlc3RF
bmFibGVkQnlTZXR0aW5nU3VwcGxlbWVudGFsLmlkbAogRE9NVGVzdEVuYWJsZWRCeVNldHRpbmcu
aDogVGVzdEVuYWJsZWRCeVNldHRpbmdTdXBwbGVtZW50YWwuaWRsCiBXZWJET01UZXN0RW5hYmxl
ZEJ5U2V0dGluZy5oOiBUZXN0RW5hYmxlZEJ5U2V0dGluZ1N1cHBsZW1lbnRhbC5pZGwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RGljdGlvbmFy
eVdpdGhPbmx5Q29uZGl0aW9uYWxNZW1iZXJzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0RGljdGlvbmFyeVdpdGhPbmx5Q29uZGl0aW9uYWxNZW1iZXJzLmlk
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43ODVlZTU0OGIyN2IyZmQ0OTdkZGIyZjIwMTIzNmEzM2U2M2E2MGM3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3REaWN0aW9uYXJ5V2l0aE9ubHlDb25kaXRpb25hbE1lbWJlcnMuaWRsCkBAIC0wLDAgKzEsMzMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybSwgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJ
bmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAg
SlNHZW5lcmF0ZVRvSlNPYmplY3QsCitdIGRpY3Rpb25hcnkgVGVzdERpY3Rpb25hcnlXaXRoT25s
eUNvbmRpdGlvbmFsTWVtYmVycyB7CisgICAgW0NvbmRpdGlvbmFsPVRFU1RfQ09ORElUSU9OQUxd
IGRvdWJsZSBjb25kaXRpb25hbEF0dHI7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RFbXB0eURpY3Rpb25hcnkuaWRsIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RFbXB0eURpY3Rpb25hcnkuaWRsCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQxZjNjMjAyM2EwMDkxMjQxOTBjNjY5YWI4ZjQ3NjEyMDJlYzAyMmQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEVtcHR5
RGljdGlvbmFyeS5pZGwKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3JtLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKK10gZGlj
dGlvbmFyeSBUZXN0RW1wdHlEaWN0aW9uYXJ5IHsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9XZWJJbmplY3RlZFNjcmlwdEhvc3QuY3BwCmluZGV4IDZjZWEyNDY2NGJhZTI3
NmVmNGRiNDRkOWE4MGE5NjJjMjQ5OGEyNmMuLjQxZjMzYjEyNTFlYmQ2YjA3NDIzMjI0NzY4ZWNh
NWJkMjJjZTBhYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJJbmpl
Y3RlZFNjcmlwdEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJJbmpl
Y3RlZFNjcmlwdEhvc3QuY3BwCkBAIC0xMTIsMTUgKzExMiwxNiBAQCBzdGF0aWMgSlNPYmplY3Qq
IG9iamVjdEZvclBheW1lbnRTaGlwcGluZ09wdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBl
eGVjLCBjbwogCiBzdGF0aWMgSlNPYmplY3QqIG9iamVjdEZvclBheW1lbnREZXRhaWxzTW9kaWZp
ZXIoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgUGF5bWVudERldGFpbHNNb2Rp
ZmllciYgbW9kaWZpZXIpCiB7Ci0gICAgYXV0byogYWRkaXRpb25hbERpc3BsYXlJdGVtcyA9IGNv
bnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0cik7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1vZGlmaWVyLmFkZGl0aW9uYWxEaXNwbGF5SXRlbXMuc2l6ZSgpOyArK2kpCi0gICAg
ICAgIGFkZGl0aW9uYWxEaXNwbGF5SXRlbXMtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGksIG9iamVj
dEZvclBheW1lbnRJdGVtKHZtLCBleGVjLCBtb2RpZmllci5hZGRpdGlvbmFsRGlzcGxheUl0ZW1z
W2ldKSk7Ci0KICAgICBhdXRvKiBvYmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsK
ICAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInN1
cHBvcnRlZE1ldGhvZHMiKSwganNTdHJpbmcodm0sIG1vZGlmaWVyLnN1cHBvcnRlZE1ldGhvZHMp
KTsKLSAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InRvdGFsIiksICFtb2RpZmllci50b3RhbCA/IGpzTnVsbCgpIDogb2JqZWN0Rm9yUGF5bWVudEl0
ZW0odm0sIGV4ZWMsICptb2RpZmllci50b3RhbCkpOwotICAgIG9iamVjdC0+cHV0RGlyZWN0KHZt
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYWRkaXRpb25hbERpc3BsYXlJdGVtcyIpLCBh
ZGRpdGlvbmFsRGlzcGxheUl0ZW1zKTsKLSAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImRhdGEiKSwgIW1vZGlmaWVyLmRhdGEgPyBqc051bGwoKSA6
IG1vZGlmaWVyLmRhdGEuZ2V0KCkpOworICAgIGlmIChtb2RpZmllci50b3RhbCkKKyAgICAgICAg
b2JqZWN0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0b3RhbCIp
LCBvYmplY3RGb3JQYXltZW50SXRlbSh2bSwgZXhlYywgKm1vZGlmaWVyLnRvdGFsKSk7CisgICAg
aWYgKCFtb2RpZmllci5hZGRpdGlvbmFsRGlzcGxheUl0ZW1zLmlzRW1wdHkoKSkgeworICAgICAg
ICBhdXRvKiBhZGRpdGlvbmFsRGlzcGxheUl0ZW1zID0gY29uc3RydWN0RW1wdHlBcnJheShleGVj
LCBudWxscHRyKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1vZGlmaWVyLmFk
ZGl0aW9uYWxEaXNwbGF5SXRlbXMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBhZGRpdGlvbmFs
RGlzcGxheUl0ZW1zLT5wdXREaXJlY3RJbmRleChleGVjLCBpLCBvYmplY3RGb3JQYXltZW50SXRl
bSh2bSwgZXhlYywgbW9kaWZpZXIuYWRkaXRpb25hbERpc3BsYXlJdGVtc1tpXSkpOworICAgICAg
ICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImFkZGl0
aW9uYWxEaXNwbGF5SXRlbXMiKSwgYWRkaXRpb25hbERpc3BsYXlJdGVtcyk7CisgICAgfQogICAg
IHJldHVybiBvYmplY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1dlYkNvcmVBZGRpdGlvbnMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9XZWJDb3JlQWRkaXRpb25zLm1tCmluZGV4IGQ1YzcxY2JjMmUxZjIyNDkyOWUxOTg0Y2Q3MWY5
YWRkZDYyMDRkMzkuLmFmNjNkYTJmMjE2YmU2ZTM2NTIzMzBhNmY5YzYyY2E3Y2YwMWZjNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYkNvcmVBZGRpdGlvbnMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViQ29yZUFkZGl0aW9ucy5t
bQpAQCAtMjQsMyArMjQsNyBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgorCisjaWYgVVNF
KEFQUExFX0lOVEVSTkFMX1NESykKKyNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9XZWJDb3JlQWRk
aXRpb25zLm1tPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tQYXltZW50Q29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5
bWVudENvb3JkaW5hdG9yLmNwcAppbmRleCAwMGZkNjYwZGU4YjdhN2JkNzFkYWYyOTlhYjYzZmU1
MWZhMTgzNTA0Li4xNmMxZDk2OTcyMTA5Y2RmYTIxZDI0YjIxMTIyMGMyZWM1MjIyYmQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAK
QEAgLTEyOSwyMSArMTI5LDEwIEBAIHZvaWQgTW9ja1BheW1lbnRDb29yZGluYXRvcjo6Y29tcGxl
dGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgUGF5bWVudE1lcmNoYW50U2VzCiAgICAgfSk7CiB9
CiAKLXN0YXRpYyBBcHBsZVBheUxpbmVJdGVtIGNvbnZlcnQoY29uc3QgQXBwbGVQYXlTZXNzaW9u
UGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtJiBsaW5lSXRlbSkKLXsKLSAgICBBcHBsZVBheUxpbmVJ
dGVtIHJlc3VsdDsKLSAgICByZXN1bHQudHlwZSA9IGxpbmVJdGVtLnR5cGU7Ci0gICAgcmVzdWx0
LmxhYmVsID0gbGluZUl0ZW0ubGFiZWw7Ci0gICAgcmVzdWx0LmFtb3VudCA9IGxpbmVJdGVtLmFt
b3VudDsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiB2b2lkIE1vY2tQYXltZW50Q29vcmRpbmF0
b3I6OnVwZGF0ZVRvdGFsQW5kTGluZUl0ZW1zKGNvbnN0IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRS
ZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcyYgdG90YWxBbmRMaW5lSXRlbXMpCiB7Ci0gICAgbV90
b3RhbCA9IGNvbnZlcnQodG90YWxBbmRMaW5lSXRlbXMudG90YWwpOwotICAgIG1fbGluZUl0ZW1z
LmNsZWFyKCk7Ci0gICAgZm9yIChhdXRvJiBsaW5lSXRlbSA6IHRvdGFsQW5kTGluZUl0ZW1zLmxp
bmVJdGVtcykKLSAgICAgICAgbV9saW5lSXRlbXMuYXBwZW5kKGNvbnZlcnQobGluZUl0ZW0pKTsK
KyAgICBtX3RvdGFsID0gdG90YWxBbmRMaW5lSXRlbXMudG90YWw7CisgICAgbV9saW5lSXRlbXMg
PSB0b3RhbEFuZExpbmVJdGVtcy5saW5lSXRlbXM7CiB9CiAKIHZvaWQgTW9ja1BheW1lbnRDb29y
ZGluYXRvcjo6Y29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihPcHRpb25hbDxTaGlwcGlu
Z01ldGhvZFVwZGF0ZT4mJiBzaGlwcGluZ01ldGhvZFVwZGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KaW5k
ZXggNjczZTliNTg4ZGYwZTc2NjJkYzUwYTQ1NjRkOTZlMWFjNWIxN2FiNS4uZDM1Y2Y2ZWFiZWJk
MTA5OGFjOGMxZjAyYmYwNTA2OTcxYTg0MzMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTI3OSwx
MiArMjc5LDEyIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVx
dWVzdD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBBcHBsCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICByZXF1ZXN0LnNldFNoaXBwaW5nTWV0aG9kcyhzaGlwcGluZ01ldGhvZHMpOwogCi0g
ICAgVmVjdG9yPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbT4gbGluZUl0
ZW1zOworICAgIFZlY3RvcjxBcHBsZVBheUxpbmVJdGVtPiBsaW5lSXRlbXM7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShsaW5lSXRlbXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmVx
dWVzdC5zZXRMaW5lSXRlbXMobGluZUl0ZW1zKTsKIAotICAgIE9wdGlvbmFsPEFwcGxlUGF5U2Vz
c2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbT4gdG90YWw7CisgICAgT3B0aW9uYWw8QXBwbGVQ
YXlMaW5lSXRlbT4gdG90YWw7CiAgICAgZGVjb2RlciA+PiB0b3RhbDsKICAgICBpZiAoIXRvdGFs
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNDIsMjYgKzM0Miw2IEBAIGJvb2wgQXJndW1l
bnRDb2RlcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6Q29udGFjdEZpZWxkcz46OmRl
Y29kZShEZWNvZGVyCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXJndW1lbnRDb2RlcjxB
cHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtJiBs
aW5lSXRlbSkKLXsKLSAgICBlbmNvZGVyIDw8IGxpbmVJdGVtLnR5cGU7Ci0gICAgZW5jb2RlciA8
PCBsaW5lSXRlbS5sYWJlbDsKLSAgICBlbmNvZGVyIDw8IGxpbmVJdGVtLmFtb3VudDsKLX0KLQot
T3B0aW9uYWw8QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtPiBBcmd1bWVu
dENvZGVyPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbT46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQotewotICAgIFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRS
ZXF1ZXN0OjpMaW5lSXRlbSBsaW5lSXRlbTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxpbmVJ
dGVtLnR5cGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUobGluZUl0ZW0ubGFiZWwpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGluZUl0ZW0uYW1vdW50KSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiBXVEZNb3ZlKGxpbmVJdGVtKTsKLX0KLQogdm9p
ZCBBcmd1bWVudENvZGVyPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpNZXJjaGFudENh
cGFiaWxpdGllcz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBBcHBsZVBheVNlc3Np
b25QYXltZW50UmVxdWVzdDo6TWVyY2hhbnRDYXBhYmlsaXRpZXMmIG1lcmNoYW50Q2FwYWJpbGl0
aWVzKQogewogICAgIGVuY29kZXIgPDwgbWVyY2hhbnRDYXBhYmlsaXRpZXMuc3VwcG9ydHMzRFM7
CkBAIC00MTQsMTIgKzM5NCwxMiBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8QXBwbGVQYXlTZXNzaW9u
UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPjo6ZW5jb2RlKEVuYwogCiBPcHRpb25h
bDxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+IEFyZ3Vt
ZW50Q29kZXI8QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1z
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8QXBwbGVQYXlTZXNz
aW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtPiB0b3RhbDsKKyAgICBPcHRpb25hbDxBcHBsZVBh
eUxpbmVJdGVtPiB0b3RhbDsKICAgICBkZWNvZGVyID4+IHRvdGFsOwogICAgIGlmICghdG90YWwp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8VmVjdG9y
PEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbT4+IGxpbmVJdGVtczsKKyAg
ICBPcHRpb25hbDxWZWN0b3I8QXBwbGVQYXlMaW5lSXRlbT4+IGxpbmVJdGVtczsKICAgICBkZWNv
ZGVyID4+IGxpbmVJdGVtczsKICAgICBpZiAoIWxpbmVJdGVtcykKICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgKaW5kZXggNmY3MjE4MGY5ODUzMjczZTNmMTZmNjEwYjRkNTMxZjFhY2YxOGFlNi4uMjYwOThl
ZmRkYjRhZmYyZWJlZjdiMmZjYTYxZDVjZmEwMDc1NzRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTU0LDEwICs1NCw2IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9DdXJsUHJveHlTZXR0aW5ncy5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9XZWJDb3JlQXJndW1lbnRD
b2RlcnNBZGRpdGlvbnMuaD4KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
ICNpbmNsdWRlIDxXZWJDb3JlL0NETUluc3RhbmNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DRE1J
bnN0YW5jZVNlc3Npb24uaD4KQEAgLTcwNSwxNyArNzAxLDExIEBAIHRlbXBsYXRlPD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q+IHsK
ICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5
U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jik7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3QmKTsKIH07Ci0KIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6QXBw
bGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkNvbnRhY3RGaWVsZHM+IHsKICAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0OjpDb250YWN0RmllbGRzJik7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJl
cXVlc3Q6OkNvbnRhY3RGaWVsZHMmKTsKIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtPiB7
Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBh
eVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0mKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8
V2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtPiBkZWNvZGUo
RGVjb2RlciYpOwotfTsKLQogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TWVyY2hhbnRDYXBhYmlsaXRpZXM+IHsK
ICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5
U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpNZXJjaGFudENhcGFiaWxpdGllcyYpOwogICAgIHN0YXRp
YyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OkFwcGxl
UGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpNZXJjaGFudENhcGFiaWxpdGllcyYpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGY2M2U5MGVmNDZiNGMxZjQ2MGE3OWE0NzExMTkzOWNiYTAwNWM0YjUuLmZmODNmZjYwNWMxOGI3
OWYwMTA1NDgwZDQ0ODAzMzMyYWNhNGI0NzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0w
Mi0xNSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgW1BheW1l
bnQgUmVxdWVzdF0gYWRkIGFuIGBvYmplY3QgZGF0YWAgdG8gYFBheW1lbnRJdGVtYCBzbyB0aGF0
IGRhdGEgc3BlY2lmaWMgdG8gQXBwbGUgUGF5IGNhbiBiZSBwcm92aWRlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxOTcwCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS82OTgwNjk5OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3BheW1lbnRyZXF1ZXN0L3BheW1l
bnQtcmVxdWVzdC1pbnRlcm5hbC1wcm9wZXJ0aWVzLmh0dHBzLWV4cGVjdGVkLnR4dDoKKwogMjAy
MS0wMi0xNyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lP
U10gZG9uJ3QgInByb21vdGUiIG1lZGlhIGNvbnRyb2xzIGNvbnRleHRtZW51IGl0ZW1zIGlmIHRo
ZXkgYXJlIHRoZSBvbmx5IGl0ZW0gYmVpbmcgc2hvd24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVxdWVzdC1pbnRl
cm5hbC1wcm9wZXJ0aWVzLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVxdWVzdC1pbnRlcm5hbC1wcm9w
ZXJ0aWVzLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCBjZDllMGNhYzY2NDBjMmRiZDRlMWE5NmQ5
NmExNmE3ZjYyMmI3ODAxLi4wZGFkNmUyYTE4YTc2ZGY3NGUzNzAyYzQzMTQ0ODAyZWQzMzFlNWJk
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9wYXltZW50cmVx
dWVzdC9wYXltZW50LXJlcXVlc3QtaW50ZXJuYWwtcHJvcGVydGllcy5odHRwcy1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcGF5bWVudHJlcXVlc3Qv
cGF5bWVudC1yZXF1ZXN0LWludGVybmFsLXByb3BlcnRpZXMuaHR0cHMtZXhwZWN0ZWQudHh0CkBA
IC03MCw5ICs3MCw3IEBAIElOVEVSTkFMIFBST1BFUlRZOiBkZXRhaWxzOiB7CiAgICAgICAgICAg
InZhbHVlIjogIjk5LjAwIgogICAgICAgICB9LAogICAgICAgICAicGVuZGluZyI6IGZhbHNlCi0g
ICAgICB9LAotICAgICAgImFkZGl0aW9uYWxEaXNwbGF5SXRlbXMiOiBbXSwKLSAgICAgICJkYXRh
IjogbnVsbAorICAgICAgfQogICAgIH0KICAgXQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420875</attachid>
            <date>2021-02-18 14:46:53 -0800</date>
            <delta_ts>2021-02-18 16:37:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221970-20210218154652.patch</filename>
            <type>text/plain</type>
            <size>79981</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhM2I5MmI2NWUxZDZmMTdhNDg2MWNiMGFhYmRkNzliZDYwYTliNmVjLi4z
MTY3ZTA3YzEwZjdiODIyOGJlYjQ0OWJiN2E1N2E5MGJhNGMxYmI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsOTEgQEAKKzIwMjEtMDItMTUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFtQYXltZW50IFJlcXVlc3RdIGFkZCBhbiBgb2JqZWN0IGRhdGFgIHRvIGBQ
YXltZW50SXRlbWAgc28gdGhhdCBkYXRhIHNwZWNpZmljIHRvIEFwcGxlIFBheSBjYW4gYmUgcHJv
dmlkZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MTk3MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk4MDY5OTk+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICAqIE1vZHVsZXMvcGF5bWVudHJlcXVl
c3QvUGF5bWVudEl0ZW0uaWRsOgorICAgICAgICAqIE1vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5
bWVudEl0ZW0uaDoKKworICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRl
bS5pZGw6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJdGVtLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBsZVBheUxpbmVJdGVtOjplbmNvZGUgY29uc3QpOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5TGluZUl0ZW06OmRlY29kZSk6IEFkZGVkLgorICAg
ICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbURhdGEuaWRsOiBBZGRlZC4K
KyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TGluZUl0ZW1EYXRhLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlMaW5lSXRlbURhdGE6OmVuY29kZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheUxpbmVJdGVtRGF0YTo6ZGVjb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxlUGF5TGluZUl0ZW1EYXRhOjpkZWNvZGVEYXRhKToKKyAgICAgICAg
KiBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNoZWNrQW5kQ2Fub25pY2FsaXplRGF0YSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Y2hlY2tBbmRDYW5vbmljYWxpemVQYXltZW50SXRlbSk6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Y2hlY2tBbmRDYW5vbmljYWxpemVUb3RhbCk6CisgICAgICAgIChXZWJDb3JlOjpjaGVj
a0FuZENhbm9uaWNhbGl6ZURldGFpbHMpOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudFJlcXVl
c3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6c2V0dGxlRGV0
YWlsc1Byb21pc2UpOgorICAgICAgICBBZGQgSVBDIHN1cHBvcnQgYW5kIGV4dGVuZCBmcm9tIGBB
cHBsZVBheUxpbmVJdGVtRGF0YWAgd2hpY2ggaXMgdXNlZCB0byBwdWxsIHZhbHVlcyBvdXQgb2YK
KyAgICAgICAgdGhlIGBvYmplY3QgZGF0YWAgZnJvbSBgUGF5bWVudEl0ZW1gLiBUaGlzIHdheSwg
Ym90aCBBcHBsZSBQYXkgSlMgYW5kIFBheW1lbnRSZXF1ZXN0IGNhbiBiZQorICAgICAgICBnaXZl
biB0aGUgc2FtZSBkYXRhIChhbGJlaXQgaW4gc2xpZ2h0bHkgZGlmZmVyZW50IHBsYWNlcykgYW5k
IGhhdmUgdGhlIHNhbWUgY2FwYWJpbGl0aWVzLgorCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydEFuZFZhbGlk
YXRlVG90YWwpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydEFuZFZhbGlkYXRlKToKKyAgICAg
ICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6bGluZUl0ZW1z
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0
OjpzZXRMaW5lSXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVu
dFJlcXVlc3Q6OnRvdGFsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0OjpzZXRUb3RhbCk6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9Q
YXltZW50TWV0aG9kVXBkYXRlLmg6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
UmVxdWVzdFZhbGlkYXRvci5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFJl
cXVlc3RWYWxpZGF0b3IubW06CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50UmVxdWVzdFZhbGlk
YXRvcjo6dmFsaWRhdGVUb3RhbCk6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
U3VtbWFyeUl0ZW1zLmg6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50
TWV0aG9kVXBkYXRlQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50TWV0aG9kVXBk
YXRlOjpQYXltZW50TWV0aG9kVXBkYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L2Nv
Y29hL1BheW1lbnRTdW1tYXJ5SXRlbXNDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnRvUEtQ
YXltZW50U3VtbWFyeUl0ZW1UeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvUEtQYXltZW50U3Vt
bWFyeUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1TdW1tYXJ5SXRlbXMpOgorICAg
ICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFu
ZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjptZXJnZSk6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Y29udmVydEFuZFZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5UGF5
bWVudEhhbmRsZXI6OnNob3cpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlQYXltZW50SGFu
ZGxlcjo6Y29tcHV0ZVRvdGFsQW5kTGluZUl0ZW1zIGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5n
L01vY2tQYXltZW50Q29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1BheW1l
bnRDb29yZGluYXRvcjo6dXBkYXRlVG90YWxBbmRMaW5lSXRlbXMpOgorICAgICAgICBKdXN0IHVz
ZSBgQXBwbGVQYXlMaW5lSXRlbWAgaW5zdGVhZCBvZiBkdXBsaWNhdGluZyBpdHMgc3RydWN0dXJl
IGluIGFub3RoZXIgb2JqZWN0IChgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJ
dGVtYCkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Om9iamVjdEZvclBheW1lbnREZXRhaWxzTW9kaWZpZXIpOgorICAg
ICAgICBEcml2ZS1ieTogRG9uJ3QgYWx3YXlzIHNldCBgbW9kaWZpZXIudG90YWxgIG9yIGBtb2Rp
Zmllci5hZGRpdGlvbmFsRGlzcGxheUl0ZW1zYCBzaW5jZSB0aGV5CisgICAgICAgIG1pZ2h0IG5v
dCBoYXZlIGJlZW4gcHJvdmlkZWQuCisgICAgICAgIERyaXZlLWJ5OiBEb24ndCBib3RoZXIgc2V0
dGluZyBgbW9kaWZpZXIuZGF0YWAgc2luY2UgaXQncyBjbGVhcmVkIGR1cmluZyB2YWxpZGF0aW9u
LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAg
ICAgIChHZW5lcmF0ZURpY3Rpb25hcnlJbXBsZW1lbnRhdGlvbkNvbnRlbnQpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RGljdGlvbmFyeVdpdGhPbmx5Q29uZGl0
aW9uYWxNZW1iZXJzLmlkbDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdERpY3Rpb25hcnlXaXRoT25seUNvbmRpdGlvbmFsTWVtYmVycy5oOiBBZGRlZC4K
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGljdGlvbmFyeVdpdGhP
bmx5Q29uZGl0aW9uYWxNZW1iZXJzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjb252
ZXJ0RGljdGlvbmFyeTxUZXN0RGljdGlvbmFyeVdpdGhPbmx5Q29uZGl0aW9uYWxNZW1iZXJzPik6
CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RGljdGlvbmFyeVRvSlMpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RW1wdHlEaWN0aW9uYXJ5LmlkbDogQWRkZWQuCisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVtcHR5RGljdGlvbmFyeS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW1wdHlEaWN0
aW9uYXJ5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RGljdGlvbmFyeTxU
ZXN0RW1wdHlEaWN0aW9uYXJ5Pik6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RGljdGlvbmFy
eVRvSlMpOgorICAgICAgICBNb2RpZnkgdGhlIElETCBjb2RlIGdlbmVyYXRvciB0byBiZSBhYmxl
IHRvIGhhbmRsZSBlbXB0eSBJREwgZGljdGlvbmFyaWVzLgorCisgICAgICAgICogcGxhdGZvcm0v
Y29jb2EvV2ViQ29yZUFkZGl0aW9ucy5tbToKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1
dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogUGxhdGZvcm1NYWMu
Y21ha2U6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjEtMDItMTggIEthdGUgQ2hlbmV5ICA8a2F0
aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIG5vbiBh
cHAtYm91bmQgcmVxdWVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDgwODQ3OTQyZmI2M2QyZDUx
YjdjOThlNGRiYmQ3OWY0MWMxYzc1ZTUuLjIzNWZjYjVjZGYxMjhlYTI2NjQwM2ZmNDIzMzJmNDZi
MmQ4ZjgxZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTAyLTE1
ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBbUGF5bWVudCBS
ZXF1ZXN0XSBhZGQgYW4gYG9iamVjdCBkYXRhYCB0byBgUGF5bWVudEl0ZW1gIHNvIHRoYXQgZGF0
YSBzcGVjaWZpYyB0byBBcHBsZSBQYXkgY2FuIGJlIHByb3ZpZGVkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE5NzAKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzY5ODA2OTk5PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4u
CisKKyAgICAgICAgKiBwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg6CisgICAgICAgICogcGFs
L2NvY29hL1Bhc3NLaXRTb2Z0TGluay5tbToKKyAgICAgICAgKiBwYWwvc3BpL2NvY29hL1Bhc3NL
aXRTUEkuaDoKKwogMjAyMS0wMi0xOCAgUGVyIEFybmUgIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbbWFjT1NdIE9ic2VydmUgc3lzdGVtIHNsZWVwIGV2ZW50cyBpbiB0aGUgVUkgcHJv
Y2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCA0MTM0MDZjYzVjNjc5NDA5OWQ1MDNlNzE0ZmIwMzAzMWU2OGQxY2Q2
Li4yZjc2Yjk3MzM4ZWFmZDAzYTFiMjE1NTU4YTY4ZDZmY2RjMDYyODQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE5IEBACisyMDIxLTAyLTE1ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNv
bT4KKworICAgICAgICBbUGF5bWVudCBSZXF1ZXN0XSBhZGQgYW4gYG9iamVjdCBkYXRhYCB0byBg
UGF5bWVudEl0ZW1gIHNvIHRoYXQgZGF0YSBzcGVjaWZpYyB0byBBcHBsZSBQYXkgY2FuIGJlIHBy
b3ZpZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjE5NzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5ODA2OTk5PgorCisgICAgICAgIFJldmll
d2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVy
c0NvY29hLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPEFwcGxlUGF5U2Vzc2lvblBh
eW1lbnRSZXF1ZXN0Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxBcHBs
ZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+OjpkZWNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0
OjpMaW5lSXRlbT46OmVuY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtPjo6ZGVjb2RlKTogRGVs
ZXRlZC4KKyAgICAgICAgSnVzdCB1c2UgYEFwcGxlUGF5TGluZUl0ZW1gIGluc3RlYWQgb2YgZHVw
bGljYXRpbmcgaXRzIHN0cnVjdHVyZSBpbiBhbm90aGVyIG9iamVjdCAoYEFwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbWApLgorCiAyMDIxLTAyLTE4ICBLYXRlIENoZW5leSAg
PGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBu
b24gYXBwLWJvdW5kIHJlcXVlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMt
aW5wdXQueGNmaWxlbGlzdAppbmRleCA2OGNmZDRhMDcyNjI1MzQ4YWNlNTdiOTNmZGE3NzNlY2Iy
YzY4MTdmLi5iZTkwZDQzZDBjMTI4YjE0ZWQ2MzA5NTI1MmY0YWZhNGE0MDE2ZTA1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTMyLDYg
KzMyLDcgQEAgJChQUk9KRUNUX0RJUikvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxt
ZW50SXRlbS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlJbnN0
YWxsbWVudEl0ZW1UeXBlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheUluc3RhbGxtZW50UmV0YWlsQ2hhbm5lbC5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbS5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlMaW5lSXRlbURhdGEuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5TWVyY2hhbnRDYXBhYmlsaXR5LmlkbAogJChQUk9KRUNUX0RJUikvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnQuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVz
L2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQuaWRsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDE3MjM2
NGQ5YjU1MTEwOTI0ZGQ5M2M3ZGFjYzY4NjI5ZmQ3OWJlN2MuLjhjMWYyNWZjMTcyZmVkYjc3YzBh
NzQ3YTEyYTlkYjBhOTA4NTdjOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0xMDIsNiArMTAyLDggQEAgJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBcHBsZVBheUluc3RhbGxtZW50UmV0YWls
Q2hhbm5lbC4KICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
QXBwbGVQYXlJbnN0YWxsbWVudFJldGFpbENoYW5uZWwuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBcHBsZVBheUxpbmVJdGVtLmNwcAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBcHBsZVBheUxpbmVJdGVtLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXBwbGVQYXlM
aW5lSXRlbURhdGEuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0FwcGxlUGF5TGluZUl0ZW1EYXRhLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTQXBwbGVQYXlNZXJjaGFudENhcGFiaWxpdHkuY3BwCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0FwcGxlUGF5TWVyY2hh
bnRDYXBhYmlsaXR5LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTQXBwbGVQYXlNb2RpZmllci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmlu
ZGV4IGZiYTllZTVhMDEzNDlmYjYxYWJjYmFhMmQ1YjI0NDNlMDIwY2U5YjkuLmE4ZDg3ZWUxOTJl
YTdkYjhlMTcxN2FjNDBlNzAzODYwNmQ1NTM1NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQpAQCAtNjEsNiArNjEsNyBAQCBKU19CSU5ESU5HX0lETFMgOj0gXAogICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUluc3RhbGxtZW50SXRlbVR5cGUuaWRsIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlJbnN0YWxsbWVudFJldGFpbENo
YW5uZWwuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5l
SXRlbS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJ
dGVtRGF0YS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheU1l
cmNoYW50Q2FwYWJpbGl0eS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheVBheW1lbnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdC5pZGwgXApAQCAtMTcyMiw3ICsxNzIzLDcg
QEAgUFJFUFJPQ0VTU19JRExTX1NDUklQVFMgPSBcCiAKIElETF9JTkNMVURFUyA9IFwKICAgICAk
KFdlYkNvcmUpL01vZHVsZXMgXAotICAgICQoSURMX1BBVEhTKQorICAgICQoQURESVRJT05BTF9C
SU5ESU5HX0lETFNfUEFUSFMpCiAKIElETF9DT01NT05fQVJHUyA9ICQoSURMX0lOQ0xVREVTOiU9
LS1pbmNsdWRlICUpIC0td3JpdGUtZGVwZW5kZW5jaWVzIC0tb3V0cHV0RGlyIC4KIApAQCAtMTgw
MCw3ICsxODAxLDcgQEAgJChJRExfSU5URVJNRURJQVRFX1BBVFRFUk5TKSA6ICQoUFJFUFJPQ0VT
U19JRExTX1NDUklQVFMpICQoSURMX0FUVFJJQlVURVNfRklMRSkKICMgZ2VuZXJhdGUgZmlsZSBp
bmZvcm1hdGlvbiB3aXRob3V0IHBhdGhzLCBhbmQgdGhvc2Ugc3RpbGwgbmVlZCB0byBiZW5lZml0
IGZyb20KICMgc2V0dGluZyBzZWFyY2ggcGF0aHMgd2l0aCB2cGF0aC4KIAotdnBhdGggJS5pZGwg
JChJRExfUEFUSFMpICQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cwordnBhdGggJS5pZGwgJChB
RERJVElPTkFMX0JJTkRJTkdfSURMU19QQVRIUykgJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRz
CiAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
ZGVmaW5lIEdFTkVSQVRFX0JJTkRJTkdTX3RlbXBsYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TGluZUl0ZW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbS5oCmluZGV4IDE4N2Y2OWE0ZTk2ODRj
NjE5YTVhZjlhNTRiZjczMTIxNmQxNDcyM2QuLmU3NGJmZDgzZmIyMTNlYTVjMGZjYjcwZDY0MzI2
YmU0MzhjY2JkZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
QXBwbGVQYXlMaW5lSXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
QXBwbGVQYXlMaW5lSXRlbS5oCkBAIC0yNywxOCArMjcsNjUgQEAKIAogI2lmIEVOQUJMRShBUFBM
RV9QQVkpCiAKLSNpbmNsdWRlICJBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oIgorI2lu
Y2x1ZGUgIkFwcGxlUGF5TGluZUl0ZW1EYXRhLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdHJ1Y3QgQXBwbGVQYXlMaW5lSXRlbSB7Ci0g
ICAgdXNpbmcgVHlwZSA9IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbTo6
VHlwZTsKK3N0cnVjdCBBcHBsZVBheUxpbmVJdGVtIGZpbmFsIDogcHVibGljIEFwcGxlUGF5TGlu
ZUl0ZW1EYXRhIHsKKyAgICBlbnVtIGNsYXNzIFR5cGUgOiBib29sIHsKKyAgICAgICAgUGVuZGlu
ZywKKyAgICAgICAgRmluYWwsCisgICAgfTsKIAogICAgIFR5cGUgdHlwZSB7IFR5cGU6OkZpbmFs
IH07CiAgICAgU3RyaW5nIGxhYmVsOwogICAgIFN0cmluZyBhbW91bnQ7CisKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEFwcGxlUGF5TGluZUl0ZW0+IGRlY29k
ZShEZWNvZGVyJik7CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBBcHBsZVBh
eUxpbmVJdGVtOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBBcHBsZVBh
eUxpbmVJdGVtRGF0YTo6ZW5jb2RlKGVuY29kZXIpOworICAgIGVuY29kZXIgPDwgdHlwZTsKKyAg
ICBlbmNvZGVyIDw8IGxhYmVsOworICAgIGVuY29kZXIgPDwgYW1vdW50OwogfQogCit0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8QXBwbGVQYXlMaW5lSXRlbT4gQXBwbGVQYXlMaW5l
SXRlbTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgQXBwbGVQYXlMaW5lSXRlbSBy
ZXN1bHQ7CisKKyAgICBpZiAoIXJlc3VsdC5kZWNvZGVEYXRhKGRlY29kZXIpKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8VHlwZT4gdHlwZTsKKyAgICBkZWNv
ZGVyID4+IHR5cGU7CisgICAgaWYgKCF0eXBlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIHJlc3VsdC50eXBlID0gV1RGTW92ZSgqdHlwZSk7CisKKyAgICBPcHRpb25hbDxTdHJp
bmc+IGxhYmVsOworICAgIGRlY29kZXIgPj4gbGFiZWw7CisgICAgaWYgKCFsYWJlbCkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXN1bHQubGFiZWwgPSBXVEZNb3ZlKCpsYWJl
bCk7CisKKyAgICBPcHRpb25hbDxTdHJpbmc+IGFtb3VudDsKKyAgICBkZWNvZGVyID4+IGFtb3Vu
dDsKKyAgICBpZiAoIWFtb3VudCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBy
ZXN1bHQuYW1vdW50ID0gV1RGTW92ZSgqYW1vdW50KTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TGluZUl0ZW0uaWRsIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJdGVtLmlkbAppbmRleCBkYTVmMmVl
YTJlMmFkMzUwZTY3MjdlYjVmNmRlNzUyYzk3OGE4Y2VlLi5hNDJiNzcyNGJlOGY2ODc4NTVkNDYw
OTYzZmRiODFhNGJkNzE5YThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5TGluZUl0ZW0uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbS5pZGwKQEAgLTM0LDcgKzM0LDcgQEAKICAgICBDb25k
aXRpb25hbD1BUFBMRV9QQVksCiAgICAgRXhwb3J0TWFjcm89V0VCQ09SRV9FWFBPUlQsCiAgICAg
SlNHZW5lcmF0ZVRvSlNPYmplY3QsCi1dIGRpY3Rpb25hcnkgQXBwbGVQYXlMaW5lSXRlbSB7Citd
IGRpY3Rpb25hcnkgQXBwbGVQYXlMaW5lSXRlbSA6IEFwcGxlUGF5TGluZUl0ZW1EYXRhIHsKICAg
ICBBcHBsZVBheUxpbmVJdGVtVHlwZSB0eXBlID0gImZpbmFsIjsKICAgICBET01TdHJpbmcgbGFi
ZWw7CiAgICAgRE9NU3RyaW5nIGFtb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbURhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODgxZGRj
ZGZiZDM2MmNiMTJhN2I4NTllMWVlNGU3ZmFjYTM2YTI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJdGVtRGF0YS5oCkBAIC0w
LDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBUFBM
RV9QQVkpCisKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKworI2lmIFVTRShBUFBMRV9JTlRF
Uk5BTF9TREspCisjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL0FwcGxlUGF5TGluZUl0ZW1EYXRh
QWRkaXRpb25zLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgQXBw
bGVQYXlMaW5lSXRlbURhdGEgeworI2lmIGRlZmluZWQoQXBwbGVQYXlMaW5lSXRlbURhdGFBZGRp
dGlvbnNfbWVtYmVycykKKyAgICBBcHBsZVBheUxpbmVJdGVtRGF0YUFkZGl0aW9uc19tZW1iZXJz
CisjZW5kaWYKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8
QXBwbGVQYXlMaW5lSXRlbURhdGE+IGRlY29kZShEZWNvZGVyJik7CisKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVEYXRhKERlY29kZXIm
KTsKK307CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEFwcGxlUGF5TGluZUl0ZW1E
YXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyNpZiBkZWZpbmVkKEFwcGxl
UGF5TGluZUl0ZW1EYXRhQWRkaXRpb25zX2VuY29kZSkKKyAgICBBcHBsZVBheUxpbmVJdGVtRGF0
YUFkZGl0aW9uc19lbmNvZGUKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGVuY29kZXIpOworI2Vu
ZGlmCit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxBcHBsZVBheUxpbmVJ
dGVtRGF0YT4gQXBwbGVQYXlMaW5lSXRlbURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
eworICAgIEFwcGxlUGF5TGluZUl0ZW1EYXRhIHJlc3VsdDsKKyAgICBpZiAoIXJlc3VsdC5kZWNv
ZGVEYXRhKGRlY29kZXIpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+Citib29sIEFwcGxlUGF5TGlu
ZUl0ZW1EYXRhOjpkZWNvZGVEYXRhKERlY29kZXImIGRlY29kZXIpCit7CisjaWYgZGVmaW5lZChB
cHBsZVBheUxpbmVJdGVtRGF0YUFkZGl0aW9uc19kZWNvZGVEYXRhKQorICAgIEFwcGxlUGF5TGlu
ZUl0ZW1EYXRhQWRkaXRpb25zX2RlY29kZURhdGEKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGRl
Y29kZXIpOworI2VuZGlmCisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BBWSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbURhdGEuaWRsIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJdGVtRGF0YS5pZGwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uM2Q0ZWI3ZDIxM2FlMDU1MmVkOWJmNzRjZmQ5NTg0ZDExNjYzNmU0MwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5l
SXRlbURhdGEuaWRsCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0
aW9uYWw9QVBQTEVfUEFZLAorICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAorXSBkaWN0aW9uYXJ5
IEFwcGxlUGF5TGluZUl0ZW1EYXRhIHsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5jcHAKaW5kZXggYjU1YTc3MGIzOTQ4NWRhMTcx
NzQ1OGM5NmQyM2RmZDUyZjYwYjliOC4uMjg5NDY5MjFmOWQxYTE2Y2M4NDBjZTMzYTNiNGI3Y2Fk
Mzk1ZjM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlTZXNzaW9uLmNwcApAQCAtMTQ1LDQxICsxNDUsMzQgQEAgc3RhdGljIGJvb2wgdmFsaWRh
dGVBbW91bnQoY29uc3QgU3RyaW5nJiBhbW91bnRTdHJpbmcpCiAgICAgcmV0dXJuIHN0YXRlID09
IFN0YXRlOjpEaWdpdCB8fCBzdGF0ZSA9PSBTdGF0ZTo6RG90RGlnaXQgfHwgc3RhdGUgPT0gU3Rh
dGU6OkVuZDsKIH0KIAotc3RhdGljIEV4Y2VwdGlvbk9yPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRS
ZXF1ZXN0OjpMaW5lSXRlbT4gY29udmVydEFuZFZhbGlkYXRlVG90YWwoQXBwbGVQYXlMaW5lSXRl
bSYmIGxpbmVJdGVtKQorc3RhdGljIEV4Y2VwdGlvbk9yPEFwcGxlUGF5TGluZUl0ZW0+IGNvbnZl
cnRBbmRWYWxpZGF0ZVRvdGFsKEFwcGxlUGF5TGluZUl0ZW0mJiBsaW5lSXRlbSkKIHsKICAgICBp
ZiAoIXZhbGlkYXRlQW1vdW50KGxpbmVJdGVtLmFtb3VudCkpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBUeXBlRXJyb3IsIG1ha2VTdHJpbmcoIlwiIiArIGxpbmVJdGVtLmFtb3VudCwgIlwi
IGlzIG5vdCBhIHZhbGlkIGFtb3VudC4iKSB9OwogCi0gICAgQXBwbGVQYXlTZXNzaW9uUGF5bWVu
dFJlcXVlc3Q6OkxpbmVJdGVtIHRvdGFsIHsgbGluZUl0ZW0udHlwZSwgbGluZUl0ZW0uYW1vdW50
LCBsaW5lSXRlbS5sYWJlbCB9OwotCi0gICAgYXV0byB2YWxpZGF0ZWRUb3RhbCA9IFBheW1lbnRS
ZXF1ZXN0VmFsaWRhdG9yOjp2YWxpZGF0ZVRvdGFsKHRvdGFsKTsKKyAgICBhdXRvIHZhbGlkYXRl
ZFRvdGFsID0gUGF5bWVudFJlcXVlc3RWYWxpZGF0b3I6OnZhbGlkYXRlVG90YWwobGluZUl0ZW0p
OwogICAgIGlmICh2YWxpZGF0ZWRUb3RhbC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJu
IHZhbGlkYXRlZFRvdGFsLnJlbGVhc2VFeGNlcHRpb24oKTsKIAotICAgIHJldHVybiBXVEZNb3Zl
KHRvdGFsKTsKKyAgICByZXR1cm4gV1RGTW92ZShsaW5lSXRlbSk7CiB9CiAKLXN0YXRpYyBFeGNl
cHRpb25PcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0+IGNvbnZlcnRB
bmRWYWxpZGF0ZShBcHBsZVBheUxpbmVJdGVtJiYgbGluZUl0ZW0pCitzdGF0aWMgRXhjZXB0aW9u
T3I8QXBwbGVQYXlMaW5lSXRlbT4gY29udmVydEFuZFZhbGlkYXRlKEFwcGxlUGF5TGluZUl0ZW0m
JiBsaW5lSXRlbSkKIHsKLSAgICBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0
ZW0gcmVzdWx0OwotCi0gICAgLy8gSXQgaXMgT0sgZm9yIHBlbmRpbmcgdHlwZXMgdG8gbm90IGhh
dmUgYW4gYW1vdW50LgotICAgIGlmIChsaW5lSXRlbS50eXBlICE9IEFwcGxlUGF5U2Vzc2lvblBh
eW1lbnRSZXF1ZXN0OjpMaW5lSXRlbTo6VHlwZTo6UGVuZGluZykgeworICAgIGlmIChsaW5lSXRl
bS50eXBlID09IEFwcGxlUGF5TGluZUl0ZW06OlR5cGU6OlBlbmRpbmcpIHsKKyAgICAgICAgLy8g
SXQgaXMgT0sgZm9yIHBlbmRpbmcgdHlwZXMgdG8gbm90IGhhdmUgYW4gYW1vdW50LgorICAgICAg
ICBsaW5lSXRlbS5hbW91bnQgPSBudWxsU3RyaW5nKCk7CisgICAgfSBlbHNlIHsKICAgICAgICAg
aWYgKCF2YWxpZGF0ZUFtb3VudChsaW5lSXRlbS5hbW91bnQpKQogICAgICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgbWFrZVN0cmluZygiXCIiICsgbGluZUl0ZW0uYW1vdW50
LCAiXCIgaXMgbm90IGEgdmFsaWQgYW1vdW50LiIpIH07Ci0KLSAgICAgICAgcmVzdWx0LmFtb3Vu
dCA9IGxpbmVJdGVtLmFtb3VudDsKICAgICB9CiAKLSAgICByZXN1bHQudHlwZSA9IGxpbmVJdGVt
LnR5cGU7Ci0gICAgcmVzdWx0LmxhYmVsID0gbGluZUl0ZW0ubGFiZWw7Ci0KLSAgICByZXR1cm4g
V1RGTW92ZShyZXN1bHQpOworICAgIHJldHVybiBXVEZNb3ZlKGxpbmVJdGVtKTsKIH0KIAotc3Rh
dGljIEV4Y2VwdGlvbk9yPFZlY3RvcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGlu
ZUl0ZW0+PiBjb252ZXJ0QW5kVmFsaWRhdGUoT3B0aW9uYWw8VmVjdG9yPEFwcGxlUGF5TGluZUl0
ZW0+PiYmIGxpbmVJdGVtcykKK3N0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8QXBwbGVQYXlMaW5l
SXRlbT4+IGNvbnZlcnRBbmRWYWxpZGF0ZShPcHRpb25hbDxWZWN0b3I8QXBwbGVQYXlMaW5lSXRl
bT4+JiYgbGluZUl0ZW1zKQogewotICAgIFZlY3RvcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVx
dWVzdDo6TGluZUl0ZW0+IHJlc3VsdDsKKyAgICBWZWN0b3I8QXBwbGVQYXlMaW5lSXRlbT4gcmVz
dWx0OwogICAgIGlmICghbGluZUl0ZW1zKQogICAgICAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmgKaW5kZXggMWZiZDQ3YzJlMmQ1NjZhMGI2
OWJhY2MxYTVhNWFiY2JhNmZhM2RhMC4uMzk4NjQ3NmUxMmRmZjdmYzk4YjdlOTU0ODJjNWU2ZTQ1
YzBiMGIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuaApAQCAtMjcsNiArMjcsNyBA
QAogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIAorI2luY2x1ZGUgIkFwcGxlUGF5TGluZUl0ZW0u
aCIKICNpbmNsdWRlICJQYXltZW50Q29udGFjdC5oIgogI2luY2x1ZGUgIlBheW1lbnRJbnN0YWxs
bWVudENvbmZpZ3VyYXRpb25XZWJDb3JlLmgiCiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4K
QEAgLTg1LDE2ICs4Niw2IEBAIHB1YmxpYzoKICAgICBjb25zdCBNZXJjaGFudENhcGFiaWxpdGll
cyYgbWVyY2hhbnRDYXBhYmlsaXRpZXMoKSBjb25zdCB7IHJldHVybiBtX21lcmNoYW50Q2FwYWJp
bGl0aWVzOyB9CiAgICAgdm9pZCBzZXRNZXJjaGFudENhcGFiaWxpdGllcyhjb25zdCBNZXJjaGFu
dENhcGFiaWxpdGllcyYgbWVyY2hhbnRDYXBhYmlsaXRpZXMpIHsgbV9tZXJjaGFudENhcGFiaWxp
dGllcyA9IG1lcmNoYW50Q2FwYWJpbGl0aWVzOyB9CiAKLSAgICBzdHJ1Y3QgTGluZUl0ZW0gewot
ICAgICAgICBlbnVtIGNsYXNzIFR5cGUgOiBib29sIHsKLSAgICAgICAgICAgIFBlbmRpbmcsCi0g
ICAgICAgICAgICBGaW5hbCwKLSAgICAgICAgfSB0eXBlIHsgVHlwZTo6RmluYWwgfTsKLQotICAg
ICAgICBTdHJpbmcgYW1vdW50OwotICAgICAgICBTdHJpbmcgbGFiZWw7Ci0gICAgfTsKLQogICAg
IGVudW0gY2xhc3MgU2hpcHBpbmdUeXBlIHsKICAgICAgICAgU2hpcHBpbmcsCiAgICAgICAgIERl
bGl2ZXJ5LApAQCAtMTE0LDE1ICsxMDUsMTUgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxT
aGlwcGluZ01ldGhvZD4mIHNoaXBwaW5nTWV0aG9kcygpIGNvbnN0IHsgcmV0dXJuIG1fc2hpcHBp
bmdNZXRob2RzOyB9CiAgICAgdm9pZCBzZXRTaGlwcGluZ01ldGhvZHMoY29uc3QgVmVjdG9yPFNo
aXBwaW5nTWV0aG9kPiYgc2hpcHBpbmdNZXRob2RzKSB7IG1fc2hpcHBpbmdNZXRob2RzID0gc2hp
cHBpbmdNZXRob2RzOyB9CiAKLSAgICBjb25zdCBWZWN0b3I8TGluZUl0ZW0+JiBsaW5lSXRlbXMo
KSBjb25zdCB7IHJldHVybiBtX2xpbmVJdGVtczsgfQotICAgIHZvaWQgc2V0TGluZUl0ZW1zKGNv
bnN0IFZlY3RvcjxMaW5lSXRlbT4mIGxpbmVJdGVtcykgeyBtX2xpbmVJdGVtcyA9IGxpbmVJdGVt
czsgfQorICAgIGNvbnN0IFZlY3RvcjxBcHBsZVBheUxpbmVJdGVtPiYgbGluZUl0ZW1zKCkgY29u
c3QgeyByZXR1cm4gbV9saW5lSXRlbXM7IH0KKyAgICB2b2lkIHNldExpbmVJdGVtcyhjb25zdCBW
ZWN0b3I8QXBwbGVQYXlMaW5lSXRlbT4mIGxpbmVJdGVtcykgeyBtX2xpbmVJdGVtcyA9IGxpbmVJ
dGVtczsgfQogCi0gICAgY29uc3QgTGluZUl0ZW0mIHRvdGFsKCkgY29uc3QgeyByZXR1cm4gbV90
b3RhbDsgfTsKLSAgICB2b2lkIHNldFRvdGFsKGNvbnN0IExpbmVJdGVtJiB0b3RhbCkgeyBtX3Rv
dGFsID0gdG90YWw7IH0KKyAgICBjb25zdCBBcHBsZVBheUxpbmVJdGVtJiB0b3RhbCgpIGNvbnN0
IHsgcmV0dXJuIG1fdG90YWw7IH07CisgICAgdm9pZCBzZXRUb3RhbChjb25zdCBBcHBsZVBheUxp
bmVJdGVtJiB0b3RhbCkgeyBtX3RvdGFsID0gdG90YWw7IH0KIAogICAgIHN0cnVjdCBUb3RhbEFu
ZExpbmVJdGVtcyB7Ci0gICAgICAgIEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5l
SXRlbSB0b3RhbDsKLSAgICAgICAgVmVjdG9yPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0
OjpMaW5lSXRlbT4gbGluZUl0ZW1zOworICAgICAgICBBcHBsZVBheUxpbmVJdGVtIHRvdGFsOwor
ICAgICAgICBWZWN0b3I8QXBwbGVQYXlMaW5lSXRlbT4gbGluZUl0ZW1zOwogICAgIH07CiAKICAg
ICBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGlj
YXRpb25EYXRhOyB9CkBAIC0xNjIsOCArMTUzLDggQEAgcHJpdmF0ZToKICAgICBTaGlwcGluZ1R5
cGUgbV9zaGlwcGluZ1R5cGUgeyBTaGlwcGluZ1R5cGU6OlNoaXBwaW5nIH07CiAgICAgVmVjdG9y
PFNoaXBwaW5nTWV0aG9kPiBtX3NoaXBwaW5nTWV0aG9kczsKIAotICAgIFZlY3RvcjxMaW5lSXRl
bT4gbV9saW5lSXRlbXM7Ci0gICAgTGluZUl0ZW0gbV90b3RhbDsKKyAgICBWZWN0b3I8QXBwbGVQ
YXlMaW5lSXRlbT4gbV9saW5lSXRlbXM7CisgICAgQXBwbGVQYXlMaW5lSXRlbSBtX3RvdGFsOwog
CiAgICAgU3RyaW5nIG1fYXBwbGljYXRpb25EYXRhOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fc3Vw
cG9ydGVkQ291bnRyaWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9QYXltZW50TWV0aG9kVXBkYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L1BheW1lbnRNZXRob2RVcGRhdGUuaAppbmRleCA3MGU4ZTMxMzE5YzY4MmI3MGY4MzUwYzA1
Njg0MTQ2ZTk5MDkyYTdjLi5kODQwZTE2M2Q1MDViMDBjMjE5YTE2ZmMzOThmNWJmMzg0MzhmMzhh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRNZXRo
b2RVcGRhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRN
ZXRob2RVcGRhdGUuaApAQCAtMzYsMTAgKzM2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBXRUJDT1JFX0VYUE9SVCBQYXltZW50TWV0aG9kVXBkYXRlIHsKIHB1YmxpYzoKLSAgICB1
c2luZyBMaW5lSXRlbSA9IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbTsK
ICAgICB1c2luZyBUb3RhbEFuZExpbmVJdGVtcyA9IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1
ZXN0OjpUb3RhbEFuZExpbmVJdGVtczsKIAotICAgIFBheW1lbnRNZXRob2RVcGRhdGUoTGluZUl0
ZW0mJiB0b3RhbCwgVmVjdG9yPExpbmVJdGVtPiYmKTsKKyAgICBQYXltZW50TWV0aG9kVXBkYXRl
KEFwcGxlUGF5TGluZUl0ZW0mJiB0b3RhbCwgVmVjdG9yPEFwcGxlUGF5TGluZUl0ZW0+JiYpOwog
ICAgIGV4cGxpY2l0IFBheW1lbnRNZXRob2RVcGRhdGUoUmV0YWluUHRyPFBLUGF5bWVudFJlcXVl
c3RQYXltZW50TWV0aG9kVXBkYXRlPiYmKTsKICAgICBleHBsaWNpdCBQYXltZW50TWV0aG9kVXBk
YXRlKFRvdGFsQW5kTGluZUl0ZW1zJiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L1BheW1lbnRSZXF1ZXN0VmFsaWRhdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRSZXF1ZXN0VmFsaWRhdG9yLmgKaW5kZXggNjhmYTI1
ZGZiOWIyOTlhMGZkZDYyYmQwZWJhMWIzN2I3N2E0ODY3Yy4uMWFiOTBiZTViZjAxY2EwZmIyMTYy
NTM5NWQ5ZmFmYmJkNDk3ZGYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9QYXltZW50UmVxdWVzdFZhbGlkYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvUGF5bWVudFJlcXVlc3RWYWxpZGF0b3IuaApAQCAtMzUsNyArMzUsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQYXltZW50UmVxdWVzdFZhbGlkYXRvciB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+IHZhbGlkYXRlKGNvbnN0IEFwcGxl
UGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jik7Ci0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+
IHZhbGlkYXRlVG90YWwoY29uc3QgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJ
dGVtJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+IHZhbGlkYXRlVG90YWwoY29uc3Qg
QXBwbGVQYXlMaW5lSXRlbSYpOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50UmVxdWVzdFZhbGlkYXRvci5tbSBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFJlcXVlc3RWYWxpZGF0b3IubW0KaW5kZXggNWZk
MWFmZjdlYjBkOGVlOTE5NDNjZmY5MmUwNmUzNjJjNjA2M2I0Yi4uZWY5ZjZlODI0ODQ2NWZlM2Fm
YjNhNjNkNmJiZjI4ZjcwZTgxZDNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9QYXltZW50UmVxdWVzdFZhbGlkYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRSZXF1ZXN0VmFsaWRhdG9yLm1tCkBAIC03Niw3ICs3
Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBheW1lbnRSZXF1ZXN0VmFsaWRhdG9yOjp2YWxpZGF0
ZShjb25zdCBBcHBsZVBheVNlc3Npb25QYXltZW50CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotRXhj
ZXB0aW9uT3I8dm9pZD4gUGF5bWVudFJlcXVlc3RWYWxpZGF0b3I6OnZhbGlkYXRlVG90YWwoY29u
c3QgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtJiB0b3RhbCkKK0V4Y2Vw
dGlvbk9yPHZvaWQ+IFBheW1lbnRSZXF1ZXN0VmFsaWRhdG9yOjp2YWxpZGF0ZVRvdGFsKGNvbnN0
IEFwcGxlUGF5TGluZUl0ZW0mIHRvdGFsKQogewogICAgIGlmICghdG90YWwubGFiZWwpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJNaXNzaW5nIHRvdGFsIGxhYmVsLiIg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFN1
bW1hcnlJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50U3Vt
bWFyeUl0ZW1zLmgKaW5kZXggNWU5NTE2YTA4ZmU2YjUxOGYxNjI5YmEwMWNlM2I3NjQ4OGQ2YmY0
YS4uZmZmODQ0ZDc3OTViMzk1ZGVhMTIwMWMxMzcwNmZlNzNkOTZmOGY5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50U3VtbWFyeUl0ZW1zLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50U3VtbWFyeUl0ZW1zLmgK
QEAgLTM0LDcgKzM0LDcgQEAgT0JKQ19DTEFTUyBOU0FycmF5OwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBXRUJDT1JFX0VYUE9SVCBOU0FycmF5ICpwbGF0Zm9ybVN1bW1hcnlJdGVtcyhjb25zdCBB
cHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXMmKTsKLVdFQkNP
UkVfRVhQT1JUIE5TQXJyYXkgKnBsYXRmb3JtU3VtbWFyeUl0ZW1zKGNvbnN0IEFwcGxlUGF5U2Vz
c2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbSYgdG90YWwsIGNvbnN0IFZlY3RvcjxBcHBsZVBh
eVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0+Jik7CitXRUJDT1JFX0VYUE9SVCBOU0Fy
cmF5ICpwbGF0Zm9ybVN1bW1hcnlJdGVtcyhjb25zdCBBcHBsZVBheUxpbmVJdGVtJiB0b3RhbCwg
Y29uc3QgVmVjdG9yPEFwcGxlUGF5TGluZUl0ZW0+Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9Q
YXltZW50TWV0aG9kVXBkYXRlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L2NvY29hL1BheW1lbnRNZXRob2RVcGRhdGVDb2NvYS5tbQppbmRleCA1Y2ViODZhZDBlNjhh
MjU4ZDk0NGI4NzU3Mjk5MGUwMGE4MmI4ZmYyLi4xNjRkMTFiNmQwNzY5N2E5ZDA5NTk1NjVjNmZj
MWQ2ODc4ZmFhNTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L2NvY29hL1BheW1lbnRNZXRob2RVcGRhdGVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RVcGRhdGVDb2NvYS5tbQpAQCAtMzMs
NyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBheW1lbnRNZXRob2RVcGRhdGU6
OlBheW1lbnRNZXRob2RVcGRhdGUoTGluZUl0ZW0mJiB0b3RhbCwgVmVjdG9yPExpbmVJdGVtPiYm
IGxpbmVJdGVtcykKK1BheW1lbnRNZXRob2RVcGRhdGU6OlBheW1lbnRNZXRob2RVcGRhdGUoQXBw
bGVQYXlMaW5lSXRlbSYmIHRvdGFsLCBWZWN0b3I8QXBwbGVQYXlMaW5lSXRlbT4mJiBsaW5lSXRl
bXMpCiAgICAgOiBtX3RvdGFsQW5kTGluZUl0ZW1zIHsgeyBXVEZNb3ZlKHRvdGFsKSwgV1RGTW92
ZShsaW5lSXRlbXMpIH0gfQogICAgICwgbV9wbGF0Zm9ybVVwZGF0ZSB7IGFkb3B0TlMoW1BBTDo6
YWxsb2NQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdp
dGhQYXltZW50U3VtbWFyeUl0ZW1zOnBsYXRmb3JtU3VtbWFyeUl0ZW1zKCptX3RvdGFsQW5kTGlu
ZUl0ZW1zKV0pIH0KIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvY29jb2EvUGF5bWVudFN1bW1hcnlJdGVtc0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50U3VtbWFyeUl0ZW1zQ29jb2EubW0KaW5kZXggOGE4
NzI0YTc2NDg1MGQ2ZjA3NWYwNDlkOWMxOGU2YTBmNWFmNjFmNy4uZTc5OWE5Y2NkOTUxZGIzMDNi
YTYyNzBjYTkzMjQxYzBkODQ3NDQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9jb2NvYS9QYXltZW50U3VtbWFyeUl0ZW1zQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50U3VtbWFyeUl0ZW1zQ29jb2Eu
bW0KQEAgLTM5LDI3ICszOSwzMyBAQCBzdGF0aWMgTlNEZWNpbWFsTnVtYmVyICp0b0RlY2ltYWxO
dW1iZXIoY29uc3QgU3RyaW5nJiBhbW91bnQpCiAgICAgcmV0dXJuIFtOU0RlY2ltYWxOdW1iZXIg
ZGVjaW1hbE51bWJlcldpdGhTdHJpbmc6YW1vdW50IGxvY2FsZTpAeyBOU0xvY2FsZURlY2ltYWxT
ZXBhcmF0b3IgOiBAIi4iIH1dOwogfQogCi1zdGF0aWMgUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBl
IHRvUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlKEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0
OjpMaW5lSXRlbTo6VHlwZSB0eXBlKQorc3RhdGljIFBLUGF5bWVudFN1bW1hcnlJdGVtVHlwZSB0
b1BLUGF5bWVudFN1bW1hcnlJdGVtVHlwZShBcHBsZVBheUxpbmVJdGVtOjpUeXBlIHR5cGUpCiB7
CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBBcHBsZVBheVNlc3Npb25QYXltZW50UmVx
dWVzdDo6TGluZUl0ZW06OlR5cGU6OkZpbmFsOgorICAgIGNhc2UgQXBwbGVQYXlMaW5lSXRlbTo6
VHlwZTo6RmluYWw6CiAgICAgICAgIHJldHVybiBQS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGVGaW5h
bDsKLSAgICBjYXNlIEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbTo6VHlw
ZTo6UGVuZGluZzoKKyAgICBjYXNlIEFwcGxlUGF5TGluZUl0ZW06OlR5cGU6OlBlbmRpbmc6CiAg
ICAgICAgIHJldHVybiBQS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGVQZW5kaW5nOwogICAgIH0KIH0K
IAotc3RhdGljIFBLUGF5bWVudFN1bW1hcnlJdGVtICp0b1BLUGF5bWVudFN1bW1hcnlJdGVtKGNv
bnN0IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbSYgbGluZUl0ZW0pCisj
aWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9QYXlt
ZW50U3VtbWFyeUl0ZW1zQ29jb2FBZGRpdGlvbnMubW0+CisjZW5kaWYKKworI2lmICFFTkFCTEUo
QVBQTEVfUEFZX0xJTkVfSVRFTV9EQVRBKQorc3RhdGljIFBLUGF5bWVudFN1bW1hcnlJdGVtICp0
b1BLUGF5bWVudFN1bW1hcnlJdGVtKGNvbnN0IEFwcGxlUGF5TGluZUl0ZW0mIGxpbmVJdGVtKQog
ewogICAgIHJldHVybiBbUEFMOjpnZXRQS1BheW1lbnRTdW1tYXJ5SXRlbUNsYXNzKCkgc3VtbWFy
eUl0ZW1XaXRoTGFiZWw6bGluZUl0ZW0ubGFiZWwgYW1vdW50OnRvRGVjaW1hbE51bWJlcihsaW5l
SXRlbS5hbW91bnQpIHR5cGU6dG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUobGluZUl0ZW0udHlw
ZSldOwogfQorI2VuZGlmCiAKIE5TQXJyYXkgKnBsYXRmb3JtU3VtbWFyeUl0ZW1zKGNvbnN0IEFw
cGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcyYgdG90YWxBbmRM
aW5lSXRlbXMpCiB7CiAgICAgcmV0dXJuIHBsYXRmb3JtU3VtbWFyeUl0ZW1zKHRvdGFsQW5kTGlu
ZUl0ZW1zLnRvdGFsLCB0b3RhbEFuZExpbmVJdGVtcy5saW5lSXRlbXMpOwogfQogCi1OU0FycmF5
ICpwbGF0Zm9ybVN1bW1hcnlJdGVtcyhjb25zdCBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dDo6TGluZUl0ZW0mIHRvdGFsLCBjb25zdCBWZWN0b3I8QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJl
cXVlc3Q6OkxpbmVJdGVtPiYgbGluZUl0ZW1zKQorTlNBcnJheSAqcGxhdGZvcm1TdW1tYXJ5SXRl
bXMoY29uc3QgQXBwbGVQYXlMaW5lSXRlbSYgdG90YWwsIGNvbnN0IFZlY3RvcjxBcHBsZVBheUxp
bmVJdGVtPiYgbGluZUl0ZW1zKQogewogICAgIE5TTXV0YWJsZUFycmF5ICpwYXltZW50U3VtbWFy
eUl0ZW1zID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OmxpbmVJdGVtcy5zaXpl
KCkgKyAxXTsKICAgICBmb3IgKGF1dG8mIGxpbmVJdGVtIDogbGluZUl0ZW1zKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxl
UGF5UGF5bWVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9w
YXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmNwcAppbmRleCAwNTA5NmEzNTVi
MjgzNzQxMDMwZGE1ZDYwMWU5ZDIyMzM3OTBhNGI4Li43ZWMwMzcwZmZlZmUzMzYyODkxZmYxNTI3
ZDJlMThhZTVkMWI4OTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50
SGFuZGxlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkFkZHJlc3NFcnJvcnMu
aCIKICNpbmNsdWRlICJBcHBsZVBheUNvbnRhY3RGaWVsZC5oIgorI2luY2x1ZGUgIkFwcGxlUGF5
TGluZUl0ZW0uaCIKICNpbmNsdWRlICJBcHBsZVBheU1lcmNoYW50Q2FwYWJpbGl0eS5oIgogI2lu
Y2x1ZGUgIkFwcGxlUGF5TW9kaWZpZXIuaCIKICNpbmNsdWRlICJBcHBsZVBheVBheW1lbnQuaCIK
QEAgLTM4LDYgKzM5LDcgQEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRnJh
bWUuaCIKICNpbmNsdWRlICJKU0FwcGxlUGF5RXJyb3IuaCIKKyNpbmNsdWRlICJKU0FwcGxlUGF5
TGluZUl0ZW1EYXRhLmgiCiAjaW5jbHVkZSAiSlNBcHBsZVBheVBheW1lbnQuaCIKICNpbmNsdWRl
ICJKU0FwcGxlUGF5UGF5bWVudE1ldGhvZC5oIgogI2luY2x1ZGUgIkpTQXBwbGVQYXlSZXF1ZXN0
LmgiCkBAIC02MSw2ICs2MywxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNpZiBVU0Uo
QVBQTEVfSU5URVJOQUxfU0RLKQorI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9BcHBsZVBheVBh
eW1lbnRIYW5kbGVyQWRkaXRpb25zLmNwcD4KKyNlbmRpZgorCiBzdGF0aWMgRXhjZXB0aW9uT3I8
QXBwbGVQYXlSZXF1ZXN0PiBjb252ZXJ0QW5kVmFsaWRhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgSlNDOjpKU1ZhbHVlIGRhdGEpCiB7CiAgICAgaWYgKGRhdGEuaXNFbXB0eSgp
KQpAQCAtMTI4LDI1ICsxMzQsNDggQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+IHZhbGlkYXRl
KGNvbnN0IFBheW1lbnRDdXJyZW5jeUFtb3VudCYgYW1vdW50LCBjb25zdCBTdHIKICAgICByZXR1
cm4geyB9OwogfQogCi1zdGF0aWMgRXhjZXB0aW9uT3I8QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJl
cXVlc3Q6OkxpbmVJdGVtPiBjb252ZXJ0QW5kVmFsaWRhdGUoY29uc3QgUGF5bWVudEl0ZW0mIGl0
ZW0sIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRDdXJyZW5jeSkKKyNpZiAhRU5BQkxFKEFQUExFX1BB
WV9MSU5FX0lURU1fREFUQSkKK3N0YXRpYyB2b2lkIG1lcmdlKEFwcGxlUGF5TGluZUl0ZW0mLCBB
cHBsZVBheUxpbmVJdGVtRGF0YSYmKSB7IH0KKyNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZX0xJ
TkVfSVRFTV9EQVRBKQorCitzdGF0aWMgRXhjZXB0aW9uT3I8QXBwbGVQYXlMaW5lSXRlbT4gY29u
dmVydEFuZFZhbGlkYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFBh
eW1lbnRJdGVtJiBpdGVtLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkQ3VycmVuY3kpCiB7CiAgICAg
YXV0byBleGNlcHRpb24gPSB2YWxpZGF0ZShpdGVtLmFtb3VudCwgZXhwZWN0ZWRDdXJyZW5jeSk7
CiAgICAgaWYgKGV4Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGV4Y2Vw
dGlvbi5yZWxlYXNlRXhjZXB0aW9uKCk7CiAKLSAgICBBcHBsZVBheVNlc3Npb25QYXltZW50UmVx
dWVzdDo6TGluZUl0ZW0gbGluZUl0ZW07CisKKyAgICBBcHBsZVBheUxpbmVJdGVtIGxpbmVJdGVt
OwogICAgIGxpbmVJdGVtLmFtb3VudCA9IGl0ZW0uYW1vdW50LnZhbHVlOwotICAgIGxpbmVJdGVt
LnR5cGUgPSBpdGVtLnBlbmRpbmcgPyBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGlu
ZUl0ZW06OlR5cGU6OlBlbmRpbmcgOiBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGlu
ZUl0ZW06OlR5cGU6OkZpbmFsOworICAgIGxpbmVJdGVtLnR5cGUgPSBpdGVtLnBlbmRpbmcgPyBB
cHBsZVBheUxpbmVJdGVtOjpUeXBlOjpQZW5kaW5nIDogQXBwbGVQYXlMaW5lSXRlbTo6VHlwZTo6
RmluYWw7CiAgICAgbGluZUl0ZW0ubGFiZWwgPSBpdGVtLmxhYmVsOworCisgICAgaWYgKCFpdGVt
LnNlcmlhbGl6ZWREYXRhLmlzRW1wdHkoKSkgeworICAgICAgICBhdXRvJiBsZXhpY2FsR2xvYmFs
T2JqZWN0ID0gKmNvbnRleHQuZ2xvYmFsT2JqZWN0KCk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSk7CisgICAgICAgIEpT
Qzo6SlNWYWx1ZSBkYXRhOworICAgICAgICB7CisgICAgICAgICAgICBKU0M6OkpTTG9ja0hvbGRl
ciBsb2NrKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgIGRhdGEgPSBKU09OUGFy
c2UoJmxleGljYWxHbG9iYWxPYmplY3QsIGl0ZW0uc2VyaWFsaXplZERhdGEpOworICAgICAgICAg
ICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH07CisgICAgICAgIH0KKworICAgICAgICBhdXRv
IGFwcGxlUGF5TGluZUl0ZW1EYXRhID0gY29udmVydERpY3Rpb25hcnk8QXBwbGVQYXlMaW5lSXRl
bURhdGE+KGxleGljYWxHbG9iYWxPYmplY3QsIFdURk1vdmUoZGF0YSkpOworICAgICAgICBpZiAo
c2NvcGUuZXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgRXhpc3Rp
bmdFeGNlcHRpb25FcnJvciB9OworICAgICAgICBtZXJnZShsaW5lSXRlbSwgV1RGTW92ZShhcHBs
ZVBheUxpbmVJdGVtRGF0YSkpOworICAgIH0KKwogICAgIHJldHVybiB7IFdURk1vdmUobGluZUl0
ZW0pIH07CiB9CiAKLXN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8QXBwbGVQYXlTZXNzaW9uUGF5
bWVudFJlcXVlc3Q6OkxpbmVJdGVtPj4gY29udmVydEFuZFZhbGlkYXRlKGNvbnN0IFZlY3RvcjxQ
YXltZW50SXRlbT4mIGxpbmVJdGVtcywgY29uc3QgU3RyaW5nJiBleHBlY3RlZEN1cnJlbmN5KQor
c3RhdGljIEV4Y2VwdGlvbk9yPFZlY3RvcjxBcHBsZVBheUxpbmVJdGVtPj4gY29udmVydEFuZFZh
bGlkYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFZlY3RvcjxQYXlt
ZW50SXRlbT4mIGxpbmVJdGVtcywgY29uc3QgU3RyaW5nJiBleHBlY3RlZEN1cnJlbmN5KQogewot
ICAgIFZlY3RvcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0+IHJlc3Vs
dDsKKyAgICBWZWN0b3I8QXBwbGVQYXlMaW5lSXRlbT4gcmVzdWx0OwogICAgIHJlc3VsdC5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGxpbmVJdGVtcy5zaXplKCkpOwogICAgIGZvciAoYXV0byYgbGlu
ZUl0ZW0gOiBsaW5lSXRlbXMpIHsKLSAgICAgICAgYXV0byBjb252ZXJ0ZWRMaW5lSXRlbSA9IGNv
bnZlcnRBbmRWYWxpZGF0ZShsaW5lSXRlbSwgZXhwZWN0ZWRDdXJyZW5jeSk7CisgICAgICAgIGF1
dG8gY29udmVydGVkTGluZUl0ZW0gPSBjb252ZXJ0QW5kVmFsaWRhdGUoY29udGV4dCwgbGluZUl0
ZW0sIGV4cGVjdGVkQ3VycmVuY3kpOwogICAgICAgICBpZiAoY29udmVydGVkTGluZUl0ZW0uaGFz
RXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gY29udmVydGVkTGluZUl0ZW0ucmVsZWFz
ZUV4Y2VwdGlvbigpOwogICAgICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5kKGNvbnZlcnRlZExp
bmVJdGVtLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKQEAgLTIyMywxMiArMjUyLDEyIEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OnNob3coRG9jdW1lbnQmIGRvY3Vt
ZW50KQogICAgIFN0cmluZyBleHBlY3RlZEN1cnJlbmN5ID0gZGV0YWlscy50b3RhbC5hbW91bnQu
Y3VycmVuY3k7CiAgICAgcmVxdWVzdC5zZXRDdXJyZW5jeUNvZGUoZXhwZWN0ZWRDdXJyZW5jeSk7
CiAKLSAgICBhdXRvIHRvdGFsID0gY29udmVydEFuZFZhbGlkYXRlKGRldGFpbHMudG90YWwsIGV4
cGVjdGVkQ3VycmVuY3kpOworICAgIGF1dG8gdG90YWwgPSBjb252ZXJ0QW5kVmFsaWRhdGUoKnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZGV0YWlscy50b3RhbCwgZXhwZWN0ZWRDdXJyZW5jeSk7
CiAgICAgQVNTRVJUKCF0b3RhbC5oYXNFeGNlcHRpb24oKSk7CiAgICAgcmVxdWVzdC5zZXRUb3Rh
bCh0b3RhbC5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CiAKICAgICBpZiAoZGV0YWlscy5kaXNwbGF5
SXRlbXMpIHsKLSAgICAgICAgYXV0byBjb252ZXJ0ZWRMaW5lSXRlbXMgPSBjb252ZXJ0QW5kVmFs
aWRhdGUoKmRldGFpbHMuZGlzcGxheUl0ZW1zLCBleHBlY3RlZEN1cnJlbmN5KTsKKyAgICAgICAg
YXV0byBjb252ZXJ0ZWRMaW5lSXRlbXMgPSBjb252ZXJ0QW5kVmFsaWRhdGUoKnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgKmRldGFpbHMuZGlzcGxheUl0ZW1zLCBleHBlY3RlZEN1cnJlbmN5KTsK
ICAgICAgICAgaWYgKGNvbnZlcnRlZExpbmVJdGVtcy5oYXNFeGNlcHRpb24oKSkKICAgICAgICAg
ICAgIHJldHVybiBjb252ZXJ0ZWRMaW5lSXRlbXMucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAg
ICByZXF1ZXN0LnNldExpbmVJdGVtcyhjb252ZXJ0ZWRMaW5lSXRlbXMucmVsZWFzZVJldHVyblZh
bHVlKCkpOwpAQCAtMjg2LDE0ICszMTUsMTQgQEAgRXhjZXB0aW9uT3I8QXBwbGVQYXlTZXNzaW9u
UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBBcHBsZVBheVBheW1lbnRIYW4KICAg
ICBhdXRvJiBkZXRhaWxzID0gbV9wYXltZW50UmVxdWVzdC0+cGF5bWVudERldGFpbHMoKTsKICAg
ICBTdHJpbmcgY3VycmVuY3kgPSBkZXRhaWxzLnRvdGFsLmFtb3VudC5jdXJyZW5jeTsKIAotICAg
IGF1dG8gY29udmVydGVkVG90YWwgPSBjb252ZXJ0QW5kVmFsaWRhdGUoZGV0YWlscy50b3RhbCwg
Y3VycmVuY3kpOworICAgIGF1dG8gY29udmVydGVkVG90YWwgPSBjb252ZXJ0QW5kVmFsaWRhdGUo
KnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZGV0YWlscy50b3RhbCwgY3VycmVuY3kpOwogICAg
IGlmIChjb252ZXJ0ZWRUb3RhbC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGNvbnZl
cnRlZFRvdGFsLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICBhdXRvIHRvdGFsID0gY29udmVydGVk
VG90YWwucmVsZWFzZVJldHVyblZhbHVlKCk7CiAKLSAgICBWZWN0b3I8QXBwbGVQYXlTZXNzaW9u
UGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtPiBsaW5lSXRlbXM7CisgICAgVmVjdG9yPEFwcGxlUGF5
TGluZUl0ZW0+IGxpbmVJdGVtczsKICAgICBpZiAoZGV0YWlscy5kaXNwbGF5SXRlbXMpIHsKLSAg
ICAgICAgYXV0byBjb252ZXJ0ZWRMaW5lSXRlbXMgPSBjb252ZXJ0QW5kVmFsaWRhdGUoKmRldGFp
bHMuZGlzcGxheUl0ZW1zLCBjdXJyZW5jeSk7CisgICAgICAgIGF1dG8gY29udmVydGVkTGluZUl0
ZW1zID0gY29udmVydEFuZFZhbGlkYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICpkZXRh
aWxzLmRpc3BsYXlJdGVtcywgY3VycmVuY3kpOwogICAgICAgICBpZiAoY29udmVydGVkTGluZUl0
ZW1zLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlZExpbmVJdGVt
cy5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgIGxpbmVJdGVtcyA9IGNvbnZlcnRlZExpbmVJ
dGVtcy5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKQEAgLTMzMywxMyArMzYyLDEzIEBAIEV4Y2VwdGlv
bk9yPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4gQXBw
bGVQYXlQYXltZW50SGFuCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAg
IGlmIChtb2RpZmllci50b3RhbCkgewotICAgICAgICAgICAgICAgIGF1dG8gdG90YWxPdmVycmlk
ZSA9IGNvbnZlcnRBbmRWYWxpZGF0ZSgqbW9kaWZpZXIudG90YWwsIGN1cnJlbmN5KTsKKyAgICAg
ICAgICAgICAgICBhdXRvIHRvdGFsT3ZlcnJpZGUgPSBjb252ZXJ0QW5kVmFsaWRhdGUoKnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgKm1vZGlmaWVyLnRvdGFsLCBjdXJyZW5jeSk7CiAgICAgICAg
ICAgICAgICAgaWYgKHRvdGFsT3ZlcnJpZGUuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0b3RhbE92ZXJyaWRlLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAg
ICAgICAgICB0b3RhbCA9IHRvdGFsT3ZlcnJpZGUucmVsZWFzZVJldHVyblZhbHVlKCk7CiAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gYWRkaXRpb25hbERpc3BsYXlJdGVtcyA9IGNv
bnZlcnRBbmRWYWxpZGF0ZShtb2RpZmllci5hZGRpdGlvbmFsRGlzcGxheUl0ZW1zLCBjdXJyZW5j
eSk7CisgICAgICAgICAgICBhdXRvIGFkZGl0aW9uYWxEaXNwbGF5SXRlbXMgPSBjb252ZXJ0QW5k
VmFsaWRhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbW9kaWZpZXIuYWRkaXRpb25hbERp
c3BsYXlJdGVtcywgY3VycmVuY3kpOwogICAgICAgICAgICAgaWYgKGFkZGl0aW9uYWxEaXNwbGF5
SXRlbXMuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGFkZGl0aW9uYWxE
aXNwbGF5SXRlbXMucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAgbGluZUl0ZW1zLmFw
cGVuZFZlY3RvcihhZGRpdGlvbmFsRGlzcGxheUl0ZW1zLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVu
dEl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudEl0
ZW0uaAppbmRleCBkNTc5NDc2ZmY0ODMxMjY1YzNiN2MzZDY1MTQ5ZGRjMDU1NGJhNmJmLi5mMTVi
OWVhZWFlZTQ2NGU3ODk5MTJjN2RlNmY0MGI2N2I3NmE3MmIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRJdGVtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SXRlbS5oCkBAIC0yOCw2ICsy
OCw4IEBACiAjaWYgRU5BQkxFKFBBWU1FTlRfUkVRVUVTVCkKIAogI2luY2x1ZGUgIlBheW1lbnRD
dXJyZW5jeUFtb3VudC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0Lmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM2LDYgKzM4LDEwIEBAIHN0cnVj
dCBQYXltZW50SXRlbSB7CiAgICAgU3RyaW5nIGxhYmVsOwogICAgIFBheW1lbnRDdXJyZW5jeUFt
b3VudCBhbW91bnQ7CiAgICAgYm9vbCBwZW5kaW5nIHsgZmFsc2UgfTsKKyAgICBKU0M6OlN0cm9u
ZzxKU0M6OkpTT2JqZWN0PiBkYXRhOworCisgICAgLy8gTm90IGZyb20gdGhlIElETC4gU2V0IGJ5
IGBkYXRhYCB3aGVuIHRoaXMgaXMgdmFsaWRhdGVkIGJ5IGBQYXltZW50UmVxdWVzdGAuCisgICAg
U3RyaW5nIHNlcmlhbGl6ZWREYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SXRl
bS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRJdGVt
LmlkbAppbmRleCBkYTFhZTdmM2EzZjc4YjVjMjczNWFjNjVlZmIwYWNkYTkyZGFmZTM0Li4xYzBi
YzY2ZmUzMTVlMjZhYzg1YjE5Mzc4Y2I3MDZjMTUzM2U1ZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRJdGVtLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRJdGVtLmlkbApAQCAtMjks
NCArMjksNSBAQAogICAgIHJlcXVpcmVkIERPTVN0cmluZyBsYWJlbDsKICAgICByZXF1aXJlZCBQ
YXltZW50Q3VycmVuY3lBbW91bnQgYW1vdW50OwogICAgIGJvb2xlYW4gcGVuZGluZyA9IGZhbHNl
OworICAgIG9iamVjdCBkYXRhOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAKaW5kZXggMjg4YmE1ZTBlN2Ni
MjdhMWQ2ZGIyMmE2OTkzMjg1YzU2NDc1YjczZi4uZWUwZDNhYWViNjdmMDQwZjA2OTQ4ODllY2Y3
NTU0MTQ2NTk1Y2VjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50
cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
YXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAKQEAgLTE0MSw2ICsxNDEsMjEgQEAgc3Rh
dGljIGJvb2wgaXNWYWxpZERlY2ltYWxNb25ldGFyeVZhbHVlKFN0cmluZ1ZpZXcgdmFsdWUpCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RhdGljIEV4Y2Vw
dGlvbk9yPFN0cmluZz4gY2hlY2tBbmRDYW5vbmljYWxpemVEYXRhKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIFQmIHZhbHVlKQoreworICAgIFN0cmluZyBzZXJpYWxpemVkRGF0YTsK
KyAgICBpZiAodmFsdWUuZGF0YSkgeworICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBjb250
ZXh0Lmdsb2JhbE9iamVjdCgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRShnbG9iYWxPYmplY3QtPnZtKCkpOworICAgICAgICBzZXJpYWxpemVkRGF0YSA9IEpTT05T
dHJpbmdpZnkoZ2xvYmFsT2JqZWN0LCB2YWx1ZS5kYXRhLmdldCgpLCAwKTsKKyAgICAgICAgaWYg
KHNjb3BlLmV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEV4aXN0
aW5nRXhjZXB0aW9uRXJyb3IgfTsKKyAgICAgICAgdmFsdWUuZGF0YS5jbGVhcigpOworICAgIH0K
KyAgICByZXR1cm4geyBXVEZNb3ZlKHNlcmlhbGl6ZWREYXRhKSB9OworfQorCiAvLyBJbXBsZW1l
bnRzIHRoZSAiY2hlY2sgYW5kIGNhbm9uaWNhbGl6ZSBhbW91bnQiIHZhbGlkaXR5IGNoZWNrZXIK
IC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9wYXltZW50LXJlcXVlc3QvI2Rmbi1jaGVjay1hbmQt
Y2Fub25pY2FsaXplLWFtb3VudAogc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+IGNoZWNrQW5kQ2Fu
b25pY2FsaXplQW1vdW50KFBheW1lbnRDdXJyZW5jeUFtb3VudCYgYW1vdW50KQpAQCAtMTU1LDIw
ICsxNzAsMzQgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+IGNoZWNrQW5kQ2Fub25pY2FsaXpl
QW1vdW50KFBheW1lbnRDdXJyZW5jeUFtb3VudCYgYW1vdW4KICAgICByZXR1cm4geyB9OwogfQog
Ci0vLyBJbXBsZW1lbnRzIHRoZSAiY2hlY2sgYW5kIGNhbm9uaWNhbGl6ZSB0b3RhbCIgdmFsaWRp
dHkgY2hlY2tlcgotLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3BheW1lbnQtcmVxdWVzdC8jZGZu
LWNoZWNrLWFuZC1jYW5vbmljYWxpemUtdG90YWwKLXN0YXRpYyBFeGNlcHRpb25Pcjx2b2lkPiBj
aGVja0FuZENhbm9uaWNhbGl6ZVRvdGFsKFBheW1lbnRDdXJyZW5jeUFtb3VudCYgdG90YWwpCitl
bnVtIGNsYXNzIE5lZ2F0aXZlQW1vdW50QWxsb3dlZCB7IFllcywgTm8gfTsKK3N0YXRpYyBFeGNl
cHRpb25Pcjx2b2lkPiBjaGVja0FuZENhbm9uaWNhbGl6ZVBheW1lbnRJdGVtKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIFBheW1lbnRJdGVtJiBpdGVtLCBOZWdhdGl2ZUFtb3VudEFs
bG93ZWQgbmVnYXRpdmVBbW91bnRBbGxvd2VkKQogewotICAgIGF1dG8gZXhjZXB0aW9uID0gY2hl
Y2tBbmRDYW5vbmljYWxpemVBbW91bnQodG90YWwpOworICAgIGF1dG8gZXhjZXB0aW9uID0gY2hl
Y2tBbmRDYW5vbmljYWxpemVBbW91bnQoaXRlbS5hbW91bnQpOwogICAgIGlmIChleGNlcHRpb24u
aGFzRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBleGNlcHRpb247CisgICAgICAgIHJldHVy
biBleGNlcHRpb24ucmVsZWFzZUV4Y2VwdGlvbigpOwogCi0gICAgaWYgKHRvdGFsLnZhbHVlWzBd
ID09ICctJykKKyAgICBpZiAobmVnYXRpdmVBbW91bnRBbGxvd2VkID09IE5lZ2F0aXZlQW1vdW50
QWxsb3dlZDo6Tm8gJiYgaXRlbS5hbW91bnQudmFsdWVbMF0gPT0gJy0nKQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiVG90YWwgY3VycmVuY3kgdmFsdWVzIGNhbm5vdCBi
ZSBuZWdhdGl2ZS4iX3MgfTsKIAorICAgIGlmIChpdGVtLmRhdGEpIHsKKyAgICAgICAgYXV0byBk
YXRhUmVzdWx0ID0gY2hlY2tBbmRDYW5vbmljYWxpemVEYXRhKGNvbnRleHQsIGl0ZW0pOworICAg
ICAgICBpZiAoZGF0YVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBk
YXRhUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgICAgICBpdGVtLnNlcmlhbGl6ZWRE
YXRhID0gZGF0YVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICB9CisKICAgICByZXR1
cm4geyB9OwogfQogCisvLyBJbXBsZW1lbnRzIHRoZSAiY2hlY2sgYW5kIGNhbm9uaWNhbGl6ZSB0
b3RhbCIgdmFsaWRpdHkgY2hlY2tlcgorLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3BheW1lbnQt
cmVxdWVzdC8jZGZuLWNoZWNrLWFuZC1jYW5vbmljYWxpemUtdG90YWwKK3N0YXRpYyBFeGNlcHRp
b25Pcjx2b2lkPiBjaGVja0FuZENhbm9uaWNhbGl6ZVRvdGFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIFBheW1lbnRJdGVtJiB0b3RhbCkKK3sKKyAgICByZXR1cm4gY2hlY2tBbmRD
YW5vbmljYWxpemVQYXltZW50SXRlbShjb250ZXh0LCB0b3RhbCwgTmVnYXRpdmVBbW91bnRBbGxv
d2VkOjpObyk7Cit9CisKIC8vIEltcGxlbWVudHMgInZhbGlkYXRlIGEgc3RhbmRhcmRpemVkIHBh
eW1lbnQgbWV0aG9kIGlkZW50aWZpZXIiCiAvLyBodHRwczovL3d3dy53My5vcmcvVFIvcGF5bWVu
dC1tZXRob2QtaWQvI3ZhbGlkaXR5LTAKIHN0YXRpYyBib29sIGlzVmFsaWRTdGFuZGFyZGl6ZWRQ
YXltZW50TWV0aG9kSWRlbnRpZmllcihTdHJpbmdWaWV3IGlkZW50aWZpZXIpCkBAIC0yNDksOSAr
Mjc4LDkgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dHVwbGU8U3RyaW5nLCBWZWN0b3I8U3Ry
aW5nPj4+IGNoZWNrQW5kQ2Fub25pY2FsaXplRGV0YWkKIHsKICAgICBpZiAoZGV0YWlscy5kaXNw
bGF5SXRlbXMpIHsKICAgICAgICAgZm9yIChhdXRvJiBpdGVtIDogKmRldGFpbHMuZGlzcGxheUl0
ZW1zKSB7Ci0gICAgICAgICAgICBhdXRvIGV4Y2VwdGlvbiA9IGNoZWNrQW5kQ2Fub25pY2FsaXpl
QW1vdW50KGl0ZW0uYW1vdW50KTsKLSAgICAgICAgICAgIGlmIChleGNlcHRpb24uaGFzRXhjZXB0
aW9uKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbi5yZWxlYXNlRXhjZXB0aW9u
KCk7CisgICAgICAgICAgICBhdXRvIHBheW1lbnRJdGVtUmVzdWx0ID0gY2hlY2tBbmRDYW5vbmlj
YWxpemVQYXltZW50SXRlbShjb250ZXh0LCBpdGVtLCBOZWdhdGl2ZUFtb3VudEFsbG93ZWQ6Olll
cyk7CisgICAgICAgICAgICBpZiAocGF5bWVudEl0ZW1SZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHBheW1lbnRJdGVtUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24o
KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjkyLDI1ICszMjEsMjQgQEAgc3RhdGljIEV4Y2Vw
dGlvbk9yPHN0ZDo6dHVwbGU8U3RyaW5nLCBWZWN0b3I8U3RyaW5nPj4+IGNoZWNrQW5kQ2Fub25p
Y2FsaXplRGV0YWkKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKG1vZGlmaWVyLnRv
dGFsKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBleGNlcHRpb24gPSBjaGVja0FuZENhbm9uaWNh
bGl6ZVRvdGFsKG1vZGlmaWVyLnRvdGFsLT5hbW91bnQpOwotICAgICAgICAgICAgICAgIGlmIChl
eGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBleGNl
cHRpb24ucmVsZWFzZUV4Y2VwdGlvbigpOworICAgICAgICAgICAgICAgIGF1dG8gdG90YWxSZXN1
bHQgPSBjaGVja0FuZENhbm9uaWNhbGl6ZVRvdGFsKGNvbnRleHQsICptb2RpZmllci50b3RhbCk7
CisgICAgICAgICAgICAgICAgaWYgKHRvdGFsUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdG90YWxSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBtb2RpZmllci5hZGRp
dGlvbmFsRGlzcGxheUl0ZW1zKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBleGNlcHRpb24gPSBj
aGVja0FuZENhbm9uaWNhbGl6ZUFtb3VudChpdGVtLmFtb3VudCk7Ci0gICAgICAgICAgICAgICAg
aWYgKGV4Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGV4Y2VwdGlvbi5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgICAgICAgICAgICAgYXV0byBwYXlt
ZW50SXRlbVJlc3VsdCA9IGNoZWNrQW5kQ2Fub25pY2FsaXplUGF5bWVudEl0ZW0oY29udGV4dCwg
aXRlbSwgTmVnYXRpdmVBbW91bnRBbGxvd2VkOjpZZXMpOworICAgICAgICAgICAgICAgIGlmIChw
YXltZW50SXRlbVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHBheW1lbnRJdGVtUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgU3RyaW5nIHNlcmlhbGl6ZWREYXRhOwogICAgICAgICAgICAgaWYgKG1v
ZGlmaWVyLmRhdGEpIHsKLSAgICAgICAgICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBjb250
ZXh0Lmdsb2JhbE9iamVjdCgpOwotICAgICAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKGdsb2JhbE9iamVjdC0+dm0oKSk7Ci0gICAgICAgICAgICAgICAgc2VyaWFs
aXplZERhdGEgPSBKU09OU3RyaW5naWZ5KGdsb2JhbE9iamVjdCwgbW9kaWZpZXIuZGF0YS5nZXQo
KSwgMCk7Ci0gICAgICAgICAgICAgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9Owot
ICAgICAgICAgICAgICAgIG1vZGlmaWVyLmRhdGEuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBh
dXRvIGRhdGFSZXN1bHQgPSBjaGVja0FuZENhbm9uaWNhbGl6ZURhdGEoY29udGV4dCwgbW9kaWZp
ZXIpOworICAgICAgICAgICAgICAgIGlmIChkYXRhUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisK
KyAgICAgICAgICAgICAgICBzZXJpYWxpemVkRGF0YSA9IGRhdGFSZXN1bHQucmVsZWFzZVJldHVy
blZhbHVlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzZXJpYWxpemVkTW9kaWZpZXJE
YXRhLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKHNlcmlhbGl6ZWREYXRhKSk7CiAgICAgICAgIH0K
QEAgLTM4MCw3ICs0MDgsNyBAQCBFeGNlcHRpb25PcjxSZWY8UGF5bWVudFJlcXVlc3Q+PiBQYXlt
ZW50UmVxdWVzdDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgVmVjdAogICAgICAgICBzZXJp
YWxpemVkTWV0aG9kRGF0YS51bmNoZWNrZWRBcHBlbmQoeyBXVEZNb3ZlKCppZGVudGlmaWVyKSwg
V1RGTW92ZShzZXJpYWxpemVkRGF0YSkgfSk7CiAgICAgfQogCi0gICAgYXV0byB0b3RhbFJlc3Vs
dCA9IGNoZWNrQW5kQ2Fub25pY2FsaXplVG90YWwoZGV0YWlscy50b3RhbC5hbW91bnQpOworICAg
IGF1dG8gdG90YWxSZXN1bHQgPSBjaGVja0FuZENhbm9uaWNhbGl6ZVRvdGFsKGRvY3VtZW50LCBk
ZXRhaWxzLnRvdGFsKTsKICAgICBpZiAodG90YWxSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybiB0b3RhbFJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAKQEAgLTY4MSw3ICs3
MDksNyBAQCB2b2lkIFBheW1lbnRSZXF1ZXN0OjpzZXR0bGVEZXRhaWxzUHJvbWlzZShVcGRhdGVS
ZWFzb24gcmVhc29uKQogICAgIH0KIAogICAgIGlmIChkZXRhaWxzVXBkYXRlLnRvdGFsKSB7Ci0g
ICAgICAgIGF1dG8gdG90YWxSZXN1bHQgPSBjaGVja0FuZENhbm9uaWNhbGl6ZVRvdGFsKGRldGFp
bHNVcGRhdGUudG90YWwtPmFtb3VudCk7CisgICAgICAgIGF1dG8gdG90YWxSZXN1bHQgPSBjaGVj
a0FuZENhbm9uaWNhbGl6ZVRvdGFsKGNvbnRleHQsICpkZXRhaWxzVXBkYXRlLnRvdGFsKTsKICAg
ICAgICAgaWYgKHRvdGFsUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICBhYm9y
dFdpdGhFeGNlcHRpb24odG90YWxSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFz
c0tpdFNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0
TGluay5oCmluZGV4IDc3ZWFkYjM0ZmExMGM0MjQ5YWY1ZjdkYTY2ZDMxY2NjMmI3OTA1MDMuLjZm
YTZmYWIxY2QwNTliNmIxMzUxMWE0MDUyYTEwYjhhNDBiY2M5ODQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaApAQCAtNzgsNCArNzgsOCBAQCBT
T0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLUGF5bWVudEVycm9y
UG9zdGFsQWRkcmVzc1VzZXJJbmZvSwogCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQ
QUwsIFBhc3NLaXQsIFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckRvbWFp
bkFuZFNvdXJjZUFwcGxpY2F0aW9uLCB2b2lkLCAoTlNTdHJpbmcgKmlkZW50aWZpZXIsIE5TU3Ry
aW5nICpkb21haW4sIE5TU3RyaW5nICpzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZp
ZXIsIFBLQ2FuTWFrZVBheW1lbnRzQ29tcGxldGlvbiBjb21wbGV0aW9uKSwgKGlkZW50aWZpZXIs
IGRvbWFpbiwgc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyLCBjb21wbGV0aW9u
KSkKIAorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW1wb3J0IDxXZWJLaXRBZGRpdGlv
bnMvUGFzc0tpdFNvZnRMaW5rQWRkaXRpb25zLmg+CisjZW5kaWYKKwogI2VuZGlmIC8vIFVTRShQ
QVNTS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0
U29mdExpbmsubW0gYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGlu
ay5tbQppbmRleCBhYjg3M2I5YzVmYzFlNzJmN2FmZjgzNTc4NDZlNGYzZGYxNjBiNTdmLi42NWZh
MTFmYzQ1YzdjYmY2OWNhYTI3ZTcyNDQ3YjM3NGI1MzVhMjQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5tbQpAQCAtOTEsNCArOTEsOCBAQCBT
T0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBL
UGF5bWVudEVycm9yUG9zdGFsQWRkcgogCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9X
SVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRl
bnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uLCB2b2lkLCAoTlNTdHJpbmcgKmlkZW50
aWZpZXIsIE5TU3RyaW5nICpkb21haW4sIE5TU3RyaW5nICpzb3VyY2VBcHBsaWNhdGlvblNlY29u
ZGFyeUlkZW50aWZpZXIsIFBLQ2FuTWFrZVBheW1lbnRzQ29tcGxldGlvbiBjb21wbGV0aW9uKSwg
KGlkZW50aWZpZXIsIGRvbWFpbiwgc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVy
LCBjb21wbGV0aW9uKSwgUEFMX0VYUE9SVCkKIAorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREsp
CisjaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvUGFzc0tpdFNvZnRMaW5rQWRkaXRpb25zLm1tPgor
I2VuZGlmCisKICNlbmRpZiAvLyBVU0UoUEFTU0tJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaAppbmRleCAyYjY3OGY5MWE3ZjhiYjgyZGE5NmIyODRj
NmRhOTBjYTA1YzZhNDZlLi4xZTBhMjExMTAwZmU5YTM1NzI2ZWZkMGJmNmQ3ZmI2ZWYwYTNiMDI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJ
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oCkBA
IC01OSw2ICs1OSw4IEBAIFdURl9FWFRFUk5fQ19FTkQKICNpbXBvcnQgPFBhc3NLaXQvUEtQYXlt
ZW50UmVxdWVzdF9Qcml2YXRlLmg+CiAjZW5kaWYKIAorI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25z
L1Bhc3NLaXRTUElBZGRpdGlvbnMuaD4KKwogI2Vsc2UKIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9G
b3VuZGF0aW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDc2ZDBjOTM4MDI1MTMx
Zjc0OWZhODFlMDkzMTVlNWIzNTQ3YzE3NmQuLmE4ZmEwNzJiNThhMGQ1ODkwZDE5YjFiNTZhODcz
MDhlNjI3ZWQyZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC02MjQsNiArNjI0LDcg
QEAgbGlzdChBUFBFTkQgV2ViQ29yZV9JRExfRklMRVMKICAgICBNb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLmlkbAogICAgIE1vZHVsZXMvYXBwbGVwYXkv
QXBwbGVQYXlJbnN0YWxsbWVudFJldGFpbENoYW5uZWwuaWRsCiAgICAgTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheUxpbmVJdGVtLmlkbAorICAgIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5l
SXRlbURhdGEuaWRsCiAgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheU1lcmNoYW50Q2FwYWJp
bGl0eS5pZGwKICAgICBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudC5pZGwKICAgICBN
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQuaWRsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dAppbmRleCAzMDI4Njg1MmQ0Zjg4M2IyMjNmMGExZDU4ZjZlZDZj
NGE5NmVlNWIxLi5iZjZhZTE2MTg3YWJhMDcxNTcyZGEwNzkyM2FjMzMwYjIyOGY2OWM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTMxLDYgKzMxLDcgQEAgSlNBcHBsZVBheUluc3RhbGxt
ZW50SXRlbS5jcHAKIEpTQXBwbGVQYXlJbnN0YWxsbWVudEl0ZW1UeXBlLmNwcAogSlNBcHBsZVBh
eUluc3RhbGxtZW50UmV0YWlsQ2hhbm5lbC5jcHAKIEpTQXBwbGVQYXlMaW5lSXRlbS5jcHAKK0pT
QXBwbGVQYXlMaW5lSXRlbURhdGEuY3BwCiBKU0FwcGxlUGF5TWVyY2hhbnRDYXBhYmlsaXR5LmNw
cAogSlNBcHBsZVBheU1vZGlmaWVyLmNwcAogSlNBcHBsZVBheVBheW1lbnQuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODI4
MjBkNWY4MjZmNGE2ZmQ3ZTZiZTA4MDE5ZGU1N2U0ZjdmYWNlZS4uOGQxZmZmZWJlZmVmMjBjNjBj
OTA1MDliYWM3MWY0MjNiNDNhNmM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjMzNyw3ICsyMzM3LDcgQEAKIAkJN0M2NTIz
MTgxRTAwREJCNTAwNjc3RjIyIC8qIEpTQXBwbGVQYXlQYXltZW50TWV0aG9kLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzY1MjMwRTFFMDBEQkI0MDA2
NzdGMjIgLyogSlNBcHBsZVBheVBheW1lbnRNZXRob2QuaCAqLzsgfTsKIAkJN0M2NTIzMUExRTAw
REJCNTAwNjc3RjIyIC8qIEpTQXBwbGVQYXlQYXltZW50UGFzcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M2NTIzMTAxRTAwREJCNDAwNjc3RjIyIC8q
IEpTQXBwbGVQYXlQYXltZW50UGFzcy5oICovOyB9OwogCQk3QzY1NzlFMDFFMDA3OUY5MDBFM0Ey
N0EgLyogQXBwbGVQYXlQYXltZW50UmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0M2NTc5REYxRTAwNzlGOTAwRTNBMjdBIC8qIEFwcGxlUGF5
UGF5bWVudFJlcXVlc3QuaCAqLzsgfTsKLQkJN0M2NTc5RTMxRTAwODI3MDAwRTNBMjdBIC8qIEFw
cGxlUGF5TGluZUl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDNjU3OUUyMUUwMDgyNzAwMEUzQTI3QSAvKiBBcHBsZVBheUxpbmVJdGVtLmggKi87
IH07CisJCTdDNjU3OUUzMUUwMDgyNzAwMEUzQTI3QSAvKiBBcHBsZVBheUxpbmVJdGVtLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzY1NzlFMjFFMDA4
MjcwMDBFM0EyN0EgLyogQXBwbGVQYXlMaW5lSXRlbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDNjU3OUU4MUUwMDgzMTYwMEUzQTI3QSAvKiBB
cHBsZVBheVNoaXBwaW5nTWV0aG9kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QzY1NzlFNzFFMDA4MzE2MDBFM0EyN0EgLyogQXBwbGVQYXlTaGlwcGlu
Z01ldGhvZC5oICovOyB9OwogCQk3QzY1NzlGMDFFMDA4NTY2MDBFM0EyN0EgLyogSlNBcHBsZVBh
eUxpbmVJdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QzY1NzlFQTFFMDA4NTY2MDBFM0EyN0EgLyogSlNBcHBsZVBheUxpbmVJdGVtLmggKi87IH07
CiAJCTdDNjU3OUYyMUUwMDg1NjYwMEUzQTI3QSAvKiBKU0FwcGxlUGF5UGF5bWVudFJlcXVlc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNjU3OUVD
MUUwMDg1NjYwMEUzQTI3QSAvKiBKU0FwcGxlUGF5UGF5bWVudFJlcXVlc3QuaCAqLzsgfTsKQEAg
LTI5MzksNiArMjkzOSw4IEBACiAJCTk0RTgzOTU2MURGQjJCQzQwMDdCQzZBNyAvKiBKU0NTU05h
bWVzcGFjZVJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk0RTgzOTU0MURGQjJCQTYwMDdCQzZBNyAvKiBKU0NTU05hbWVzcGFjZVJ1bGUuaCAqLzsg
fTsKIAkJOTUyMDc2MDUxRjI2NzVGRTAwN0QyQUFCIC8qIENhbGxUcmFjZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MjA3NjAxMUYyNjc1RjkwMDdE
MkFBQiAvKiBDYWxsVHJhY2VyLmggKi87IH07CiAJCTk1MjA3NjA2MUYyNjc1RkUwMDdEMkFBQiAv
KiBDYWxsVHJhY2VyVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk1MjA3NjAyMUYyNjc1RjkwMDdEMkFBQiAvKiBDYWxsVHJhY2VyVHlwZXMuaCAq
LzsgfTsKKwkJOTU2RkM0QkIyNUQ0OUM3QjAwRjdCM0EyIC8qIEFwcGxlUGF5TGluZUl0ZW1EYXRh
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTZGQzRC
ODI1RDQ5QzdBMDBGN0IzQTIgLyogQXBwbGVQYXlMaW5lSXRlbURhdGEuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5NTZGQzRCQjI1RDQ5QzdCMDBG
N0IzQTMgLyogSlNBcHBsZVBheUxpbmVJdGVtRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTU2RkM0QkEyNUQ0OUM3RDAwRjdCM0EyIC8qIEpTQXBw
bGVQYXlMaW5lSXRlbURhdGEuaCAqLzsgfTsKIAkJOTVBMUUyRTkyNUNDNzVBOTAwMjY4QzhFIC8q
IE1lZGlhQ29udHJvbHNDb250ZXh0TWVudUl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1QTFFMkU3MjVDQzc1QTgwMDI2OEM4RSAvKiBNZWRpYUNv
bnRyb2xzQ29udGV4dE1lbnVJdGVtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJOTVERjlEMjUyNTJCRURCMjAwMEQ3RjQ2IC8qIFBvaW50ZXJDaGFy
YWN0ZXJpc3RpY3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk1REY5RDIzMjUyQkVEOTkwMDBEN0Y0NiAvKiBQb2ludGVyQ2hhcmFjdGVyaXN0aWNzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTcwNTk5
N0ExMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MDU5OTc2MTA3RDk3NTIwMEE1MEE3QyAvKiBQ
b2xpY3lDaGVja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTExNzc0LDYgKzExNzc2LDEwIEBACiAJCTk1MjA3NjAwMUYyNjc1RjkwMDdEMkFB
QiAvKiBDYWxsVHJhY2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhbGxUcmFjZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NTIwNzYwMTFGMjY3NUY5MDA3RDJBQUIgLyog
Q2FsbFRyYWNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsVHJhY2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTk1MjA3NjAyMUYyNjc1RjkwMDdEMkFBQiAvKiBDYWxsVHJhY2VyVHlw
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbFRyYWNlclR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTk1NkZDNEI4MjVENDlDN0EwMEY3QjNBMiAvKiBBcHBsZVBheUxpbmVJdGVt
RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBsZVBheUxpbmVJdGVt
RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NTZGQzRCODI1RDQ5QzdDMDBG
N0IzQTIgLyogSlNBcHBsZVBheUxpbmVJdGVtRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0FwcGxlUGF5TGluZUl0ZW1EYXRhLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTU2RkM0QkEyNUQ0OUM3QjAwRjdCM0EyIC8qIEFwcGxlUGF5TGlu
ZUl0ZW1EYXRhLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBcHBsZVBheUxpbmVJdGVtRGF0
YS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk1NkZDNEJBMjVENDlDN0QwMEY3
QjNBMiAvKiBKU0FwcGxlUGF5TGluZUl0ZW1EYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTQXBwbGVQYXlMaW5lSXRlbURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTVBMUUyRTcyNUNDNzVBODAwMjY4QzhFIC8qIE1lZGlhQ29udHJvbHNDb250ZXh0
TWVudUl0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFDb250cm9s
c0NvbnRleHRNZW51SXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NURGOUQy
MzI1MkJFRDk5MDAwRDdGNDYgLyogUG9pbnRlckNoYXJhY3RlcmlzdGljcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQb2ludGVyQ2hhcmFjdGVyaXN0aWNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTk3MDU5OTc1MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvbGljeUNoZWNrZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgzNDgsNiArMTgzNTQsOCBAQAogCQkJCUExM0I2MTY5
MjQ3NURGQzUwMEJCRTZERSAvKiBBcHBsZVBheUluc3RhbGxtZW50UmV0YWlsQ2hhbm5lbC5pZGwg
Ki8sCiAJCQkJN0M2NTc5RTIxRTAwODI3MDAwRTNBMjdBIC8qIEFwcGxlUGF5TGluZUl0ZW0uaCAq
LywKIAkJCQk3QzY1NzlFNDFFMDA4MkM4MDBFM0EyN0EgLyogQXBwbGVQYXlMaW5lSXRlbS5pZGwg
Ki8sCisJCQkJOTU2RkM0QjgyNUQ0OUM3QTAwRjdCM0EyIC8qIEFwcGxlUGF5TGluZUl0ZW1EYXRh
LmggKi8sCisJCQkJOTU2RkM0QkEyNUQ0OUM3QjAwRjdCM0EyIC8qIEFwcGxlUGF5TGluZUl0ZW1E
YXRhLmlkbCAqLywKIAkJCQlBMURGNUFBODFGODA3MEQ0MDA1OEE0NzcgLyogQXBwbGVQYXlNZXJj
aGFudENhcGFiaWxpdHkuY3BwICovLAogCQkJCUExREY1QTgzMUY3RUJERjIwMDU4QTQ3NyAvKiBB
cHBsZVBheU1lcmNoYW50Q2FwYWJpbGl0eS5oICovLAogCQkJCUExREY1QTg1MUY3RUJERjIwMDU4
QTQ3NyAvKiBBcHBsZVBheU1lcmNoYW50Q2FwYWJpbGl0eS5pZGwgKi8sCkBAIC0xODU1OCw2ICsx
ODU2Niw4IEBACiAJCQkJQTEzQjYxNkYyNDc1RTMxMjAwQkJFNkRFIC8qIEpTQXBwbGVQYXlJbnN0
YWxsbWVudFJldGFpbENoYW5uZWwuaCAqLywKIAkJCQk3QzY1NzlFOTFFMDA4NTY2MDBFM0EyN0Eg
LyogSlNBcHBsZVBheUxpbmVJdGVtLmNwcCAqLywKIAkJCQk3QzY1NzlFQTFFMDA4NTY2MDBFM0Ey
N0EgLyogSlNBcHBsZVBheUxpbmVJdGVtLmggKi8sCisJCQkJOTU2RkM0QjgyNUQ0OUM3QzAwRjdC
M0EyIC8qIEpTQXBwbGVQYXlMaW5lSXRlbURhdGEuY3BwICovLAorCQkJCTk1NkZDNEJBMjVENDlD
N0QwMEY3QjNBMiAvKiBKU0FwcGxlUGF5TGluZUl0ZW1EYXRhLmggKi8sCiAJCQkJQTFERjVBODkx
RjdFQzAwMDAwNThBNDc3IC8qIEpTQXBwbGVQYXlNZXJjaGFudENhcGFiaWxpdHkuY3BwICovLAog
CQkJCUExREY1QThBMUY3RUMwMDAwMDU4QTQ3NyAvKiBKU0FwcGxlUGF5TWVyY2hhbnRDYXBhYmls
aXR5LmggKi8sCiAJCQkJQTFGNkQwMEExRkUwOTkyMTAwMTgwNzhDIC8qIEpTQXBwbGVQYXlNb2Rp
Zmllci5jcHAgKi8sCkBAIC0zMTE4MCw2ICszMTE5MCw3IEBACiAJCQkJQTExNzUwQTEyNDc0NjhG
NzAwRDREMjZDIC8qIEFwcGxlUGF5SW5zdGFsbG1lbnRJdGVtVHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTEzQjYxNkIyNDc1RTA0ODAwQkJFNkRFIC8qIEFwcGxlUGF5SW5zdGFsbG1lbnRSZXRh
aWxDaGFubmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzY1NzlFMzFFMDA4MjcwMDBFM0EyN0Eg
LyogQXBwbGVQYXlMaW5lSXRlbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTU2RkM0QkIyNUQ0OUM3
QjAwRjdCM0EyIC8qIEFwcGxlUGF5TGluZUl0ZW1EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
MURGNUE4NjFGN0VCREYyMDA1OEE0NzcgLyogQXBwbGVQYXlNZXJjaGFudENhcGFiaWxpdHkuaCBp
biBIZWFkZXJzICovLAogCQkJCUExRjZDRkZGMUZFMDk2MjEwMDE4MDc4QyAvKiBBcHBsZVBheU1v
ZGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzY1MjMwMTFFMDBEMDM0MDA2NzdGMjIgLyog
QXBwbGVQYXlQYXltZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMyNzQ2LDYgKzMyNzU3LDcgQEAK
IAkJCQlBMTNCNjE3NjI0NzVFMzdBMDBCQkU2REUgLyogSlNBcHBsZVBheUluc3RhbGxtZW50SXRl
bVR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExM0I2MTc3MjQ3NUUzQTMwMEJCRTZERSAvKiBK
U0FwcGxlUGF5SW5zdGFsbG1lbnRSZXRhaWxDaGFubmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQk3
QzY1NzlGMDFFMDA4NTY2MDBFM0EyN0EgLyogSlNBcHBsZVBheUxpbmVJdGVtLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk5NTZGQzRCQjI1RDQ5QzdCMDBGN0IzQTMgLyogSlNBcHBsZVBheUxpbmVJdGVt
RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFERjVBOEUxRjdFQzAwMjAwNThBNDc3IC8qIEpT
QXBwbGVQYXlNZXJjaGFudENhcGFiaWxpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRjZEMDEy
MUZFMDk5QjQwMDE4MDc4QyAvKiBKU0FwcGxlUGF5TW9kaWZpZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTdDNjUyMzE0MUUwMERCQjQwMDY3N0YyMiAvKiBKU0FwcGxlUGF5UGF5bWVudC5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCmluZGV4IGJlOWJhNGNkZDJhOThmMzk2NTcxYjQ2MWQ3MDAzOTE4OTczMzM0
Y2EuLjAzOWRhYzNjNjVjZWIwMDM5MGM1MzRlNjg4MjRjMzE2YmY3ZGI0YzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0y
NjkzLDYgKzI2OTMsOCBAQCBzdWIgR2VuZXJhdGVEaWN0aW9uYXJ5SW1wbGVtZW50YXRpb25Db250
ZW50CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKU0RPTUdsb2JhbE9iamVjdC5oIik7CiAg
ICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCI8SmF2YVNjcmlwdENvcmUvT2JqZWN0Q29uc3RydWN0
b3IuaD4iKTsKIAorICAgICAgICBteSAkaGFzVW5jb25kaXRpb25hbE1lbWJlciA9IDA7CisKICAg
ICAgICAgJHJlc3VsdCAuPSAiSlNDOjpKU09iamVjdCogY29udmVydERpY3Rpb25hcnlUb0pTKEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QsIGNvbnN0ICR7Y2xhc3NOYW1lfSYgZGljdGlvbmFyeSlcbiI7CiAgICAg
ICAgICRyZXN1bHQgLj0gIntcbiI7CiAgICAgICAgICRyZXN1bHQgLj0gIiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpO1xuXG4iOwpAQCAtMjcxNyw2ICsyNzE5
LDggQEAgc3ViIEdlbmVyYXRlRGljdGlvbmFyeUltcGxlbWVudGF0aW9uQ29udGVudAogICAgICAg
ICAgICAgICAgIGlmICgkY29uZGl0aW9uYWwpIHsKICAgICAgICAgICAgICAgICAgICAgbXkgJGNv
bmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJp
bmdGcm9tQXR0cmlidXRlVmFsdWUoJGNvbmRpdGlvbmFsKTsKICAgICAgICAgICAgICAgICAgICAg
JHJlc3VsdCAuPSAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iOworICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICRoYXNVbmNvbmRpdGlvbmFsTWVtYmVyID0g
MTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAjIDEuIExldCBrZXkgYmUg
dGhlIGlkZW50aWZpZXIgb2YgbWVtYmVyLgpAQCAtMjc1NSw2ICsyNzU5LDExIEBAIHN1YiBHZW5l
cmF0ZURpY3Rpb25hcnlJbXBsZW1lbnRhdGlvbkNvbnRlbnQKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogCisgICAgICAgIGlmICghJGhhc1VuY29uZGl0aW9uYWxNZW1iZXIpIHsKKyAgICAgICAg
ICAgICRyZXN1bHQgLj0gIiAgICBVTlVTRURfUEFSQU0oZGljdGlvbmFyeSk7XG4iOworICAgICAg
ICAgICAgJHJlc3VsdCAuPSAiICAgIFVOVVNFRF9QQVJBTSh2bSk7XG5cbiI7CisgICAgICAgIH0K
KwogICAgICAgICAkcmVzdWx0IC49ICIgICAgcmV0dXJuIHJlc3VsdDtcbiI7CiAgICAgICAgICRy
ZXN1bHQgLj0gIn1cblxuIjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGljdGlvbmFyeVdpdGhPbmx5Q29uZGl0aW9uYWxN
ZW1iZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3REaWN0aW9uYXJ5V2l0aE9ubHlDb25kaXRpb25hbE1lbWJlcnMuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVh
NTFkZWQ0ZDYwOGZlOTlmZDM0OWFjODFiZmRjYjc1MmJkMDUzNDQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGljdGlvbmFy
eVdpdGhPbmx5Q29uZGl0aW9uYWxNZW1iZXJzLmNwcApAQCAtMCwwICsxLDc4IEBACisvKgorICAg
IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAg
ICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBE
TyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
CisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1Rlc3RE
aWN0aW9uYXJ5V2l0aE9ubHlDb25kaXRpb25hbE1lbWJlcnMuaCIKKworI2luY2x1ZGUgIkpTRE9N
Q29udmVydE51bWJlcnMuaCIKKyNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgorCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5h
bWVzcGFjZSBKU0M7CisKK3RlbXBsYXRlPD4gVGVzdERpY3Rpb25hcnlXaXRoT25seUNvbmRpdGlv
bmFsTWVtYmVycyBjb252ZXJ0RGljdGlvbmFyeTxUZXN0RGljdGlvbmFyeVdpdGhPbmx5Q29uZGl0
aW9uYWxNZW1iZXJzPihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBi
b29sIGlzTnVsbE9yVW5kZWZpbmVkID0gdmFsdWUuaXNVbmRlZmluZWRPck51bGwoKTsKKyAgICBh
dXRvKiBvYmplY3QgPSBpc051bGxPclVuZGVmaW5lZCA/IG51bGxwdHIgOiB2YWx1ZS5nZXRPYmpl
Y3QoKTsKKyAgICBpZiAoVU5MSUtFTFkoIWlzTnVsbE9yVW5kZWZpbmVkICYmICFvYmplY3QpKSB7
CisgICAgICAgIHRocm93VHlwZUVycm9yKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
KTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgVGVzdERpY3Rpb25hcnlXaXRoT25s
eUNvbmRpdGlvbmFsTWVtYmVycyByZXN1bHQ7CisjaWYgRU5BQkxFKFRFU1RfQ09ORElUSU9OQUwp
CisgICAgSlNWYWx1ZSBjb25kaXRpb25hbEF0dHJWYWx1ZTsKKyAgICBpZiAoaXNOdWxsT3JVbmRl
ZmluZWQpCisgICAgICAgIGNvbmRpdGlvbmFsQXR0clZhbHVlID0ganNVbmRlZmluZWQoKTsKKyAg
ICBlbHNlIHsKKyAgICAgICAgY29uZGl0aW9uYWxBdHRyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4
aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbmRpdGlvbmFs
QXR0ciIpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwor
ICAgIH0KKyAgICBpZiAoIWNvbmRpdGlvbmFsQXR0clZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAg
ICAgICAgcmVzdWx0LmNvbmRpdGlvbmFsQXR0ciA9IGNvbnZlcnQ8SURMRG91YmxlPihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBjb25kaXRpb25hbEF0dHJWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCitKU0M6OkpTT2JqZWN0KiBjb252ZXJ0RGljdGlvbmFyeVRvSlMoSlNDOjpKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCwgY29uc3QgVGVzdERpY3Rpb25hcnlXaXRoT25seUNvbmRpdGlvbmFsTWVtYmVycyYg
ZGljdGlvbmFyeSkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOworCisgICAgYXV0byByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdCgmbGV4aWNh
bEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKTsKKworI2lmIEVO
QUJMRShURVNUX0NPTkRJVElPTkFMKQorICAgIGlmICghSURMRG91YmxlOjppc051bGxWYWx1ZShk
aWN0aW9uYXJ5LmNvbmRpdGlvbmFsQXR0cikpIHsKKyAgICAgICAgYXV0byBjb25kaXRpb25hbEF0
dHJWYWx1ZSA9IHRvSlM8SURMRG91YmxlPihJRExEb3VibGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxs
YWJsZShkaWN0aW9uYXJ5LmNvbmRpdGlvbmFsQXR0cikpOworICAgICAgICByZXN1bHQtPnB1dERp
cmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY29uZGl0aW9uYWxBdHRy
IiksIGNvbmRpdGlvbmFsQXR0clZhbHVlKTsKKyAgICB9CisjZW5kaWYKKyAgICBVTlVTRURfUEFS
QU0oZGljdGlvbmFyeSk7CisgICAgVU5VU0VEX1BBUkFNKHZtKTsKKworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REaWN0aW9uYXJ5V2l0aE9ubHlDb25k
aXRpb25hbE1lbWJlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3REaWN0aW9uYXJ5V2l0aE9ubHlDb25kaXRpb25hbE1lbWJlcnMuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mMjU2NTY2MmViNjIzN2E0ZmU0MGM4ZmRmMDM1OTk5MWM5MTNjYjM1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERpY3Rp
b25hcnlXaXRoT25seUNvbmRpdGlvbmFsTWVtYmVycy5oCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisg
ICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0Lgor
ICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwu
IERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0RPTUNvbnZl
cnREaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiVGVzdERpY3Rpb25hcnlXaXRoT25seUNvbmRpdGlv
bmFsTWVtYmVycy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPD4gVGVzdERp
Y3Rpb25hcnlXaXRoT25seUNvbmRpdGlvbmFsTWVtYmVycyBjb252ZXJ0RGljdGlvbmFyeTxUZXN0
RGljdGlvbmFyeVdpdGhPbmx5Q29uZGl0aW9uYWxNZW1iZXJzPihKU0M6OkpTR2xvYmFsT2JqZWN0
JiwgSlNDOjpKU1ZhbHVlKTsKKworSlNDOjpKU09iamVjdCogY29udmVydERpY3Rpb25hcnlUb0pT
KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0RPTUdsb2JhbE9iamVjdCYsIGNvbnN0IFRlc3REaWN0
aW9uYXJ5V2l0aE9ubHlDb25kaXRpb25hbE1lbWJlcnMmKTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEVtcHR5RGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RW1wdHlEaWN0aW9uYXJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNzI1ZGUz
MDFjNzlhYjA5ZGI0OTMyOTc0ZDUyYzdkYzE4MTYxNWJlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVtcHR5RGljdGlvbmFy
eS5jcHAKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
V2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVy
YXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNUZXN0RW1wdHlEaWN0aW9uYXJ5LmgiCisKKyNpbmNs
dWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lu
bGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgor
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK3RlbXBsYXRl
PD4gVGVzdEVtcHR5RGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0RW1wdHlEaWN0aW9u
YXJ5PihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
K3sKKyAgICBWTSYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBib29sIGlzTnVs
bE9yVW5kZWZpbmVkID0gdmFsdWUuaXNVbmRlZmluZWRPck51bGwoKTsKKyAgICBhdXRvKiBvYmpl
Y3QgPSBpc051bGxPclVuZGVmaW5lZCA/IG51bGxwdHIgOiB2YWx1ZS5nZXRPYmplY3QoKTsKKyAg
ICBpZiAoVU5MSUtFTFkoIWlzTnVsbE9yVW5kZWZpbmVkICYmICFvYmplY3QpKSB7CisgICAgICAg
IHRocm93VHlwZUVycm9yKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgVGVzdEVtcHR5RGljdGlvbmFyeSByZXN1bHQ7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworSlNDOjpKU09iamVjdCogY29udmVydERpY3Rpb25hcnlU
b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QsIGNvbnN0IFRlc3RFbXB0eURpY3Rpb25hcnkmIGRpY3Rpb25h
cnkpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
KworICAgIGF1dG8gcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoJmxleGljYWxHbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdC5vYmplY3RQcm90b3R5cGUoKSk7CisKKyAgICBVTlVTRURfUEFS
QU0oZGljdGlvbmFyeSk7CisgICAgVU5VU0VEX1BBUkFNKHZtKTsKKworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbXB0eURpY3Rpb25hcnkuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbXB0eURpY3Rpb25h
cnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40OTJkNjJmNWYxOWUwOTVjMmE1ZGMzZWIwMDlhZjFmZDhlNmVhYTMy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEVtcHR5RGljdGlvbmFyeS5oCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgICAgVGhp
cyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRo
aXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5P
VCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
ICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnREaWN0
aW9uYXJ5LmgiCisjaW5jbHVkZSAiVGVzdEVtcHR5RGljdGlvbmFyeS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3RlbXBsYXRlPD4gVGVzdEVtcHR5RGljdGlvbmFyeSBjb252ZXJ0RGljdGlv
bmFyeTxUZXN0RW1wdHlEaWN0aW9uYXJ5PihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1Zh
bHVlKTsKKworSlNDOjpKU09iamVjdCogY29udmVydERpY3Rpb25hcnlUb0pTKEpTQzo6SlNHbG9i
YWxPYmplY3QmLCBKU0RPTUdsb2JhbE9iamVjdCYsIGNvbnN0IFRlc3RFbXB0eURpY3Rpb25hcnkm
KTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVz
LmRlcAppbmRleCBiYWM1ZDJkODNlNTdhNmMzMTVhMTU1ZjQ1ZjUyYzY1YmRmMDhjZDNkLi5jOTg5
ODlhNDgwMmRmYjYwYzc0MmVhN2U0OWE5YTI5ZGJjZjY1NTAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLmRl
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFs
RGVwZW5kZW5jaWVzLmRlcApAQCAtNzksOSArNzksMTUgQEAgV2ViRE9NVGVzdERlcml2ZWREaWN0
aW9uYXJ5Lmg6CiBKU1Rlc3REZXJpdmVkRGljdGlvbmFyeTIuaDogCiBET01UZXN0RGVyaXZlZERp
Y3Rpb25hcnkyLmg6IAogV2ViRE9NVGVzdERlcml2ZWREaWN0aW9uYXJ5Mi5oOiAKK0pTVGVzdERp
Y3Rpb25hcnlXaXRoT25seUNvbmRpdGlvbmFsTWVtYmVycy5oOiAKK0RPTVRlc3REaWN0aW9uYXJ5
V2l0aE9ubHlDb25kaXRpb25hbE1lbWJlcnMuaDogCitXZWJET01UZXN0RGljdGlvbmFyeVdpdGhP
bmx5Q29uZGl0aW9uYWxNZW1iZXJzLmg6IAogSlNUZXN0RG9tYWluU2VjdXJpdHkuaDogCiBET01U
ZXN0RG9tYWluU2VjdXJpdHkuaDogCiBXZWJET01UZXN0RG9tYWluU2VjdXJpdHkuaDogCitKU1Rl
c3RFbXB0eURpY3Rpb25hcnkuaDogCitET01UZXN0RW1wdHlEaWN0aW9uYXJ5Lmg6IAorV2ViRE9N
VGVzdEVtcHR5RGljdGlvbmFyeS5oOiAKIEpTVGVzdEVuYWJsZWRCeVNldHRpbmcuaDogVGVzdEVu
YWJsZWRCeVNldHRpbmdTdXBwbGVtZW50YWwuaWRsCiBET01UZXN0RW5hYmxlZEJ5U2V0dGluZy5o
OiBUZXN0RW5hYmxlZEJ5U2V0dGluZ1N1cHBsZW1lbnRhbC5pZGwKIFdlYkRPTVRlc3RFbmFibGVk
QnlTZXR0aW5nLmg6IFRlc3RFbmFibGVkQnlTZXR0aW5nU3VwcGxlbWVudGFsLmlkbApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3REaWN0aW9uYXJ5
V2l0aE9ubHlDb25kaXRpb25hbE1lbWJlcnMuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3REaWN0aW9uYXJ5V2l0aE9ubHlDb25kaXRpb25hbE1lbWJlcnMuaWRs
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjc4NWVlNTQ4YjI3YjJmZDQ5N2RkYjJmMjAxMjM2YTMzZTYzYTYwYzcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dERpY3Rpb25hcnlXaXRoT25seUNvbmRpdGlvbmFsTWVtYmVycy5pZGwKQEAgLTAsMCArMSwzMyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3JtLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBK
U0dlbmVyYXRlVG9KU09iamVjdCwKK10gZGljdGlvbmFyeSBUZXN0RGljdGlvbmFyeVdpdGhPbmx5
Q29uZGl0aW9uYWxNZW1iZXJzIHsKKyAgICBbQ29uZGl0aW9uYWw9VEVTVF9DT05ESVRJT05BTF0g
ZG91YmxlIGNvbmRpdGlvbmFsQXR0cjsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEVtcHR5RGljdGlvbmFyeS5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEVtcHR5RGljdGlvbmFyeS5pZGwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDFmM2MyMDIzYTAwOTEyNDE5MGM2NjlhYjhmNDc2MTIwMmVjMDIyZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RW1wdHlE
aWN0aW9uYXJ5LmlkbApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm0sIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAorXSBkaWN0
aW9uYXJ5IFRlc3RFbXB0eURpY3Rpb25hcnkgeworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9XZWJJbmplY3RlZFNjcmlwdEhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1dlYkluamVjdGVkU2NyaXB0SG9zdC5jcHAKaW5kZXggNmNlYTI0NjY0YmFlMjc2
ZWY0ZGI0NGQ5YTgwYTk2MmMyNDk4YTI2Yy4uNDFmMzNiMTI1MWViZDZiMDc0MjMyMjQ3NjhlY2E1
YmQyMmNlMGFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkluamVj
dGVkU2NyaXB0SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkluamVj
dGVkU2NyaXB0SG9zdC5jcHAKQEAgLTExMiwxNSArMTEyLDE2IEBAIHN0YXRpYyBKU09iamVjdCog
b2JqZWN0Rm9yUGF5bWVudFNoaXBwaW5nT3B0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGV4
ZWMsIGNvCiAKIHN0YXRpYyBKU09iamVjdCogb2JqZWN0Rm9yUGF5bWVudERldGFpbHNNb2RpZmll
cihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBleGVjLCBjb25zdCBQYXltZW50RGV0YWlsc01vZGlm
aWVyJiBtb2RpZmllcikKIHsKLSAgICBhdXRvKiBhZGRpdGlvbmFsRGlzcGxheUl0ZW1zID0gY29u
c3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbW9kaWZpZXIuYWRkaXRpb25hbERpc3BsYXlJdGVtcy5zaXplKCk7ICsraSkKLSAgICAg
ICAgYWRkaXRpb25hbERpc3BsYXlJdGVtcy0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaSwgb2JqZWN0
Rm9yUGF5bWVudEl0ZW0odm0sIGV4ZWMsIG1vZGlmaWVyLmFkZGl0aW9uYWxEaXNwbGF5SXRlbXNb
aV0pKTsKLQogICAgIGF1dG8qIG9iamVjdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOwog
ICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic3Vw
cG9ydGVkTWV0aG9kcyIpLCBqc1N0cmluZyh2bSwgbW9kaWZpZXIuc3VwcG9ydGVkTWV0aG9kcykp
OwotICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
dG90YWwiKSwgIW1vZGlmaWVyLnRvdGFsID8ganNOdWxsKCkgOiBvYmplY3RGb3JQYXltZW50SXRl
bSh2bSwgZXhlYywgKm1vZGlmaWVyLnRvdGFsKSk7Ci0gICAgb2JqZWN0LT5wdXREaXJlY3Qodm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJhZGRpdGlvbmFsRGlzcGxheUl0ZW1zIiksIGFk
ZGl0aW9uYWxEaXNwbGF5SXRlbXMpOwotICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAiZGF0YSIpLCAhbW9kaWZpZXIuZGF0YSA/IGpzTnVsbCgpIDog
bW9kaWZpZXIuZGF0YS5nZXQoKSk7CisgICAgaWYgKG1vZGlmaWVyLnRvdGFsKQorICAgICAgICBv
YmplY3QtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInRvdGFsIiks
IG9iamVjdEZvclBheW1lbnRJdGVtKHZtLCBleGVjLCAqbW9kaWZpZXIudG90YWwpKTsKKyAgICBp
ZiAoIW1vZGlmaWVyLmFkZGl0aW9uYWxEaXNwbGF5SXRlbXMuaXNFbXB0eSgpKSB7CisgICAgICAg
IGF1dG8qIGFkZGl0aW9uYWxEaXNwbGF5SXRlbXMgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMs
IG51bGxwdHIpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbW9kaWZpZXIuYWRk
aXRpb25hbERpc3BsYXlJdGVtcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIGFkZGl0aW9uYWxE
aXNwbGF5SXRlbXMtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGksIG9iamVjdEZvclBheW1lbnRJdGVt
KHZtLCBleGVjLCBtb2RpZmllci5hZGRpdGlvbmFsRGlzcGxheUl0ZW1zW2ldKSk7CisgICAgICAg
IG9iamVjdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYWRkaXRp
b25hbERpc3BsYXlJdGVtcyIpLCBhZGRpdGlvbmFsRGlzcGxheUl0ZW1zKTsKKyAgICB9CiAgICAg
cmV0dXJuIG9iamVjdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvV2ViQ29yZUFkZGl0aW9ucy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1dlYkNvcmVBZGRpdGlvbnMubW0KaW5kZXggZDVjNzFjYmMyZTFmMjI0OTI5ZTE5ODRjZDcxZjlh
ZGRkNjIwNGQzOS4uYWY2M2RhMmYyMTZiZTZlMzY1MjMzMGE2ZjljNjJjYTdjZjAxZmM3NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViQ29yZUFkZGl0aW9ucy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJDb3JlQWRkaXRpb25zLm1t
CkBAIC0yNCwzICsyNCw3IEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBVU0Uo
QVBQTEVfSU5URVJOQUxfU0RLKQorI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dlYkNvcmVBZGRp
dGlvbnMubW0+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a1BheW1lbnRDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXlt
ZW50Q29vcmRpbmF0b3IuY3BwCmluZGV4IDAwZmQ2NjBkZThiN2E3YmQ3MWRhZjI5OWFiNjNmZTUx
ZmExODM1MDQuLjE2YzFkOTY5NzIxMDljZGZhMjFkMjRiMjExMjIwYzJlYzUyMjJiZDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcApA
QCAtMTI5LDIxICsxMjksMTAgQEAgdm9pZCBNb2NrUGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0
ZU1lcmNoYW50VmFsaWRhdGlvbihjb25zdCBQYXltZW50TWVyY2hhbnRTZXMKICAgICB9KTsKIH0K
IAotc3RhdGljIEFwcGxlUGF5TGluZUl0ZW0gY29udmVydChjb25zdCBBcHBsZVBheVNlc3Npb25Q
YXltZW50UmVxdWVzdDo6TGluZUl0ZW0mIGxpbmVJdGVtKQotewotICAgIEFwcGxlUGF5TGluZUl0
ZW0gcmVzdWx0OwotICAgIHJlc3VsdC50eXBlID0gbGluZUl0ZW0udHlwZTsKLSAgICByZXN1bHQu
bGFiZWwgPSBsaW5lSXRlbS5sYWJlbDsKLSAgICByZXN1bHQuYW1vdW50ID0gbGluZUl0ZW0uYW1v
dW50OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIHZvaWQgTW9ja1BheW1lbnRDb29yZGluYXRv
cjo6dXBkYXRlVG90YWxBbmRMaW5lSXRlbXMoY29uc3QgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJl
cXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zJiB0b3RhbEFuZExpbmVJdGVtcykKIHsKLSAgICBtX3Rv
dGFsID0gY29udmVydCh0b3RhbEFuZExpbmVJdGVtcy50b3RhbCk7Ci0gICAgbV9saW5lSXRlbXMu
Y2xlYXIoKTsKLSAgICBmb3IgKGF1dG8mIGxpbmVJdGVtIDogdG90YWxBbmRMaW5lSXRlbXMubGlu
ZUl0ZW1zKQotICAgICAgICBtX2xpbmVJdGVtcy5hcHBlbmQoY29udmVydChsaW5lSXRlbSkpOwor
ICAgIG1fdG90YWwgPSB0b3RhbEFuZExpbmVJdGVtcy50b3RhbDsKKyAgICBtX2xpbmVJdGVtcyA9
IHRvdGFsQW5kTGluZUl0ZW1zLmxpbmVJdGVtczsKIH0KIAogdm9pZCBNb2NrUGF5bWVudENvb3Jk
aW5hdG9yOjpjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPFNoaXBwaW5n
TWV0aG9kVXBkYXRlPiYmIHNoaXBwaW5nTWV0aG9kVXBkYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQppbmRl
eCA2NzNlOWI1ODhkZjBlNzY2MmRjNTBhNDU2NGQ5NmUxYWM1YjE3YWI1Li5kMzVjZjZlYWJlYmQx
MDk4YWM4YzFmMDJiZjA1MDY5NzFhODQzMzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQpAQCAtMjc5LDEy
ICsyNzksMTIgQEAgYm9vbCBBcmd1bWVudENvZGVyPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1
ZXN0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEFwcGwKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIHJlcXVlc3Quc2V0U2hpcHBpbmdNZXRob2RzKHNoaXBwaW5nTWV0aG9kcyk7CiAKLSAg
ICBWZWN0b3I8QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtPiBsaW5lSXRl
bXM7CisgICAgVmVjdG9yPEFwcGxlUGF5TGluZUl0ZW0+IGxpbmVJdGVtczsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGxpbmVJdGVtcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXF1
ZXN0LnNldExpbmVJdGVtcyhsaW5lSXRlbXMpOwogCi0gICAgT3B0aW9uYWw8QXBwbGVQYXlTZXNz
aW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtPiB0b3RhbDsKKyAgICBPcHRpb25hbDxBcHBsZVBh
eUxpbmVJdGVtPiB0b3RhbDsKICAgICBkZWNvZGVyID4+IHRvdGFsOwogICAgIGlmICghdG90YWwp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM0MiwyNiArMzQyLDYgQEAgYm9vbCBBcmd1bWVu
dENvZGVyPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpDb250YWN0RmllbGRzPjo6ZGVj
b2RlKERlY29kZXIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBcmd1bWVudENvZGVyPEFw
cGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbT46OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0mIGxp
bmVJdGVtKQotewotICAgIGVuY29kZXIgPDwgbGluZUl0ZW0udHlwZTsKLSAgICBlbmNvZGVyIDw8
IGxpbmVJdGVtLmxhYmVsOwotICAgIGVuY29kZXIgPDwgbGluZUl0ZW0uYW1vdW50OwotfQotCi1P
cHRpb25hbDxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0+IEFyZ3VtZW50
Q29kZXI8QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtPjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCi17Ci0gICAgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJl
cXVlc3Q6OkxpbmVJdGVtIGxpbmVJdGVtOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGluZUl0
ZW0udHlwZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShsaW5lSXRlbS5sYWJlbCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShsaW5lSXRlbS5hbW91bnQpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIFdURk1vdmUobGluZUl0ZW0pOwotfQotCiB2b2lk
IEFyZ3VtZW50Q29kZXI8QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6Ok1lcmNoYW50Q2Fw
YWJpbGl0aWVzPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEFwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0OjpNZXJjaGFudENhcGFiaWxpdGllcyYgbWVyY2hhbnRDYXBhYmlsaXRp
ZXMpCiB7CiAgICAgZW5jb2RlciA8PCBtZXJjaGFudENhcGFiaWxpdGllcy5zdXBwb3J0czNEUzsK
QEAgLTQxNCwxMiArMzk0LDEyIEBAIHZvaWQgQXJndW1lbnRDb2RlcjxBcHBsZVBheVNlc3Npb25Q
YXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+OjplbmNvZGUoRW5jCiAKIE9wdGlvbmFs
PEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4gQXJndW1l
bnRDb2RlcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxBcHBsZVBheVNlc3Np
b25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0+IHRvdGFsOworICAgIE9wdGlvbmFsPEFwcGxlUGF5
TGluZUl0ZW0+IHRvdGFsOwogICAgIGRlY29kZXIgPj4gdG90YWw7CiAgICAgaWYgKCF0b3RhbCkK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDxWZWN0b3I8
QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtPj4gbGluZUl0ZW1zOworICAg
IE9wdGlvbmFsPFZlY3RvcjxBcHBsZVBheUxpbmVJdGVtPj4gbGluZUl0ZW1zOwogICAgIGRlY29k
ZXIgPj4gbGluZUl0ZW1zOwogICAgIGlmICghbGluZUl0ZW1zKQogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aAppbmRleCA2ZjcyMTgwZjk4NTMyNzNlM2YxNmY2MTBiNGQ1MzFmMWFjZjE4YWU2Li4yNjA5OGVm
ZGRiNGFmZjJlYmVmN2IyZmNhNjFkNWNmYTAwNzU3NGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtNTQsMTAgKzU0LDYgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0N1cmxQcm94eVNldHRpbmdzLmg+CiAjZW5kaWYKIAotI2lmIFVTRShBUFBMRV9J
TlRFUk5BTF9TREspCi0jaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL1dlYkNvcmVBcmd1bWVudENv
ZGVyc0FkZGl0aW9ucy5oPgotI2VuZGlmCi0KICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQog
I2luY2x1ZGUgPFdlYkNvcmUvQ0RNSW5zdGFuY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NETUlu
c3RhbmNlU2Vzc2lvbi5oPgpAQCAtNzA1LDE3ICs3MDEsMTEgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdD4gewog
ICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlT
ZXNzaW9uUGF5bWVudFJlcXVlc3QmKTsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJv
b2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dCYpOwogfTsKLQogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpBcHBs
ZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6Q29udGFjdEZpZWxkcz4gewogICAgIHN0YXRpYyB2
b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVu
dFJlcXVlc3Q6OkNvbnRhY3RGaWVsZHMmKTsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVx
dWVzdDo6Q29udGFjdEZpZWxkcyYpOwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0+IHsK
LSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5
U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbSYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxX
ZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0+IGRlY29kZShE
ZWNvZGVyJik7Ci19OwotCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpNZXJjaGFudENhcGFiaWxpdGllcz4gewog
ICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlT
ZXNzaW9uUGF5bWVudFJlcXVlc3Q6Ok1lcmNoYW50Q2FwYWJpbGl0aWVzJik7CiAgICAgc3RhdGlj
IFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6QXBwbGVQ
YXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6Ok1lcmNoYW50Q2FwYWJpbGl0aWVzJik7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MDllN2QxNjAwOGU2ZjM2MWMwZDY0NjFlNGU0ZDQzNjFhOTlhN2QyYy4uMzdlYjk0ZmU3NTAyOTU3
MzQ3OTQyZDBlMDU2ZDEzZjQ3NzI2MWM2ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTAy
LTE1ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBbUGF5bWVu
dCBSZXF1ZXN0XSBhZGQgYW4gYG9iamVjdCBkYXRhYCB0byBgUGF5bWVudEl0ZW1gIHNvIHRoYXQg
ZGF0YSBzcGVjaWZpYyB0byBBcHBsZSBQYXkgY2FuIGJlIHByb3ZpZGVkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE5NzAKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzY5ODA2OTk5PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5z
ZW4uCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9wYXltZW50cmVxdWVzdC9wYXlt
ZW50LXJlcXVlc3QtaW50ZXJuYWwtcHJvcGVydGllcy5odHRwcy1leHBlY3RlZC50eHQ6CisKIDIw
MjEtMDItMTggIEFtaXIgTWFyayBKciAgPGFtaXJfbWFya0BhcHBsZS5jb20+CiAKICAgICAgICAg
W0JpZ1N1cl0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvdW50ZXIt
c3R5bGVzL3RpYmV0YW4vY3NzMy1jb3VudGVyLXN0eWxlcy0xNTYuaHRtbCBpcyBjb25zaXN0ZW50
bHkgZmFpbGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
cGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXF1ZXN0LWludGVybmFsLXByb3BlcnRpZXMuaHR0cHMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcGF5bWVudHJl
cXVlc3QvcGF5bWVudC1yZXF1ZXN0LWludGVybmFsLXByb3BlcnRpZXMuaHR0cHMtZXhwZWN0ZWQu
dHh0CmluZGV4IGNkOWUwY2FjNjY0MGMyZGJkNGUxYTk2ZDk2YTE2YTdmNjIyYjc4MDEuLjBkYWQ2
ZTJhMThhNzZkZjc0ZTM3MDJjNDMxNDQ4MDJlZDMzMWU1YmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVxdWVzdC1p
bnRlcm5hbC1wcm9wZXJ0aWVzLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlcXVlc3QtaW50ZXJu
YWwtcHJvcGVydGllcy5odHRwcy1leHBlY3RlZC50eHQKQEAgLTcwLDkgKzcwLDcgQEAgSU5URVJO
QUwgUFJPUEVSVFk6IGRldGFpbHM6IHsKICAgICAgICAgICAidmFsdWUiOiAiOTkuMDAiCiAgICAg
ICAgIH0sCiAgICAgICAgICJwZW5kaW5nIjogZmFsc2UKLSAgICAgIH0sCi0gICAgICAiYWRkaXRp
b25hbERpc3BsYXlJdGVtcyI6IFtdLAotICAgICAgImRhdGEiOiBudWxsCisgICAgICB9CiAgICAg
fQogICBdCiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>