<?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>237177</bug_id>
          
          <creation_ts>2022-02-24 19:55:36 -0800</creation_ts>
          <short_desc>[GPU Process] dont load Apple Pay button/logo PDFs in the WebProcess</short_desc>
          <delta_ts>2022-03-07 14:06:56 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>annulen</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>jonlee</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>pascoe</cc>
    
    <cc>pdr</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1845886</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-02-24 19:55:36 -0800</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845890</commentid>
    <comment_count>1</comment_count>
      <attachid>453170</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-02-24 20:00:29 -0800</bug_when>
    <thetext>Created attachment 453170
[fast-cq] Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846100</commentid>
    <comment_count>2</comment_count>
      <attachid>453170</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-02-25 11:10:12 -0800</bug_when>
    <thetext>Comment on attachment 453170
[fast-cq] Patch

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

&gt; Source/WebCore/platform/graphics/GraphicsContext.h:456
&gt; +#if ENABLE(APPLE_PAY)
&gt; +    virtual void paintApplePayButton(ApplePayButtonType, ApplePayButtonStyle, const String&amp; locale, float largestCornerRadius, const FloatRect&amp;) = 0;
&gt; +    virtual void paintApplePayLogo(ApplePayLogoStyle, const FloatRect&amp;) = 0;
&gt; +#endif

I don&apos;t think GraphicsContext should know about Apple Pay. Can we make this more generic (paintNamedImage) and do mapping of button types to more generic strings and back? Then you don&apos;t need all the ApplePay specific display list stuff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847582</commentid>
    <comment_count>3</comment_count>
      <attachid>453651</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-03-02 12:59:04 -0800</bug_when>
    <thetext>Created attachment 453651
[fast-cq] Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847587</commentid>
    <comment_count>4</comment_count>
      <attachid>453653</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-03-02 13:09:47 -0800</bug_when>
    <thetext>Created attachment 453653
[fast-cq] Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847651</commentid>
    <comment_count>5</comment_count>
      <attachid>453653</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-03-02 15:59:09 -0800</bug_when>
    <thetext>Comment on attachment 453653
[fast-cq] Patch

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

&gt; Source/WebCore/Modules/applepay/ApplePayButtonSystemImage.mm:92
&gt; +    CGContextSetShouldSmoothFonts(platformContext, true);

Necessary?

&gt; Source/WebCore/Modules/applepay/ApplePayLogoSystemImage.mm:46
&gt; +#if PLATFORM(MAC)
&gt; +        passKitBundle = [NSBundle bundleWithURL:[NSURL fileURLWithPath:@&quot;/System/Library/PrivateFrameworks/PassKit.framework&quot; isDirectory:YES]];
&gt; +#else
&gt; +        dlopen(&quot;/System/Library/Frameworks/PassKit.framework/PassKit&quot;, RTLD_NOW);
&gt; +        passKitBundle = [NSBundle bundleForClass:NSClassFromString(@&quot;PKPaymentAuthorizationViewController&quot;)];

Not new code, but this is quite something.

&gt; Source/WebCore/Modules/applepay/ApplePayLogoSystemImage.mm:65
&gt; +static CGPDFPageRef applePayLogoWhite()

Would be nicer to return RetainPtr&lt;CGPDFPageRef&gt;

&gt; Source/WebCore/Modules/applepay/ApplePayLogoSystemImage.mm:67
&gt; +    static CGPDFPageRef logoPage;

Might be clearer for these to be NeverDestoyed&lt;RetainPtr&lt;&gt;&gt; since they are basically leaked.

&gt; Source/WebCore/Modules/credentialmanagement/BasicCredential.h:38
&gt; +class Document;
&gt; +template&lt;typename IDLType&gt; class DOMPromiseDeferred;
&gt; +struct IDLBoolean;

I don&apos;t think these should be in this patch.

&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:642
&gt; +void GraphicsContext::drawSystemImage(const Ref&lt;SystemImage&gt;&amp; systemImage, const FloatRect&amp; destination)

Please rename &quot;destination&quot; to &quot;destinationRect&quot; everywhere (&quot;destination&quot; could be taken to refer to the destination context).

&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:877
&gt; +    float scale;
&gt; +    float translationX = 0;
&gt; +    float translationY = 0;
&gt; +    if (srcSize.aspectRatio() &gt; dstSize.aspectRatio()) {
&gt; +        scale = dstSize.width() / srcSize.width();
&gt; +        translationY = (dstSize.height() - scale * srcSize.height()) / 2;
&gt; +    } else {
&gt; +        scale = dstSize.height() / srcSize.height();
&gt; +        translationX = (dstSize.width() - scale * srcSize.width()) / 2;
&gt; +    }

This math belongs in GeometryUtilities.cpp (and can probably share logic with existing functions there).

&gt; Source/WebCore/platform/graphics/GraphicsContext.h:432
&gt; +    virtual void drawSystemImage(const Ref&lt;SystemImage&gt;&amp;, const FloatRect&amp;);

Just pass SystemImage&amp;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847721</commentid>
    <comment_count>6</comment_count>
      <attachid>453653</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-03-02 19:09:31 -0800</bug_when>
    <thetext>Comment on attachment 453653
[fast-cq] Patch

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

&gt;&gt; Source/WebCore/Modules/applepay/ApplePayButtonSystemImage.mm:92
&gt;&gt; +    CGContextSetShouldSmoothFonts(platformContext, true);
&gt; 
&gt; Necessary?

I think this is the equivalent of calling `context.setShouldSmoothFonts(true);`.  I suppose I could&apos;ve left it as
```
GraphicsContextStateSaver stateSaver(context);
	 	
context.setShouldSmoothFonts(true);
context.scale(FloatSize(1, -1));
```
instead of using `platformContext()`.

&gt;&gt; Source/WebCore/Modules/credentialmanagement/BasicCredential.h:38
&gt;&gt; +struct IDLBoolean;
&gt; 
&gt; I don&apos;t think these should be in this patch.

Hmm previously this patch didnt build without these, but I guess it&apos;s been fixed since then?  I&apos;ll remove.

&gt;&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:877
&gt;&gt; +    }
&gt; 
&gt; This math belongs in GeometryUtilities.cpp (and can probably share logic with existing functions there).

Are you suggesting I create something like a `struct ScaledPoint` that contains both a `FloatPoint translation` and `float scale` (or maybe just use an `AffineTransform`) and then have that be returned by a new method named something like `calculateScaleToFit`?

&gt;&gt; Source/WebCore/platform/graphics/GraphicsContext.h:432
&gt;&gt; +    virtual void drawSystemImage(const Ref&lt;SystemImage&gt;&amp;, const FloatRect&amp;);
&gt; 
&gt; Just pass SystemImage&amp;

I tried doing that before, but I ran into issues when trying to `decode` the given `SystemImage` in the GPUProcess, because I think the `std::optional&lt;SystemImage&gt;` only has space allocated for the `SystemImage` type, not the subclass.  I ended up having `SystemImage` inherit from `RefCounted` so that we could just use a pointer (and `Ref`) to avoid the sizing issue.

Or were you perhaps suggesting that I could have this be `SystemImage&amp;` here and then just `Ref { systemImage }` only when I&apos;m about to send it via IPC (and `.get()` on the other end)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847729</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-03-02 20:23:43 -0800</bug_when>
    <thetext>(In reply to Devin Rousso from comment #6)
&gt; Comment on attachment 453653 [details]
&gt; [fast-cq] Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=453653&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/Modules/applepay/ApplePayButtonSystemImage.mm:92
&gt; &gt;&gt; +    CGContextSetShouldSmoothFonts(platformContext, true);
&gt; &gt; 
&gt; &gt; Necessary?
&gt; 
&gt; I think this is the equivalent of calling
&gt; `context.setShouldSmoothFonts(true);`.  I suppose I could&apos;ve left it as
&gt; ```
&gt; GraphicsContextStateSaver stateSaver(context);
&gt; 	 	
&gt; context.setShouldSmoothFonts(true);
&gt; context.scale(FloatSize(1, -1));
&gt; ```
&gt; instead of using `platformContext()`.

The question is really about why font smoothing is special when drawing apply pay buttons. Isn&apos;t smoothing on by default? Is this only relevant when CSS turns that off?

&gt; &gt;&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:877
&gt; &gt;&gt; +    }
&gt; &gt; 
&gt; &gt; This math belongs in GeometryUtilities.cpp (and can probably share logic with existing functions there).
&gt; 
&gt; Are you suggesting I create something like a `struct ScaledPoint` that
&gt; contains both a `FloatPoint translation` and `float scale` (or maybe just
&gt; use an `AffineTransform`) and then have that be returned by a new method
&gt; named something like `calculateScaleToFit`?

I think this is an aspect-ratio-preserving fit, right? So call largestRectWithAspectRatioInsideRect() and then compute your translate etc from the result. Just don&apos;t duplicate aspect-ratio sizing math.

&gt; &gt;&gt; Source/WebCore/platform/graphics/GraphicsContext.h:432
&gt; &gt;&gt; +    virtual void drawSystemImage(const Ref&lt;SystemImage&gt;&amp;, const FloatRect&amp;);
&gt; &gt; 
&gt; &gt; Just pass SystemImage&amp;
&gt; 
&gt; I tried doing that before, but I ran into issues when trying to `decode` the
&gt; given `SystemImage` in the GPUProcess, because I think the
&gt; `std::optional&lt;SystemImage&gt;` only has space allocated for the `SystemImage`
&gt; type, not the subclass.  I ended up having `SystemImage` inherit from
&gt; `RefCounted` so that we could just use a pointer (and `Ref`) to avoid the
&gt; sizing issue.
&gt; 
&gt; Or were you perhaps suggesting that I could have this be `SystemImage&amp;` here
&gt; and then just `Ref { systemImage }` only when I&apos;m about to send it via IPC
&gt; (and `.get()` on the other end)?

I&apos;m not sure why the signature of drawSystemImage() affects IPC code; you can still downcast&lt;&gt; a reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847991</commentid>
    <comment_count>8</comment_count>
      <attachid>453762</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-03-03 11:02:01 -0800</bug_when>
    <thetext>Created attachment 453762
[fast-cq] Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848011</commentid>
    <comment_count>9</comment_count>
      <attachid>453769</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-03-03 11:40:10 -0800</bug_when>
    <thetext>Created attachment 453769
[fast-cq] Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848158</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-03 19:56:42 -0800</bug_when>
    <thetext>&lt;rdar://problem/89792781&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848160</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-03 20:09:50 -0800</bug_when>
    <thetext>Committed r290813 (248049@main): &lt;https://commits.webkit.org/248049@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 453769.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848958</commentid>
    <comment_count>12</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2022-03-07 14:06:56 -0800</bug_when>
    <thetext>*** Bug 236925 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453170</attachid>
            <date>2022-02-24 20:00:29 -0800</date>
            <delta_ts>2022-03-02 12:59:04 -0800</delta_ts>
            <desc>[fast-cq] Patch</desc>
            <filename>bug-237177-20220224210028.patch</filename>
            <type>text/plain</type>
            <size>82548</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhM2M0Yzk0ZGVmN2UzMGY5OWQwYjQ2ODUyNmVlNDk2YzNmZTk4MGVmLi5h
MTgyNWM2MDRmNmM0OTUwMjQ2MTBkMGE4MGUxODM4NGNiZjA2YTJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTE3IEBACisyMDIyLTAyLTI0ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNv
bT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIGRvbnQgbG9hZCBBcHBsZSBQYXkgYnV0dG9uL2xv
Z28gUERGcyBpbiB0aGUgV2ViUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5QnV0dG9uU3R5bGUu
aDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUJ1dHRvblN0eWxl
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBN
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5QnV0dG9uVHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5QnV0dG9uVHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlQ29uc3RhbnRzLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29u
c3RhbnRzLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAg
ICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oOgorICAgICAgICBNb3ZlIGBB
cHBsZVBheUJ1dHRvblN0eWxlYCBhbmQgYEFwcGxlUGF5QnV0dG9uVHlwZWAgdG8gdGhlaXIgb3du
IGZpbGVzIHNvIHRoZXkgY2FuIGJlIHVzZWQKKyAgICAgICAgaW4gb3RoZXIgc3BvdHMgKGUuZy4g
R1BVUHJvY2Vzcykgd2l0aG91dCBoYXZpbmcgdG8gcHVsbCBldmVyeXRoaW5nIGVsc2UgaW4gdG9v
LgorCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxvZ29TdHlsZS5oOiBBZGRl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TG9nb1N0eWxlLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgQWRkIGEgbmV3IGBB
cHBsZVBheUxvZ29TdHlsZWAgc28gdGhhdCB0aGUgV2ViUHJvY2VzcyBpc24ndCBhYmxlIHRvIHBy
b3ZpZGUgYW4gYXJiaXRyYXJ5IFBERgorICAgICAgICB0byBsb2FkIHdoZW4gcmVuZGVyaW5nIGAt
d2Via2l0LW5hbWVkLWltYWdlKGFwcGxlLXBheS1sb2dvLVt3aGl0ZSxibGFja10pYC4KKworICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVDb2NvYTo6cGFpbnRBcHBsZVBheUJ1dHRvbik6CisgICAgICAgIChXZWJDb3Jl
Ojp0b1BLUGF5bWVudEJ1dHRvblN0eWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRv
UEtQYXltZW50QnV0dG9uVHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
VGhlbWVDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lQ29jb2E6OmRyYXdOYW1lZElt
YWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmZpdENvbnRleHRUb0JveCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpwYXNzS2l0QnVuZGxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmxvYWRQYXNzS2l0UERGUGFnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjph
cHBsZVBheUJ1dHRvbkxvZ29CbGFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjphcHBs
ZVBheUJ1dHRvbkxvZ29XaGl0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpkcmF3QXBw
bGVQYXlCdXR0b24pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpZnVy
Y2F0ZWRHcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaWZ1
cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpZnVyY2F0ZWRH
cmFwaGljc0NvbnRleHQ6OnBhaW50QXBwbGVQYXlCdXR0b24pOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OnBhaW50QXBwbGVQYXlMb2dvKTogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4dC5oOgor
ICAgICAgICAoV2ViQ29yZTo6TnVsbEdyYXBoaWNzQ29udGV4dDo6cGFpbnRBcHBsZVBheUJ1dHRv
bik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TnVsbEdyYXBoaWNzQ29udGV4dDo6cGFpbnRB
cHBsZVBheUxvZ28pOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBo
aWNzQ29udGV4dENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6dG9QS1BheW1lbnRCdXR0b25T
dHlsZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6dG9QS1BheW1lbnRCdXR0b25UeXBlKTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6cGFpbnRBcHBsZVBh
eUJ1dHRvbik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6cGFzc0tpdEJ1bmRsZSk6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6bG9hZFBhc3NLaXRQREZQYWdlKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjphcHBsZVBheUxvZ29XaGl0ZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
YXBwbGVQYXlMb2dvQmxhY2spOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFwcGxlUGF5TG9n
b0ZvclN0eWxlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6
cGFpbnRBcHBsZVBheUxvZ28pOiBBZGRlZC4KKyAgICAgICAgTW92ZSB0aGUgbG9naWMgdGhhdCBk
cmF3cyB0aGUgQXBwbGUgUGF5IGJ1dHRvbiB0byBhIG1ldGhvZCBvbiBgR3JhcGhpY3NDb250ZXh0
YCBzbyB0aGF0IGl0CisgICAgICAgIGNhbiBob29rIGludG8gdGhlIHZhcmlvdXMgR1BVUHJvY2Vz
cyBmbGFncy9zeXN0ZW1zLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdDo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtSGFuZGxlOjphcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbUhhbmRsZTo6ZGVzdHJveSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bUhhbmRsZTo6c2FmZUNvcHkgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OnNpemVPZkl0ZW1JbkJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0Ojppc0RyYXdpbmdJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0Ojppc0lubGluZUl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UGFpbnRBcHBsZVBheUJ1dHRvbjo6UGFpbnRBcHBsZVBheUJ1dHRvbik6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UGFpbnRBcHBsZVBheUJ1dHRvbjo6dHlwZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UGFpbnRBcHBsZVBheUJ1dHRvbjo6c3R5bGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlBhaW50QXBwbGVQYXlCdXR0b246
OmxvY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UGFpbnRBcHBs
ZVBheUJ1dHRvbjo6bGFyZ2VzdENvcm5lclJhZGl1cyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UGFpbnRBcHBsZVBheUJ1dHRvbjo6ZGVzdGluYXRpb24gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlBhaW50QXBwbGVQYXlCdXR0b246Omdsb2Jh
bEJvdW5kcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UGFpbnRBcHBs
ZVBheUJ1dHRvbjo6bG9jYWxCb3VuZHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlBhaW50QXBwbGVQYXlCdXR0b246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UGFpbnRBcHBsZVBheUJ1dHRvbjo6ZGVjb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQYWludEFwcGxlUGF5TG9nbzo6UGFpbnRBcHBsZVBheUxv
Z28pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlBhaW50QXBwbGVQYXlMb2dvOjpz
dHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UGFpbnRBcHBsZVBh
eUxvZ286OmRlc3RpbmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpQYWludEFwcGxlUGF5TG9nbzo6Z2xvYmFsQm91bmRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpQYWludEFwcGxlUGF5TG9nbzo6bG9jYWxCb3VuZHMgY29uc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQYWludEFwcGxlUGF5QnV0dG9u
OjphcHBseSBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlBh
aW50QXBwbGVQYXlMb2dvOjphcHBseSBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpwYWludEFwcGxlUGF5QnV0dG9uKTogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnBhaW50QXBwbGVQYXlM
b2dvKTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXJJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFBhaW50QXBwbGVQYXlCdXR0b24pOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29y
ZFBhaW50QXBwbGVQYXlMb2dvKTogQWRkZWQuCisgICAgICAgIEFkZCBuZXcgYFBhaW50QXBwbGVQ
YXlCdXR0b25gIGFuZCBgUGFpbnRBcHBsZVBheUxvZ29gIGRpc3BsYXkgbGlzdCBpdGVtcy4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OnNjYWxlVG9GaXQpOiBBZGRlZC4KKyAgICAgICAgQWRkIGhlbHBl
ciBtZXRob2QgZm9yIGBzY2FsZWBpbmcgdGhlIGBHcmFwaGljc0NvbnRleHRgIGJhc2VkIG9uIHRo
ZSBgYXNwZWN0UmF0aW9gIGRpZmZlcmVuY2UKKyAgICAgICAgYmV0d2VlbiB0aGUgc291cmNlIGFu
ZCBkZXN0aW5hdGlvbiBgRmxvYXRSZWN0YC4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6Cisg
ICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29y
ZGluYXRvci5jcHA6CisgICAgICAgICogTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9CYXNp
Y0NyZWRlbnRpYWwuaDoKKyAgICAgICAgRHJpdmUtYnk6IFVuaWZpZWQgc291cmNlcyBmaXhlcy4K
KwogMjAyMi0wMi0yNCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgW0FwcGxlIFBheV0gc3dpdGNoIGZyb20gYFBhc3NLaXQvKmAgdG8gYFBhc3NLaXRbQ29yZSxV
SV0vKmAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggMzhlNDNlNzAyZmMwZGIwYWQ3NWZjZmY2YjViNzM3NmYzZmJmYzgx
Mi4uZGVkNjUzYjcxOWFhNDcwNDc4YjljYzA0OGFiZTI0NzJlNWNkMDMxNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMSBAQAorMjAyMi0wMi0yNCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5j
b20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBkb250IGxvYWQgQXBwbGUgUGF5IGJ1dHRvbi9s
b2dvIFBERnMgaW4gdGhlIFdlYlByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNzE3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlclByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmRQYWludEFwcGxlUGF5QnV0dG9uKTog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6
cmVjb3JkUGFpbnRBcHBsZVBheUxvZ28pOiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIubWVzc2FnZXMuaW46CisgICAgICAgICog
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6cGFpbnRBcHBsZVBheUJ1
dHRvbik6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVy
OjpwYWludEFwcGxlUGF5TG9nbyk6IEFkZGVkLgorICAgICAgICBBZGQgbmV3IGBQYWludEFwcGxl
UGF5QnV0dG9uYCBhbmQgYFBhaW50QXBwbGVQYXlMb2dvYCBkaXNwbGF5IGxpc3QgaXRlbXMuCisK
IDIwMjItMDItMjQgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAg
IFtBcHBsZSBQYXldIHN3aXRjaCBmcm9tIGBQYXNzS2l0LypgIHRvIGBQYXNzS2l0W0NvcmUsVUld
LypgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBmMWNlZGI5Yzc1YmNmOTc3N2MwZmM4OWY1Njg5N2Uy
M2M4YTI3YmQwLi44ZjE3ZTM1OWRlZDE0MDVmMzg3YmFkMDFiNjU5YTIxYjNlZDU2ZDg1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UKQEAgLTEzMSw2ICsxMzEsOSBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZS
QU1FV09SS19IRUFERVJTCiAKICAgICBNb2R1bGVzL2FpcnBsYXkvUGxheWJhY2tUYXJnZXRDbGll
bnRDb250ZXh0SWRlbnRpZmllci5oCiAKKyAgICBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5QnV0
dG9uU3R5bGUuaAorICAgIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlCdXR0b25UeXBlLmgKKyAg
ICBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TG9nb1N0eWxlLmgKICAgICBNb2R1bGVzL2FwcGxl
cGF5L0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmgKICAgICBNb2R1bGVzL2FwcGxlcGF5
L1BheW1lbnQuaAogICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvbnRhY3QuaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUJ1dHRvblN0eWxl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlCdXR0b25TdHls
ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDMwNDY2NzZjY2JlMzU3YTBkNzNlZTA4MTYwOTQ3YTBiY2EwNTA0
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlCdXR0b25TdHlsZS5jcHAKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBcHBsZVBheUJ1dHRvblN0eWxlLmgiCisKKyNpbmNs
dWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgQXBwbGVQYXlCdXR0b25TdHlsZSBz
dHlsZSkKK3sKKyAgICBzd2l0Y2ggKHN0eWxlKSB7CisgICAgY2FzZSBBcHBsZVBheUJ1dHRvblN0
eWxlOjpXaGl0ZTogdHMgPDwgIndoaXRlIjsgYnJlYWs7CisgICAgY2FzZSBBcHBsZVBheUJ1dHRv
blN0eWxlOjpXaGl0ZU91dGxpbmU6IHRzIDw8ICJ3aGl0ZS1vdXRsaW5lIjsgYnJlYWs7CisgICAg
Y2FzZSBBcHBsZVBheUJ1dHRvblN0eWxlOjpCbGFjazogdHMgPDwgImJsYWNrIjsgYnJlYWs7Cisg
ICAgfQorICAgIHJldHVybiB0czsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUJ1dHRvblN0eWxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5QnV0dG9uU3R5bGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jNmY5ZmU0YzQ0NWVjMjEyZDJmMTc3ZTU0N2RlYmQ4MzQ3ODgxOTg2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eUJ1dHRvblN0eWxlLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKEFQUExFX1BBWSkKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBBcHBsZVBheUJ1dHRvblN0eWxlIDog
dWludDhfdCB7CisgICAgV2hpdGUsCisgICAgV2hpdGVPdXRsaW5lLAorICAgIEJsYWNrLAorfTsK
KworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgQXBwbGVQYXlCdXR0b25TdHls
ZSk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6QXBwbGVQYXlCdXR0b25TdHlsZT4gewor
ICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkFwcGxlUGF5
QnV0dG9uU3R5bGUsCisgICAgICAgIFdlYkNvcmU6OkFwcGxlUGF5QnV0dG9uU3R5bGU6OldoaXRl
LAorICAgICAgICBXZWJDb3JlOjpBcHBsZVBheUJ1dHRvblN0eWxlOjpXaGl0ZU91dGxpbmUsCisg
ICAgICAgIFdlYkNvcmU6OkFwcGxlUGF5QnV0dG9uU3R5bGU6OkJsYWNrCisgICAgPjsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BBWSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlCdXR0b25UeXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlCdXR0b25UeXBl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iNDFhNmU0ZDdmYzQzNGUyMzkwMDQ2NDBjOWI4MTczYTU0NmUxNGRh
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheUJ1dHRvblR5cGUuY3BwCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXBwbGVQYXlCdXR0b25UeXBlLmgiCisKKyNpbmNsdWRl
IDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgQXBwbGVQYXlCdXR0b25UeXBlIHR5cGUp
Cit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OlBs
YWluOiB0cyA8PCAicGxhaW4iOyBicmVhazsKKyAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6
QnV5OiB0cyA8PCAiYnV5IjsgYnJlYWs7CisgICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OlNl
dFVwOiB0cyA8PCAic2V0dXAiOyBicmVhazsKKyAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6
RG9uYXRlOiB0cyA8PCAiZG9uYXRlIjsgYnJlYWs7CisgICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5
cGU6OkNoZWNrT3V0OiB0cyA8PCAiY2hlY2tvdXQiOyBicmVhazsKKyAgICBjYXNlIEFwcGxlUGF5
QnV0dG9uVHlwZTo6Qm9vazogdHMgPDwgImJvb2siOyBicmVhazsKKyAgICBjYXNlIEFwcGxlUGF5
QnV0dG9uVHlwZTo6U3Vic2NyaWJlOiB0cyA8PCAic3Vic2NyaWJlIjsgYnJlYWs7CisjaWYgRU5B
QkxFKEFQUExFX1BBWV9ORVdfQlVUVE9OX1RZUEVTKQorICAgIGNhc2UgQXBwbGVQYXlCdXR0b25U
eXBlOjpSZWxvYWQ6IHRzIDw8ICJyZWxvYWQiOyBicmVhazsKKyAgICBjYXNlIEFwcGxlUGF5QnV0
dG9uVHlwZTo6QWRkTW9uZXk6IHRzIDw8ICJhZGQtbW9uZXkiOyBicmVhazsKKyAgICBjYXNlIEFw
cGxlUGF5QnV0dG9uVHlwZTo6VG9wVXA6IHRzIDw8ICJ0b3AtdXAiOyBicmVhazsKKyAgICBjYXNl
IEFwcGxlUGF5QnV0dG9uVHlwZTo6T3JkZXI6IHRzIDw8ICJvcmRlciI7IGJyZWFrOworICAgIGNh
c2UgQXBwbGVQYXlCdXR0b25UeXBlOjpSZW50OiB0cyA8PCAicmVudCI7IGJyZWFrOworICAgIGNh
c2UgQXBwbGVQYXlCdXR0b25UeXBlOjpTdXBwb3J0OiB0cyA8PCAic3VwcG9ydCI7IGJyZWFrOwor
ICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpDb250cmlidXRlOiB0cyA8PCAiY29udHJpYnV0
ZSI7IGJyZWFrOworICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpUaXA6IHRzIDw8ICJ0aXAi
OyBicmVhazsKKyNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZX05FV19CVVRUT05fVFlQRVMpCisg
ICAgfQorICAgIHJldHVybiB0czsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUJ1dHRvblR5cGUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlCdXR0b25UeXBlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzI5NDM0OGM0YzAzMzk5YzBjZTkwOTViOGNiM2Y5NGVlYTQ5Mjc2MwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlC
dXR0b25UeXBlLmgKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKEFQUExFX1BBWSkKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBBcHBsZVBheUJ1dHRvblR5cGUgOiB1aW50
OF90IHsKKyAgICBQbGFpbiwKKyAgICBCdXksCisgICAgU2V0VXAsCisgICAgRG9uYXRlLAorICAg
IENoZWNrT3V0LAorICAgIEJvb2ssCisgICAgU3Vic2NyaWJlLAorI2lmIEVOQUJMRShBUFBMRV9Q
QVlfTkVXX0JVVFRPTl9UWVBFUykKKyAgICBSZWxvYWQsCisgICAgQWRkTW9uZXksCisgICAgVG9w
VXAsCisgICAgT3JkZXIsCisgICAgUmVudCwKKyAgICBTdXBwb3J0LAorICAgIENvbnRyaWJ1dGUs
CisgICAgVGlwLAorI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfTkVXX0JVVFRPTl9UWVBFUykK
K307CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIEFwcGxlUGF5QnV0dG9u
VHlwZSk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3Rl
bXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6QXBwbGVQYXlCdXR0b25UeXBlPiB7
CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczxXZWJDb3JlOjpBcHBsZVBheUJ1dHRvblR5
cGUKKyAgICAgICAgLCBXZWJDb3JlOjpBcHBsZVBheUJ1dHRvblR5cGU6OlBsYWluCisgICAgICAg
ICwgV2ViQ29yZTo6QXBwbGVQYXlCdXR0b25UeXBlOjpCdXkKKyAgICAgICAgLCBXZWJDb3JlOjpB
cHBsZVBheUJ1dHRvblR5cGU6OlNldFVwCisgICAgICAgICwgV2ViQ29yZTo6QXBwbGVQYXlCdXR0
b25UeXBlOjpEb25hdGUKKyAgICAgICAgLCBXZWJDb3JlOjpBcHBsZVBheUJ1dHRvblR5cGU6OkNo
ZWNrT3V0CisgICAgICAgICwgV2ViQ29yZTo6QXBwbGVQYXlCdXR0b25UeXBlOjpCb29rCisgICAg
ICAgICwgV2ViQ29yZTo6QXBwbGVQYXlCdXR0b25UeXBlOjpTdWJzY3JpYmUKKyNpZiBFTkFCTEUo
QVBQTEVfUEFZX05FV19CVVRUT05fVFlQRVMpCisgICAgICAgICwgV2ViQ29yZTo6QXBwbGVQYXlC
dXR0b25UeXBlOjpSZWxvYWQKKyAgICAgICAgLCBXZWJDb3JlOjpBcHBsZVBheUJ1dHRvblR5cGU6
OkFkZE1vbmV5CisgICAgICAgICwgV2ViQ29yZTo6QXBwbGVQYXlCdXR0b25UeXBlOjpUb3BVcAor
ICAgICAgICAsIFdlYkNvcmU6OkFwcGxlUGF5QnV0dG9uVHlwZTo6T3JkZXIKKyAgICAgICAgLCBX
ZWJDb3JlOjpBcHBsZVBheUJ1dHRvblR5cGU6OlJlbnQKKyAgICAgICAgLCBXZWJDb3JlOjpBcHBs
ZVBheUJ1dHRvblR5cGU6OlN1cHBvcnQKKyAgICAgICAgLCBXZWJDb3JlOjpBcHBsZVBheUJ1dHRv
blR5cGU6OkNvbnRyaWJ1dGUKKyAgICAgICAgLCBXZWJDb3JlOjpBcHBsZVBheUJ1dHRvblR5cGU6
OlRpcAorI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfTkVXX0JVVFRPTl9UWVBFUykKKyAgICA+
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZ
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxv
Z29TdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TG9n
b1N0eWxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OTAwMWViNGQ1NDU2ODExYjQzZTg0NjQxNzg5N2NiNWMy
YWE5MGJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheUxvZ29TdHlsZS5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBcHBsZVBheUxvZ29TdHlsZS5oIgorCisjaW5j
bHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Rl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEFwcGxlUGF5TG9nb1N0eWxlIHN0
eWxlKQoreworICAgIHN3aXRjaCAoc3R5bGUpIHsKKyAgICBjYXNlIEFwcGxlUGF5TG9nb1N0eWxl
OjpXaGl0ZTogdHMgPDwgIndoaXRlIjsgYnJlYWs7CisgICAgY2FzZSBBcHBsZVBheUxvZ29TdHls
ZTo6QmxhY2s6IHRzIDw8ICJibGFjayI7IGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gdHM7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMb2dvU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlMb2dvU3R5bGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YWJiNWIxMThjYWRk
MzlmMmMzNWI0ZGUxNWRmYzcyMWFjMTYyY2M4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxvZ29TdHlsZS5oCkBAIC0wLDAgKzEsNTUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBUFBMRV9QQVkpCisK
KyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0g
Y2xhc3MgQXBwbGVQYXlMb2dvU3R5bGUgOiB1aW50OF90IHsKKyAgICBXaGl0ZSwKKyAgICBCbGFj
aywKK307CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIEFwcGxlUGF5TG9n
b1N0eWxlKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpBcHBsZVBheUxvZ29TdHlsZT4g
eworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkFwcGxl
UGF5TG9nb1N0eWxlLAorICAgICAgICBXZWJDb3JlOjpBcHBsZVBheUxvZ29TdHlsZTo6V2hpdGUs
CisgICAgICAgIFdlYkNvcmU6OkFwcGxlUGF5TG9nb1N0eWxlOjpCbGFjaworICAgID47Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRv
ci5jcHAKaW5kZXggNGE5NDMyMjQ5ZDUyZDUxZDE0N2I4NmU1NzA4ZDUxODg4YmE2NGY1Ni4uNzYy
ZWI5Njk4ZjU1NjE3NjYyNDM3NTYzMjQ5NzRlNmExM2Q1YjhmOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmNwcApAQCAt
MjksNiArMjksNyBAQAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKICNpbmNsdWRlICJBcHBsZVBh
eUNvdXBvbkNvZGVVcGRhdGUuaCIKKyNpbmNsdWRlICJBcHBsZVBheVBheW1lbnRBdXRob3JpemF0
aW9uUmVzdWx0LmgiCiAjaW5jbHVkZSAiQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmgiCiAj
aW5jbHVkZSAiQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGUuaCIKICNpbmNsdWRlICJBcHBs
ZVBheVNoaXBwaW5nTWV0aG9kLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NyZWRlbnRpYWxtYW5hZ2VtZW50L0Jhc2ljQ3JlZGVudGlhbC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9CYXNpY0NyZWRlbnRpYWwuaAppbmRleCA1ZDdl
NDQxMjM2NGU3ZTc0OGNkNjY1YjI5MDJlODI0MTU4MGZiMWM4Li5hMzgyMzBiOWM5NTZiZDFiNjBj
ZDU2ZDIzZWJkYWZiZTg4Yzk3MTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NyZWRlbnRpYWxtYW5hZ2VtZW50L0Jhc2ljQ3JlZGVudGlhbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQmFzaWNDcmVkZW50aWFsLmgKQEAgLTMz
LDYgKzMzLDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRG9jdW1lbnQ7Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBjbGFzcyBET01Qcm9taXNlRGVmZXJyZWQ7CitzdHJ1
Y3QgSURMQm9vbGVhbjsKKwogY2xhc3MgQmFzaWNDcmVkZW50aWFsIDogcHVibGljIFJlZkNvdW50
ZWQ8QmFzaWNDcmVkZW50aWFsPiB7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBUeXBlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDVkMjUwYTgwYWJkMmY5ODc0ODFhNTVmMTAwNjVkMDFj
MTUwYzFkN2EuLjg4M2JjYWJmZDc4OGVkMjEzNDJjYzM1NmFiNmRiZGVkOTdkZjk4MzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dApAQCAtNzEsOSArNzEsMTIgQEAgSlNBcHBsZVBheVNoaXBwaW5n
TWV0aG9kU2VsZWN0ZWRFdmVudC5jcHAKIEpTQXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZS5j
cHAKIEpTQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQuY3BwCiBNb2R1bGVzL2FpcnBsYXkv
V2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKK01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlCdXR0
b25TdHlsZS5jcHAKK01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlCdXR0b25UeXBlLmNwcAogTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheUNvdXBvbkNvZGVDaGFuZ2VkRXZlbnQuY3BwCiBNb2R1bGVz
L2FwcGxlcGF5L0FwcGxlUGF5Q2FuY2VsRXZlbnQuY3BwCiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5Q29udGFjdEZpZWxkLmNwcAorTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxvZ29TdHlsZS5j
cHAKIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlNZXJjaGFudENhcGFiaWxpdHkuY3BwCiBNb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQuY3BwCiBNb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudC5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiYzM2
ZmNmYTAxMTBkMWU4MTJhNDU2MTRkYzFkZTZkNTMxMTRjYzMyLi4xYTQxNTY5YzE5YzIwYWFmMmQw
NDFjMzUzYjc4OThmM2Q5ZmQyMWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMTA3LDYgKzMxMDcsOSBAQAogCQk5NTAxODND
RDI1RDYzM0Q5MDBENDM0MEYgLyogQXBwbGVQYXlEZXRhaWxzVXBkYXRlQmFzZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUwMTgzQ0IyNUQ2MzNEODAw
RDQzNDBGIC8qIEFwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5NTI3RDdBQjI1RDVGREUyMDBBNkUxNzYg
LyogQXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTUyN0Q3QTgyNUQ1RkRFMTAwQTZFMTc2IC8qIEFwcGxlUGF5
RGV0YWlsc1VwZGF0ZURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5NTI3RDdBRjI1RDVGRTZDMDBBNkUxNzYgLyogSlNBcHBsZVBheURldGFp
bHNVcGRhdGVEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5NTI3RDdBRDI1RDVGRTZCMDBBNkUxNzYgLyogSlNBcHBsZVBheURldGFpbHNVcGRhdGVE
YXRhLmggKi87IH07CisJCTk1MkM2MTM4MjdDODM1MUUwMEY5Q0QwRCAvKiBBcHBsZVBheUJ1dHRv
blR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1
MkM2MTMyMjdDODM1MUIwMEY5Q0QwRCAvKiBBcHBsZVBheUJ1dHRvblR5cGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5NTJDNjEzQjI3QzgzNTFF
MDBGOUNEMEQgLyogQXBwbGVQYXlMb2dvU3R5bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MkM2MTM1MjdDODM1MUMwMEY5Q0QwRCAvKiBBcHBsZVBh
eUxvZ29TdHlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTk1MkM2MTNDMjdDODM1MUUwMEY5Q0QwRCAvKiBBcHBsZVBheUJ1dHRvblN0eWxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTJDNjEzNjI3
QzgzNTFEMDBGOUNEMEQgLyogQXBwbGVQYXlCdXR0b25TdHlsZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk1M0JDRUIyMjVENjI4M0QwMEE0QTJB
MSAvKiBKU0FwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1M0JDRUFGMjVENjI4M0MwMEE0QTJBMSAvKiBKU0Fw
cGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2UuaCAqLzsgfTsKIAkJOTU2MkVFREQyNUYxOERFNzAwMzM0
NDQyIC8qIFBheW1lbnRSZXF1ZXN0VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTYyRUVEQjI1RjE4REU2MDAzMzQ0NDIgLyogUGF5bWVu
dFJlcXVlc3RVdGlsaXRpZXMuaCAqLzsgfTsKIAkJOTU2ODREODMyNjUzNTdGODAwMDI2OTM4IC8q
IEFwcGxlUGF5Q291cG9uQ29kZURldGFpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk1Njg0RDgxMjY1MzU3RjcwMDAyNjkzOCAvKiBBcHBsZVBheUNv
dXBvbkNvZGVEZXRhaWxzLmggKi87IH07CkBAIC0xMzA0NCw2ICsxMzA0NywxMiBAQAogCQk5NTI3
RDdBQTI1RDVGREUxMDBBNkUxNzYgLyogQXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YS5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YS5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1MjdEN0FEMjVENUZFNkIwMEE2RTE3NiAvKiBKU0Fw
cGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNBcHBsZVBheURldGFpbHNVcGRhdGVEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTk1MjdEN0FFMjVENUZFNkIwMEE2RTE3NiAvKiBKU0FwcGxlUGF5RGV0YWlsc1VwZGF0
ZURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBcHBsZVBh
eURldGFpbHNVcGRhdGVEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTUy
QzYxMzIyN0M4MzUxQjAwRjlDRDBEIC8qIEFwcGxlUGF5QnV0dG9uVHlwZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBBcHBsZVBheUJ1dHRvblR5cGUuaDsgcGF0aCA9IE1vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlCdXR0b25UeXBlLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9P
VDsgfTsKKwkJOTUyQzYxMzMyN0M4MzUxQjAwRjlDRDBEIC8qIEFwcGxlUGF5TG9nb1N0eWxlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFwcGxlUGF5TG9nb1N0eWxl
LmNwcDsgcGF0aCA9IE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMb2dvU3R5bGUuY3BwOyBzb3Vy
Y2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTk1MkM2MTM0MjdDODM1MUIwMEY5Q0QwRCAvKiBB
cHBsZVBheUJ1dHRvblN0eWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IEFwcGxlUGF5QnV0dG9uU3R5bGUuY3BwOyBwYXRoID0gTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheUJ1dHRvblN0eWxlLmNwcDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk5NTJD
NjEzNTI3QzgzNTFDMDBGOUNEMEQgLyogQXBwbGVQYXlMb2dvU3R5bGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gQXBwbGVQYXlMb2dvU3R5bGUuaDsgcGF0aCA9IE1vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlMb2dvU3R5bGUuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9
OworCQk5NTJDNjEzNjI3QzgzNTFEMDBGOUNEMEQgLyogQXBwbGVQYXlCdXR0b25TdHlsZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBcHBsZVBheUJ1dHRvblN0eWxlLmg7IHBh
dGggPSBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5QnV0dG9uU3R5bGUuaDsgc291cmNlVHJlZSA9
IFNPVVJDRV9ST09UOyB9OworCQk5NTJDNjEzNzI3QzgzNTFEMDBGOUNEMEQgLyogQXBwbGVQYXlC
dXR0b25UeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFwcGxl
UGF5QnV0dG9uVHlwZS5jcHA7IHBhdGggPSBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5QnV0dG9u
VHlwZS5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJOTUzQkNFQUYyNUQ2Mjgz
QzAwQTRBMkExIC8qIEpTQXBwbGVQYXlEZXRhaWxzVXBkYXRlQmFzZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0FwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTUzQkNFQjEyNUQ2MjgzQzAwQTRBMkExIC8qIEpTQXBw
bGVQYXlEZXRhaWxzVXBkYXRlQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0FwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5NTUxOTU4RDI1RkE5RTMwMDBGNThDRjAgLyogd2F0Y2hvcy1tZWRpYS1j
b250cm9scy5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LmNzczsgcGF0aCA9ICJ3YXRjaG9zLW1lZGlhLWNvbnRyb2xzLmNzcyI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTYyMyw2ICsxOTYzMiwxMCBAQAogCQkJY2hpbGRy
ZW4gPSAoCiAJCQkJMUE1OEU4NjkxRDE5RDhDMDAwQzBFQTczIC8qIGNvY29hICovLAogCQkJCUEx
REY1QTlGMUY3RUUwRjEwMDU4QTQ3NyAvKiBwYXltZW50cmVxdWVzdCAqLywKKwkJCQk5NTJDNjEz
NDI3QzgzNTFCMDBGOUNEMEQgLyogQXBwbGVQYXlCdXR0b25TdHlsZS5jcHAgKi8sCisJCQkJOTUy
QzYxMzYyN0M4MzUxRDAwRjlDRDBEIC8qIEFwcGxlUGF5QnV0dG9uU3R5bGUuaCAqLywKKwkJCQk5
NTJDNjEzNzI3QzgzNTFEMDBGOUNEMEQgLyogQXBwbGVQYXlCdXR0b25UeXBlLmNwcCAqLywKKwkJ
CQk5NTJDNjEzMjI3QzgzNTFCMDBGOUNEMEQgLyogQXBwbGVQYXlCdXR0b25UeXBlLmggKi8sCiAJ
CQkJQTExM0UwMkMyMzMxQTBFNDAwOUMzM0EwIC8qIEFwcGxlUGF5Q2FuY2VsRXZlbnQuY3BwICov
LAogCQkJCUExMTNFMDJCMjMzMUEwRTQwMDlDMzNBMCAvKiBBcHBsZVBheUNhbmNlbEV2ZW50Lmgg
Ki8sCiAJCQkJQTE5NTZGMTgyMzMxQTQ2ODAwNTdFOUQyIC8qIEFwcGxlUGF5Q2FuY2VsRXZlbnQu
aWRsICovLApAQCAtMTk2NjAsNiArMTk2NzMsOCBAQAogCQkJCUExM0I2MTY5MjQ3NURGQzUwMEJC
RTZERSAvKiBBcHBsZVBheUluc3RhbGxtZW50UmV0YWlsQ2hhbm5lbC5pZGwgKi8sCiAJCQkJN0M2
NTc5RTIxRTAwODI3MDAwRTNBMjdBIC8qIEFwcGxlUGF5TGluZUl0ZW0uaCAqLywKIAkJCQk3QzY1
NzlFNDFFMDA4MkM4MDBFM0EyN0EgLyogQXBwbGVQYXlMaW5lSXRlbS5pZGwgKi8sCisJCQkJOTUy
QzYxMzMyN0M4MzUxQjAwRjlDRDBEIC8qIEFwcGxlUGF5TG9nb1N0eWxlLmNwcCAqLywKKwkJCQk5
NTJDNjEzNTI3QzgzNTFDMDBGOUNEMEQgLyogQXBwbGVQYXlMb2dvU3R5bGUuaCAqLywKIAkJCQlB
MURGNUFBODFGODA3MEQ0MDA1OEE0NzcgLyogQXBwbGVQYXlNZXJjaGFudENhcGFiaWxpdHkuY3Bw
ICovLAogCQkJCUExREY1QTgzMUY3RUJERjIwMDU4QTQ3NyAvKiBBcHBsZVBheU1lcmNoYW50Q2Fw
YWJpbGl0eS5oICovLAogCQkJCUExREY1QTg1MUY3RUJERjIwMDU4QTQ3NyAvKiBBcHBsZVBheU1l
cmNoYW50Q2FwYWJpbGl0eS5pZGwgKi8sCkBAIC0zMzQ4OCw2ICszMzUwMyw4IEBACiAJCQkJNDQy
NTA3MDkyNTgyOUEyNzAwQzA5MzY4IC8qIEFwcEhpZ2hsaWdodFN0b3JhZ2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk1RkI2NjI1MjZENzAzM0MwMDY4QUM2NyAvKiBBcHBsZVBheUFNU1VJUGF5bWVu
dEhhbmRsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk1RkI2NjI2MjZENzAzM0MwMDY4QUM2NyAv
KiBBcHBsZVBheUFNU1VJUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTUyQzYxM0MyN0M4
MzUxRTAwRjlDRDBEIC8qIEFwcGxlUGF5QnV0dG9uU3R5bGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTk1MkM2MTM4MjdDODM1MUUwMEY5Q0QwRCAvKiBBcHBsZVBheUJ1dHRvblR5cGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUExMTNFMDJFMjMzMUExMzQwMDlDMzNBMCAvKiBBcHBsZVBheUNhbmNlbEV2
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMURGNUE5NDFGN0VDNDMyMDA1OEE0NzcgLyogQXBw
bGVQYXlDb250YWN0RmllbGQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk1RUFENTYzMjY2RUYyREIw
MDRCOUNGMSAvKiBBcHBsZVBheUNvdXBvbkNvZGVDaGFuZ2VkRXZlbnQuaCBpbiBIZWFkZXJzICov
LApAQCAtMzM1MDUsNiArMzM1MjIsNyBAQAogCQkJCUExMTc1MEExMjQ3NDY4RjcwMEQ0RDI2QyAv
KiBBcHBsZVBheUluc3RhbGxtZW50SXRlbVR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExM0I2
MTZCMjQ3NUUwNDgwMEJCRTZERSAvKiBBcHBsZVBheUluc3RhbGxtZW50UmV0YWlsQ2hhbm5lbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0M2NTc5RTMxRTAwODI3MDAwRTNBMjdBIC8qIEFwcGxlUGF5
TGluZUl0ZW0uaCBpbiBIZWFkZXJzICovLAorCQkJCTk1MkM2MTNCMjdDODM1MUUwMEY5Q0QwRCAv
KiBBcHBsZVBheUxvZ29TdHlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFERjVBODYxRjdFQkRG
MjAwNThBNDc3IC8qIEFwcGxlUGF5TWVyY2hhbnRDYXBhYmlsaXR5LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBMUY2Q0ZGRjFGRTA5NjIxMDAxODA3OEMgLyogQXBwbGVQYXlNb2RpZmllci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJN0M2NTIzMDExRTAwRDAzNDAwNjc3RjIyIC8qIEFwcGxlUGF5UGF5bWVu
dC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJp
bWl0aXZlVmFsdWVNYXBwaW5ncy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlTWFwcGluZ3MuaAppbmRleCAwZWQ5Y2M4YTVlNzkxODZhNTk0YmE2NmJiNTdlZmNlN2YxYThm
NzdlLi4yYTFkMGY1OTY4MTczMDIxYzhhMGQwMzUwYmExYWVhNWJmNzBkNjAwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKQEAgLTI5LDYgKzI5
LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJBcHBsZVBheUJ1dHRvblN0eWxlLmgi
CisjaW5jbHVkZSAiQXBwbGVQYXlCdXR0b25UeXBlLmgiCiAjaW5jbHVkZSAiQ1NTQ2FsY1ZhbHVl
LmgiCiAjaW5jbHVkZSAiQ1NTRm9udEZhbWlseS5oIgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZh
bHVlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5tbQppbmRl
eCA5MTJhYjZhOWUxNjhiMDU4ZTBmMzg2MTdkODFjYzQ0OWFjM2IwNWYxLi40MDc4Y2ZjMWI2OWI1
ZDI2ODIyMmI0NjBlMzU5ZTJjNGI5ODVhZWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1RoZW1lQ29jb2EubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5o
IgogI2ltcG9ydCAiVGhlbWVDb2NvYS5oIgogCisjaW1wb3J0ICJBcHBsZVBheUxvZ29TdHlsZS5o
IgogI2ltcG9ydCAiRm9udENhc2NhZGUuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dC5oIgog
I2ltcG9ydCAiSW1hZ2VCdWZmZXIuaCIKQEAgLTMzLDEwMSArMzQsNiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXN0YXRpYyB2b2lkIGZpdENvbnRleHRUb0JveChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYgc3JjSW1hZ2VTaXplLCBjb25zdCBGbG9hdFNpemUm
IGRzdFNpemUpCi17Ci0gICAgZmxvYXQgc3JjUmF0aW8gPSBzcmNJbWFnZVNpemUuYXNwZWN0UmF0
aW8oKTsKLSAgICBmbG9hdCBkc3RSYXRpbyA9IGRzdFNpemUuYXNwZWN0UmF0aW8oKTsKLQotICAg
IGZsb2F0IHNjYWxlOwotICAgIGZsb2F0IHRyYW5zbGF0aW9uWCA9IDA7Ci0gICAgZmxvYXQgdHJh
bnNsYXRpb25ZID0gMDsKLSAgICBpZiAoc3JjUmF0aW8gPiBkc3RSYXRpbykgewotICAgICAgICBz
Y2FsZSA9IGRzdFNpemUud2lkdGgoKSAvIHNyY0ltYWdlU2l6ZS53aWR0aCgpOwotICAgICAgICB0
cmFuc2xhdGlvblkgPSAoZHN0U2l6ZS5oZWlnaHQoKSAtIHNjYWxlICogc3JjSW1hZ2VTaXplLmhl
aWdodCgpKSAvIDI7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgc2NhbGUgPSBkc3RTaXplLmhlaWdo
dCgpIC8gc3JjSW1hZ2VTaXplLmhlaWdodCgpOwotICAgICAgICB0cmFuc2xhdGlvblggPSAoZHN0
U2l6ZS53aWR0aCgpIC0gc2NhbGUgKiBzcmNJbWFnZVNpemUud2lkdGgoKSkgLyAyOwotICAgIH0K
LSAgICBjb250ZXh0LnRyYW5zbGF0ZSh0cmFuc2xhdGlvblgsIHRyYW5zbGF0aW9uWSk7Ci0gICAg
Y29udGV4dC5zY2FsZShzY2FsZSk7Ci19Ci0KLSNpZiBFTkFCTEUoQVBQTEVfUEFZKQotCi1zdGF0
aWMgTlNCdW5kbGUgKnBhc3NLaXRCdW5kbGUoKQotewotICAgIHN0YXRpYyBOU0J1bmRsZSAqcGFz
c0tpdEJ1bmRsZTsKLSAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBk
aXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgICAgICBw
YXNzS2l0QnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZVdpdGhVUkw6W05TVVJMIGZpbGVVUkxXaXRo
UGF0aDpAIi9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9QYXNzS2l0LmZyYW1ld29y
ayIgaXNEaXJlY3Rvcnk6WUVTXV07Ci0jZWxzZQotICAgICAgICBkbG9wZW4oIi9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL1Bhc3NLaXQuZnJhbWV3b3JrL1Bhc3NLaXQiLCBSVExEX05PVyk7Ci0g
ICAgICAgIHBhc3NLaXRCdW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6TlNDbGFzc0Zy
b21TdHJpbmcoQCJQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIiKV07Ci0jZW5k
aWYKLSAgICB9KTsKLQotICAgIHJldHVybiBwYXNzS2l0QnVuZGxlOwotfQotCi1zdGF0aWMgUmV0
YWluUHRyPENHUERGUGFnZVJlZj4gbG9hZFBhc3NLaXRQREZQYWdlKE5TU3RyaW5nICppbWFnZU5h
bWUpCi17Ci0gICAgTlNVUkwgKnVybCA9IFtwYXNzS2l0QnVuZGxlKCkgVVJMRm9yUmVzb3VyY2U6
aW1hZ2VOYW1lIHdpdGhFeHRlbnNpb246QCJwZGYiXTsKLSAgICBpZiAoIXVybCkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvIGRvY3VtZW50ID0gYWRvcHRDRihDR1BERkRvY3Vt
ZW50Q3JlYXRlV2l0aFVSTCgoQ0ZVUkxSZWYpdXJsKSk7Ci0gICAgaWYgKCFkb2N1bWVudCkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAoIUNHUERGRG9jdW1lbnRHZXROdW1iZXJP
ZlBhZ2VzKGRvY3VtZW50LmdldCgpKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBy
ZXR1cm4gQ0dQREZEb2N1bWVudEdldFBhZ2UoZG9jdW1lbnQuZ2V0KCksIDEpOwotfTsKLQotc3Rh
dGljIENHUERGUGFnZVJlZiBhcHBsZVBheUJ1dHRvbkxvZ29CbGFjaygpCi17Ci0gICAgc3RhdGlj
IENHUERGUGFnZVJlZiBsb2dvUGFnZTsKLSAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VU
b2tlbjsKLSAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIGxvZ29QYWdl
ID0gbG9hZFBhc3NLaXRQREZQYWdlKEAiUGF5QnV0dG9uTG9nb0JsYWNrIikubGVha1JlZigpOwot
ICAgIH0pOwotCi0gICAgcmV0dXJuIGxvZ29QYWdlOwotfTsKLQotc3RhdGljIENHUERGUGFnZVJl
ZiBhcHBsZVBheUJ1dHRvbkxvZ29XaGl0ZSgpCi17Ci0gICAgc3RhdGljIENHUERGUGFnZVJlZiBs
b2dvUGFnZTsKLSAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBkaXNw
YXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIGxvZ29QYWdlID0gbG9hZFBhc3NLaXRQ
REZQYWdlKEAiUGF5QnV0dG9uTG9nb1doaXRlIikubGVha1JlZigpOwotICAgIH0pOwotCi0gICAg
cmV0dXJuIGxvZ29QYWdlOwotfTsKLQotc3RhdGljIHZvaWQgZHJhd0FwcGxlUGF5QnV0dG9uKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ0dQREZQYWdlUmVmIHBhZ2UsIGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSkKLXsKLSAgICAvLyBDcmVhdGUgYSBsb2NhbCBJbWFnZUJ1ZmZlciBiZWNhdXNlIGRl
Y29kaW5nIHRoZSBQREYgaW1hZ2VzIGhhcyB0byBoYXBwZW4gaW4gV2ViUHJvY2Vzcy4KLSAgICBh
dXRvIGltYWdlQnVmZmVyID0gY29udGV4dC5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoc2l6
ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFJlbmRlcmluZ01ldGhvZDo6TG9jYWwp
OwotICAgIGlmICghaW1hZ2VCdWZmZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIENHU2l6ZSBw
ZGZTaXplID0gQ0dQREZQYWdlR2V0Qm94UmVjdChwYWdlLCBrQ0dQREZNZWRpYUJveCkuc2l6ZTsK
LQotICAgIGF1dG8mIGltYWdlQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7Ci0gICAg
Zml0Q29udGV4dFRvQm94KGltYWdlQ29udGV4dCwgRmxvYXRTaXplKHBkZlNpemUpLCBzaXplKTsK
LSAgICBpbWFnZUNvbnRleHQudHJhbnNsYXRlKDAsIHBkZlNpemUuaGVpZ2h0KTsKLSAgICBpbWFn
ZUNvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7Ci0gICAgQ0dDb250ZXh0RHJhd1BERlBh
Z2UoaW1hZ2VDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBwYWdlKTsKLQotICAgIGNvbnRleHQu
ZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKFdURk1vdmUoaW1hZ2VCdWZmZXIpLCBGbG9hdFJlY3Qo
RmxvYXRQb2ludDo6emVybygpLCBzaXplKSk7Ci19OwotCi0jZW5kaWYKLQogdm9pZCBUaGVtZUNv
Y29hOjpkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmIG5hbWUsIEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRTaXplJiBzaXplKSBjb25zdAogewogICAgIGlmIChuYW1lID09
ICJ3aXJlbGVzcy1wbGF5YmFjayIpIHsKQEAgLTEzNSw3ICs0MSw3IEBAIHZvaWQgVGhlbWVDb2Nv
YTo6ZHJhd05hbWVkSW1hZ2UoY29uc3QgU3RyaW5nJiBuYW1lLCBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvCiAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjayk7CiAK
ICAgICAgICAgRmxvYXRTaXplIHdpcmVsZXNzUGxheWJhY2tTcmNTaXplKDMyLCAyNC4wMTYpOwot
ICAgICAgICBmaXRDb250ZXh0VG9Cb3goY29udGV4dCwgd2lyZWxlc3NQbGF5YmFja1NyY1NpemUs
IHNpemUpOworICAgICAgICBjb250ZXh0LnNjYWxlVG9GaXQod2lyZWxlc3NQbGF5YmFja1NyY1Np
emUsIHNpemUpOwogCiAgICAgICAgIFBhdGggb3V0bGluZTsKICAgICAgICAgb3V0bGluZS5tb3Zl
VG8oRmxvYXRQb2ludCgyNC4wNjYsIDE4KSk7CkBAIC0xNjQsMTcgKzcwLDEzIEBAIHZvaWQgVGhl
bWVDb2NvYTo6ZHJhd05hbWVkSW1hZ2UoY29uc3QgU3RyaW5nJiBuYW1lLCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvCiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogICAgIGlmIChuYW1lID09
ICJhcHBsZS1wYXktbG9nby1ibGFjayIpIHsKLSAgICAgICAgaWYgKGF1dG8gbG9nbyA9IGFwcGxl
UGF5QnV0dG9uTG9nb0JsYWNrKCkpIHsKLSAgICAgICAgICAgIGRyYXdBcHBsZVBheUJ1dHRvbihj
b250ZXh0LCBsb2dvLCBzaXplKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAg
ICAgICBjb250ZXh0LnBhaW50QXBwbGVQYXlMb2dvKEFwcGxlUGF5TG9nb1N0eWxlOjpCbGFjaywg
RmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgc2l6ZSkpOworICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgaWYgKG5hbWUgPT0gImFwcGxlLXBheS1sb2dvLXdoaXRlIikgewotICAgICAg
ICBpZiAoYXV0byBsb2dvID0gYXBwbGVQYXlCdXR0b25Mb2dvV2hpdGUoKSkgewotICAgICAgICAg
ICAgZHJhd0FwcGxlUGF5QnV0dG9uKGNvbnRleHQsIGxvZ28sIHNpemUpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9CisgICAgICAgIGNvbnRleHQucGFpbnRBcHBsZVBheUxvZ28oQXBw
bGVQYXlMb2dvU3R5bGU6OldoaXRlLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBzaXpl
KSk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250
ZXh0LmNwcAppbmRleCA3MzVhNzI2ZmQyMzVkMWM2MDAzZTUyZjIxY2ZlMmQ0NmViYTMyZjY4Li5m
MzAyNWJjZGU4MjU2M2U2ZTkzYWMyMjEyZTRkNDYxMDMyZjg2ZmRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhp
Y3NDb250ZXh0LmNwcApAQCAtMjkwLDYgKzI5MCwyMiBAQCBJbWFnZURyYXdSZXN1bHQgQmlmdXJj
YXRlZEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBG
bAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKQorCit2b2lk
IEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OnBhaW50QXBwbGVQYXlCdXR0b24oQXBwbGVQYXlC
dXR0b25UeXBlIHR5cGUsIEFwcGxlUGF5QnV0dG9uU3R5bGUgc3R5bGUsIGNvbnN0IFN0cmluZyYg
bG9jYWxlLCBmbG9hdCBsYXJnZXN0Q29ybmVyUmFkaXVzLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uKQoreworICAgIG1fcHJpbWFyeUNvbnRleHQucGFpbnRBcHBsZVBheUJ1dHRvbih0eXBl
LCBzdHlsZSwgbG9jYWxlLCBsYXJnZXN0Q29ybmVyUmFkaXVzLCBkZXN0aW5hdGlvbik7CisgICAg
bV9zZWNvbmRhcnlDb250ZXh0LnBhaW50QXBwbGVQYXlCdXR0b24odHlwZSwgc3R5bGUsIGxvY2Fs
ZSwgbGFyZ2VzdENvcm5lclJhZGl1cywgZGVzdGluYXRpb24pOworfQorCit2b2lkIEJpZnVyY2F0
ZWRHcmFwaGljc0NvbnRleHQ6OnBhaW50QXBwbGVQYXlMb2dvKEFwcGxlUGF5TG9nb1N0eWxlIHN0
eWxlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKQoreworICAgIG1fcHJpbWFyeUNvbnRl
eHQucGFpbnRBcHBsZVBheUxvZ28oc3R5bGUsIGRlc3RpbmF0aW9uKTsKKyAgICBtX3NlY29uZGFy
eUNvbnRleHQucGFpbnRBcHBsZVBheUxvZ28oc3R5bGUsIGRlc3RpbmF0aW9uKTsKK30KKworI2Vu
ZGlmIC8vIEVOQUJMRShBUFBMRV9QQVkpCisKICNpZiBFTkFCTEUoVklERU8pCiB2b2lkIEJpZnVy
Y2F0ZWRHcmFwaGljc0NvbnRleHQ6OnBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYgcGxh
eWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4
dC5oCmluZGV4IGY2ZDRkYmRmYmQ4MmQ0OGIxYTAwMjY4YTNkMDA1NzliZjJjNWQxZjguLmI2Nzdm
NWEwMTYyODg0MTQwMDA1MWYyMjRlM2RhMTc2MGY3OTM4NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250
ZXh0LmgKQEAgLTEwMyw2ICsxMDMsMTEgQEAgcHVibGljOgogICAgIEltYWdlRHJhd1Jlc3VsdCBk
cmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0
IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIGZpbmFs
OwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNp
emUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlLCBJbWFnZTo6VGlsZVJ1bGUsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7CiAKKyNpZiBFTkFCTEUoQVBQ
TEVfUEFZKQorICAgIHZvaWQgcGFpbnRBcHBsZVBheUJ1dHRvbihBcHBsZVBheUJ1dHRvblR5cGUs
IEFwcGxlUGF5QnV0dG9uU3R5bGUsIGNvbnN0IFN0cmluZyYgbG9jYWxlLCBmbG9hdCBsYXJnZXN0
Q29ybmVyUmFkaXVzLCBjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKKyAgICB2b2lkIHBhaW50QXBw
bGVQYXlMb2dvKEFwcGxlUGF5TG9nb1N0eWxlLCBjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKKyNl
bmRpZgorCiAjaWYgRU5BQkxFKFZJREVPKQogICAgIHZvaWQgcGFpbnRGcmFtZUZvck1lZGlhKE1l
ZGlhUGxheWVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikgZmluYWw7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwCmluZGV4IDY3YzY5MjNjYWZkMjE4YTljZTJjZDJiZjRhMDU5ZWUxN2FlYWRhZDIuLjU2
M2FlNjZhMTI5MGY5NjBjZjBlNWU0NmQ3YzhlNzQ1NTE1MDZjMjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtODU3
LDYgKzg1NywyMiBAQCBGbG9hdFNpemUgR3JhcGhpY3NDb250ZXh0OjpzY2FsZUZhY3RvckZvckRy
YXdpbmcoY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29ucwogICAgIHJldHVybiB0cmFuc2Zv
cm1lZERlc3RSZWN0LnNpemUoKSAvIHNyY1JlY3Quc2l6ZSgpOwogfQogCit2b2lkIEdyYXBoaWNz
Q29udGV4dDo6c2NhbGVUb0ZpdChjb25zdCBGbG9hdFNpemUmIHNyY1NpemUsIGNvbnN0IEZsb2F0
U2l6ZSYgZHN0U2l6ZSkKK3sKKyAgICBmbG9hdCBzY2FsZTsKKyAgICBmbG9hdCB0cmFuc2xhdGlv
blggPSAwOworICAgIGZsb2F0IHRyYW5zbGF0aW9uWSA9IDA7CisgICAgaWYgKHNyY1NpemUuYXNw
ZWN0UmF0aW8oKSA+IGRzdFNpemUuYXNwZWN0UmF0aW8oKSkgeworICAgICAgICBzY2FsZSA9IGRz
dFNpemUud2lkdGgoKSAvIHNyY1NpemUud2lkdGgoKTsKKyAgICAgICAgdHJhbnNsYXRpb25ZID0g
KGRzdFNpemUuaGVpZ2h0KCkgLSBzY2FsZSAqIHNyY1NpemUuaGVpZ2h0KCkpIC8gMjsKKyAgICB9
IGVsc2UgeworICAgICAgICBzY2FsZSA9IGRzdFNpemUuaGVpZ2h0KCkgLyBzcmNTaXplLmhlaWdo
dCgpOworICAgICAgICB0cmFuc2xhdGlvblggPSAoZHN0U2l6ZS53aWR0aCgpIC0gc2NhbGUgKiBz
cmNTaXplLndpZHRoKCkpIC8gMjsKKyAgICB9CisgICAgdGhpcy0+dHJhbnNsYXRlKHRyYW5zbGF0
aW9uWCwgdHJhbnNsYXRpb25ZKTsKKyAgICB0aGlzLT5zY2FsZShzY2FsZSk7Cit9CisKIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0aChjb25zdCBQYXRoJiBwYXRoKQogewogICAgIGZpbGxQ
YXRoKHBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaAppbmRleCBiNDQ3OGU4NWVhMTM3NDk3YzQ5MDZhM2ZiZmMzYThjOWFlMGJk
YmNjLi5mN2Q0NzhiZmU3Njg4YzI0ZmE2ZjM4MWFkZThjYjQwZGY0NTIwZjZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAt
OTQsNiArOTQsMTAgQEAgbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIGNsYXNzIFJlY29yZGVyOwog
fQogCitlbnVtIGNsYXNzIEFwcGxlUGF5QnV0dG9uU3R5bGU6IHVpbnQ4X3Q7CitlbnVtIGNsYXNz
IEFwcGxlUGF5QnV0dG9uVHlwZTogdWludDhfdDsKK2VudW0gY2xhc3MgQXBwbGVQYXlMb2dvU3R5
bGU6IHVpbnQ4X3Q7CisKIGVudW0gY2xhc3MgVGV4dERyYXdpbmdNb2RlIDogdWludDhfdCB7CiAg
ICAgRmlsbCA9IDEgPDwgMCwKICAgICBTdHJva2UgPSAxIDw8IDEsCkBAIC00NDYsNiArNDUwLDEx
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oTmF0aXZlSW1hZ2UmLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiA9IHsgfSkgPSAwOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVy
bihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAorI2lmIEVOQUJMRShBUFBMRV9QQVkpCisgICAg
dmlydHVhbCB2b2lkIHBhaW50QXBwbGVQYXlCdXR0b24oQXBwbGVQYXlCdXR0b25UeXBlLCBBcHBs
ZVBheUJ1dHRvblN0eWxlLCBjb25zdCBTdHJpbmcmIGxvY2FsZSwgZmxvYXQgbGFyZ2VzdENvcm5l
clJhZGl1cywgY29uc3QgRmxvYXRSZWN0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWludEFw
cGxlUGF5TG9nbyhBcHBsZVBheUxvZ29TdHlsZSwgY29uc3QgRmxvYXRSZWN0JikgPSAwOworI2Vu
ZGlmCisKICNpZiBFTkFCTEUoVklERU8pCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lk
IHBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24pOwogI2VuZGlmCkBAIC01MTYsNiArNTI1LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIEZsb2F0U2l6ZSBzY2FsZUZhY3RvcigpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JU
IEZsb2F0U2l6ZSBzY2FsZUZhY3RvckZvckRyYXdpbmcoY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KSBjb25zdDsKIAorICAgIHZvaWQgc2NhbGVUb0Zp
dChjb25zdCBGbG9hdFNpemUmIHNyY1NpemUsIGNvbnN0IEZsb2F0U2l6ZSYgZHN0U2l6ZSk7CisK
ICAgICAvLyBMaW5rcwogCiAgICAgdmlydHVhbCB2b2lkIHNldFVSTEZvclJlY3QoY29uc3QgVVJM
JiwgY29uc3QgRmxvYXRSZWN0JikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggZDE4MGU1MTkwMmUyZTI3
ODlkMDQ1NjVkMDdhZGY5NmRmZjVmMmRiNy4uN2MzODllYmM4MWU3NWRmZDg4MzYyYzlmY2JiODQz
MzJlYmE5NmI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TnVsbEdyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL051bGxHcmFwaGljc0NvbnRleHQuaApAQCAtMTM4LDYgKzEzOCwxMSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBD
b2xvciYsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKSBmaW5hbCB7IH0KICAgICB2b2lk
IGZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0Um91
bmRlZFJlY3QmLCBjb25zdCBDb2xvciYpIGZpbmFsIHsgfQogCisjaWYgRU5BQkxFKEFQUExFX1BB
WSkKKyAgICB2b2lkIHBhaW50QXBwbGVQYXlCdXR0b24oQXBwbGVQYXlCdXR0b25UeXBlLCBBcHBs
ZVBheUJ1dHRvblN0eWxlLCBjb25zdCBTdHJpbmcmIC8qIGxvY2FsZSAqLywgZmxvYXQgLyogbGFy
Z2VzdENvcm5lclJhZGl1cyAqLywgY29uc3QgRmxvYXRSZWN0JikgZmluYWwgeyB9CisgICAgdm9p
ZCBwYWludEFwcGxlUGF5TG9nbyhBcHBsZVBheUxvZ29TdHlsZSwgY29uc3QgRmxvYXRSZWN0Jikg
ZmluYWwgeyB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShWSURFTykKICAgICB2b2lkIHBhaW50RnJh
bWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsIHsgfQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuaAppbmRleCA0NjhhNDRiYWE4NmVlNTI2MTlkMjU1ZjkzOTQzYTk3NTVi
YWM5ZmFiLi4wMmM2YTljYzc3NDQyYzc5MTcwNGNjNjk4YTc4Y2VjOGU0YTZhZGZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dENHLmgKQEAgLTE2NSw2ICsxNjUsMTEgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RGVzdGlu
YXRpb25Gb3JSZWN0KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgRmxvYXRSZWN0JikgZmluYWw7
CiAgICAgdm9pZCBhZGREZXN0aW5hdGlvbkF0UG9pbnQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBGbG9hdFBvaW50JikgZmluYWw7CiAKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKQorICAgIHZvaWQg
cGFpbnRBcHBsZVBheUJ1dHRvbihBcHBsZVBheUJ1dHRvblR5cGUsIEFwcGxlUGF5QnV0dG9uU3R5
bGUsIGNvbnN0IFN0cmluZyYgbG9jYWxlLCBmbG9hdCBsYXJnZXN0Q29ybmVyUmFkaXVzLCBjb25z
dCBGbG9hdFJlY3QmKSBmaW5hbDsKKyAgICB2b2lkIHBhaW50QXBwbGVQYXlMb2dvKEFwcGxlUGF5
TG9nb1N0eWxlLCBjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKKyNlbmRpZgorCiAgICAgYm9vbCBz
dXBwb3J0c0ludGVybmFsTGlua3MoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgZGlkVXBkYXRl
U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U3RhdGVDaGFuZ2VGbGFncykgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tCmluZGV4
IDdjMjljYmIyNTA1NmQxYzcwZDA0YjdmMmQ5NjQxMWZlYzc4M2UzZTkuLjJhZDExZjlmYzQwYmI3
OTVhNzViMWE0MjQwZmQ4ZjZkOWZiOWZkMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1t
CkBAIC0yNiw2ICsyNiw5IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkdyYXBoaWNz
Q29udGV4dC5oIgogCisjaW1wb3J0ICJBcHBsZVBheUJ1dHRvblN0eWxlLmgiCisjaW1wb3J0ICJB
cHBsZVBheUJ1dHRvblR5cGUuaCIKKyNpbXBvcnQgIkFwcGxlUGF5TG9nb1N0eWxlLmgiCiAjaW1w
b3J0ICJEaXNwbGF5TGlzdFJlY29yZGVyLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5o
IgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCIKQEAgLTUwLDYg
KzUzLDEwIEBACiAjaW1wb3J0ICJMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaCIKICNlbmRp
ZgogCisjaWYgRU5BQkxFKEFQUExFX1BBWSkKKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29m
dExpbmsuaD4KKyNlbmRpZgorCiBAY2xhc3MgTlNDb2xvcjsKIAogLy8gRklYTUU6IE1vcmUgb2Yg
dGhpcyBzaG91bGQgdXNlIENvcmVHcmFwaGljcyBpbnN0ZWFkIG9mIEFwcEtpdC4KQEAgLTIxNyw0
ICsyMjQsMTQ4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmRyYXdEb3RzRm9yRG9jdW1lbnRN
YXJrZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBEb2N1bWVuCiAgICAgQ0dDb250ZXh0RmlsbFBh
dGgocGxhdGZvcm1Db250ZXh0KTsKIH0KIAorI2lmIEVOQUJMRShBUFBMRV9QQVkpCisKK3N0YXRp
YyBQS1BheW1lbnRCdXR0b25TdHlsZSB0b1BLUGF5bWVudEJ1dHRvblN0eWxlKEFwcGxlUGF5QnV0
dG9uU3R5bGUgc3R5bGUpCit7CisgICAgc3dpdGNoIChzdHlsZSkgeworICAgIGNhc2UgQXBwbGVQ
YXlCdXR0b25TdHlsZTo6V2hpdGU6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRCdXR0b25TdHls
ZVdoaXRlOworICAgIGNhc2UgQXBwbGVQYXlCdXR0b25TdHlsZTo6V2hpdGVPdXRsaW5lOgorICAg
ICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9uU3R5bGVXaGl0ZU91dGxpbmU7CisgICAgY2FzZSBB
cHBsZVBheUJ1dHRvblN0eWxlOjpCbGFjazoKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRv
blN0eWxlQmxhY2s7CisgICAgfQorfQorCitzdGF0aWMgUEtQYXltZW50QnV0dG9uVHlwZSB0b1BL
UGF5bWVudEJ1dHRvblR5cGUoQXBwbGVQYXlCdXR0b25UeXBlIHR5cGUpCit7CisgICAgc3dpdGNo
ICh0eXBlKSB7CisgICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OlBsYWluOgorICAgICAgICBy
ZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZVBsYWluOworICAgIGNhc2UgQXBwbGVQYXlCdXR0b25U
eXBlOjpCdXk6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRCdXR0b25UeXBlQnV5OworICAgIGNh
c2UgQXBwbGVQYXlCdXR0b25UeXBlOjpTZXRVcDoKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1
dHRvblR5cGVTZXRVcDsKKyAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6RG9uYXRlOgorICAg
ICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZURvbmF0ZTsKKyAgICBjYXNlIEFwcGxlUGF5
QnV0dG9uVHlwZTo6Q2hlY2tPdXQ6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRCdXR0b25UeXBl
Q2hlY2tvdXQ7CisgICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OkJvb2s6CisgICAgICAgIHJl
dHVybiBQS1BheW1lbnRCdXR0b25UeXBlQm9vazsKKyAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlw
ZTo6U3Vic2NyaWJlOgorICAgICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZVN1YnNjcmli
ZTsKKyNpZiBIQVZFKFBBU1NLSVRfTkVXX0JVVFRPTl9UWVBFUykKKyAgICBjYXNlIEFwcGxlUGF5
QnV0dG9uVHlwZTo6UmVsb2FkOgorICAgICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZVJl
bG9hZDsKKyAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6QWRkTW9uZXk6CisgICAgICAgIHJl
dHVybiBQS1BheW1lbnRCdXR0b25UeXBlQWRkTW9uZXk7CisgICAgY2FzZSBBcHBsZVBheUJ1dHRv
blR5cGU6OlRvcFVwOgorICAgICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZVRvcFVwOwor
ICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpPcmRlcjoKKyAgICAgICAgcmV0dXJuIFBLUGF5
bWVudEJ1dHRvblR5cGVPcmRlcjsKKyAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6UmVudDoK
KyAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRvblR5cGVSZW50OworICAgIGNhc2UgQXBwbGVQ
YXlCdXR0b25UeXBlOjpTdXBwb3J0OgorICAgICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9uVHlw
ZVN1cHBvcnQ7CisgICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OkNvbnRyaWJ1dGU6CisgICAg
ICAgIHJldHVybiBQS1BheW1lbnRCdXR0b25UeXBlQ29udHJpYnV0ZTsKKyAgICBjYXNlIEFwcGxl
UGF5QnV0dG9uVHlwZTo6VGlwOgorICAgICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZVRp
cDsKKyNlbmRpZiAvLyBIQVZFKFBBU1NLSVRfTkVXX0JVVFRPTl9UWVBFUykKKyAgICB9Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OnBhaW50QXBwbGVQYXlCdXR0b24oQXBwbGVQYXlCdXR0
b25UeXBlIHR5cGUsIEFwcGxlUGF5QnV0dG9uU3R5bGUgc3R5bGUsIGNvbnN0IFN0cmluZyYgbG9j
YWxlLCBmbG9hdCBsYXJnZXN0Q29ybmVyUmFkaXVzLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uKQoreworICAgIGF1dG8gY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOworICAgIENHQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKworICAgIENHQ29udGV4dFNldFNo
b3VsZFNtb290aEZvbnRzKGNvbnRleHQsIHRydWUpOworICAgIENHQ29udGV4dFNjYWxlQ1RNKGNv
bnRleHQsIDEsIC0xKTsKKworICAgIFBLRHJhd0FwcGxlUGF5QnV0dG9uV2l0aENvcm5lclJhZGl1
cyhjb250ZXh0LCBDR1JlY3RNYWtlKGRlc3RpbmF0aW9uLngoKSwgLWRlc3RpbmF0aW9uLm1heFko
KSwgZGVzdGluYXRpb24ud2lkdGgoKSwgZGVzdGluYXRpb24uaGVpZ2h0KCkpLCAxLjAsIGxhcmdl
c3RDb3JuZXJSYWRpdXMsIHRvUEtQYXltZW50QnV0dG9uVHlwZSh0eXBlKSwgdG9QS1BheW1lbnRC
dXR0b25TdHlsZShzdHlsZSksIGxvY2FsZSk7Cit9CisKK3N0YXRpYyBOU0J1bmRsZSAqcGFzc0tp
dEJ1bmRsZSgpCit7CisgICAgc3RhdGljIE5TQnVuZGxlICpwYXNzS2l0QnVuZGxlOworICAgIHN0
YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIGRpc3BhdGNoX29uY2UoJm9uY2VU
b2tlbiwgXnsKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIHBhc3NLaXRCdW5kbGUgPSBbTlNC
dW5kbGUgYnVuZGxlV2l0aFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOkAiL1N5c3RlbS9MaWJy
YXJ5L1ByaXZhdGVGcmFtZXdvcmtzL1Bhc3NLaXQuZnJhbWV3b3JrIiBpc0RpcmVjdG9yeTpZRVNd
XTsKKyNlbHNlCisgICAgICAgIGRsb3BlbigiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUGFz
c0tpdC5mcmFtZXdvcmsvUGFzc0tpdCIsIFJUTERfTk9XKTsKKyAgICAgICAgcGFzc0tpdEJ1bmRs
ZSA9IFtOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpOU0NsYXNzRnJvbVN0cmluZyhAIlBLUGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciIpXTsKKyNlbmRpZgorICAgIH0pOworICAgIHJl
dHVybiBwYXNzS2l0QnVuZGxlOworfQorCitzdGF0aWMgUmV0YWluUHRyPENHUERGUGFnZVJlZj4g
bG9hZFBhc3NLaXRQREZQYWdlKE5TU3RyaW5nICppbWFnZU5hbWUpCit7CisgICAgTlNVUkwgKnVy
bCA9IFtwYXNzS2l0QnVuZGxlKCkgVVJMRm9yUmVzb3VyY2U6aW1hZ2VOYW1lIHdpdGhFeHRlbnNp
b246QCJwZGYiXTsKKyAgICBpZiAoIXVybCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
YXV0byBkb2N1bWVudCA9IGFkb3B0Q0YoQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhVUkwoKENGVVJM
UmVmKXVybCkpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIGlmICghQ0dQREZEb2N1bWVudEdldE51bWJlck9mUGFnZXMoZG9jdW1lbnQuZ2V0KCkpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gQ0dQREZEb2N1bWVudEdldFBhZ2Uo
ZG9jdW1lbnQuZ2V0KCksIDEpOworfQorCitzdGF0aWMgQ0dQREZQYWdlUmVmIGFwcGxlUGF5TG9n
b1doaXRlKCkKK3sKKyAgICBzdGF0aWMgQ0dQREZQYWdlUmVmIGxvZ29QYWdlOworICAgIHN0YXRp
YyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tl
biwgXnsKKyAgICAgICAgbG9nb1BhZ2UgPSBsb2FkUGFzc0tpdFBERlBhZ2UoQCJQYXlCdXR0b25M
b2dvV2hpdGUiKS5sZWFrUmVmKCk7CisgICAgfSk7CisgICAgcmV0dXJuIGxvZ29QYWdlOworfQor
CitzdGF0aWMgQ0dQREZQYWdlUmVmIGFwcGxlUGF5TG9nb0JsYWNrKCkKK3sKKyAgICBzdGF0aWMg
Q0dQREZQYWdlUmVmIGxvZ29QYWdlOworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRv
a2VuOworICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKKyAgICAgICAgbG9nb1BhZ2Ug
PSBsb2FkUGFzc0tpdFBERlBhZ2UoQCJQYXlCdXR0b25Mb2dvQmxhY2siKS5sZWFrUmVmKCk7Cisg
ICAgfSk7CisgICAgcmV0dXJuIGxvZ29QYWdlOworfQorCitzdGF0aWMgQ0dQREZQYWdlUmVmIGFw
cGxlUGF5TG9nb0ZvclN0eWxlKEFwcGxlUGF5TG9nb1N0eWxlIHN0eWxlKQoreworICAgIHN3aXRj
aCAoc3R5bGUpIHsKKyAgICBjYXNlIEFwcGxlUGF5TG9nb1N0eWxlOjpXaGl0ZToKKyAgICAgICAg
cmV0dXJuIGFwcGxlUGF5TG9nb1doaXRlKCk7CisKKyAgICBjYXNlIEFwcGxlUGF5TG9nb1N0eWxl
OjpCbGFjazoKKyAgICAgICAgcmV0dXJuIGFwcGxlUGF5TG9nb0JsYWNrKCk7CisgICAgfQorCisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0Q0c6OnBhaW50QXBwbGVQYXlMb2dvKEFwcGxlUGF5TG9nb1N0eWxlIHN0
eWxlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKQoreworICAgIENHUERGUGFnZVJlZiBw
YWdlID0gYXBwbGVQYXlMb2dvRm9yU3R5bGUoc3R5bGUpOworICAgIGlmICghcGFnZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgQ0dTaXplIHBkZlNpemUgPSBDR1BERlBhZ2VHZXRCb3hSZWN0KHBh
Z2UsIGtDR1BERk1lZGlhQm94KS5zaXplOworCisgICAgdHJhbnNsYXRlKGRlc3RpbmF0aW9uLngo
KSwgZGVzdGluYXRpb24ueSgpKTsKKyAgICBzY2FsZVRvRml0KEZsb2F0U2l6ZShwZGZTaXplKSwg
ZGVzdGluYXRpb24uc2l6ZSgpKTsKKworICAgIHRyYW5zbGF0ZSgwLCBwZGZTaXplLmhlaWdodCk7
CisgICAgc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CisKKyAgICBDR0NvbnRleHREcmF3UERGUGFn
ZShwbGF0Zm9ybUNvbnRleHQoKSwgcGFnZSk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQVBQTEVf
UEFZKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcApp
bmRleCA3OWY0YzQ2OThjNzI1MDM2YTQ3NTI1NjhiMTE5YzI3NDNiNmRmYjMzLi41YjQxODQ1NTBh
MGQwNmU1OGNhOWIwYjJiMjM4NDkwZjA1ODgwNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5j
cHAKQEAgLTI5NCw2ICsyOTQsMTIgQEAgdm9pZCBEaXNwbGF5TGlzdDo6YXBwZW5kKEl0ZW1IYW5k
bGUgaXRlbSkKICAgICAgICAgcmV0dXJuIGFwcGVuZDxGaWxsRWxsaXBzZT4oaXRlbS5nZXQ8Rmls
bEVsbGlwc2U+KCkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkZsdXNoQ29udGV4dDoKICAgICAgICAg
cmV0dXJuIGFwcGVuZDxGbHVzaENvbnRleHQ+KGl0ZW0uZ2V0PEZsdXNoQ29udGV4dD4oKSk7Cisj
aWYgRU5BQkxFKEFQUExFX1BBWSkKKyAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEFwcGxlUGF5QnV0
dG9uOgorICAgICAgICByZXR1cm4gYXBwZW5kPFBhaW50QXBwbGVQYXlCdXR0b24+KGl0ZW0uZ2V0
PFBhaW50QXBwbGVQYXlCdXR0b24+KCkpOworICAgIGNhc2UgSXRlbVR5cGU6OlBhaW50QXBwbGVQ
YXlMb2dvOgorICAgICAgICByZXR1cm4gYXBwZW5kPFBhaW50QXBwbGVQYXlMb2dvPihpdGVtLmdl
dDxQYWludEFwcGxlUGF5TG9nbz4oKSk7CisjZW5kaWYKICNpZiBFTkFCTEUoVklERU8pCiAgICAg
Y2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgogICAgICAgICByZXR1cm4gYXBwZW5k
PFBhaW50RnJhbWVGb3JNZWRpYT4oaXRlbS5nZXQ8UGFpbnRGcmFtZUZvck1lZGlhPigpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKaW5kZXggY2Y2MTY4NzNk
ZmYwZDhiYWQ3ZDZmMWIxMzAxYTdjYzExZjdlMDM4Yi4uZWZlYzI0NTA2YmRjYzRkNGM1NGRkM2Ex
ZDY1ZDVmYjEwMGI0MWE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1
ZmZlci5jcHAKQEAgLTE4OSw2ICsxODksMTQgQEAgdm9pZCBJdGVtSGFuZGxlOjphcHBseShHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0Ogog
ICAgICAgICBnZXQ8Rmx1c2hDb250ZXh0PigpLmFwcGx5KGNvbnRleHQpOwogICAgICAgICByZXR1
cm47CisjaWYgRU5BQkxFKEFQUExFX1BBWSkKKyAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEFwcGxl
UGF5QnV0dG9uOgorICAgICAgICBnZXQ8UGFpbnRBcHBsZVBheUJ1dHRvbj4oKS5hcHBseShjb250
ZXh0KTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSXRlbVR5cGU6OlBhaW50QXBwbGVQYXlM
b2dvOgorICAgICAgICBnZXQ8UGFpbnRBcHBsZVBheUxvZ28+KCkuYXBwbHkoY29udGV4dCk7Cisg
ICAgICAgIHJldHVybjsKKyNlbmRpZgogI2lmIEVOQUJMRShWSURFTykKICAgICBjYXNlIEl0ZW1U
eXBlOjpQYWludEZyYW1lRm9yTWVkaWE6CiAgICAgICAgIGdldDxQYWludEZyYW1lRm9yTWVkaWE+
KCkuYXBwbHkoY29udGV4dCk7CkBAIC0zNzMsNiArMzgxLDE0IEBAIHZvaWQgSXRlbUhhbmRsZTo6
ZGVzdHJveSgpCiAgICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OgogICAgICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxGbHVzaENvbnRleHQ+Ojp2
YWx1ZSk7CiAgICAgICAgIHJldHVybjsKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKQorICAgIGNhc2Ug
SXRlbVR5cGU6OlBhaW50QXBwbGVQYXlCdXR0b246CisgICAgICAgIGdldDxQYWludEFwcGxlUGF5
QnV0dG9uPigpLn5QYWludEFwcGxlUGF5QnV0dG9uKCk7CisgICAgICAgIHJldHVybjsKKyAgICBj
YXNlIEl0ZW1UeXBlOjpQYWludEFwcGxlUGF5TG9nbzoKKyAgICAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8UGFpbnRBcHBsZVBheUxvZ28+Ojp2YWx1ZSk7
CisgICAgICAgIHJldHVybjsKKyNlbmRpZgogI2lmIEVOQUJMRShWSURFTykKICAgICBjYXNlIEl0
ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFBhaW50RnJhbWVGb3JNZWRpYT46OnZhbHVlKTsKQEAg
LTU1OSw2ICs1NzUsMTIgQEAgYm9vbCBJdGVtSGFuZGxlOjpzYWZlQ29weShJdGVtVHlwZSBpdGVt
VHlwZSwgSXRlbUhhbmRsZSBkZXN0aW5hdGlvbikgY29uc3QKICAgICAgICAgcmV0dXJuIGNvcHlJ
bnRvPEZpbGxSZWN0PihpdGVtT2Zmc2V0LCAqdGhpcyk7CiAgICAgY2FzZSBJdGVtVHlwZTo6Rmx1
c2hDb250ZXh0OgogICAgICAgICByZXR1cm4gY29weUludG88Rmx1c2hDb250ZXh0PihpdGVtT2Zm
c2V0LCAqdGhpcyk7CisjaWYgRU5BQkxFKEFQUExFX1BBWSkKKyAgICBjYXNlIEl0ZW1UeXBlOjpQ
YWludEFwcGxlUGF5QnV0dG9uOgorICAgICAgICByZXR1cm4gY29weUludG88UGFpbnRBcHBsZVBh
eUJ1dHRvbj4oaXRlbU9mZnNldCwgKnRoaXMpOworICAgIGNhc2UgSXRlbVR5cGU6OlBhaW50QXBw
bGVQYXlMb2dvOgorICAgICAgICByZXR1cm4gY29weUludG88UGFpbnRBcHBsZVBheUxvZ28+KGl0
ZW1PZmZzZXQsICp0aGlzKTsKKyNlbmRpZgogI2lmIEVOQUJMRShWSURFTykKICAgICBjYXNlIEl0
ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6CiAgICAgICAgIHJldHVybiBjb3B5SW50bzxQYWlu
dEZyYW1lRm9yTWVkaWE+KGl0ZW1PZmZzZXQsICp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1UeXBlLmNwcAppbmRleCBkYTA1ZDZjYmUzOGZhMGI2MTRmZWM5ZTMzNjE4MDA0
OTdmNjcyNGNmLi44ZjIzZWUyNjMxMDQ0ZmE4MjNiY2RmNTRiNGU2MzgzYWVkZDVmYzA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwCkBAIC0xMzAsNiArMTMwLDEy
IEBAIHN0YXRpYyBzaXplX3Qgc2l6ZU9mSXRlbUluQnl0ZXMoSXRlbVR5cGUgdHlwZSkKICAgICAg
ICAgcmV0dXJuIHNpemVvZihGaWxsRWxsaXBzZSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hD
b250ZXh0OgogICAgICAgICByZXR1cm4gc2l6ZW9mKEZsdXNoQ29udGV4dCk7CisjaWYgRU5BQkxF
KEFQUExFX1BBWSkKKyAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEFwcGxlUGF5QnV0dG9uOgorICAg
ICAgICByZXR1cm4gc2l6ZW9mKFBhaW50QXBwbGVQYXlCdXR0b24pOworICAgIGNhc2UgSXRlbVR5
cGU6OlBhaW50QXBwbGVQYXlMb2dvOgorICAgICAgICByZXR1cm4gc2l6ZW9mKFBhaW50QXBwbGVQ
YXlMb2dvKTsKKyNlbmRpZgogI2lmIEVOQUJMRShWSURFTykKICAgICBjYXNlIEl0ZW1UeXBlOjpQ
YWludEZyYW1lRm9yTWVkaWE6CiAgICAgICAgIHJldHVybiBzaXplb2YoUGFpbnRGcmFtZUZvck1l
ZGlhKTsKQEAgLTIzMyw2ICsyMzksMTAgQEAgYm9vbCBpc0RyYXdpbmdJdGVtKEl0ZW1UeXBlIHR5
cGUpCiAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQ6CiAgICAgY2FzZSBJ
dGVtVHlwZTo6RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU6CiAgICAgY2FzZSBJdGVtVHlwZTo6Rmls
bFJvdW5kZWRSZWN0OgorI2lmIEVOQUJMRShBUFBMRV9QQVkpCisgICAgY2FzZSBJdGVtVHlwZTo6
UGFpbnRBcHBsZVBheUJ1dHRvbjoKKyAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEFwcGxlUGF5TG9n
bzoKKyNlbmRpZgogI2lmIEVOQUJMRShWSURFTykKICAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEZy
YW1lRm9yTWVkaWE6CiAjZW5kaWYKQEAgLTI5MSw2ICszMDEsOSBAQCBib29sIGlzSW5saW5lSXRl
bShJdGVtVHlwZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50
OgogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOgogICAgIGNhc2Ug
SXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKQorICAgIGNh
c2UgSXRlbVR5cGU6OlBhaW50QXBwbGVQYXlCdXR0b246CisjZW5kaWYKICAgICBjYXNlIEl0ZW1U
eXBlOjpTZXRMaW5lRGFzaDoKICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToKICAgICBjYXNl
IEl0ZW1UeXBlOjpTdHJva2VQYXRoOgpAQCAtMzI1LDYgKzMzOCw5IEBAIGJvb2wgaXNJbmxpbmVJ
dGVtKEl0ZW1UeXBlIHR5cGUpCiAjZW5kaWYKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdDoK
ICAgICBjYXNlIEl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6CisjaWYgRU5BQkxFKEFQUExFX1BBWSkK
KyAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEFwcGxlUGF5TG9nbzoKKyNlbmRpZgogI2lmIEVOQUJM
RShWSURFTykKICAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oCmluZGV4IGE0ZGZhM2Q3NjlhYjk1
MDk3NTM1ZDMxM2ZmOTYxYzRhYzBhMTAwYTIuLmNhMDc0Y2QyZjFiNGVkOGM4ZmNmY2QwMjI5MTAz
OTM4ODQ0NmI4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaApAQCAt
NzgsNiArNzgsMTAgQEAgZW51bSBjbGFzcyBJdGVtVHlwZSA6IHVpbnQ4X3QgewogICAgIEZpbGxQ
YXRoLAogICAgIEZpbGxFbGxpcHNlLAogICAgIEZsdXNoQ29udGV4dCwKKyNpZiBFTkFCTEUoQVBQ
TEVfUEFZKQorICAgIFBhaW50QXBwbGVQYXlCdXR0b24sCisgICAgUGFpbnRBcHBsZVBheUxvZ28s
CisjZW5kaWYKICNpZiBFTkFCTEUoVklERU8pCiAgICAgUGFpbnRGcmFtZUZvck1lZGlhLAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggM2YzNzgzNWRlNjky
NDIwMTRjZTljYjA2ZWY4N2E5ZDEwZWRiNTM5Ny4uY2RhM2E3Zjc5YTUxZjlhMTAxM2IxNTMyM2Q2
Mzg3ZDZmMDYwZmViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAt
NzU1LDYgKzc1NSwzNyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgRmlsbEVsbGlwc2UmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwogfQogCisjaWYg
RU5BQkxFKEFQUExFX1BBWSkKKwordm9pZCBQYWludEFwcGxlUGF5QnV0dG9uOjphcHBseShHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0Cit7CisgICAgY29udGV4dC5wYWludEFwcGxlUGF5
QnV0dG9uKG1fdHlwZSwgbV9zdHlsZSwgbV9sb2NhbGUsIG1fbGFyZ2VzdENvcm5lclJhZGl1cywg
bV9kZXN0aW5hdGlvbik7Cit9CisKK3N0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBQYWludEFwcGxlUGF5QnV0dG9uJiBpdGVtKQoreworICAgIHRzLmR1
bXBQcm9wZXJ0eSgidHlwZSIsIGl0ZW0udHlwZSgpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInN0
eWxlIiwgaXRlbS5zdHlsZSgpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImxvY2FsZSIsIGl0ZW0u
bG9jYWxlKCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgibGFyZ2VzdENvcm5lclJhZGl1cyIsIGl0
ZW0ubGFyZ2VzdENvcm5lclJhZGl1cygpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImRlc3RpbmF0
aW9uIiwgaXRlbS5kZXN0aW5hdGlvbigpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK3ZvaWQgUGFp
bnRBcHBsZVBheUxvZ286OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3sK
KyAgICBjb250ZXh0LnBhaW50QXBwbGVQYXlMb2dvKG1fc3R5bGUsIG1fZGVzdGluYXRpb24pOwor
fQorCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3Qg
UGFpbnRBcHBsZVBheUxvZ28mIGl0ZW0pCit7CisgICAgdHMuZHVtcFByb3BlcnR5KCJzdHlsZSIs
IGl0ZW0uc3R5bGUoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0aW5hdGlvbiIsIGl0ZW0u
ZGVzdGluYXRpb24oKSk7CisgICAgcmV0dXJuIHRzOworfQorCisjZW5kaWYgLy8gRU5BQkxFKEFQ
UExFX1BBWSkKKwogI2lmIEVOQUJMRShWSURFTykKIFBhaW50RnJhbWVGb3JNZWRpYTo6UGFpbnRG
cmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiBwbGF5ZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24pCiAgICAgOiBtX2lkZW50aWZpZXIocGxheWVyLmlkZW50aWZpZXIoKSkKQEAgLTEwNDUs
NiArMTA3NiwxMCBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgSXRlbVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUGF0aDogdHMgPDwgImZp
bGwtcGF0aCI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxFbGxpcHNlOiB0cyA8PCAi
ZmlsbC1lbGxpcHNlIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OiB0
cyA8PCAiZmx1c2gtY29udGV4dCI7IGJyZWFrOworI2lmIEVOQUJMRShBUFBMRV9QQVkpCisgICAg
Y2FzZSBJdGVtVHlwZTo6UGFpbnRBcHBsZVBheUJ1dHRvbjogdHMgPDwgInBhaW50LWFwcGxlLXBh
eS1idXR0b24iOyBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEFwcGxlUGF5TG9nbzog
dHMgPDwgInBhaW50LWFwcGxlLXBheS1sb2dvIjsgYnJlYWs7CisjZW5kaWYKICNpZiBFTkFCTEUo
VklERU8pCiAgICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOiB0cyA8PCAicGFp
bnQtZnJhbWUtZm9yLW1lZGlhIjsgYnJlYWs7CiAjZW5kaWYKQEAgLTEyMDksNiArMTI0NCwxNCBA
QCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBJdGVtSGFuZGxlIGl0ZW0p
CiAgICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OgogICAgICAgICB0cyA8PCBpdGVtLmdl
dDxGbHVzaENvbnRleHQ+KCk7CiAgICAgICAgIGJyZWFrOworI2lmIEVOQUJMRShBUFBMRV9QQVkp
CisgICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRBcHBsZVBheUJ1dHRvbjoKKyAgICAgICAgdHMgPDwg
aXRlbS5nZXQ8UGFpbnRBcHBsZVBheUJ1dHRvbj4oKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBJdGVtVHlwZTo6UGFpbnRBcHBsZVBheUxvZ286CisgICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFBh
aW50QXBwbGVQYXlMb2dvPigpOworICAgICAgICBicmVhazsKKyNlbmRpZgogI2lmIEVOQUJMRShW
SURFTykKICAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6CiAgICAgICAgIHRz
IDw8IGl0ZW0uZ2V0PFBhaW50RnJhbWVGb3JNZWRpYT4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5oCmluZGV4IGY1MWQxZjhmOTQxYWFmMzRhNGU4OWY1OGQ1ZDUxOTRjYTk2NjMzOGUu
Ljk1ZTg5NGQxNjc0MDNjNGU2OWJlNjdjOTJjZmZjNzkyMThkZGMwYTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtMjYsNiArMjYsOSBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJBbHBoYVByZW11bHRpcGxpY2F0aW9uLmgiCisjaW5jbHVkZSAiQXBwbGVQYXlCdXR0
b25TdHlsZS5oIgorI2luY2x1ZGUgIkFwcGxlUGF5QnV0dG9uVHlwZS5oIgorI2luY2x1ZGUgIkFw
cGxlUGF5TG9nb1N0eWxlLmgiCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbVR5cGUuaCIKICNpbmNsdWRlICJGbG9h
dFJvdW5kZWRSZWN0LmgiCkBAIC0xODk4LDYgKzE5MDEsMTA4IEBAIHByaXZhdGU6CiAgICAgRmxv
YXRSZWN0IG1fcmVjdDsKIH07CiAKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKQorCitjbGFzcyBQYWlu
dEFwcGxlUGF5QnV0dG9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIEl0ZW1UeXBl
IGl0ZW1UeXBlID0gSXRlbVR5cGU6OlBhaW50QXBwbGVQYXlCdXR0b247CisgICAgc3RhdGljIGNv
bnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBpc0RyYXdpbmdJdGVtID0gdHJ1ZTsKKworICAgIFBhaW50QXBwbGVQYXlCdXR0b24oQXBw
bGVQYXlCdXR0b25UeXBlIHR5cGUsIEFwcGxlUGF5QnV0dG9uU3R5bGUgc3R5bGUsIGNvbnN0IFN0
cmluZyYgbG9jYWxlLCBmbG9hdCBsYXJnZXN0Q29ybmVyUmFkaXVzLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uKQorICAgICAgICA6IG1fdHlwZSh0eXBlKQorICAgICAgICAsIG1fc3R5bGUo
c3R5bGUpCisgICAgICAgICwgbV9sb2NhbGUobG9jYWxlKQorICAgICAgICAsIG1fbGFyZ2VzdENv
cm5lclJhZGl1cyhsYXJnZXN0Q29ybmVyUmFkaXVzKQorICAgICAgICAsIG1fZGVzdGluYXRpb24o
ZGVzdGluYXRpb24pCisgICAgeworICAgIH0KKworICAgIEFwcGxlUGF5QnV0dG9uVHlwZSB0eXBl
KCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisgICAgQXBwbGVQYXlCdXR0b25TdHlsZSBzdHls
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGU7IH0KKyAgICBjb25zdCBTdHJpbmcmIGxvY2FsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxlOyB9CisgICAgZmxvYXQgbGFyZ2VzdENvcm5lclJhZGl1
cygpIGNvbnN0IHsgcmV0dXJuIG1fbGFyZ2VzdENvcm5lclJhZGl1czsgfQorICAgIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9CisK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0Owor
CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJv
dW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9u
OyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8
UGFpbnRBcHBsZVBheUJ1dHRvbj4gZGVjb2RlKERlY29kZXImKTsKKworcHJpdmF0ZToKKyAgICBB
cHBsZVBheUJ1dHRvblR5cGUgbV90eXBlOworICAgIEFwcGxlUGF5QnV0dG9uU3R5bGUgbV9zdHls
ZTsKKyAgICBTdHJpbmcgbV9sb2NhbGU7CisgICAgZmxvYXQgbV9sYXJnZXN0Q29ybmVyUmFkaXVz
OworICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uOworfTsKKwordGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KK3ZvaWQgUGFpbnRBcHBsZVBheUJ1dHRvbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3R5cGU7CisgICAgZW5jb2RlciA8PCBtX3N0eWxl
OworICAgIGVuY29kZXIgPDwgbV9sb2NhbGU7CisgICAgZW5jb2RlciA8PCBtX2xhcmdlc3RDb3Ju
ZXJSYWRpdXM7CisgICAgZW5jb2RlciA8PCBtX2Rlc3RpbmF0aW9uOworfQorCit0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxQYWludEFwcGxlUGF5QnV0dG9uPiBQYWludEFw
cGxlUGF5QnV0dG9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyNkZWZpbmUgREVDT0RF
KG5hbWUsIHR5cGUpIFwKKyAgICBzdGQ6Om9wdGlvbmFsPHR5cGU+IG5hbWU7IFwKKyAgICBkZWNv
ZGVyID4+IG5hbWU7IFwKKyAgICBpZiAoIW5hbWUpIFwKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsgXAorCisgICAgREVDT0RFKHR5cGUsIEFwcGxlUGF5QnV0dG9uVHlwZSkKKyAgICBERUNP
REUoc3R5bGUsIEFwcGxlUGF5QnV0dG9uU3R5bGUpCisgICAgREVDT0RFKGxvY2FsZSwgU3RyaW5n
KQorICAgIERFQ09ERShsYXJnZXN0Q29ybmVyUmFkaXVzLCBmbG9hdCkKKyAgICBERUNPREUoZGVz
dGluYXRpb24sIEZsb2F0UmVjdCkKKworI3VuZGVmIERFQ09ERQorCisgICAgcmV0dXJuIHsgewor
ICAgICAgICBXVEZNb3ZlKCp0eXBlKSwKKyAgICAgICAgV1RGTW92ZSgqc3R5bGUpLAorICAgICAg
ICBXVEZNb3ZlKCpsb2NhbGUpLAorICAgICAgICBXVEZNb3ZlKCpsYXJnZXN0Q29ybmVyUmFkaXVz
KSwKKyAgICAgICAgV1RGTW92ZSgqZGVzdGluYXRpb24pLAorICAgIH0gfTsKK30KKworY2xhc3Mg
UGFpbnRBcHBsZVBheUxvZ28geworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5
cGUgaXRlbVR5cGUgPSBJdGVtVHlwZTo6UGFpbnRBcHBsZVBheUxvZ287CisgICAgc3RhdGljIGNv
bnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGlzRHJhd2luZ0l0ZW0gPSB0cnVlOworCisgICAgUGFpbnRBcHBsZVBheUxvZ28oQXBwbGVQ
YXlMb2dvU3R5bGUgc3R5bGUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pCisgICAgICAg
IDogbV9zdHlsZShzdHlsZSkKKyAgICAgICAgLCBtX2Rlc3RpbmF0aW9uKGRlc3RpbmF0aW9uKQor
ICAgIHsKKyAgICB9CisKKyAgICBBcHBsZVBheUxvZ29TdHlsZSBzdHlsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3R5bGU7IH0KKyAgICBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBs
eShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0
PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICBzdGQ6
Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0Jikg
Y29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQorCitwcml2YXRlOgorICAgIEFwcGxlUGF5
TG9nb1N0eWxlIG1fc3R5bGU7CisgICAgRmxvYXRSZWN0IG1fZGVzdGluYXRpb247Cit9OworCisj
ZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BBWSkKKwogI2lmIEVOQUJMRShWSURFTykKIGNsYXNzIFBh
aW50RnJhbWVGb3JNZWRpYSB7CiBwdWJsaWM6CkBAIC0yMjU5LDYgKzIzNjQsMTEgQEAgdXNpbmcg
RGlzcGxheUxpc3RJdGVtID0gc3RkOjp2YXJpYW50CiAgICAgLCBTdHJva2VCZXppZXJDdXJ2ZQog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKQorICAgICwgUGFpbnRBcHBsZVBheUJ1dHRv
bgorICAgICwgUGFpbnRBcHBsZVBheUxvZ28KKyNlbmRpZgorCiAjaWYgRU5BQkxFKFZJREVPKQog
ICAgICwgUGFpbnRGcmFtZUZvck1lZGlhCiAjZW5kaWYKQEAgLTIzMzAsNiArMjQ0MCwxMCBAQCB0
ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZT4gewogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFBhdGgsCiAgICAg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsRWxsaXBzZSwKICAgICBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZsdXNoQ29udGV4dCwKKyNpZiBFTkFCTEUoQVBQTEVf
UEFZKQorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UGFpbnRBcHBsZVBheUJ1
dHRvbiwKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlBhaW50QXBwbGVQYXlM
b2dvLAorI2VuZGlmCiAjaWYgRU5BQkxFKFZJREVPKQogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhLAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggNGM3ZGQ4YTYzMGY4OTQwOGJlYzEwMWUyZWJk
YzRlY2M5MGNmODRiYy4uN2I0MDRkYzI2MmE2ZTUwMzFiY2JiNDFhYjk0YmQ1ODZlNWIwYTVjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtNTA2LDYgKzUw
NiwyMCBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlY29yZGVyOjpjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IERlcwogICAgIHJldHVybiBHcmFwaGljc0NvbnRl
eHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIGNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUsIHJl
bmRlcmluZ01ldGhvZCk7CiB9CiAKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKQorCit2b2lkIFJlY29y
ZGVyOjpwYWludEFwcGxlUGF5QnV0dG9uKEFwcGxlUGF5QnV0dG9uVHlwZSB0eXBlLCBBcHBsZVBh
eUJ1dHRvblN0eWxlIHN0eWxlLCBjb25zdCBTdHJpbmcmIGxvY2FsZSwgZmxvYXQgbGFyZ2VzdENv
cm5lclJhZGl1cywgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikKK3sKKyAgICByZWNvcmRQ
YWludEFwcGxlUGF5QnV0dG9uKHR5cGUsIHN0eWxlLCBsb2NhbGUsIGxhcmdlc3RDb3JuZXJSYWRp
dXMsIGRlc3RpbmF0aW9uKTsKK30KKwordm9pZCBSZWNvcmRlcjo6cGFpbnRBcHBsZVBheUxvZ28o
QXBwbGVQYXlMb2dvU3R5bGUgc3R5bGUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pCit7
CisgICAgcmVjb3JkUGFpbnRBcHBsZVBheUxvZ28oc3R5bGUsIGRlc3RpbmF0aW9uKTsKK30KKwor
I2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVkpCisKICNpZiBFTkFCTEUoVklERU8pCiB2b2lkIFJl
Y29yZGVyOjpwYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImIHBsYXllciwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5oCmluZGV4IDNkMzgzNmZmM2Q1ZjdiZDZjODZkYjhkNzI5MGJlZDk1OTA3MmZkMGMuLjAyZDM3
ODQ0ODgzNzViNDUxOGFjNWMxMjNiZWFiM2ExNTg3NGMwNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtMTExLDYgKzExMSwxMCBAQCBwcm90ZWN0ZWQ6CiAjZW5k
aWYKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRmlsbFBhdGgoY29uc3QgUGF0aCYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVjb3JkRmlsbEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JikgPSAwOwor
I2lmIEVOQUJMRShBUFBMRV9QQVkpCisgICAgdmlydHVhbCB2b2lkIHJlY29yZFBhaW50QXBwbGVQ
YXlCdXR0b24oQXBwbGVQYXlCdXR0b25UeXBlLCBBcHBsZVBheUJ1dHRvblN0eWxlLCBjb25zdCBT
dHJpbmcmIGxvY2FsZSwgZmxvYXQgbGFyZ2VzdENvcm5lclJhZGl1cywgY29uc3QgRmxvYXRSZWN0
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRQYWludEFwcGxlUGF5TG9nbyhBcHBsZVBh
eUxvZ29TdHlsZSwgY29uc3QgRmxvYXRSZWN0JikgPSAwOworI2VuZGlmCiAjaWYgRU5BQkxFKFZJ
REVPKQogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRQYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5
ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSA9IDA7CiAjZW5kaWYKQEAgLTI2MSw2
ICsyNjUsMTEgQEAgcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBJbnRSZWN0IGNsaXBCb3Vu
ZHMoKSBjb25zdCBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsaXBUb0ltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JikgZmluYWw7CiAKKyNpZiBFTkFCTEUo
QVBQTEVfUEFZKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFpbnRBcHBsZVBheUJ1dHRvbihB
cHBsZVBheUJ1dHRvblR5cGUsIEFwcGxlUGF5QnV0dG9uU3R5bGUsIGNvbnN0IFN0cmluZyYgbG9j
YWxlLCBmbG9hdCBsYXJnZXN0Q29ybmVyUmFkaXVzLCBjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBhaW50QXBwbGVQYXlMb2dvKEFwcGxlUGF5TG9nb1N0
eWxlLCBjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFZJREVP
KQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFpbnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVy
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikgZmluYWw7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwCmluZGV4IDI3ZDM0MDI1NTg1
NjQ0MGYyYTE4MThkMzJmN2ZhMjJmMjk5Yzc5NmQuLjFhMDZhMWM3MmNlYTcwMWJkNjY0ZmJhOGM1
YWUyZmUxZGU4ZTVjZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXJJbXBsLmNwcApAQCAtMzAxLDYgKzMwMSwyMCBAQCB2b2lkIFJlY29yZGVySW1wbDo6cmVjb3Jk
RmlsbEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIGFwcGVuZDxGaWxsRWxsaXBz
ZT4ocmVjdCk7CiB9CiAKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKQorCit2b2lkIFJlY29yZGVySW1w
bDo6cmVjb3JkUGFpbnRBcHBsZVBheUJ1dHRvbihBcHBsZVBheUJ1dHRvblR5cGUgdHlwZSwgQXBw
bGVQYXlCdXR0b25TdHlsZSBzdHlsZSwgY29uc3QgU3RyaW5nJiBsb2NhbGUsIGZsb2F0IGxhcmdl
c3RDb3JuZXJSYWRpdXMsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pCit7CisgICAgYXBw
ZW5kPFBhaW50QXBwbGVQYXlCdXR0b24+KHR5cGUsIHN0eWxlLCBsb2NhbGUsIGxhcmdlc3RDb3Ju
ZXJSYWRpdXMsIGRlc3RpbmF0aW9uKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFBh
aW50QXBwbGVQYXlMb2dvKEFwcGxlUGF5TG9nb1N0eWxlIHN0eWxlLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uKQoreworICAgIGFwcGVuZDxQYWludEFwcGxlUGF5TG9nbz4oc3R5bGUsIGRl
c3RpbmF0aW9uKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVkpCisKICNpZiBFTkFC
TEUoVklERU8pCiB2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkUGFpbnRGcmFtZUZvck1lZGlhKE1l
ZGlhUGxheWVyJiBwbGF5ZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oCmluZGV4IGY3NjQzZDY2Yzg2
YzMxZmRhYjQyM2VlYWQzMmM5NDg5MTM1NzI2MGEuLmI4YmQ5ZjgzYTE0ZjgxYjQ1OGEyMDNkNTMw
YTNjZTRhNDc0OTNkZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
SW1wbC5oCkBAIC05NSw2ICs5NSwxMCBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgdm9pZCByZWNv
cmRGaWxsUGF0aChjb25zdCBQYXRoJikgZmluYWw7CiAgICAgdm9pZCByZWNvcmRGaWxsRWxsaXBz
ZShjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKQorICAgIHZv
aWQgcmVjb3JkUGFpbnRBcHBsZVBheUJ1dHRvbihBcHBsZVBheUJ1dHRvblR5cGUsIEFwcGxlUGF5
QnV0dG9uU3R5bGUsIGNvbnN0IFN0cmluZyYgbG9jYWxlLCBmbG9hdCBsYXJnZXN0Q29ybmVyUmFk
aXVzLCBjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZFBhaW50QXBwbGVQ
YXlMb2dvKEFwcGxlUGF5TG9nb1N0eWxlLCBjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKKyNlbmRp
ZgogI2lmIEVOQUJMRShWSURFTykKICAgICB2b2lkIHJlY29yZFBhaW50RnJhbWVGb3JNZWRpYShN
ZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pIGZpbmFsOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tCmluZGV4IDkz
MmMzZDM1ODhjY2RlYWRiODI0NjQzNmQ3Y2M2MGEwNGU5ZWY2YzguLmNhM2UyN2ExY2FjZmM3MDNl
YTI3ZjQ3MWRmMWNjYWNiYWMwZDI4MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUNvY29hLm1tCkBAIC0xMDAsNjQgKzEwMCw4IEBAIHZvaWQgUmVuZGVyVGhlbWVD
b2NvYTo6YWRqdXN0QXBwbGVQYXlCdXR0b25TdHlsZShSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0
IEVsZW1lCiAgICAgfQogfQogCi1zdGF0aWMgUEtQYXltZW50QnV0dG9uU3R5bGUgdG9QS1BheW1l
bnRCdXR0b25TdHlsZShBcHBsZVBheUJ1dHRvblN0eWxlIHN0eWxlKQotewotICAgIHN3aXRjaCAo
c3R5bGUpIHsKLSAgICBjYXNlIEFwcGxlUGF5QnV0dG9uU3R5bGU6OldoaXRlOgotICAgICAgICBy
ZXR1cm4gUEtQYXltZW50QnV0dG9uU3R5bGVXaGl0ZTsKLSAgICBjYXNlIEFwcGxlUGF5QnV0dG9u
U3R5bGU6OldoaXRlT3V0bGluZToKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRvblN0eWxl
V2hpdGVPdXRsaW5lOwotICAgIGNhc2UgQXBwbGVQYXlCdXR0b25TdHlsZTo6QmxhY2s6Ci0gICAg
ICAgIHJldHVybiBQS1BheW1lbnRCdXR0b25TdHlsZUJsYWNrOwotICAgIH0KLX0KLQotc3RhdGlj
IFBLUGF5bWVudEJ1dHRvblR5cGUgdG9QS1BheW1lbnRCdXR0b25UeXBlKEFwcGxlUGF5QnV0dG9u
VHlwZSB0eXBlKQotewotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgQXBwbGVQYXlCdXR0
b25UeXBlOjpQbGFpbjoKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRvblR5cGVQbGFpbjsK
LSAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6QnV5OgotICAgICAgICByZXR1cm4gUEtQYXlt
ZW50QnV0dG9uVHlwZUJ1eTsKLSAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6U2V0VXA6Ci0g
ICAgICAgIHJldHVybiBQS1BheW1lbnRCdXR0b25UeXBlU2V0VXA7Ci0gICAgY2FzZSBBcHBsZVBh
eUJ1dHRvblR5cGU6OkRvbmF0ZToKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRvblR5cGVE
b25hdGU7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OkNoZWNrT3V0OgotICAgICAgICBy
ZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZUNoZWNrb3V0OwotICAgIGNhc2UgQXBwbGVQYXlCdXR0
b25UeXBlOjpCb29rOgotICAgICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZUJvb2s7Ci0g
ICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OlN1YnNjcmliZToKLSAgICAgICAgcmV0dXJuIFBL
UGF5bWVudEJ1dHRvblR5cGVTdWJzY3JpYmU7Ci0jaWYgSEFWRShQQVNTS0lUX05FV19CVVRUT05f
VFlQRVMpCi0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OlJlbG9hZDoKLSAgICAgICAgcmV0
dXJuIFBLUGF5bWVudEJ1dHRvblR5cGVSZWxvYWQ7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5
cGU6OkFkZE1vbmV5OgotICAgICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZUFkZE1vbmV5
OwotICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpUb3BVcDoKLSAgICAgICAgcmV0dXJuIFBL
UGF5bWVudEJ1dHRvblR5cGVUb3BVcDsKLSAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6T3Jk
ZXI6Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRCdXR0b25UeXBlT3JkZXI7Ci0gICAgY2FzZSBB
cHBsZVBheUJ1dHRvblR5cGU6OlJlbnQ6Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRCdXR0b25U
eXBlUmVudDsKLSAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6U3VwcG9ydDoKLSAgICAgICAg
cmV0dXJuIFBLUGF5bWVudEJ1dHRvblR5cGVTdXBwb3J0OwotICAgIGNhc2UgQXBwbGVQYXlCdXR0
b25UeXBlOjpDb250cmlidXRlOgotICAgICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZUNv
bnRyaWJ1dGU7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OlRpcDoKLSAgICAgICAgcmV0
dXJuIFBLUGF5bWVudEJ1dHRvblR5cGVUaXA7Ci0jZW5kaWYKLSAgICB9Ci19Ci0KIGJvb2wgUmVu
ZGVyVGhlbWVDb2NvYTo6cGFpbnRBcHBsZVBheUJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIHJl
bmRlcmVyLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcGFpbnRS
ZWN0KQogewotICAgIGF1dG8mIGRlc3RpbmF0aW9uQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0
KCk7Ci0KLSAgICBhdXRvIGltYWdlQnVmZmVyID0gZGVzdGluYXRpb25Db250ZXh0LmNyZWF0ZUNv
bXBhdGlibGVJbWFnZUJ1ZmZlcihwYWludFJlY3Quc2l6ZSgpKTsKLSAgICBpZiAoIWltYWdlQnVm
ZmVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBhdXRvJiBzdHlsZSA9IHJlbmRlcmVy
LnN0eWxlKCk7CiAgICAgYXV0byBsYXJnZXN0Q29ybmVyUmFkaXVzID0gc3RkOjptYXg8Q0dGbG9h
dD4oewogICAgICAgICBmbG9hdFZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcExlZnRSYWRp
dXMoKS5oZWlnaHQsIHBhaW50UmVjdC5oZWlnaHQoKSksCkBAIC0xNjksMTQgKzExMyw3IEBAIGJv
b2wgUmVuZGVyVGhlbWVDb2NvYTo6cGFpbnRBcHBsZVBheUJ1dHRvbihjb25zdCBSZW5kZXJPYmpl
Y3QmIHJlbmRlcmVyLCBjb25zdCBQCiAgICAgICAgIGZsb2F0VmFsdWVGb3JMZW5ndGgoc3R5bGUu
Ym9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKS5oZWlnaHQsIHBhaW50UmVjdC5oZWlnaHQoKSksCiAg
ICAgICAgIGZsb2F0VmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMo
KS53aWR0aCwgcGFpbnRSZWN0LndpZHRoKCkpCiAgICAgfSk7Ci0KLSAgICBhdXRvJiBpbWFnZUNv
bnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOwotICAgIGltYWdlQ29udGV4dC5zZXRTaG91
bGRTbW9vdGhGb250cyh0cnVlKTsKLSAgICBpbWFnZUNvbnRleHQuc2V0U2hvdWxkU3VicGl4ZWxR
dWFudGl6ZUZvbnRzKGZhbHNlKTsKLSAgICBpbWFnZUNvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEs
IC0xKSk7Ci0gICAgUEtEcmF3QXBwbGVQYXlCdXR0b25XaXRoQ29ybmVyUmFkaXVzKGltYWdlQ29u
dGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgQ0dSZWN0TWFrZSgwLCAtcGFpbnRSZWN0LmhlaWdodCgp
LCBwYWludFJlY3Qud2lkdGgoKSwgcGFpbnRSZWN0LmhlaWdodCgpKSwgMS4wLCBsYXJnZXN0Q29y
bmVyUmFkaXVzLCB0b1BLUGF5bWVudEJ1dHRvblR5cGUoc3R5bGUuYXBwbGVQYXlCdXR0b25UeXBl
KCkpLCB0b1BLUGF5bWVudEJ1dHRvblN0eWxlKHN0eWxlLmFwcGxlUGF5QnV0dG9uU3R5bGUoKSks
IHN0eWxlLmNvbXB1dGVkTG9jYWxlKCkpOwotCi0gICAgZGVzdGluYXRpb25Db250ZXh0LmRyYXdD
b25zdW1pbmdJbWFnZUJ1ZmZlcihXVEZNb3ZlKGltYWdlQnVmZmVyKSwgcGFpbnRSZWN0KTsKKyAg
ICBwYWludEluZm8uY29udGV4dCgpLnBhaW50QXBwbGVQYXlCdXR0b24oc3R5bGUuYXBwbGVQYXlC
dXR0b25UeXBlKCksIHN0eWxlLmFwcGxlUGF5QnV0dG9uU3R5bGUoKSwgc3R5bGUuY29tcHV0ZWRM
b2NhbGUoKSwgbGFyZ2VzdENvcm5lclJhZGl1cywgcGFpbnRSZWN0KTsKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgK
aW5kZXggZjk0NTFhMjNhZGRjODNhYmY2Mjg0YWY4MjNiYjc1OTk0N2Y3OTNlNS4uMGE0MDg1OWUz
OTRkM2RkZGVhODYxNDU1YmQzNzBmNTdiZDFmOTNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTI1LDYgKzI1LDggQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiQW5pbWF0aW9uTGlzdC5oIgorI2luY2x1ZGUgIkFwcGxlUGF5QnV0dG9u
U3R5bGUuaCIKKyNpbmNsdWRlICJBcHBsZVBheUJ1dHRvblR5cGUuaCIKICNpbmNsdWRlICJCb3Jk
ZXJWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0xpbmVCb3hDb250YWluVmFsdWUuaCIKICNpbmNsdWRl
ICJDU1NQcmltaXRpdmVWYWx1ZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5jcHAKaW5kZXggZmU2YTRjMDZiMjQ5OTZl
MjJhYjlhZGViY2U5NGQwZDY4ZDNmOWUxNS4uOTJiYzZhODEyYTExOGE1MTlmMGI0NmM5NGY5NzJl
MzJiM2E1ZWU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlQ29uc3RhbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuY3BwCkBAIC01Miw0MiArNTIsNiBAQCBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBBbmltYXRpb25QbGF5U3RhdGUgcGxheVN0YXRl
KQogICAgIHJldHVybiB0czsKIH0KIAotI2lmIEVOQUJMRShBUFBMRV9QQVkpCi1UZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBBcHBsZVBheUJ1dHRvblN0eWxlIGJ1dHRvblN0
eWxlKQotewotICAgIHN3aXRjaCAoYnV0dG9uU3R5bGUpIHsKLSAgICBjYXNlIEFwcGxlUGF5QnV0
dG9uU3R5bGU6OldoaXRlOiB0cyA8PCAid2hpdGUiOyBicmVhazsKLSAgICBjYXNlIEFwcGxlUGF5
QnV0dG9uU3R5bGU6OldoaXRlT3V0bGluZTogdHMgPDwgIndoaXRlLW91dGxpbmUiOyBicmVhazsK
LSAgICBjYXNlIEFwcGxlUGF5QnV0dG9uU3R5bGU6OkJsYWNrOiB0cyA8PCAiYmxhY2siOyBicmVh
azsKLSAgICB9Ci0gICAgcmV0dXJuIHRzOwotfQotCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBBcHBsZVBheUJ1dHRvblR5cGUgcGxheVN0YXRlKQotewotICAgIHN3aXRj
aCAocGxheVN0YXRlKSB7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OlBsYWluOiB0cyA8
PCAicGxhaW4iOyBicmVhazsKLSAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6QnV5OiB0cyA8
PCAiYnV5IjsgYnJlYWs7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OlNldFVwOiB0cyA8
PCAic2V0dXAiOyBicmVhazsKLSAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6RG9uYXRlOiB0
cyA8PCAiZG9uYXRlIjsgYnJlYWs7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OkNoZWNr
T3V0OiB0cyA8PCAiY2hlY2tvdXQiOyBicmVhazsKLSAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlw
ZTo6Qm9vazogdHMgPDwgImJvb2siOyBicmVhazsKLSAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlw
ZTo6U3Vic2NyaWJlOiB0cyA8PCAic3Vic2NyaWJlIjsgYnJlYWs7Ci0jaWYgRU5BQkxFKEFQUExF
X1BBWV9ORVdfQlVUVE9OX1RZUEVTKQotICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpSZWxv
YWQ6IHRzIDw8ICJyZWxvYWQiOyBicmVhazsKLSAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6
QWRkTW9uZXk6IHRzIDw8ICJhZGQtbW9uZXkiOyBicmVhazsKLSAgICBjYXNlIEFwcGxlUGF5QnV0
dG9uVHlwZTo6VG9wVXA6IHRzIDw8ICJ0b3AtdXAiOyBicmVhazsKLSAgICBjYXNlIEFwcGxlUGF5
QnV0dG9uVHlwZTo6T3JkZXI6IHRzIDw8ICJvcmRlciI7IGJyZWFrOwotICAgIGNhc2UgQXBwbGVQ
YXlCdXR0b25UeXBlOjpSZW50OiB0cyA8PCAicmVudCI7IGJyZWFrOwotICAgIGNhc2UgQXBwbGVQ
YXlCdXR0b25UeXBlOjpTdXBwb3J0OiB0cyA8PCAic3VwcG9ydCI7IGJyZWFrOwotICAgIGNhc2Ug
QXBwbGVQYXlCdXR0b25UeXBlOjpDb250cmlidXRlOiB0cyA8PCAiY29udHJpYnV0ZSI7IGJyZWFr
OwotICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpUaXA6IHRzIDw8ICJ0aXAiOyBicmVhazsK
LSNlbmRpZgotICAgIH0KLSAgICByZXR1cm4gdHM7Ci19Ci0jZW5kaWYKLQogVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgQXNwZWN0UmF0aW9UeXBlIGFzcGVjdFJhdGlvVHlw
ZSkKIHsKICAgICBzd2l0Y2ggKGFzcGVjdFJhdGlvVHlwZSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAppbmRleCAwYTk0
YjZkZjNkNDc0OGI0MmFhMzdjY2NlZGMzN2JjOTM3NTI2YWZiLi4xYWJmNjlhNGYwYTA3Mzg0Nzkx
NDA3MTRkZGU5ZjI4ZmM0ZGIzODdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaApAQCAtMTE2MSwzNCArMTE2MSw2IEBA
IGVudW0gY2xhc3MgVHJhaWxpbmdXb3JkIDogdWludDhfdCB7CiB9OwogI2VuZGlmCiAKLSNpZiBF
TkFCTEUoQVBQTEVfUEFZKQotZW51bSBjbGFzcyBBcHBsZVBheUJ1dHRvblN0eWxlIDogdWludDhf
dCB7Ci0gICAgV2hpdGUsCi0gICAgV2hpdGVPdXRsaW5lLAotICAgIEJsYWNrLAotfTsKLQotZW51
bSBjbGFzcyBBcHBsZVBheUJ1dHRvblR5cGUgOiB1aW50OF90IHsKLSAgICBQbGFpbiwKLSAgICBC
dXksCi0gICAgU2V0VXAsCi0gICAgRG9uYXRlLAotICAgIENoZWNrT3V0LAotICAgIEJvb2ssCi0g
ICAgU3Vic2NyaWJlLAotI2lmIEVOQUJMRShBUFBMRV9QQVlfTkVXX0JVVFRPTl9UWVBFUykKLSAg
ICBSZWxvYWQsCi0gICAgQWRkTW9uZXksCi0gICAgVG9wVXAsCi0gICAgT3JkZXIsCi0gICAgUmVu
dCwKLSAgICBTdXBwb3J0LAotICAgIENvbnRyaWJ1dGUsCi0gICAgVGlwLAotI2VuZGlmCi19Owot
I2VuZGlmCi0KIC8vIFRoZXNlIGFyZSBhbGwgbWluaW1pemVkIGNvbWJpbmF0aW9ucyBvZiBwYWlu
dC1vcmRlci4KIGVudW0gY2xhc3MgUGFpbnRPcmRlciA6IHVpbnQ4X3QgewogICAgIE5vcm1hbCwK
QEAgLTEyNDQsMTAgKzEyMTYsNiBAQCBleHRlcm4gY29uc3QgZmxvYXQgZGVmYXVsdE1pdGVyTGlt
aXQ7CiAKIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBBbmlt
YXRpb25GaWxsTW9kZSk7CiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3Ry
ZWFtJiwgQW5pbWF0aW9uUGxheVN0YXRlKTsKLSNpZiBFTkFCTEUoQVBQTEVfUEFZKQotV1RGOjpU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIEFwcGxlUGF5QnV0dG9uU3R5
bGUpOwotV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIEFwcGxl
UGF5QnV0dG9uVHlwZSk7Ci0jZW5kaWYKIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6
OlRleHRTdHJlYW0mLCBBc3BlY3RSYXRpb1R5cGUpOwogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFdURjo6VGV4dFN0cmVhbSYsIEF1dG9SZXBlYXRUeXBlKTsKIFdURjo6VGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBCYWNrZmFjZVZpc2liaWxpdHkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IDc4NDY0NjNkOTkwYmFkYzMwYWY5ODViZTA1N2Vm
MDYyYjBjMGY4ZmIuLmNmNDNmMGYyYTZjNDc3ZTI0YzJlOWRjZTI0MzcwYzQ1OWQ5NDhkN2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5
TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTQyNSw2ICs0MjUsMjAgQEAgdm9pZCBS
ZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjp0cmFuc2Zvcm1Ub0NvbG9yU3BhY2UoY29uc3QgV2Vi
Q29yZTo6RGVzdGluYXRpb24KICAgICBtX2ltYWdlQnVmZmVyLT50cmFuc2Zvcm1Ub0NvbG9yU3Bh
Y2UoY29sb3JTcGFjZSk7CiB9CiAKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKQorCit2b2lkIFJlbW90
ZURpc3BsYXlMaXN0UmVjb3JkZXI6OnBhaW50QXBwbGVQYXlCdXR0b24oQXBwbGVQYXlCdXR0b25U
eXBlIHR5cGUsIEFwcGxlUGF5QnV0dG9uU3R5bGUgc3R5bGUsIGNvbnN0IFN0cmluZyYgbG9jYWxl
LCBmbG9hdCBsYXJnZXN0Q29ybmVyUmFkaXVzLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
KQoreworICAgIGhhbmRsZUl0ZW0oRGlzcGxheUxpc3Q6OlBhaW50QXBwbGVQYXlCdXR0b24odHlw
ZSwgc3R5bGUsIGxvY2FsZSwgbGFyZ2VzdENvcm5lclJhZGl1cywgZGVzdGluYXRpb24pKTsKK30K
Kwordm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpwYWludEFwcGxlUGF5TG9nbyhBcHBs
ZVBheUxvZ29TdHlsZSBzdHlsZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikKK3sKKyAg
ICBoYW5kbGVJdGVtKERpc3BsYXlMaXN0OjpQYWludEFwcGxlUGF5TG9nbyhzdHlsZSwgZGVzdGlu
YXRpb24pKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVkpCisKIHZvaWQgUmVtb3Rl
RGlzcGxheUxpc3RSZWNvcmRlcjo6cGFpbnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVySWRlbnRp
ZmllciBpZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKQogewogICAgIG1f
cmVuZGVyaW5nQmFja2VuZC0+cGVyZm9ybVdpdGhNZWRpYVBsYXllck9uTWFpblRocmVhZChpZGVu
dGlmaWVyLCBbaW1hZ2VCdWZmZXIgPSBSZWZQdHIgeyBtX2ltYWdlQnVmZmVyLmdldCgpIH0sIGRl
c3RpbmF0aW9uXShNZWRpYVBsYXllciYgcGxheWVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIu
aAppbmRleCAyOWEyMjBiYmExZDdhYzE5OGE2ODIzZmViZGZkNWUyN2M3Yzg2NGU2Li4xOTM1MmMy
YTVhMWMyNTdlZWI1N2Q5YWE1NzFiMDRhOTZjYTNhMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29y
ZGVyLmgKQEAgLTEwOSw2ICsxMDksMTAgQEAgcHVibGljOgogICAgIHZvaWQgZmlsbEVsbGlwc2Uo
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CiAgICAgdm9pZCBjb252ZXJ0VG9MdW1pbmFuY2VN
YXNrKCk7CiAgICAgdm9pZCB0cmFuc2Zvcm1Ub0NvbG9yU3BhY2UoY29uc3QgV2ViQ29yZTo6RGVz
dGluYXRpb25Db2xvclNwYWNlJik7CisjaWYgRU5BQkxFKEFQUExFX1BBWSkKKyAgICB2b2lkIHBh
aW50QXBwbGVQYXlCdXR0b24oV2ViQ29yZTo6QXBwbGVQYXlCdXR0b25UeXBlLCBXZWJDb3JlOjpB
cHBsZVBheUJ1dHRvblN0eWxlLCBjb25zdCBTdHJpbmcmIGxvY2FsZSwgZmxvYXQgbGFyZ2VzdENv
cm5lclJhZGl1cywgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CisgICAgdm9pZCBwYWludEFw
cGxlUGF5TG9nbyhXZWJDb3JlOjpBcHBsZVBheUxvZ29TdHlsZSwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0Jik7CisjZW5kaWYKICAgICB2b2lkIHBhaW50RnJhbWVGb3JNZWRpYShXZWJDb3JlOjpN
ZWRpYVBsYXllcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRp
b24pOwogICAgIHZvaWQgc3Ryb2tlUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBmbG9h
dCBsaW5lV2lkdGgpOwogI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3Jk
ZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
RGlzcGxheUxpc3RSZWNvcmRlci5tZXNzYWdlcy5pbgppbmRleCA5NWRiZThkZDU1YzJhZmYyZGYw
MDU4MDM4NjNiMDc4ZTliNTlkNTlhLi43NmYyZDFlYzFhNTYyNzU1MWMyOWQ3MTlhYmI1Y2VkMzJj
MTM2ZTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5tZXNzYWdlcy5pbgpA
QCAtNzUsNiArNzUsMTAgQEAgbWVzc2FnZXMgLT4gUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlciBO
b3RSZWZDb3VudGVkIFN0cmVhbSB7CiAgICAgRmlsbEVsbGlwc2UoV2ViQ29yZTo6RmxvYXRSZWN0
IHJlY3QpCiAgICAgQ29udmVydFRvTHVtaW5hbmNlTWFzaygpCiAgICAgVHJhbnNmb3JtVG9Db2xv
clNwYWNlKFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKQorI2lmIEVO
QUJMRShBUFBMRV9QQVkpCisgICAgUGFpbnRBcHBsZVBheUJ1dHRvbihlbnVtOnVpbnQ4X3QgV2Vi
Q29yZTo6QXBwbGVQYXlCdXR0b25UeXBlIHR5cGUsIGVudW06dWludDhfdCBXZWJDb3JlOjpBcHBs
ZVBheUJ1dHRvblN0eWxlIHN0eWxlLCBTdHJpbmcgbG9jYWxlLCBmbG9hdCBsYXJnZXN0Q29ybmVy
UmFkaXVzLCBXZWJDb3JlOjpGbG9hdFJlY3QgZGVzdGluYXRpb24pCisgICAgUGFpbnRBcHBsZVBh
eUxvZ28oZW51bTp1aW50OF90IFdlYkNvcmU6OkFwcGxlUGF5TG9nb1N0eWxlIHN0eWxlLCBXZWJD
b3JlOjpGbG9hdFJlY3QgZGVzdGluYXRpb24pCisjZW5kaWYKICAgICBQYWludEZyYW1lRm9yTWVk
aWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZs
b2F0UmVjdCBkZXN0aW5hdGlvbikKICAgICBTdHJva2VSZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCBy
ZWN0LCBmbG9hdCBsaW5lV2lkdGgpCiAjaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHAKaW5kZXggODdhYWEwYWUy
MTkwZTkyNTVhNTM0ZGNiYTUxYTEwNzZlODBiNjQ5YS4uNWJmNWZmYjE4YzdjM2JjZDA3ZjdhMDlh
NDJjMjBhODkyZWJkOGU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRl
clByb3h5LmNwcApAQCAtMzIyLDYgKzMyMiwyMCBAQCB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXJQcm94eTo6cmVjb3JkRmlsbEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OkZpbGxFbGxpcHNlKHJl
Y3QpKTsKIH0KIAorI2lmIEVOQUJMRShBUFBMRV9QQVkpCisKK3ZvaWQgUmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlclByb3h5OjpyZWNvcmRQYWludEFwcGxlUGF5QnV0dG9uKEFwcGxlUGF5QnV0dG9u
VHlwZSB0eXBlLCBBcHBsZVBheUJ1dHRvblN0eWxlIHN0eWxlLCBjb25zdCBTdHJpbmcmIGxvY2Fs
ZSwgZmxvYXQgbGFyZ2VzdENvcm5lclJhZGl1cywgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
bikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpQYWlu
dEFwcGxlUGF5QnV0dG9uKHR5cGUsIHN0eWxlLCBsb2NhbGUsIGxhcmdlc3RDb3JuZXJSYWRpdXMs
IGRlc3RpbmF0aW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5
OjpyZWNvcmRQYWludEFwcGxlUGF5TG9nbyhBcHBsZVBheUxvZ29TdHlsZSBzdHlsZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVEaXNw
bGF5TGlzdFJlY29yZGVyOjpQYWludEFwcGxlUGF5TG9nbyhzdHlsZSwgZGVzdGluYXRpb24pKTsK
K30KKworI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVkpCisKIHZvaWQgUmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlclByb3h5OjpyZWNvcmRQYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImIHBs
YXllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikKIHsKICAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpQYWludEZyYW1lRm9yTWVkaWEocGxheWVyLmlk
ZW50aWZpZXIoKSwgZGVzdGluYXRpb24pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXJQcm94eS5oCmluZGV4IGM2NzhmODgzMmJlZjVjMmNhNzIwNGY0NjhjYjcxYTJlNGE5NmJm
OTUuLmMxZjdlNGUzYzFkMzkyNDQzZjc5ZjZlNjA4ZTBlOTNhY2FlYWVjNjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RS
ZWNvcmRlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaApAQCAtMTE2LDYgKzExNiwxMCBAQCBw
cml2YXRlOgogI2VuZGlmCiAgICAgdm9pZCByZWNvcmRGaWxsUGF0aChjb25zdCBXZWJDb3JlOjpQ
YXRoJikgZmluYWw7CiAgICAgdm9pZCByZWNvcmRGaWxsRWxsaXBzZShjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmKSBmaW5hbDsKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKQorICAgIHZvaWQgcmVjb3Jk
UGFpbnRBcHBsZVBheUJ1dHRvbihXZWJDb3JlOjpBcHBsZVBheUJ1dHRvblR5cGUsIFdlYkNvcmU6
OkFwcGxlUGF5QnV0dG9uU3R5bGUsIGNvbnN0IFN0cmluZyYgbG9jYWxlLCBmbG9hdCBsYXJnZXN0
Q29ybmVyUmFkaXVzLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBmaW5hbDsKKyAgICB2b2lk
IHJlY29yZFBhaW50QXBwbGVQYXlMb2dvKFdlYkNvcmU6OkFwcGxlUGF5TG9nb1N0eWxlLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBmaW5hbDsKKyNlbmRpZgogICAgIHZvaWQgcmVjb3JkUGFp
bnRGcmFtZUZvck1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVyJiwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiBkZXN0aW5hdGlvbikgZmluYWw7CiAgICAgdm9pZCByZWNvcmRTdHJva2VSZWN0KGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGZsb2F0KSBmaW5hbDsKICNpZiBFTkFCTEUoSU5MSU5F
X1BBVEhfREFUQSkK
</data>
<flag name="review"
          id="480450"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
    <flag name="commit-queue"
          id="480451"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453651</attachid>
            <date>2022-03-02 12:59:04 -0800</date>
            <delta_ts>2022-03-02 13:09:43 -0800</delta_ts>
            <desc>[fast-cq] Patch</desc>
            <filename>237177.diff</filename>
            <type>text/plain</type>
            <size>85050</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiNjBkN2E5ODE1ZTcuLjVkMGI5Nzg5YTZjYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEyMCBAQAorMjAyMi0wMy0wMiAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5j
b20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBkb250IGxvYWQgQXBwbGUgUGF5IGJ1dHRvbi9s
b2dvIFBERnMgaW4gdGhlIFdlYlByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNzE3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU3lzdGVtSW1hZ2UuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1JbWFnZTo6ZHJhdyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTeXN0ZW1JbWFnZTo6U3lzdGVtSW1hZ2UpOgorICAgICAgICBJbnRyb2R1Y2Ug
YSBuZXcgZXh0ZW5kYWJsZSBjbGFzcyBgU3lzdGVtSW1hZ2VgIHRoYXQgcmVwcmVzZW50cyBhIGNv
bGxlY3Rpb24gb2YgYXJndW1lbnRzCisgICAgICAgIGFuZCBtZXRob2RvbG9neSAodGhhdCB1c2Vz
IHRob3NlIGFyZ3VtZW50cykgdG8gZHJhdyBzb21ldGhpbmcgZnJvbSB0aGUgc3lzdGVtLgorICAg
ICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgdHdvIGNvbmNyZXRlIHVzZXM6CisgICAgICAgIC0g
YEFwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2VgIHVzZXMgUGFzc0tpdCBTUEkgdG8gZHJhdyBhbiBB
cHBsZSBQYXkgYnV0dG9uLgorICAgICAgICAtIGBBcHBsZVBheUxvZ29TeXN0ZW1JbWFnZWAgbG9h
ZHMgYSBQREYgZmlsZSBvZiB0aGUgQXBwbGUgUGF5IGxvZ28gZnJvbSBpbnNpZGUgUGFzc0tpdC4K
KyAgICAgICAgVGhpcyBhcmNoaXRlY3R1cmUgd2FzIGNob3NlbiBzbyB0aGF0IGBHcmFwaGljc0Nv
bnRleHRgIGRvZXNuJ3QgaGF2ZSB0byBrbm93IGFib3V0IEFwcGxlIFBheQorICAgICAgICBzcGVj
aWZpYyB0aGluZ3MsIGluc3RlYWQgb25seSBkZWFsaW5nIHdpdGggYSB2ZXJ5IGdlbmVyaWMgaW50
ZXJmYWNlICh3aG9zIHN1YmNsYXNzZXMga25vdworICAgICAgICBtb3JlIHNwZWNpZmljYWxseSB3
aGF0IHRvIGRvIHdpdGggdGhlIGRhdGEgdGhleSdyZSBnaXZlbikuCisKKyAgICAgICAgKiBNb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2UuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpBcHBsZVBheUJ1dHRvblN5c3RlbUltYWdlOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZTo6QXBwbGVQYXlCdXR0b25TeXN0ZW1J
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheUJ1dHRvblN5c3RlbUltYWdlOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZTo6
ZGVjb2RlKToKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheUJ1dHRvblN5c3RlbUltYWdlLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRv
UEtQYXltZW50QnV0dG9uVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjp0b1BLUGF5bWVudEJ1dHRv
blN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2U6OmRy
YXcgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgICogcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaDoKKyAgICAgICAgRHJpdmUtYnk6IE1vdmUgYEFw
cGxlUGF5QnV0dG9uU3R5bGVgIGFuZCBgQXBwbGVQYXlCdXR0b25UeXBlYCB0byBgQXBwbGVQYXlC
dXR0b25TeXN0ZW1JbWFnZS5oYAorICAgICAgICBzbyB0aGV5IGNhbiBiZSB1c2VkIGVsc2V3aGVy
ZSAoZS5nLiBHUFVQcm9jZXNzKSB3aXRob3V0IGhhdmluZyB0byBpbmNsdWRlIGV2ZXJ5dGhpbmcg
ZWxzZS4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMb2dvU3lzdGVtSW1h
Z2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheUxvZ29TeXN0ZW1JbWFnZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5TG9nb1N5c3RlbUltYWdlOjpBcHBs
ZVBheUxvZ29TeXN0ZW1JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheUxvZ29TeXN0
ZW1JbWFnZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5TG9nb1N5
c3RlbUltYWdlOjpkZWNvZGUpOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBNb2R1bGVz
L2FwcGxlcGF5L0FwcGxlUGF5TG9nb1N5c3RlbUltYWdlLm1tOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OnBhc3NLaXRCdW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6bG9hZFBhc3NLaXRQREZQ
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGxlUGF5TG9nb1doaXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OmFwcGxlUGF5TG9nb0JsYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGxlUGF5TG9n
b0ZvclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5TG9nb1N5c3RlbUltYWdlOjpk
cmF3IGNvbnN0KToKKyAgICAgICAgQWRkIGEgbmV3IGBBcHBsZVBheUxvZ29TdHlsZWAgc28gdGhh
dCB0aGUgV2ViUHJvY2VzcyBpc24ndCBhYmxlIHRvIHByb3ZpZGUgYW4gYXJiaXRyYXJ5IFBERgor
ICAgICAgICB0byBsb2FkIHdoZW4gcmVuZGVyaW5nIGAtd2Via2l0LW5hbWVkLWltYWdlKGFwcGxl
LXBheS1sb2dvLVt3aGl0ZSxibGFja10pYC4KKworICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Ro
ZW1lQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpUaGVtZUNvY29hOjpkcmF3TmFtZWRJbWFn
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpmaXRDb250ZXh0VG9Cb3gpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6cGFzc0tpdEJ1bmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpsb2FkUGFzc0tpdFBERlBhZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YXBw
bGVQYXlCdXR0b25Mb2dvQmxhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YXBwbGVQ
YXlCdXR0b25Mb2dvV2hpdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0FwcGxl
UGF5QnV0dG9uKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDb2Nv
YS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ29jb2E6OnBhaW50QXBwbGVQYXlC
dXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6dG9QS1BheW1lbnRCdXR0b25TdHlsZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjp0b1BLUGF5bWVudEJ1dHRvblR5cGUpOiBEZWxldGVkLgor
ICAgICAgICBNb3ZlIHRoZSBsb2dpYyB0aGF0IGRyYXdzIHRoZSBBcHBsZSBQYXkgYnV0dG9uIHRv
IGEgbWV0aG9kIG9uIGBHcmFwaGljc0NvbnRleHRgIHNvIHRoYXQgaXQKKyAgICAgICAgY2FuIGhv
b2sgaW50byB0aGUgdmFyaW91cyBHUFVQcm9jZXNzIGZsYWdzL3N5c3RlbXMuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpkcmF3U3lzdGVtSW1hZ2UpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6c2NhbGVUb0ZpdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
QmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmlmdXJj
YXRlZEdyYXBoaWNzQ29udGV4dDo6ZHJhd1N5c3RlbUltYWdlKTogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29y
ZTo6TnVsbEdyYXBoaWNzQ29udGV4dDo6ZHJhd1N5c3RlbUltYWdlKTogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6YXBwZW5kKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjphcHBseSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6ZGVzdHJveSk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6c2FmZUNvcHkgY29uc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1U
eXBlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OnNpemVPZkl0
ZW1JbkJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojppc0RyYXdpbmdJdGVt
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojppc0lubGluZUl0ZW0pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1N5c3RlbUltYWdlOjpEcmF3U3lzdGVt
SW1hZ2UpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3U3lzdGVt
SW1hZ2U6OnN5c3RlbUltYWdlIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd1N5c3RlbUltYWdlOjpkZXN0aW5hdGlvbiBjb25zdCk6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdTeXN0ZW1JbWFnZTo6Z2xvYmFsQm91bmRz
IGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1N5c3Rl
bUltYWdlOjpsb2NhbEJvdW5kcyBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRyYXdTeXN0ZW1JbWFnZTo6ZW5jb2RlIGNvbnN0KTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1N5c3RlbUltYWdlOjpkZWNvZGUpOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1N5c3RlbUltYWdlOjph
cHBseSBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Om9wZXJh
dG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlY29yZGVyOjpkcmF3U3lzdGVtSW1hZ2UpOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3Jk
RHJhd1N5c3RlbUltYWdlKTogQWRkZWQuCisgICAgICAgIEFkZCBuZXcgYERyYXdTeXN0ZW1JbWFn
ZWAgZGlzcGxheSBsaXN0IGl0ZW0gdG8gaGFuZGxlIEdQVVByb2Nlc3MgZHJhd2luZyBvZiBgU3lz
dGVtSW1hZ2VgLgorICAgICAgICBEcml2ZS1ieTogQWRkIGhlbHBlciBtZXRob2QgZm9yIGBzY2Fs
ZWBpbmcgdGhlIGBHcmFwaGljc0NvbnRleHRgIGJhc2VkIG9uIHRoZSBgYXNwZWN0UmF0aW9gCisg
ICAgICAgIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBgRmxv
YXRSZWN0YCAobW92ZWQgZnJvbSBgVGhlbWVDb2NvYS5tbWApLgorCisgICAgICAgICogSGVhZGVy
cy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2Eu
dHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAg
ICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAg
KiBNb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0Jhc2ljQ3JlZGVudGlhbC5oOgorICAgICAg
ICBEcml2ZS1ieTogVW5pZmllZCBzb3VyY2VzIGZpeGVzLgorCiAyMDIyLTAyLTI1ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmUtYWRkIFlv
dVR1YmVQbHVnaW5SZXBsYWNlbWVudCwgcmVtb3ZlZCBpbiByMjg1MjUyCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQppbmRleCAzY2I0YTQ5ZDk4NTEuLjkwNjg5ODg1YWQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBA
IC0xMzEsNiArMTMxLDggQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwog
CiAgICAgTW9kdWxlcy9haXJwbGF5L1BsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZp
ZXIuaAogCisgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUJ1dHRvblN5c3RlbUltYWdlLmgK
KyAgICBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TG9nb1N5c3RlbUltYWdlLmgKICAgICBNb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmgKICAgICBNb2R1bGVz
L2FwcGxlcGF5L1BheW1lbnQuaAogICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvbnRhY3Qu
aApAQCAtMTU3Miw2ICsxNTc0LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVB
REVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9TdHJpbmdUcnVuY2F0b3IuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1N5c3RlbUltYWdlLmgK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9UYWJTaXplLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9U
ZXh0UnVuLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5QnV0
dG9uU3lzdGVtSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlCdXR0b25TeXN0ZW1JbWFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uYjFmOWQ2NzM2YWYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheUJ1dHRvblN5c3RlbUltYWdlLmgKQEAgLTAsMCArMSwxNjMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBUFBMRV9QQVkpCisK
KyNpbmNsdWRlICJTeXN0ZW1JbWFnZS5oIgorI2luY2x1ZGUgPG9wdGlvbmFsPgorI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xhc3MgQXBwbGVQ
YXlCdXR0b25UeXBlIDogdWludDhfdCB7CisgICAgUGxhaW4sCisgICAgQnV5LAorICAgIFNldFVw
LAorICAgIERvbmF0ZSwKKyAgICBDaGVja091dCwKKyAgICBCb29rLAorICAgIFN1YnNjcmliZSwK
KyNpZiBFTkFCTEUoQVBQTEVfUEFZX05FV19CVVRUT05fVFlQRVMpCisgICAgUmVsb2FkLAorICAg
IEFkZE1vbmV5LAorICAgIFRvcFVwLAorICAgIE9yZGVyLAorICAgIFJlbnQsCisgICAgU3VwcG9y
dCwKKyAgICBDb250cmlidXRlLAorICAgIFRpcCwKKyNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZ
X05FV19CVVRUT05fVFlQRVMpCit9OworCitlbnVtIGNsYXNzIEFwcGxlUGF5QnV0dG9uU3R5bGUg
OiB1aW50OF90IHsKKyAgICBXaGl0ZSwKKyAgICBXaGl0ZU91dGxpbmUsCisgICAgQmxhY2ssCit9
OworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBBcHBsZVBheUJ1dHRvblN5c3RlbUltYWdlIGZpbmFs
IDogcHVibGljIFN5c3RlbUltYWdlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEFwcGxlUGF5
QnV0dG9uU3lzdGVtSW1hZ2U+IGNyZWF0ZShBcHBsZVBheUJ1dHRvblR5cGUgYXBwbGVQYXlCdXR0
b25UeXBlLCBBcHBsZVBheUJ1dHRvblN0eWxlIGFwcGxlUGF5QnV0dG9uU3R5bGUsIGNvbnN0IFN0
cmluZyYgbG9jYWxlLCBmbG9hdCBsYXJnZXN0Q29ybmVyUmFkaXVzKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZShhcHBsZVBheUJ1
dHRvblR5cGUsIGFwcGxlUGF5QnV0dG9uU3R5bGUsIGxvY2FsZSwgbGFyZ2VzdENvcm5lclJhZGl1
cykpOworICAgIH0KKworICAgIHZpcnR1YWwgfkFwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2UoKSA9
IGRlZmF1bHQ7CisKKyAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JikgY29uc3QgZmluYWw7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8UmVmPEFwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2U+PiBkZWNvZGUoRGVj
b2RlciYpOworCitwcml2YXRlOgorICAgIEFwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2UoQXBwbGVQ
YXlCdXR0b25UeXBlIGFwcGxlUGF5QnV0dG9uVHlwZSwgQXBwbGVQYXlCdXR0b25TdHlsZSBhcHBs
ZVBheUJ1dHRvblN0eWxlLCBjb25zdCBTdHJpbmcmIGxvY2FsZSwgZmxvYXQgbGFyZ2VzdENvcm5l
clJhZGl1cykKKyAgICAgICAgOiBTeXN0ZW1JbWFnZShTeXN0ZW1JbWFnZVR5cGU6OkFwcGxlUGF5
QnV0dG9uKQorICAgICAgICAsIG1fYXBwbGVQYXlCdXR0b25UeXBlKGFwcGxlUGF5QnV0dG9uVHlw
ZSkKKyAgICAgICAgLCBtX2FwcGxlUGF5QnV0dG9uU3R5bGUoYXBwbGVQYXlCdXR0b25TdHlsZSkK
KyAgICAgICAgLCBtX2xvY2FsZShsb2NhbGUpCisgICAgICAgICwgbV9sYXJnZXN0Q29ybmVyUmFk
aXVzKGxhcmdlc3RDb3JuZXJSYWRpdXMpCisgICAgeworICAgIH0KKworICAgIEFwcGxlUGF5QnV0
dG9uVHlwZSBtX2FwcGxlUGF5QnV0dG9uVHlwZTsKKyAgICBBcHBsZVBheUJ1dHRvblN0eWxlIG1f
YXBwbGVQYXlCdXR0b25TdHlsZTsKKyAgICBTdHJpbmcgbV9sb2NhbGU7CisgICAgZmxvYXQgbV9s
YXJnZXN0Q29ybmVyUmFkaXVzOworfTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQg
QXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
Cit7CisgICAgZW5jb2RlciA8PCBtX2FwcGxlUGF5QnV0dG9uVHlwZTsKKyAgICBlbmNvZGVyIDw8
IG1fYXBwbGVQYXlCdXR0b25TdHlsZTsKKyAgICBlbmNvZGVyIDw8IG1fbG9jYWxlOworICAgIGVu
Y29kZXIgPDwgbV9sYXJnZXN0Q29ybmVyUmFkaXVzOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPgorc3RkOjpvcHRpb25hbDxSZWY8QXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZT4+IEFwcGxl
UGF5QnV0dG9uU3lzdGVtSW1hZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworI2RlZmlu
ZSBERUNPREUobmFtZSwgdHlwZSkgXAorICAgIHN0ZDo6b3B0aW9uYWw8dHlwZT4gbmFtZTsgXAor
ICAgIGRlY29kZXIgPj4gbmFtZTsgXAorICAgIGlmICghbmFtZSkgXAorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OyBcCisKKyAgICBERUNPREUoYXBwbGVQYXlCdXR0b25UeXBlLCBBcHBsZVBh
eUJ1dHRvblR5cGUpCisgICAgREVDT0RFKGFwcGxlUGF5QnV0dG9uU3R5bGUsIEFwcGxlUGF5QnV0
dG9uU3R5bGUpCisgICAgREVDT0RFKGxvY2FsZSwgU3RyaW5nKQorICAgIERFQ09ERShsYXJnZXN0
Q29ybmVyUmFkaXVzLCBmbG9hdCkKKworI3VuZGVmIERFQ09ERQorCisgICAgcmV0dXJuIEFwcGxl
UGF5QnV0dG9uU3lzdGVtSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKCphcHBsZVBheUJ1dHRvblR5cGUp
LCBXVEZNb3ZlKCphcHBsZVBheUJ1dHRvblN0eWxlKSwgV1RGTW92ZSgqbG9jYWxlKSwgV1RGTW92
ZSgqbGFyZ2VzdENvcm5lclJhZGl1cykpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6QXBwbGVQYXlCdXR0b25TeXN0
ZW1JbWFnZSkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6U3lzdGVtSW1h
Z2UmIHN5c3RlbUltYWdlKSB7IHJldHVybiBzeXN0ZW1JbWFnZS5zeXN0ZW1JbWFnZVR5cGUoKSA9
PSBXZWJDb3JlOjpTeXN0ZW1JbWFnZVR5cGU6OkFwcGxlUGF5QnV0dG9uOyB9CitTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0VORCgpCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVj
dCBFbnVtVHJhaXRzPFdlYkNvcmU6OkFwcGxlUGF5QnV0dG9uVHlwZT4geworICAgIHVzaW5nIHZh
bHVlcyA9IEVudW1WYWx1ZXM8V2ViQ29yZTo6QXBwbGVQYXlCdXR0b25UeXBlCisgICAgICAgICwg
V2ViQ29yZTo6QXBwbGVQYXlCdXR0b25UeXBlOjpQbGFpbgorICAgICAgICAsIFdlYkNvcmU6OkFw
cGxlUGF5QnV0dG9uVHlwZTo6QnV5CisgICAgICAgICwgV2ViQ29yZTo6QXBwbGVQYXlCdXR0b25U
eXBlOjpTZXRVcAorICAgICAgICAsIFdlYkNvcmU6OkFwcGxlUGF5QnV0dG9uVHlwZTo6RG9uYXRl
CisgICAgICAgICwgV2ViQ29yZTo6QXBwbGVQYXlCdXR0b25UeXBlOjpDaGVja091dAorICAgICAg
ICAsIFdlYkNvcmU6OkFwcGxlUGF5QnV0dG9uVHlwZTo6Qm9vaworICAgICAgICAsIFdlYkNvcmU6
OkFwcGxlUGF5QnV0dG9uVHlwZTo6U3Vic2NyaWJlCisjaWYgRU5BQkxFKEFQUExFX1BBWV9ORVdf
QlVUVE9OX1RZUEVTKQorICAgICAgICAsIFdlYkNvcmU6OkFwcGxlUGF5QnV0dG9uVHlwZTo6UmVs
b2FkCisgICAgICAgICwgV2ViQ29yZTo6QXBwbGVQYXlCdXR0b25UeXBlOjpBZGRNb25leQorICAg
ICAgICAsIFdlYkNvcmU6OkFwcGxlUGF5QnV0dG9uVHlwZTo6VG9wVXAKKyAgICAgICAgLCBXZWJD
b3JlOjpBcHBsZVBheUJ1dHRvblR5cGU6Ok9yZGVyCisgICAgICAgICwgV2ViQ29yZTo6QXBwbGVQ
YXlCdXR0b25UeXBlOjpSZW50CisgICAgICAgICwgV2ViQ29yZTo6QXBwbGVQYXlCdXR0b25UeXBl
OjpTdXBwb3J0CisgICAgICAgICwgV2ViQ29yZTo6QXBwbGVQYXlCdXR0b25UeXBlOjpDb250cmli
dXRlCisgICAgICAgICwgV2ViQ29yZTo6QXBwbGVQYXlCdXR0b25UeXBlOjpUaXAKKyNlbmRpZiAv
LyBFTkFCTEUoQVBQTEVfUEFZX05FV19CVVRUT05fVFlQRVMpCisgICAgPjsKK307CisKK3RlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6QXBwbGVQYXlCdXR0b25TdHlsZT4gewor
ICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkFwcGxlUGF5
QnV0dG9uU3R5bGUsCisgICAgICAgIFdlYkNvcmU6OkFwcGxlUGF5QnV0dG9uU3R5bGU6OldoaXRl
LAorICAgICAgICBXZWJDb3JlOjpBcHBsZVBheUJ1dHRvblN0eWxlOjpXaGl0ZU91dGxpbmUsCisg
ICAgICAgIFdlYkNvcmU6OkFwcGxlUGF5QnV0dG9uU3R5bGU6OkJsYWNrCisgICAgPjsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BBWSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlCdXR0b25TeXN0
ZW1JbWFnZS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlCdXR0
b25TeXN0ZW1JbWFnZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LmM0N2YxMGM3OTQyMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZS5tbQpAQCAtMCwwICsxLDEwMCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQXBwbGVQYXlCdXR0b25T
eXN0ZW1JbWFnZS5oIgorCisjaWYgRU5BQkxFKEFQUExFX1BBWSkKKworI2ltcG9ydCAiRmxvYXRS
ZWN0LmgiCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgorI2ltcG9ydCA8cGFsL2NvY29h
L1Bhc3NLaXRTb2Z0TGluay5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBQS1Bh
eW1lbnRCdXR0b25UeXBlIHRvUEtQYXltZW50QnV0dG9uVHlwZShBcHBsZVBheUJ1dHRvblR5cGUg
dHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlw
ZTo6UGxhaW46CisgICAgICAgIHJldHVybiBQS1BheW1lbnRCdXR0b25UeXBlUGxhaW47CisgICAg
Y2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OkJ1eToKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1
dHRvblR5cGVCdXk7CisgICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OlNldFVwOgorICAgICAg
ICByZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZVNldFVwOworICAgIGNhc2UgQXBwbGVQYXlCdXR0
b25UeXBlOjpEb25hdGU6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRCdXR0b25UeXBlRG9uYXRl
OworICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpDaGVja091dDoKKyAgICAgICAgcmV0dXJu
IFBLUGF5bWVudEJ1dHRvblR5cGVDaGVja291dDsKKyAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlw
ZTo6Qm9vazoKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRvblR5cGVCb29rOworICAgIGNh
c2UgQXBwbGVQYXlCdXR0b25UeXBlOjpTdWJzY3JpYmU6CisgICAgICAgIHJldHVybiBQS1BheW1l
bnRCdXR0b25UeXBlU3Vic2NyaWJlOworI2lmIEhBVkUoUEFTU0tJVF9ORVdfQlVUVE9OX1RZUEVT
KQorICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpSZWxvYWQ6CisgICAgICAgIHJldHVybiBQ
S1BheW1lbnRCdXR0b25UeXBlUmVsb2FkOworICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpB
ZGRNb25leToKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRvblR5cGVBZGRNb25leTsKKyAg
ICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6VG9wVXA6CisgICAgICAgIHJldHVybiBQS1BheW1l
bnRCdXR0b25UeXBlVG9wVXA7CisgICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6Ok9yZGVyOgor
ICAgICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZU9yZGVyOworICAgIGNhc2UgQXBwbGVQ
YXlCdXR0b25UeXBlOjpSZW50OgorICAgICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZVJl
bnQ7CisgICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OlN1cHBvcnQ6CisgICAgICAgIHJldHVy
biBQS1BheW1lbnRCdXR0b25UeXBlU3VwcG9ydDsKKyAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlw
ZTo6Q29udHJpYnV0ZToKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRvblR5cGVDb250cmli
dXRlOworICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpUaXA6CisgICAgICAgIHJldHVybiBQ
S1BheW1lbnRCdXR0b25UeXBlVGlwOworI2VuZGlmIC8vIEhBVkUoUEFTU0tJVF9ORVdfQlVUVE9O
X1RZUEVTKQorICAgIH0KK30KKworc3RhdGljIFBLUGF5bWVudEJ1dHRvblN0eWxlIHRvUEtQYXlt
ZW50QnV0dG9uU3R5bGUoQXBwbGVQYXlCdXR0b25TdHlsZSBzdHlsZSkKK3sKKyAgICBzd2l0Y2gg
KHN0eWxlKSB7CisgICAgY2FzZSBBcHBsZVBheUJ1dHRvblN0eWxlOjpXaGl0ZToKKyAgICAgICAg
cmV0dXJuIFBLUGF5bWVudEJ1dHRvblN0eWxlV2hpdGU7CisgICAgY2FzZSBBcHBsZVBheUJ1dHRv
blN0eWxlOjpXaGl0ZU91dGxpbmU6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRCdXR0b25TdHls
ZVdoaXRlT3V0bGluZTsKKyAgICBjYXNlIEFwcGxlUGF5QnV0dG9uU3R5bGU6OkJsYWNrOgorICAg
ICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9uU3R5bGVCbGFjazsKKyAgICB9Cit9CisKK3ZvaWQg
QXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pIGNvbnN0Cit7CisgICAgYXV0byBwbGF0Zm9y
bUNvbnRleHQgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOworICAgIENHQ29udGV4dFN0YXRl
U2F2ZXIgc3RhdGVTYXZlcihwbGF0Zm9ybUNvbnRleHQpOworCisgICAgQ0dDb250ZXh0U2V0U2hv
dWxkU21vb3RoRm9udHMocGxhdGZvcm1Db250ZXh0LCB0cnVlKTsKKyAgICBDR0NvbnRleHRTY2Fs
ZUNUTShwbGF0Zm9ybUNvbnRleHQsIDEsIC0xKTsKKworICAgIFBLRHJhd0FwcGxlUGF5QnV0dG9u
V2l0aENvcm5lclJhZGl1cyhwbGF0Zm9ybUNvbnRleHQsIENHUmVjdE1ha2UoZGVzdGluYXRpb24u
eCgpLCAtZGVzdGluYXRpb24ubWF4WSgpLCBkZXN0aW5hdGlvbi53aWR0aCgpLCBkZXN0aW5hdGlv
bi5oZWlnaHQoKSksIDEuMCwgbV9sYXJnZXN0Q29ybmVyUmFkaXVzLCB0b1BLUGF5bWVudEJ1dHRv
blR5cGUobV9hcHBsZVBheUJ1dHRvblR5cGUpLCB0b1BLUGF5bWVudEJ1dHRvblN0eWxlKG1fYXBw
bGVQYXlCdXR0b25TdHlsZSksIG1fbG9jYWxlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BBWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2UuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjE5NDEwODM2NTk4YQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMb2dvU3lz
dGVtSW1hZ2UuaApAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKEFQUExFX1BBWSkKKworI2luY2x1ZGUgIlN5c3RlbUltYWdlLmgiCisjaW5j
bHVkZSA8b3B0aW9uYWw+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBBcHBsZVBheUxvZ29T
dHlsZSA6IHVpbnQ4X3QgeworICAgIFdoaXRlLAorICAgIEJsYWNrLAorfTsKKworY2xhc3MgV0VC
Q09SRV9FWFBPUlQgQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2UgZmluYWwgOiBwdWJsaWMgU3lzdGVt
SW1hZ2UgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8QXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2U+
IGNyZWF0ZShBcHBsZVBheUxvZ29TdHlsZSBhcHBsZVBheUxvZ29TdHlsZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFwcGxlUGF5TG9nb1N5c3RlbUltYWdlKGFwcGxlUGF5
TG9nb1N0eWxlKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+QXBwbGVQYXlMb2dvU3lzdGVtSW1h
Z2UoKSA9IGRlZmF1bHQ7CisKKyAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JikgY29uc3QgZmluYWw7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPEFwcGxlUGF5TG9nb1N5c3RlbUltYWdlPj4gZGVjb2Rl
KERlY29kZXImKTsKKworcHJpdmF0ZToKKyAgICBBcHBsZVBheUxvZ29TeXN0ZW1JbWFnZShBcHBs
ZVBheUxvZ29TdHlsZSBhcHBsZVBheUxvZ29TdHlsZSkKKyAgICAgICAgOiBTeXN0ZW1JbWFnZShT
eXN0ZW1JbWFnZVR5cGU6OkFwcGxlUGF5TG9nbykKKyAgICAgICAgLCBtX2FwcGxlUGF5TG9nb1N0
eWxlKGFwcGxlUGF5TG9nb1N0eWxlKQorICAgIHsKKyAgICB9CisKKyAgICBBcHBsZVBheUxvZ29T
dHlsZSBtX2FwcGxlUGF5TG9nb1N0eWxlOworfTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4K
K3ZvaWQgQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAoreworICAgIGVuY29kZXIgPDwgbV9hcHBsZVBheUxvZ29TdHlsZTsKK30KKwordGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8UmVmPEFwcGxlUGF5TG9nb1N5c3RlbUlt
YWdlPj4gQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
eworI2RlZmluZSBERUNPREUobmFtZSwgdHlwZSkgXAorICAgIHN0ZDo6b3B0aW9uYWw8dHlwZT4g
bmFtZTsgXAorICAgIGRlY29kZXIgPj4gbmFtZTsgXAorICAgIGlmICghbmFtZSkgXAorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OyBcCisKKyAgICBERUNPREUoYXBwbGVQYXlMb2dvU3R5bGUs
IEFwcGxlUGF5TG9nb1N0eWxlKQorCisjdW5kZWYgREVDT0RFCisKKyAgICByZXR1cm4gQXBwbGVQ
YXlMb2dvU3lzdGVtSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKCphcHBsZVBheUxvZ29TdHlsZSkpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVH
SU4oV2ViQ29yZTo6QXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2UpCisgICAgc3RhdGljIGJvb2wgaXNU
eXBlKGNvbnN0IFdlYkNvcmU6OlN5c3RlbUltYWdlJiBzeXN0ZW1JbWFnZSkgeyByZXR1cm4gc3lz
dGVtSW1hZ2Uuc3lzdGVtSW1hZ2VUeXBlKCkgPT0gV2ViQ29yZTo6U3lzdGVtSW1hZ2VUeXBlOjpB
cHBsZVBheUxvZ287IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKworbmFtZXNwYWNl
IFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6QXBwbGVQYXlM
b2dvU3R5bGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJD
b3JlOjpBcHBsZVBheUxvZ29TdHlsZSwKKyAgICAgICAgV2ViQ29yZTo6QXBwbGVQYXlMb2dvU3R5
bGU6OldoaXRlLAorICAgICAgICBXZWJDb3JlOjpBcHBsZVBheUxvZ29TdHlsZTo6QmxhY2sKKyAg
ICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBFTkFCTEUoQVBQTEVf
UEFZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eUxvZ29TeXN0ZW1JbWFnZS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlMb2dvU3lzdGVtSW1hZ2UubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi5lNjZlZDFhMjFiYzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TG9nb1N5c3RlbUltYWdlLm1tCkBAIC0wLDAgKzEsMTE4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJBcHBsZVBheUxv
Z29TeXN0ZW1JbWFnZS5oIgorCisjaWYgRU5BQkxFKEFQUExFX1BBWSkKKworI2ltcG9ydCAiRmxv
YXRSZWN0LmgiCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgTlNCdW5kbGUgKnBhc3NL
aXRCdW5kbGUoKQoreworICAgIHN0YXRpYyBOU0J1bmRsZSAqcGFzc0tpdEJ1bmRsZTsKKyAgICBz
dGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNl
VG9rZW4sIF57CisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBwYXNzS2l0QnVuZGxlID0gW05T
QnVuZGxlIGJ1bmRsZVdpdGhVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpAIi9TeXN0ZW0vTGli
cmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9QYXNzS2l0LmZyYW1ld29yayIgaXNEaXJlY3Rvcnk6WUVT
XV07CisjZWxzZQorICAgICAgICBkbG9wZW4oIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1Bh
c3NLaXQuZnJhbWV3b3JrL1Bhc3NLaXQiLCBSVExEX05PVyk7CisgICAgICAgIHBhc3NLaXRCdW5k
bGUgPSBbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6TlNDbGFzc0Zyb21TdHJpbmcoQCJQS1BheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIiKV07CisjZW5kaWYKKyAgICB9KTsKKyAgICBy
ZXR1cm4gcGFzc0tpdEJ1bmRsZTsKK30KKworc3RhdGljIFJldGFpblB0cjxDR1BERlBhZ2VSZWY+
IGxvYWRQYXNzS2l0UERGUGFnZShOU1N0cmluZyAqaW1hZ2VOYW1lKQoreworICAgIE5TVVJMICp1
cmwgPSBbcGFzc0tpdEJ1bmRsZSgpIFVSTEZvclJlc291cmNlOmltYWdlTmFtZSB3aXRoRXh0ZW5z
aW9uOkAicGRmIl07CisgICAgaWYgKCF1cmwpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IGF1dG8gZG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoVVJMKChDRlVS
TFJlZil1cmwpKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICBpZiAoIUNHUERGRG9jdW1lbnRHZXROdW1iZXJPZlBhZ2VzKGRvY3VtZW50LmdldCgpKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIENHUERGRG9jdW1lbnRHZXRQYWdl
KGRvY3VtZW50LmdldCgpLCAxKTsKK30KKworc3RhdGljIENHUERGUGFnZVJlZiBhcHBsZVBheUxv
Z29XaGl0ZSgpCit7CisgICAgc3RhdGljIENHUERGUGFnZVJlZiBsb2dvUGFnZTsKKyAgICBzdGF0
aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9r
ZW4sIF57CisgICAgICAgIGxvZ29QYWdlID0gbG9hZFBhc3NLaXRQREZQYWdlKEAiUGF5QnV0dG9u
TG9nb1doaXRlIikubGVha1JlZigpOworICAgIH0pOworICAgIHJldHVybiBsb2dvUGFnZTsKK30K
Kworc3RhdGljIENHUERGUGFnZVJlZiBhcHBsZVBheUxvZ29CbGFjaygpCit7CisgICAgc3RhdGlj
IENHUERGUGFnZVJlZiBsb2dvUGFnZTsKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VU
b2tlbjsKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisgICAgICAgIGxvZ29QYWdl
ID0gbG9hZFBhc3NLaXRQREZQYWdlKEAiUGF5QnV0dG9uTG9nb0JsYWNrIikubGVha1JlZigpOwor
ICAgIH0pOworICAgIHJldHVybiBsb2dvUGFnZTsKK30KKworc3RhdGljIENHUERGUGFnZVJlZiBh
cHBsZVBheUxvZ29Gb3JTdHlsZShBcHBsZVBheUxvZ29TdHlsZSBzdHlsZSkKK3sKKyAgICBzd2l0
Y2ggKHN0eWxlKSB7CisgICAgY2FzZSBBcHBsZVBheUxvZ29TdHlsZTo6V2hpdGU6CisgICAgICAg
IHJldHVybiBhcHBsZVBheUxvZ29XaGl0ZSgpOworCisgICAgY2FzZSBBcHBsZVBheUxvZ29TdHls
ZTo6QmxhY2s6CisgICAgICAgIHJldHVybiBhcHBsZVBheUxvZ29CbGFjaygpOworICAgIH0KKwor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lk
IEFwcGxlUGF5TG9nb1N5c3RlbUltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikgY29uc3QKK3sKKyAgICBDR1BERlBhZ2VSZWYg
cGFnZSA9IGFwcGxlUGF5TG9nb0ZvclN0eWxlKG1fYXBwbGVQYXlMb2dvU3R5bGUpOworICAgIGlm
ICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ0dTaXplIHBkZlNpemUgPSBDR1BERlBh
Z2VHZXRCb3hSZWN0KHBhZ2UsIGtDR1BERk1lZGlhQm94KS5zaXplOworCisgICAgY29udGV4dC50
cmFuc2xhdGUoZGVzdGluYXRpb24ueCgpLCBkZXN0aW5hdGlvbi55KCkpOworICAgIGNvbnRleHQu
c2NhbGVUb0ZpdChGbG9hdFNpemUocGRmU2l6ZSksIGRlc3RpbmF0aW9uLnNpemUoKSk7CisKKyAg
ICBjb250ZXh0LnRyYW5zbGF0ZSgwLCBwZGZTaXplLmhlaWdodCk7CisgICAgY29udGV4dC5zY2Fs
ZShGbG9hdFNpemUoMSwgLTEpKTsKKworICAgIENHQ29udGV4dERyYXdQREZQYWdlKGNvbnRleHQu
cGxhdGZvcm1Db250ZXh0KCksIHBhZ2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuY3BwCmluZGV4IDRhOTQzMjI0OWQ1
Mi4uNzYyZWI5Njk4ZjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L1BheW1lbnRDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5B
QkxFKEFQUExFX1BBWSkKIAogI2luY2x1ZGUgIkFwcGxlUGF5Q291cG9uQ29kZVVwZGF0ZS5oIgor
I2luY2x1ZGUgIkFwcGxlUGF5UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQuaCIKICNpbmNsdWRl
ICJBcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGUuaCIKICNpbmNsdWRlICJBcHBsZVBheVNoaXBw
aW5nQ29udGFjdFVwZGF0ZS5oIgogI2luY2x1ZGUgIkFwcGxlUGF5U2hpcHBpbmdNZXRob2QuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQv
QmFzaWNDcmVkZW50aWFsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5h
Z2VtZW50L0Jhc2ljQ3JlZGVudGlhbC5oCmluZGV4IDVkN2U0NDEyMzY0ZS4uYTM4MjMwYjljOTU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50
L0Jhc2ljQ3JlZGVudGlhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlh
bG1hbmFnZW1lbnQvQmFzaWNDcmVkZW50aWFsLmgKQEAgLTMzLDYgKzMzLDEwIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRG9jdW1lbnQ7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBJRExU
eXBlPiBjbGFzcyBET01Qcm9taXNlRGVmZXJyZWQ7CitzdHJ1Y3QgSURMQm9vbGVhbjsKKwogY2xh
c3MgQmFzaWNDcmVkZW50aWFsIDogcHVibGljIFJlZkNvdW50ZWQ8QmFzaWNDcmVkZW50aWFsPiB7
CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBUeXBlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cmlu
ZGV4IDQwZGRiMWY2ZDE4MS4uYWE0NGY1ZjUzMTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQK
QEAgLTcxLDkgKzcxLDExIEBAIEpTQXBwbGVQYXlTaGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQu
Y3BwCiBKU0FwcGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGUuY3BwCiBKU0FwcGxlUGF5VmFsaWRh
dGVNZXJjaGFudEV2ZW50LmNwcAogTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXIuY3BwCitNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2UubW0KIE1v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlDb3Vwb25Db2RlQ2hhbmdlZEV2ZW50LmNwcAogTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheUNhbmNlbEV2ZW50LmNwcAogTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheUNvbnRhY3RGaWVsZC5jcHAKK01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMb2dvU3lzdGVt
SW1hZ2UubW0KIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlNZXJjaGFudENhcGFiaWxpdHkuY3Bw
CiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQuY3Bw
CiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudC5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA2YjQyZTVmYWQyOTYuLjljOTE5ZWI1MGJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzEyMiw2ICszMTIyLDkgQEAKIAkJ
OTVBQTU3MTAyNUVFRUQzMjAwNEU5MjgzIC8qIEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1QUE1NzBFMjVF
RUVEMzEwMDRFOTI4MyAvKiBJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmggKi87IH07CiAJCTk1
QkE0RkFEMjZEOTgxQUEwMDJBMEU2MiAvKiBQbGF0Zm9ybVZpZXdDb250cm9sbGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUJBNEZBQjI2RDk4MUFB
MDAyQTBFNjIgLyogUGxhdGZvcm1WaWV3Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk1REY5RDI1MjUyQkVEQjIwMDBEN0Y0NiAv
KiBQb2ludGVyQ2hhcmFjdGVyaXN0aWNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5NURGOUQyMzI1MkJFRDk5MDAwRDdGNDYgLyogUG9pbnRlckNoYXJh
Y3RlcmlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTk1RTlGNDQ2MjdDOUEzOUMwMDk0NTMzNyAvKiBTeXN0ZW1JbWFnZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTVFOUY0NDQyN0M5QTM5QjAw
OTQ1MzM3IC8qIFN5c3RlbUltYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJOTVFOUY0NEIyN0M5RjY2NjAwOTQ1MzM3IC8qIEFwcGxlUGF5QnV0
dG9uU3lzdGVtSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk1RTlGNDQ5MjdDOUY2NjYwMDk0NTMzNyAvKiBBcHBsZVBheUJ1dHRvblN5c3RlbUlt
YWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
OTVFOUY0NEYyN0M5RjY5QzAwOTQ1MzM3IC8qIEFwcGxlUGF5TG9nb1N5c3RlbUltYWdlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUU5RjQ0RDI3QzlG
NjlCMDA5NDUzMzcgLyogQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5NUVBRDU2MzI2NkVGMkRCMDA0QjlD
RjEgLyogQXBwbGVQYXlDb3Vwb25Db2RlQ2hhbmdlZEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUVBRDU1RjI2NkVGMkRBMDA0QjlDRjEgLyog
QXBwbGVQYXlDb3Vwb25Db2RlQ2hhbmdlZEV2ZW50LmggKi87IH07CiAJCTk1RUFENTZBMjY2RUYy
RkEwMDRCOUNGMSAvKiBBcHBsZVBheURhdGVDb21wb25lbnRzUmFuZ2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1RUFENTY2MjY2RUYyRjgwMDRCOUNG
MSAvKiBBcHBsZVBheURhdGVDb21wb25lbnRzUmFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5NUVBRDU2RDI2NkVGMkZBMDA0QjlDRjEgLyog
QXBwbGVQYXlEYXRlQ29tcG9uZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTVFQUQ1NjkyNjZFRjJGOTAwNEI5Q0YxIC8qIEFwcGxlUGF5RGF0ZUNv
bXBvbmVudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTMwODgsNiArMTMwOTEsMTEgQEAKIAkJOTVBQTU3MEUyNUVFRUQzMTAwNEU5MjgzIC8q
IEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5NUJBNEZBQjI2RDk4MUFBMDAyQTBFNjIgLyogUGxhdGZvcm1WaWV3Q29udHJvbGxl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVZpZXdDb250cm9s
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1REY5RDIzMjUyQkVEOTkwMDBE
N0Y0NiAvKiBQb2ludGVyQ2hhcmFjdGVyaXN0aWNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvaW50ZXJD
aGFyYWN0ZXJpc3RpY3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTVFOUY0NDQy
N0M5QTM5QjAwOTQ1MzM3IC8qIFN5c3RlbUltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN5c3RlbUltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk1
RTlGNDQ4MjdDOUY2NjUwMDk0NTMzNyAvKiBBcHBsZVBheUJ1dHRvblN5c3RlbUltYWdlLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXBwbGVQYXlCdXR0b25TeXN0
ZW1JbWFnZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTVFOUY0NDkyN0M5RjY2
NjAwOTQ1MzM3IC8qIEFwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5NUU5RjQ0QzI3QzlGNjlCMDA5NDUzMzcgLyogQXBwbGVQYXlM
b2dvU3lzdGVtSW1hZ2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBBcHBsZVBheUxvZ29TeXN0ZW1JbWFnZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTVFOUY0NEQyN0M5RjY5QjAwOTQ1MzM3IC8qIEFwcGxlUGF5TG9nb1N5c3RlbUltYWdlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcGxlUGF5TG9nb1N5c3RlbUltYWdl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1RUFENTVGMjY2RUYyREEwMDRCOUNG
MSAvKiBBcHBsZVBheUNvdXBvbkNvZGVDaGFuZ2VkRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXBwbGVQYXlDb3Vwb25Db2RlQ2hhbmdlZEV2ZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1RUFENTYxMjY2RUYyREEwMDRCOUNGMSAvKiBBcHBsZVBh
eUNvdXBvbkNvZGVDaGFuZ2VkRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEFwcGxl
UGF5Q291cG9uQ29kZUNoYW5nZWRFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTk1RUFENTYyMjY2RUYyREIwMDRCOUNGMSAvKiBBcHBsZVBheUNvdXBvbkNvZGVDaGFuZ2Vk
RXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXBwbGVQYXlD
b3Vwb25Db2RlQ2hhbmdlZEV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE5NjQxLDYgKzE5NjQ5LDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTFBNThFODY5MUQxOUQ4
QzAwMEMwRUE3MyAvKiBjb2NvYSAqLywKIAkJCQlBMURGNUE5RjFGN0VFMEYxMDA1OEE0NzcgLyog
cGF5bWVudHJlcXVlc3QgKi8sCisJCQkJOTVFOUY0NDkyN0M5RjY2NjAwOTQ1MzM3IC8qIEFwcGxl
UGF5QnV0dG9uU3lzdGVtSW1hZ2UuaCAqLywKKwkJCQk5NUU5RjQ0ODI3QzlGNjY1MDA5NDUzMzcg
LyogQXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZS5tbSAqLywKIAkJCQlBMTEzRTAyQzIzMzFBMEU0
MDA5QzMzQTAgLyogQXBwbGVQYXlDYW5jZWxFdmVudC5jcHAgKi8sCiAJCQkJQTExM0UwMkIyMzMx
QTBFNDAwOUMzM0EwIC8qIEFwcGxlUGF5Q2FuY2VsRXZlbnQuaCAqLywKIAkJCQlBMTk1NkYxODIz
MzFBNDY4MDA1N0U5RDIgLyogQXBwbGVQYXlDYW5jZWxFdmVudC5pZGwgKi8sCkBAIC0xOTY3OCw2
ICsxOTY4OCw4IEBACiAJCQkJQTEzQjYxNjkyNDc1REZDNTAwQkJFNkRFIC8qIEFwcGxlUGF5SW5z
dGFsbG1lbnRSZXRhaWxDaGFubmVsLmlkbCAqLywKIAkJCQk3QzY1NzlFMjFFMDA4MjcwMDBFM0Ey
N0EgLyogQXBwbGVQYXlMaW5lSXRlbS5oICovLAogCQkJCTdDNjU3OUU0MUUwMDgyQzgwMEUzQTI3
QSAvKiBBcHBsZVBheUxpbmVJdGVtLmlkbCAqLywKKwkJCQk5NUU5RjQ0RDI3QzlGNjlCMDA5NDUz
MzcgLyogQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2UuaCAqLywKKwkJCQk5NUU5RjQ0QzI3QzlGNjlC
MDA5NDUzMzcgLyogQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2UubW0gKi8sCiAJCQkJQTFERjVBQTgx
RjgwNzBENDAwNThBNDc3IC8qIEFwcGxlUGF5TWVyY2hhbnRDYXBhYmlsaXR5LmNwcCAqLywKIAkJ
CQlBMURGNUE4MzFGN0VCREYyMDA1OEE0NzcgLyogQXBwbGVQYXlNZXJjaGFudENhcGFiaWxpdHku
aCAqLywKIAkJCQlBMURGNUE4NTFGN0VCREYyMDA1OEE0NzcgLyogQXBwbGVQYXlNZXJjaGFudENh
cGFiaWxpdHkuaWRsICovLApAQCAtMjkxNjIsNiArMjkxNzQsNyBAQAogCQkJCUIyMzU0MEYwMEQw
MDc4MkUwMDIzODJGQSAvKiBTdHJpbmdUcnVuY2F0b3IuY3BwICovLAogCQkJCUIyMzU0MEYxMEQw
MDc4MkUwMDIzODJGQSAvKiBTdHJpbmdUcnVuY2F0b3IuaCAqLywKIAkJCQkwODc1NThDNDEzQjRB
NTdEMDBGNDkzMDcgLyogU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmggKi8sCisJCQkJ
OTVFOUY0NDQyN0M5QTM5QjAwOTQ1MzM3IC8qIFN5c3RlbUltYWdlLmggKi8sCiAJCQkJM0JCNkI4
MEYyMkE3RDMxMTAwM0EyQTY5IC8qIFRhYlNpemUuaCAqLywKIAkJCQkzNzZEQ0NFMDEzQjRGOTY2
MDAyRUJFRkMgLyogVGV4dFJ1bi5jcHAgKi8sCiAJCQkJQTgyNEI0NjQwRTJFRjJFQTAwODFBN0I3
IC8qIFRleHRSdW4uaCAqLywKQEAgLTMzNTA5LDYgKzMzNTIyLDcgQEAKIAkJCQk0NDI1MDcwOTI1
ODI5QTI3MDBDMDkzNjggLyogQXBwSGlnaGxpZ2h0U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTVGQjY2MjUyNkQ3MDMzQzAwNjhBQzY3IC8qIEFwcGxlUGF5QU1TVUlQYXltZW50SGFuZGxl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTVGQjY2MjYyNkQ3MDMzQzAwNjhBQzY3IC8qIEFwcGxl
UGF5QU1TVUlSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk5NUU5RjQ0QjI3QzlGNjY2MDA5
NDUzMzcgLyogQXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTExM0UwMkUyMzMxQTEzNDAwOUMzM0EwIC8qIEFwcGxlUGF5Q2FuY2VsRXZlbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUExREY1QTk0MUY3RUM0MzIwMDU4QTQ3NyAvKiBBcHBsZVBheUNvbnRhY3RG
aWVsZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTVFQUQ1NjMyNjZFRjJEQjAwNEI5Q0YxIC8qIEFw
cGxlUGF5Q291cG9uQ29kZUNoYW5nZWRFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzUyNiw2
ICszMzU0MCw3IEBACiAJCQkJQTExNzUwQTEyNDc0NjhGNzAwRDREMjZDIC8qIEFwcGxlUGF5SW5z
dGFsbG1lbnRJdGVtVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEzQjYxNkIyNDc1RTA0ODAw
QkJFNkRFIC8qIEFwcGxlUGF5SW5zdGFsbG1lbnRSZXRhaWxDaGFubmVsLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3QzY1NzlFMzFFMDA4MjcwMDBFM0EyN0EgLyogQXBwbGVQYXlMaW5lSXRlbS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJOTVFOUY0NEYyN0M5RjY5QzAwOTQ1MzM3IC8qIEFwcGxlUGF5TG9n
b1N5c3RlbUltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMURGNUE4NjFGN0VCREYyMDA1OEE0
NzcgLyogQXBwbGVQYXlNZXJjaGFudENhcGFiaWxpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUEx
RjZDRkZGMUZFMDk2MjEwMDE4MDc4QyAvKiBBcHBsZVBheU1vZGlmaWVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3QzY1MjMwMTFFMDBEMDM0MDA2NzdGMjIgLyogQXBwbGVQYXlQYXltZW50LmggaW4g
SGVhZGVycyAqLywKQEAgLTM3NzQxLDYgKzM3NzU2LDcgQEAKIAkJCQlFMTgwODExNzE2RkNGOUNC
MDBCODBEMDcgLyogU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUMxNjkyREQ1MjNEMjNFMDgwMDZFODhGNyAvKiBTeXN0ZW1CYXR0ZXJ5LmggaW4gSGVhZGVycyAq
LywKIAkJCQlFNEU4QjRFQzIxNkI3OUU1MDBCODgzNEQgLyogU3lzdGVtRm9udERhdGFiYXNlQ29y
ZVRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTk1RTlGNDQ2MjdDOUEzOUMwMDk0NTMzNyAvKiBT
eXN0ZW1JbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwM0MwNzQxODg0Njk1RTAwQTVGOENB
IC8qIFN5c3RlbU1lbW9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTNDMDQxMzgyNTRDQjMwRDAw
MjFEMEU2IC8qIFN5c3RlbVNvdW5kRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzQzA0
MTJGMjU0Q0EyOUIwMDIxRDBFNiAvKiBTeXN0ZW1Tb3VuZE1hbmFnZXIuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGlu
Z3MuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKaW5k
ZXggMGVkOWNjOGE1ZTc5Li41MDczZWNhYjRiOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaApAQCAtMjksNiArMjksNyBAQAogCiAjcHJhZ21h
IG9uY2UKIAorI2luY2x1ZGUgIkFwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2UuaCIKICNpbmNsdWRl
ICJDU1NDYWxjVmFsdWUuaCIKICNpbmNsdWRlICJDU1NGb250RmFtaWx5LmgiCiAjaW5jbHVkZSAi
Q1NTUHJpbWl0aXZlVmFsdWUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1RoZW1lQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVt
ZUNvY29hLm1tCmluZGV4IDkxMmFiNmE5ZTE2OC4uNjEyZjZmM2NiNDNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNp
bXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVGhlbWVDb2NvYS5oIgogCisjaW1wb3J0ICJBcHBs
ZVBheUxvZ29TeXN0ZW1JbWFnZS5oIgogI2ltcG9ydCAiRm9udENhc2NhZGUuaCIKICNpbXBvcnQg
IkdyYXBoaWNzQ29udGV4dC5oIgogI2ltcG9ydCAiSW1hZ2VCdWZmZXIuaCIKQEAgLTMzLDEwMSAr
MzQsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyB2b2lkIGZpdENvbnRleHRU
b0JveChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYgc3JjSW1hZ2VT
aXplLCBjb25zdCBGbG9hdFNpemUmIGRzdFNpemUpCi17Ci0gICAgZmxvYXQgc3JjUmF0aW8gPSBz
cmNJbWFnZVNpemUuYXNwZWN0UmF0aW8oKTsKLSAgICBmbG9hdCBkc3RSYXRpbyA9IGRzdFNpemUu
YXNwZWN0UmF0aW8oKTsKLQotICAgIGZsb2F0IHNjYWxlOwotICAgIGZsb2F0IHRyYW5zbGF0aW9u
WCA9IDA7Ci0gICAgZmxvYXQgdHJhbnNsYXRpb25ZID0gMDsKLSAgICBpZiAoc3JjUmF0aW8gPiBk
c3RSYXRpbykgewotICAgICAgICBzY2FsZSA9IGRzdFNpemUud2lkdGgoKSAvIHNyY0ltYWdlU2l6
ZS53aWR0aCgpOwotICAgICAgICB0cmFuc2xhdGlvblkgPSAoZHN0U2l6ZS5oZWlnaHQoKSAtIHNj
YWxlICogc3JjSW1hZ2VTaXplLmhlaWdodCgpKSAvIDI7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
c2NhbGUgPSBkc3RTaXplLmhlaWdodCgpIC8gc3JjSW1hZ2VTaXplLmhlaWdodCgpOwotICAgICAg
ICB0cmFuc2xhdGlvblggPSAoZHN0U2l6ZS53aWR0aCgpIC0gc2NhbGUgKiBzcmNJbWFnZVNpemUu
d2lkdGgoKSkgLyAyOwotICAgIH0KLSAgICBjb250ZXh0LnRyYW5zbGF0ZSh0cmFuc2xhdGlvblgs
IHRyYW5zbGF0aW9uWSk7Ci0gICAgY29udGV4dC5zY2FsZShzY2FsZSk7Ci19Ci0KLSNpZiBFTkFC
TEUoQVBQTEVfUEFZKQotCi1zdGF0aWMgTlNCdW5kbGUgKnBhc3NLaXRCdW5kbGUoKQotewotICAg
IHN0YXRpYyBOU0J1bmRsZSAqcGFzc0tpdEJ1bmRsZTsKLSAgICBzdGF0aWMgZGlzcGF0Y2hfb25j
ZV90IG9uY2VUb2tlbjsKLSAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0jaWYgUExB
VEZPUk0oTUFDKQotICAgICAgICBwYXNzS2l0QnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZVdpdGhV
Ukw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpAIi9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3
b3Jrcy9QYXNzS2l0LmZyYW1ld29yayIgaXNEaXJlY3Rvcnk6WUVTXV07Ci0jZWxzZQotICAgICAg
ICBkbG9wZW4oIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1Bhc3NLaXQuZnJhbWV3b3JrL1Bh
c3NLaXQiLCBSVExEX05PVyk7Ci0gICAgICAgIHBhc3NLaXRCdW5kbGUgPSBbTlNCdW5kbGUgYnVu
ZGxlRm9yQ2xhc3M6TlNDbGFzc0Zyb21TdHJpbmcoQCJQS1BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXIiKV07Ci0jZW5kaWYKLSAgICB9KTsKLQotICAgIHJldHVybiBwYXNzS2l0QnVu
ZGxlOwotfQotCi1zdGF0aWMgUmV0YWluUHRyPENHUERGUGFnZVJlZj4gbG9hZFBhc3NLaXRQREZQ
YWdlKE5TU3RyaW5nICppbWFnZU5hbWUpCi17Ci0gICAgTlNVUkwgKnVybCA9IFtwYXNzS2l0QnVu
ZGxlKCkgVVJMRm9yUmVzb3VyY2U6aW1hZ2VOYW1lIHdpdGhFeHRlbnNpb246QCJwZGYiXTsKLSAg
ICBpZiAoIXVybCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvIGRvY3VtZW50
ID0gYWRvcHRDRihDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFVSTCgoQ0ZVUkxSZWYpdXJsKSk7Ci0g
ICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAoIUNH
UERGRG9jdW1lbnRHZXROdW1iZXJPZlBhZ2VzKGRvY3VtZW50LmdldCgpKSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gQ0dQREZEb2N1bWVudEdldFBhZ2UoZG9jdW1lbnQu
Z2V0KCksIDEpOwotfTsKLQotc3RhdGljIENHUERGUGFnZVJlZiBhcHBsZVBheUJ1dHRvbkxvZ29C
bGFjaygpCi17Ci0gICAgc3RhdGljIENHUERGUGFnZVJlZiBsb2dvUGFnZTsKLSAgICBzdGF0aWMg
ZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4s
IF57Ci0gICAgICAgIGxvZ29QYWdlID0gbG9hZFBhc3NLaXRQREZQYWdlKEAiUGF5QnV0dG9uTG9n
b0JsYWNrIikubGVha1JlZigpOwotICAgIH0pOwotCi0gICAgcmV0dXJuIGxvZ29QYWdlOwotfTsK
LQotc3RhdGljIENHUERGUGFnZVJlZiBhcHBsZVBheUJ1dHRvbkxvZ29XaGl0ZSgpCi17Ci0gICAg
c3RhdGljIENHUERGUGFnZVJlZiBsb2dvUGFnZTsKLSAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90
IG9uY2VUb2tlbjsKLSAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIGxv
Z29QYWdlID0gbG9hZFBhc3NLaXRQREZQYWdlKEAiUGF5QnV0dG9uTG9nb1doaXRlIikubGVha1Jl
ZigpOwotICAgIH0pOwotCi0gICAgcmV0dXJuIGxvZ29QYWdlOwotfTsKLQotc3RhdGljIHZvaWQg
ZHJhd0FwcGxlUGF5QnV0dG9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ0dQREZQYWdlUmVm
IHBhZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKLXsKLSAgICAvLyBDcmVhdGUgYSBsb2NhbCBJ
bWFnZUJ1ZmZlciBiZWNhdXNlIGRlY29kaW5nIHRoZSBQREYgaW1hZ2VzIGhhcyB0byBoYXBwZW4g
aW4gV2ViUHJvY2Vzcy4KLSAgICBhdXRvIGltYWdlQnVmZmVyID0gY29udGV4dC5jcmVhdGVDb21w
YXRpYmxlSW1hZ2VCdWZmZXIoc2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFJl
bmRlcmluZ01ldGhvZDo6TG9jYWwpOwotICAgIGlmICghaW1hZ2VCdWZmZXIpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIENHU2l6ZSBwZGZTaXplID0gQ0dQREZQYWdlR2V0Qm94UmVjdChwYWdlLCBr
Q0dQREZNZWRpYUJveCkuc2l6ZTsKLQotICAgIGF1dG8mIGltYWdlQ29udGV4dCA9IGltYWdlQnVm
ZmVyLT5jb250ZXh0KCk7Ci0gICAgZml0Q29udGV4dFRvQm94KGltYWdlQ29udGV4dCwgRmxvYXRT
aXplKHBkZlNpemUpLCBzaXplKTsKLSAgICBpbWFnZUNvbnRleHQudHJhbnNsYXRlKDAsIHBkZlNp
emUuaGVpZ2h0KTsKLSAgICBpbWFnZUNvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7Ci0g
ICAgQ0dDb250ZXh0RHJhd1BERlBhZ2UoaW1hZ2VDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBw
YWdlKTsKLQotICAgIGNvbnRleHQuZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKFdURk1vdmUoaW1h
Z2VCdWZmZXIpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBzaXplKSk7Ci19OwotCi0j
ZW5kaWYKLQogdm9pZCBUaGVtZUNvY29hOjpkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmIG5h
bWUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRTaXplJiBzaXplKSBjb25z
dAogewogICAgIGlmIChuYW1lID09ICJ3aXJlbGVzcy1wbGF5YmFjayIpIHsKQEAgLTEzNSw3ICs0
MSw3IEBAIHZvaWQgVGhlbWVDb2NvYTo6ZHJhd05hbWVkSW1hZ2UoY29uc3QgU3RyaW5nJiBuYW1l
LCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvCiAgICAgICAgIGNvbnRleHQuc2V0RmlsbENv
bG9yKENvbG9yOjpibGFjayk7CiAKICAgICAgICAgRmxvYXRTaXplIHdpcmVsZXNzUGxheWJhY2tT
cmNTaXplKDMyLCAyNC4wMTYpOwotICAgICAgICBmaXRDb250ZXh0VG9Cb3goY29udGV4dCwgd2ly
ZWxlc3NQbGF5YmFja1NyY1NpemUsIHNpemUpOworICAgICAgICBjb250ZXh0LnNjYWxlVG9GaXQo
d2lyZWxlc3NQbGF5YmFja1NyY1NpemUsIHNpemUpOwogCiAgICAgICAgIFBhdGggb3V0bGluZTsK
ICAgICAgICAgb3V0bGluZS5tb3ZlVG8oRmxvYXRQb2ludCgyNC4wNjYsIDE4KSk7CkBAIC0xNjQs
MTcgKzcwLDEzIEBAIHZvaWQgVGhlbWVDb2NvYTo6ZHJhd05hbWVkSW1hZ2UoY29uc3QgU3RyaW5n
JiBuYW1lLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvCiAKICNpZiBFTkFCTEUoQVBQTEVf
UEFZKQogICAgIGlmIChuYW1lID09ICJhcHBsZS1wYXktbG9nby1ibGFjayIpIHsKLSAgICAgICAg
aWYgKGF1dG8gbG9nbyA9IGFwcGxlUGF5QnV0dG9uTG9nb0JsYWNrKCkpIHsKLSAgICAgICAgICAg
IGRyYXdBcHBsZVBheUJ1dHRvbihjb250ZXh0LCBsb2dvLCBzaXplKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQorICAgICAgICBjb250ZXh0LmRyYXdTeXN0ZW1JbWFnZShBcHBsZVBh
eUxvZ29TeXN0ZW1JbWFnZTo6Y3JlYXRlKEFwcGxlUGF5TG9nb1N0eWxlOjpCbGFjayksIEZsb2F0
UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIHNpemUpKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIGlmIChuYW1lID09ICJhcHBsZS1wYXktbG9nby13aGl0ZSIpIHsKLSAgICAgICAgaWYg
KGF1dG8gbG9nbyA9IGFwcGxlUGF5QnV0dG9uTG9nb1doaXRlKCkpIHsKLSAgICAgICAgICAgIGRy
YXdBcHBsZVBheUJ1dHRvbihjb250ZXh0LCBsb2dvLCBzaXplKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQorICAgICAgICBjb250ZXh0LmRyYXdTeXN0ZW1JbWFnZShBcHBsZVBheUxv
Z29TeXN0ZW1JbWFnZTo6Y3JlYXRlKEFwcGxlUGF5TG9nb1N0eWxlOjpXaGl0ZSksIEZsb2F0UmVj
dChGbG9hdFBvaW50Ojp6ZXJvKCksIHNpemUpKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1
cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IDczNWE3MjZmZDIzNS4uNDIx
ZmFkZjhhNTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtMjYzLDYgKzI2Mywx
MiBAQCB2b2lkIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShOYXRp
dmVJbWFnZSYgbmF0aXZlSW1hZ2UsIGNvbnN0CiAgICAgbV9zZWNvbmRhcnlDb250ZXh0LmRyYXdO
YXRpdmVJbWFnZShuYXRpdmVJbWFnZSwgc2VsZlNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRp
b25zKTsKIH0KIAordm9pZCBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0OjpkcmF3U3lzdGVtSW1h
Z2UoY29uc3QgUmVmPFN5c3RlbUltYWdlPiYgc3lzdGVtSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24pCit7CisgICAgbV9wcmltYXJ5Q29udGV4dC5kcmF3U3lzdGVtSW1hZ2Uoc3lz
dGVtSW1hZ2UsIGRlc3RpbmF0aW9uKTsKKyAgICBtX3NlY29uZGFyeUNvbnRleHQuZHJhd1N5c3Rl
bUltYWdlKHN5c3RlbUltYWdlLCBkZXN0aW5hdGlvbik7Cit9CisKIHZvaWQgQmlmdXJjYXRlZEdy
YXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oTmF0aXZlSW1hZ2UmIG5hdGl2ZUltYWdlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zKQogewogICAgIG1fcHJpbWFyeUNvbnRleHQuZHJhd1BhdHRlcm4obmF0aXZlSW1hZ2Us
IGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9w
dGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlm
dXJjYXRlZEdyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5oCmluZGV4IGY2ZDRkYmRmYmQ4Mi4uZjBiMDQ2
ZDM2YzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1
cmNhdGVkR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5oCkBAIC05OCw2ICs5OCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldE1pdGVyTGltaXQoZmxvYXQpIGZpbmFsOwogCiAgICAgdm9pZCBkcmF3
TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7CisgICAgdm9pZCBkcmF3U3lzdGVtSW1h
Z2UoY29uc3QgUmVmPFN5c3RlbUltYWdlPiYsIGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOwogICAg
IHZvaWQgZHJhd1BhdHRlcm4oTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRl
cm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNw
YWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7CiAgICAgSW1h
Z2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
PSB7IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSB9KSBmaW5hbDsKICAgICBJbWFnZURyYXdS
ZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNv
bnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuY3BwCmluZGV4IDY3YzY5MjNjYWZkMi4uNTJjYmJiNjA2MzQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5j
cHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGUuaCIKICNp
bmNsdWRlICJOdWxsR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiUm91bmRlZFJlY3QuaCIK
KyNpbmNsdWRlICJTeXN0ZW1JbWFnZS5oIgogI2luY2x1ZGUgIlRleHRSdW4uaCIKICNpbmNsdWRl
IDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKQEAgLTYzOCw2ICs2MzksMTEgQEAgUmVmUHRyPElt
YWdlQnVmZmVyPiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFJlY3QKICAgICByZXR1cm4gY3JlYXRlSW1hZ2VCdWZmZXIocmVjdCwgc2NhbGVG
YWN0b3IoKSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZSgpLCByZW5kZXJpbmdNZXRob2QpOwog
fQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1N5c3RlbUltYWdlKGNvbnN0IFJlZjxTeXN0
ZW1JbWFnZT4mIHN5c3RlbUltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKQorewor
ICAgIHN5c3RlbUltYWdlLT5kcmF3KCp0aGlzLCBkZXN0aW5hdGlvbik7Cit9CisKIEltYWdlRHJh
d1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZs
b2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQ
YWludGluZ09wdGlvbnMpCiB7CiAgICAgcmV0dXJuIGRyYXdJbWFnZShpbWFnZSwgRmxvYXRSZWN0
KGRlc3RpbmF0aW9uLCBpbWFnZS5zaXplKCkpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFn
ZS5zaXplKCkpLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CkBAIC04NTcsNiArODYzLDIyIEBAIEZs
b2F0U2l6ZSBHcmFwaGljc0NvbnRleHQ6OnNjYWxlRmFjdG9yRm9yRHJhd2luZyhjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zCiAgICAgcmV0dXJuIHRyYW5zZm9ybWVkRGVzdFJlY3Quc2l6
ZSgpIC8gc3JjUmVjdC5zaXplKCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzY2FsZVRv
Rml0KGNvbnN0IEZsb2F0U2l6ZSYgc3JjU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBkc3RTaXplKQor
eworICAgIGZsb2F0IHNjYWxlOworICAgIGZsb2F0IHRyYW5zbGF0aW9uWCA9IDA7CisgICAgZmxv
YXQgdHJhbnNsYXRpb25ZID0gMDsKKyAgICBpZiAoc3JjU2l6ZS5hc3BlY3RSYXRpbygpID4gZHN0
U2l6ZS5hc3BlY3RSYXRpbygpKSB7CisgICAgICAgIHNjYWxlID0gZHN0U2l6ZS53aWR0aCgpIC8g
c3JjU2l6ZS53aWR0aCgpOworICAgICAgICB0cmFuc2xhdGlvblkgPSAoZHN0U2l6ZS5oZWlnaHQo
KSAtIHNjYWxlICogc3JjU2l6ZS5oZWlnaHQoKSkgLyAyOworICAgIH0gZWxzZSB7CisgICAgICAg
IHNjYWxlID0gZHN0U2l6ZS5oZWlnaHQoKSAvIHNyY1NpemUuaGVpZ2h0KCk7CisgICAgICAgIHRy
YW5zbGF0aW9uWCA9IChkc3RTaXplLndpZHRoKCkgLSBzY2FsZSAqIHNyY1NpemUud2lkdGgoKSkg
LyAyOworICAgIH0KKyAgICB0aGlzLT50cmFuc2xhdGUodHJhbnNsYXRpb25YLCB0cmFuc2xhdGlv
blkpOworICAgIHRoaXMtPnNjYWxlKHNjYWxlKTsKK30KKwogdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiB7CiAgICAgZmlsbFBhdGgocGF0aCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmlu
ZGV4IGI0NDc4ZTg1ZWExMy4uMDAxNTYzYTcxNWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtODcsNiArODcsNyBAQCBj
bGFzcyBNZWRpYVBsYXllcjsKIGNsYXNzIFJvdW5kZWRSZWN0OwogY2xhc3MgR3JhcGhpY3NDb250
ZXh0R0w7CiBjbGFzcyBQYXRoOworY2xhc3MgU3lzdGVtSW1hZ2U7CiBjbGFzcyBUZXh0UnVuOwog
Y2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiAKQEAgLTQyNiw2ICs0MjcsOCBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3Qg
RmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pID0gMDsK
IAorICAgIHZpcnR1YWwgdm9pZCBkcmF3U3lzdGVtSW1hZ2UoY29uc3QgUmVmPFN5c3RlbUltYWdl
PiYsIGNvbnN0IEZsb2F0UmVjdCYpOworCiAgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VEcmF3UmVz
dWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSB9
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
ID0geyBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UgfSk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiA9IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwpAQCAtNTE2LDYg
KzUxOSw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFNpemUgc2NhbGVGYWN0
b3IoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFNpemUgc2NhbGVGYWN0b3JGb3JE
cmF3aW5nKGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCkgY29uc3Q7CiAKKyAgICB2b2lkIHNjYWxlVG9GaXQoY29uc3QgRmxvYXRTaXplJiBzcmNTaXpl
LCBjb25zdCBGbG9hdFNpemUmIGRzdFNpemUpOworCiAgICAgLy8gTGlua3MKIAogICAgIHZpcnR1
YWwgdm9pZCBzZXRVUkxGb3JSZWN0KGNvbnN0IFVSTCYsIGNvbnN0IEZsb2F0UmVjdCYpIHsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNz
Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNz
Q29udGV4dC5oCmluZGV4IGQxODBlNTE5MDJlMi4uMWFjMDMxYTAxYjNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4dC5o
CkBAIC02Myw2ICs2Myw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShO
YXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgZmluYWwgeyB9CiAKKyAgICB2
b2lkIGRyYXdTeXN0ZW1JbWFnZShjb25zdCBSZWY8U3lzdGVtSW1hZ2U+JiwgY29uc3QgRmxvYXRS
ZWN0JikgZmluYWwgeyB9OworCiAgICAgdm9pZCBkcmF3UGF0dGVybihOYXRpdmVJbWFnZSYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYs
IGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYpIGZpbmFsIHsgfQogCiAgICAgSW50UmVjdCBjbGlwQm91bmRzKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4geyB9OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9TeXN0ZW1JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
U3lzdGVtSW1hZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmZk
OTI2NzYyMWJjMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1N5c3RlbUltYWdlLmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBGbG9hdFJlY3Q7CitjbGFzcyBHcmFwaGljc0NvbnRleHQ7CisKK2VudW0g
Y2xhc3MgU3lzdGVtSW1hZ2VUeXBlIDogdWludDhfdCB7CisjaWYgRU5BQkxFKEFQUExFX1BBWSkK
KyAgICBBcHBsZVBheUJ1dHRvbiwKKyAgICBBcHBsZVBheUxvZ28sCisjZW5kaWYKK307CisKK2Ns
YXNzIFdFQkNPUkVfRVhQT1JUIFN5c3RlbUltYWdlIDogcHVibGljIFJlZkNvdW50ZWQ8U3lzdGVt
SW1hZ2U+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5TeXN0ZW1JbWFnZSgpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0IHsgfQorCisgICAgU3lzdGVt
SW1hZ2VUeXBlIHN5c3RlbUltYWdlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3lzdGVtSW1hZ2VU
eXBlOyB9CisKK3Byb3RlY3RlZDoKKyAgICBTeXN0ZW1JbWFnZShTeXN0ZW1JbWFnZVR5cGUgc3lz
dGVtSW1hZ2VUeXBlKQorICAgICAgICA6IG1fc3lzdGVtSW1hZ2VUeXBlKHN5c3RlbUltYWdlVHlw
ZSkKKyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAgIFN5c3RlbUltYWdlVHlwZSBtX3N5c3Rl
bUltYWdlVHlwZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdU
RiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6U3lzdGVtSW1hZ2VU
eXBlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6
U3lzdGVtSW1hZ2VUeXBlCisjaWYgRU5BQkxFKEFQUExFX1BBWSkKKyAgICAgICAgLCBXZWJDb3Jl
OjpTeXN0ZW1JbWFnZVR5cGU6OkFwcGxlUGF5QnV0dG9uCisgICAgICAgICwgV2ViQ29yZTo6U3lz
dGVtSW1hZ2VUeXBlOjpBcHBsZVBheUxvZ28KKyNlbmRpZgorICAgID47Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCmluZGV4IDc5ZjRjNDY5OGM3Mi4u
MmUyZjRmNGYyY2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKQEAgLTI0OCw2ICsyNDgs
OCBAQCB2b2lkIERpc3BsYXlMaXN0OjphcHBlbmQoSXRlbUhhbmRsZSBpdGVtKQogICAgICAgICBy
ZXR1cm4gYXBwZW5kPERyYXdJbWFnZUJ1ZmZlcj4oaXRlbS5nZXQ8RHJhd0ltYWdlQnVmZmVyPigp
KTsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgICAgIHJldHVybiBh
cHBlbmQ8RHJhd05hdGl2ZUltYWdlPihpdGVtLmdldDxEcmF3TmF0aXZlSW1hZ2U+KCkpOworICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdTeXN0ZW1JbWFnZToKKyAgICAgICAgcmV0dXJuIGFwcGVuZDxE
cmF3U3lzdGVtSW1hZ2U+KGl0ZW0uZ2V0PERyYXdTeXN0ZW1JbWFnZT4oKSk7CiAgICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd1BhdHRlcm4+
KGl0ZW0uZ2V0PERyYXdQYXR0ZXJuPigpKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKaW5kZXggY2Y2MTY4
NzNkZmYwLi40NTc3NTUxODliZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1CdWZmZXIuY3BwCkBAIC0xMjEsNiArMTIxLDkgQEAgdm9pZCBJdGVtSGFuZGxlOjphcHBseShH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUlt
YWdlOgogICAgICAgICBnZXQ8RHJhd05hdGl2ZUltYWdlPigpLmFwcGx5KGNvbnRleHQpOwogICAg
ICAgICByZXR1cm47CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1N5c3RlbUltYWdlOgorICAgICAg
ICBnZXQ8RHJhd1N5c3RlbUltYWdlPigpLmFwcGx5KGNvbnRleHQpOworICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIGdldDxEcmF3UGF0dGVy
bj4oKS5hcHBseShjb250ZXh0KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzM4LDYgKzM0MSw5IEBA
IHZvaWQgSXRlbUhhbmRsZTo6ZGVzdHJveSgpCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2
ZUltYWdlOgogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0
aWJsZTxEcmF3TmF0aXZlSW1hZ2U+Ojp2YWx1ZSk7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3U3lzdGVtSW1hZ2U6CisgICAgICAgIGdldDxEcmF3U3lzdGVtSW1hZ2U+
KCkufkRyYXdTeXN0ZW1JbWFnZSgpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlf
ZGVzdHJ1Y3RpYmxlPERyYXdQYXR0ZXJuPjo6dmFsdWUpOwogICAgICAgICByZXR1cm47CkBAIC00
ODksNiArNDk1LDggQEAgYm9vbCBJdGVtSGFuZGxlOjpzYWZlQ29weShJdGVtVHlwZSBpdGVtVHlw
ZSwgSXRlbUhhbmRsZSBkZXN0aW5hdGlvbikgY29uc3QKICAgICAgICAgcmV0dXJuIGNvcHlJbnRv
PERyYXdMaW5lc0ZvclRleHQ+KGl0ZW1PZmZzZXQsICp0aGlzKTsKICAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgICAgIHJldHVybiBjb3B5SW50bzxEcmF3TmF0aXZlSW1h
Z2U+KGl0ZW1PZmZzZXQsICp0aGlzKTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3U3lzdGVtSW1h
Z2U6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxEcmF3U3lzdGVtSW1hZ2U+KGl0ZW1PZmZzZXQs
ICp0aGlzKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICAgICAgcmV0dXJu
IGNvcHlJbnRvPERyYXdQYXR0ZXJuPihpdGVtT2Zmc2V0LCAqdGhpcyk7CiAgICAgY2FzZSBJdGVt
VHlwZTo6RHJhd1BhdGg6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAK
aW5kZXggZGEwNWQ2Y2JlMzhmLi41NGVhMWM4NjgyYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtVHlwZS5jcHAKQEAgLTg0LDYgKzg0LDggQEAgc3RhdGljIHNpemVfdCBzaXpl
T2ZJdGVtSW5CeXRlcyhJdGVtVHlwZSB0eXBlKQogICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdJ
bWFnZUJ1ZmZlcik7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgogICAgICAg
ICByZXR1cm4gc2l6ZW9mKERyYXdOYXRpdmVJbWFnZSk7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJh
d1N5c3RlbUltYWdlOgorICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdTeXN0ZW1JbWFnZSk7CiAg
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIHJldHVybiBzaXplb2YoRHJh
d1BhdHRlcm4pOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgpAQCAtMjE1LDYgKzIxNyw3
IEBAIGJvb2wgaXNEcmF3aW5nSXRlbShJdGVtVHlwZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdMaW5lOgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6CiAgICAgY2Fz
ZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgorICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdTeXN0
ZW1JbWFnZToKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3UGF0aDoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoKQEAgLTI5NCw2ICsy
OTcsNyBAQCBib29sIGlzSW5saW5lSXRlbShJdGVtVHlwZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5
cGU6OlNldExpbmVEYXNoOgogICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgogICAgIGNhc2Ug
SXRlbVR5cGU6OlN0cm9rZVBhdGg6CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1N5c3RlbUltYWdl
OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZpY2VT
Y2FsZUZhY3RvcjoKICNpZiBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5
cGUuaAppbmRleCBhNGRmYTNkNzY5YWIuLmQ2ODNiMmFjZjc4NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5
cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtVHlwZS5oCkBAIC01NCw2ICs1NCw3IEBAIGVudW0gY2xhc3MgSXRlbVR5
cGUgOiB1aW50OF90IHsKICAgICBEcmF3R2x5cGhzLAogICAgIERyYXdJbWFnZUJ1ZmZlciwKICAg
ICBEcmF3TmF0aXZlSW1hZ2UsCisgICAgRHJhd1N5c3RlbUltYWdlLAogICAgIERyYXdQYXR0ZXJu
LAogICAgIERyYXdSZWN0LAogICAgIERyYXdMaW5lLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuY3BwCmluZGV4IDNmMzc4MzVkZTY5Mi4uMzYwNDAwMTRhN2MwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC0zOTgsNiArMzk4LDE4IEBAIHN0YXRpYyBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3TmF0aXZlSW1hZ2Um
IGl0ZW0pCiAgICAgcmV0dXJuIHRzOwogfQogCit2b2lkIERyYXdTeXN0ZW1JbWFnZTo6YXBwbHko
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAoreworICAgIGNvbnRleHQuZHJhd1N5c3Rl
bUltYWdlKG1fc3lzdGVtSW1hZ2UsIG1fZGVzdGluYXRpb24pOworfQorCitzdGF0aWMgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd1N5c3RlbUltYWdlJiBp
dGVtKQoreworICAgIC8vIEZJWE1FOiBkdW1wIG1vcmUgc3R1ZmYuCisgICAgdHMuZHVtcFByb3Bl
cnR5KCJkZXN0aW5hdGlvbiIsIGl0ZW0uZGVzdGluYXRpb24oKSk7CisgICAgcmV0dXJuIHRzOwor
fQorCiBEcmF3UGF0dGVybjo6RHJhd1BhdHRlcm4oUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IGltYWdlSWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKICAgICA6IG1faW1hZ2VJZGVudGlmaWVyKGlt
YWdlSWRlbnRpZmllcikKICAgICAsIG1fZGVzdGluYXRpb24oZGVzdFJlY3QpCkBAIC0xMDIxLDYg
KzEwMzMsNyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
SXRlbVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOiB0cyA8PCAiZHJh
dy1nbHlwaHMiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6IHRz
IDw8ICJkcmF3LWltYWdlLWJ1ZmZlciI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdO
YXRpdmVJbWFnZTogdHMgPDwgImRyYXctbmF0aXZlLWltYWdlIjsgYnJlYWs7CisgICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd1N5c3RlbUltYWdlOiB0cyA8PCAiZHJhdy1zeXN0ZW0taW1hZ2UiOyBicmVh
azsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjogdHMgPDwgImRyYXctcGF0dGVybiI7
IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OiB0cyA8PCAiZHJhdy1yZWN0Ijsg
YnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6IHRzIDw8ICJkcmF3LWxpbmUiOyBi
cmVhazsKQEAgLTExNDEsNiArMTE1NCw5IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIEl0ZW1IYW5kbGUgaXRlbSkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZl
SW1hZ2U6CiAgICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdOYXRpdmVJbWFnZT4oKTsKICAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1N5c3RlbUltYWdlOgorICAgICAgICB0
cyA8PCBpdGVtLmdldDxEcmF3U3lzdGVtSW1hZ2U+KCk7CisgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3UGF0
dGVybj4oKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApp
bmRleCBmNTFkMWY4Zjk0MWEuLmY5NGRhZmQ3YmU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5oCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXIuaCIKICNp
bmNsdWRlICJSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKKyNpbmNsdWRlICJTeXN0ZW1JbWFnZS5oIgogI2luY2x1ZGUgPHZhcmlhbnQ+CiAj
aW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CkBA
IC05OTMsNiArOTk0LDYxIEBAIHByaXZhdGU6CiAgICAgSW1hZ2VQYWludGluZ09wdGlvbnMgbV9v
cHRpb25zOwogfTsKIAorY2xhc3MgRHJhd1N5c3RlbUltYWdlIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgY29uc3RleHByIEl0ZW1UeXBlIGl0ZW1UeXBlID0gSXRlbVR5cGU6OkRyYXdTeXN0ZW1JbWFn
ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtID0gZmFsc2U7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0gPSB0cnVlOworCisgICAgRHJhd1N5
c3RlbUltYWdlKGNvbnN0IFJlZjxTeXN0ZW1JbWFnZT4mIHN5c3RlbUltYWdlLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uKQorICAgICAgICA6IG1fc3lzdGVtSW1hZ2Uoc3lzdGVtSW1hZ2Up
CisgICAgICAgICwgbV9kZXN0aW5hdGlvbihkZXN0aW5hdGlvbikKKyAgICB7CisgICAgfQorCisg
ICAgY29uc3QgUmVmPFN5c3RlbUltYWdlPiYgc3lzdGVtSW1hZ2UoKSBjb25zdCB7IHJldHVybiBt
X3N5c3RlbUltYWdlOyB9CisgICAgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fZGVzdGluYXRpb247IH0KKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBw
bHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CisKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVj
dD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CisgICAgc3Rk
OjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb247IH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxEcmF3U3lzdGVtSW1hZ2U+IGRlY29kZShEZWNv
ZGVyJik7CisKK3ByaXZhdGU6CisgICAgUmVmPFN5c3RlbUltYWdlPiBtX3N5c3RlbUltYWdlOwor
ICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uOworfTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4KK3ZvaWQgRHJhd1N5c3RlbUltYWdlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
K3sKKyAgICBlbmNvZGVyIDw8IG1fc3lzdGVtSW1hZ2U7CisgICAgZW5jb2RlciA8PCBtX2Rlc3Rp
bmF0aW9uOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxEcmF3
U3lzdGVtSW1hZ2U+IERyYXdTeXN0ZW1JbWFnZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7
CisjZGVmaW5lIERFQ09ERShuYW1lLCB0eXBlKSBcCisgICAgc3RkOjpvcHRpb25hbDx0eXBlPiBu
YW1lOyBcCisgICAgZGVjb2RlciA+PiBuYW1lOyBcCisgICAgaWYgKCFuYW1lKSBcCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7IFwKKworICAgIERFQ09ERShzeXN0ZW1JbWFnZSwgUmVmPFN5
c3RlbUltYWdlPikKKyAgICBERUNPREUoZGVzdGluYXRpb24sIEZsb2F0UmVjdCkKKworI3VuZGVm
IERFQ09ERQorCisgICAgcmV0dXJuIHsgeworICAgICAgICBXVEZNb3ZlKCpzeXN0ZW1JbWFnZSks
CisgICAgICAgIFdURk1vdmUoKmRlc3RpbmF0aW9uKSwKKyAgICB9IH07Cit9CisKIGNsYXNzIERy
YXdQYXR0ZXJuIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIEl0ZW1UeXBlIGl0ZW1U
eXBlID0gSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOwpAQCAtMjIyMCw2ICsyMjc2LDcgQEAgdXNpbmcg
RGlzcGxheUxpc3RJdGVtID0gc3RkOjp2YXJpYW50CiAgICAgLCBEcmF3UGF0aAogICAgICwgRHJh
d1BhdHRlcm4KICAgICAsIERyYXdSZWN0CisgICAgLCBEcmF3U3lzdGVtSW1hZ2UKICAgICAsIEVu
ZFRyYW5zcGFyZW5jeUxheWVyCiAgICAgLCBGaWxsQ29tcG9zaXRlZFJlY3QKICAgICAsIEZpbGxF
bGxpcHNlCkBAIC0yMzA2LDYgKzIzNjMsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRz
PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZT4gewogICAgIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RHJhd0dseXBocywKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkRyYXdJbWFnZUJ1ZmZlciwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkRyYXdOYXRpdmVJbWFnZSwKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkRyYXdTeXN0ZW1JbWFnZSwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRy
YXdQYXR0ZXJuLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1JlY3Qs
CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TGluZSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCA0YzdkZDhhNjMwZjguLjJkOTVh
YWQzNWI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAt
MjAyLDYgKzIwMiwxMSBAQCB2b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1h
Z2UmIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgYwogICAgIHJlY29yZERyYXdO
YXRpdmVJbWFnZShpbWFnZS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VTaXpl
LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKK3ZvaWQgUmVjb3JkZXI6OmRyYXdT
eXN0ZW1JbWFnZShjb25zdCBSZWY8U3lzdGVtSW1hZ2U+JiBzeXN0ZW1JbWFnZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbikKK3sKKyAgICByZWNvcmREcmF3U3lzdGVtSW1hZ2Uoc3lzdGVt
SW1hZ2UsIGRlc3RpbmF0aW9uKTsKK30KKwogdm9pZCBSZWNvcmRlcjo6ZHJhd1BhdHRlcm4oTmF0
aXZlSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNv
bnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRl
bUlmTmVjZXNzYXJ5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRl
eCAzZDM4MzZmZjNkNWYuLmM3OGI5NjRhYTY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5oCkBAIC04Niw2ICs4Niw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZv
aWQgcmVjb3JkRHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCos
IGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIGNvdW50LCBjb25zdCBGbG9hdFBv
aW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgcmVjb3JkRHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRHJhd05hdGl2ZUltYWdlKFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0U2l6ZSYg
aW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCByZWNvcmREcmF3U3lzdGVtSW1hZ2UoY29uc3QgUmVmPFN5c3RlbUltYWdlPiYsIGNvbnN0IEZs
b2F0UmVjdCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRHJhd1BhdHRlcm4oUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgPSB7IH0pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQmVnaW5UcmFuc3Bh
cmVuY3lMYXllcihmbG9hdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRFbmRUcmFuc3Bh
cmVuY3lMYXllcigpID0gMDsKQEAgLTIyMiw2ICsyMjMsNyBAQCBwcml2YXRlOgogCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRp
dmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3U3lz
dGVtSW1hZ2UoY29uc3QgUmVmPFN5c3RlbUltYWdlPiYsIGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFs
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd1BhdHRlcm4oTmF0aXZlSW1hZ2UmLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIGZpbmFsOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcAppbmRleCAyN2QzNDAyNTU4NTYuLjVhZDQyMzQ2
MTBhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3Bw
CkBAIC0xODIsNiArMTgyLDExIEBAIHZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmREcmF3TmF0aXZl
SW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlSWRlbnRpCiAgICAgYXBwZW5k
PERyYXdOYXRpdmVJbWFnZT4oaW1hZ2VJZGVudGlmaWVyLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBz
cmNSZWN0LCBvcHRpb25zKTsKIH0KIAordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZERyYXdTeXN0
ZW1JbWFnZShjb25zdCBSZWY8U3lzdGVtSW1hZ2U+JiBzeXN0ZW1JbWFnZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbikKK3sKKyAgICBhcHBlbmQ8RHJhd1N5c3RlbUltYWdlPihzeXN0ZW1J
bWFnZSwgZGVzdGluYXRpb24pOworfQorCiB2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRHJhd1Bh
dHRlcm4oUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlSWRlbnRpZmllciwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQog
ewogICAgIGFwcGVuZDxEcmF3UGF0dGVybj4oaW1hZ2VJZGVudGlmaWVyLCBkZXN0UmVjdCwgdGls
ZVJlY3QsIHRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaAppbmRleCBmNzY0M2Q2NmM4NmMuLjE1MmU4
YTY2MTU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgK
QEAgLTcwLDYgKzcwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlY29yZERyYXdHbHlwaHMoY29u
c3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFu
Y2UqLCB1bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRT
bW9vdGhpbmdNb2RlKSBmaW5hbDsKICAgICB2b2lkIHJlY29yZERyYXdJbWFnZUJ1ZmZlcihJbWFn
ZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBmaW5hbDsKICAgICB2b2lkIHJlY29y
ZERyYXdOYXRpdmVJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VJZGVudGlm
aWVyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IGZpbmFsOworICAgIHZvaWQgcmVjb3JkRHJhd1N5c3RlbUltYWdlKGNvbnN0IFJlZjxTeXN0ZW1J
bWFnZT4mLCBjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKICAgICB2b2lkIHJlY29yZERyYXdQYXR0
ZXJuKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmID0geyB9KSBmaW5hbDsKICAgICB2b2lkIHJlY29yZEJlZ2luVHJh
bnNwYXJlbmN5TGF5ZXIoZmxvYXQpIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkRW5kVHJhbnNwYXJl
bmN5TGF5ZXIoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
Q29jb2EubW0KaW5kZXggZTE4NmZiZDZkODc0Li5iZjI4OWJhMDk3MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tCkBAIC0yNiw2ICsyNiw3IEBACiAj
aW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlJlbmRlclRoZW1lQ29jb2EuaCIKIAorI2ltcG9y
dCAiQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2UuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENH
LmgiCiAjaW1wb3J0ICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW1wb3J0ICJJbWFnZUJ1ZmZlci5o
IgpAQCAtMTAwLDY0ICsxMDEsOCBAQCB2b2lkIFJlbmRlclRoZW1lQ29jb2E6OmFkanVzdEFwcGxl
UGF5QnV0dG9uU3R5bGUoUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBFbGVtZQogICAgIH0KIH0K
IAotc3RhdGljIFBLUGF5bWVudEJ1dHRvblN0eWxlIHRvUEtQYXltZW50QnV0dG9uU3R5bGUoQXBw
bGVQYXlCdXR0b25TdHlsZSBzdHlsZSkKLXsKLSAgICBzd2l0Y2ggKHN0eWxlKSB7Ci0gICAgY2Fz
ZSBBcHBsZVBheUJ1dHRvblN0eWxlOjpXaGl0ZToKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1
dHRvblN0eWxlV2hpdGU7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblN0eWxlOjpXaGl0ZU91dGxp
bmU6Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRCdXR0b25TdHlsZVdoaXRlT3V0bGluZTsKLSAg
ICBjYXNlIEFwcGxlUGF5QnV0dG9uU3R5bGU6OkJsYWNrOgotICAgICAgICByZXR1cm4gUEtQYXlt
ZW50QnV0dG9uU3R5bGVCbGFjazsKLSAgICB9Ci19Ci0KLXN0YXRpYyBQS1BheW1lbnRCdXR0b25U
eXBlIHRvUEtQYXltZW50QnV0dG9uVHlwZShBcHBsZVBheUJ1dHRvblR5cGUgdHlwZSkKLXsKLSAg
ICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6UGxhaW46Ci0g
ICAgICAgIHJldHVybiBQS1BheW1lbnRCdXR0b25UeXBlUGxhaW47Ci0gICAgY2FzZSBBcHBsZVBh
eUJ1dHRvblR5cGU6OkJ1eToKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRvblR5cGVCdXk7
Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OlNldFVwOgotICAgICAgICByZXR1cm4gUEtQ
YXltZW50QnV0dG9uVHlwZVNldFVwOwotICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpEb25h
dGU6Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRCdXR0b25UeXBlRG9uYXRlOwotICAgIGNhc2Ug
QXBwbGVQYXlCdXR0b25UeXBlOjpDaGVja091dDoKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1
dHRvblR5cGVDaGVja291dDsKLSAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6Qm9vazoKLSAg
ICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRvblR5cGVCb29rOwotICAgIGNhc2UgQXBwbGVQYXlC
dXR0b25UeXBlOjpTdWJzY3JpYmU6Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRCdXR0b25UeXBl
U3Vic2NyaWJlOwotI2lmIEhBVkUoUEFTU0tJVF9ORVdfQlVUVE9OX1RZUEVTKQotICAgIGNhc2Ug
QXBwbGVQYXlCdXR0b25UeXBlOjpSZWxvYWQ6Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRCdXR0
b25UeXBlUmVsb2FkOwotICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpBZGRNb25leToKLSAg
ICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRvblR5cGVBZGRNb25leTsKLSAgICBjYXNlIEFwcGxl
UGF5QnV0dG9uVHlwZTo6VG9wVXA6Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRCdXR0b25UeXBl
VG9wVXA7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6Ok9yZGVyOgotICAgICAgICByZXR1
cm4gUEtQYXltZW50QnV0dG9uVHlwZU9yZGVyOwotICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBl
OjpSZW50OgotICAgICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZVJlbnQ7Ci0gICAgY2Fz
ZSBBcHBsZVBheUJ1dHRvblR5cGU6OlN1cHBvcnQ6Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRC
dXR0b25UeXBlU3VwcG9ydDsKLSAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6Q29udHJpYnV0
ZToKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRvblR5cGVDb250cmlidXRlOwotICAgIGNh
c2UgQXBwbGVQYXlCdXR0b25UeXBlOjpUaXA6Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRCdXR0
b25UeXBlVGlwOwotI2VuZGlmCi0gICAgfQotfQotCiBib29sIFJlbmRlclRoZW1lQ29jb2E6OnBh
aW50QXBwbGVQYXlCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHBhaW50UmVjdCkKIHsKLSAgICBhdXRv
JiBkZXN0aW5hdGlvbkNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwotCi0gICAgYXV0byBp
bWFnZUJ1ZmZlciA9IGRlc3RpbmF0aW9uQ29udGV4dC5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZm
ZXIocGFpbnRSZWN0LnNpemUoKSk7Ci0gICAgaWYgKCFpbWFnZUJ1ZmZlcikKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCiAgICAgYXV0byYgc3R5bGUgPSByZW5kZXJlci5zdHlsZSgpOwogICAgIGF1
dG8gbGFyZ2VzdENvcm5lclJhZGl1cyA9IHN0ZDo6bWF4PENHRmxvYXQ+KHsKICAgICAgICAgZmxv
YXRWYWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJUb3BMZWZ0UmFkaXVzKCkuaGVpZ2h0LCBwYWlu
dFJlY3QuaGVpZ2h0KCkpLApAQCAtMTY5LDE0ICsxMTQsNyBAQCBib29sIFJlbmRlclRoZW1lQ29j
b2E6OnBhaW50QXBwbGVQYXlCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29u
c3QgUAogICAgICAgICBmbG9hdFZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0
UmFkaXVzKCkuaGVpZ2h0LCBwYWludFJlY3QuaGVpZ2h0KCkpLAogICAgICAgICBmbG9hdFZhbHVl
Rm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkud2lkdGgsIHBhaW50UmVj
dC53aWR0aCgpKQogICAgIH0pOwotCi0gICAgYXV0byYgaW1hZ2VDb250ZXh0ID0gaW1hZ2VCdWZm
ZXItPmNvbnRleHQoKTsKLSAgICBpbWFnZUNvbnRleHQuc2V0U2hvdWxkU21vb3RoRm9udHModHJ1
ZSk7Ci0gICAgaW1hZ2VDb250ZXh0LnNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyhmYWxz
ZSk7Ci0gICAgaW1hZ2VDb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwotICAgIFBLRHJh
d0FwcGxlUGF5QnV0dG9uV2l0aENvcm5lclJhZGl1cyhpbWFnZUNvbnRleHQucGxhdGZvcm1Db250
ZXh0KCksIENHUmVjdE1ha2UoMCwgLXBhaW50UmVjdC5oZWlnaHQoKSwgcGFpbnRSZWN0LndpZHRo
KCksIHBhaW50UmVjdC5oZWlnaHQoKSksIDEuMCwgbGFyZ2VzdENvcm5lclJhZGl1cywgdG9QS1Bh
eW1lbnRCdXR0b25UeXBlKHN0eWxlLmFwcGxlUGF5QnV0dG9uVHlwZSgpKSwgdG9QS1BheW1lbnRC
dXR0b25TdHlsZShzdHlsZS5hcHBsZVBheUJ1dHRvblN0eWxlKCkpLCBzdHlsZS5jb21wdXRlZExv
Y2FsZSgpKTsKLQotICAgIGRlc3RpbmF0aW9uQ29udGV4dC5kcmF3Q29uc3VtaW5nSW1hZ2VCdWZm
ZXIoV1RGTW92ZShpbWFnZUJ1ZmZlciksIHBhaW50UmVjdCk7CisgICAgcGFpbnRJbmZvLmNvbnRl
eHQoKS5kcmF3U3lzdGVtSW1hZ2UoQXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZTo6Y3JlYXRlKHN0
eWxlLmFwcGxlUGF5QnV0dG9uVHlwZSgpLCBzdHlsZS5hcHBsZVBheUJ1dHRvblN0eWxlKCksIHN0
eWxlLmNvbXB1dGVkTG9jYWxlKCksIGxhcmdlc3RDb3JuZXJSYWRpdXMpLCBwYWludFJlY3QpOwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaAppbmRleCBmOTQ1MWEyM2FkZGMuLjU1ODg1ZWI3ZmQ0MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTI1LDYgKzI1LDcg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQW5pbWF0aW9uTGlzdC5oIgorI2luY2x1ZGUg
IkFwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2UuaCIKICNpbmNsdWRlICJCb3JkZXJWYWx1ZS5oIgog
I2luY2x1ZGUgIkNTU0xpbmVCb3hDb250YWluVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQcmltaXRp
dmVWYWx1ZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlQ29uc3RhbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZUNvbnN0YW50cy5jcHAKaW5kZXggZmU2YTRjMDZiMjQ5Li45MmJjNmE4MTJhMTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNv
bnN0YW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlQ29uc3RhbnRzLmNwcApAQCAtNTIsNDIgKzUyLDYgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgQW5pbWF0aW9uUGxheVN0YXRlIHBsYXlTdGF0ZSkKICAgICByZXR1
cm4gdHM7CiB9CiAKLSNpZiBFTkFCTEUoQVBQTEVfUEFZKQotVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgQXBwbGVQYXlCdXR0b25TdHlsZSBidXR0b25TdHlsZSkKLXsKLSAg
ICBzd2l0Y2ggKGJ1dHRvblN0eWxlKSB7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblN0eWxlOjpX
aGl0ZTogdHMgPDwgIndoaXRlIjsgYnJlYWs7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblN0eWxl
OjpXaGl0ZU91dGxpbmU6IHRzIDw8ICJ3aGl0ZS1vdXRsaW5lIjsgYnJlYWs7Ci0gICAgY2FzZSBB
cHBsZVBheUJ1dHRvblN0eWxlOjpCbGFjazogdHMgPDwgImJsYWNrIjsgYnJlYWs7Ci0gICAgfQot
ICAgIHJldHVybiB0czsKLX0KLQotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgQXBwbGVQYXlCdXR0b25UeXBlIHBsYXlTdGF0ZSkKLXsKLSAgICBzd2l0Y2ggKHBsYXlTdGF0
ZSkgewotICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpQbGFpbjogdHMgPDwgInBsYWluIjsg
YnJlYWs7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OkJ1eTogdHMgPDwgImJ1eSI7IGJy
ZWFrOwotICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpTZXRVcDogdHMgPDwgInNldHVwIjsg
YnJlYWs7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OkRvbmF0ZTogdHMgPDwgImRvbmF0
ZSI7IGJyZWFrOwotICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpDaGVja091dDogdHMgPDwg
ImNoZWNrb3V0IjsgYnJlYWs7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OkJvb2s6IHRz
IDw8ICJib29rIjsgYnJlYWs7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OlN1YnNjcmli
ZTogdHMgPDwgInN1YnNjcmliZSI7IGJyZWFrOwotI2lmIEVOQUJMRShBUFBMRV9QQVlfTkVXX0JV
VFRPTl9UWVBFUykKLSAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6UmVsb2FkOiB0cyA8PCAi
cmVsb2FkIjsgYnJlYWs7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OkFkZE1vbmV5OiB0
cyA8PCAiYWRkLW1vbmV5IjsgYnJlYWs7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OlRv
cFVwOiB0cyA8PCAidG9wLXVwIjsgYnJlYWs7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6
Ok9yZGVyOiB0cyA8PCAib3JkZXIiOyBicmVhazsKLSAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlw
ZTo6UmVudDogdHMgPDwgInJlbnQiOyBicmVhazsKLSAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlw
ZTo6U3VwcG9ydDogdHMgPDwgInN1cHBvcnQiOyBicmVhazsKLSAgICBjYXNlIEFwcGxlUGF5QnV0
dG9uVHlwZTo6Q29udHJpYnV0ZTogdHMgPDwgImNvbnRyaWJ1dGUiOyBicmVhazsKLSAgICBjYXNl
IEFwcGxlUGF5QnV0dG9uVHlwZTo6VGlwOiB0cyA8PCAidGlwIjsgYnJlYWs7Ci0jZW5kaWYKLSAg
ICB9Ci0gICAgcmV0dXJuIHRzOwotfQotI2VuZGlmCi0KIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIEFzcGVjdFJhdGlvVHlwZSBhc3BlY3RSYXRpb1R5cGUpCiB7CiAgICAg
c3dpdGNoIChhc3BlY3RSYXRpb1R5cGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKaW5kZXggMGE5NGI2ZGYzZDQ3Li4x
YWJmNjlhNGYwYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZUNvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCkBAIC0xMTYxLDM0ICsxMTYxLDYgQEAgZW51bSBjbGFz
cyBUcmFpbGluZ1dvcmQgOiB1aW50OF90IHsKIH07CiAjZW5kaWYKIAotI2lmIEVOQUJMRShBUFBM
RV9QQVkpCi1lbnVtIGNsYXNzIEFwcGxlUGF5QnV0dG9uU3R5bGUgOiB1aW50OF90IHsKLSAgICBX
aGl0ZSwKLSAgICBXaGl0ZU91dGxpbmUsCi0gICAgQmxhY2ssCi19OwotCi1lbnVtIGNsYXNzIEFw
cGxlUGF5QnV0dG9uVHlwZSA6IHVpbnQ4X3QgewotICAgIFBsYWluLAotICAgIEJ1eSwKLSAgICBT
ZXRVcCwKLSAgICBEb25hdGUsCi0gICAgQ2hlY2tPdXQsCi0gICAgQm9vaywKLSAgICBTdWJzY3Jp
YmUsCi0jaWYgRU5BQkxFKEFQUExFX1BBWV9ORVdfQlVUVE9OX1RZUEVTKQotICAgIFJlbG9hZCwK
LSAgICBBZGRNb25leSwKLSAgICBUb3BVcCwKLSAgICBPcmRlciwKLSAgICBSZW50LAotICAgIFN1
cHBvcnQsCi0gICAgQ29udHJpYnV0ZSwKLSAgICBUaXAsCi0jZW5kaWYKLX07Ci0jZW5kaWYKLQog
Ly8gVGhlc2UgYXJlIGFsbCBtaW5pbWl6ZWQgY29tYmluYXRpb25zIG9mIHBhaW50LW9yZGVyLgog
ZW51bSBjbGFzcyBQYWludE9yZGVyIDogdWludDhfdCB7CiAgICAgTm9ybWFsLApAQCAtMTI0NCwx
MCArMTIxNiw2IEBAIGV4dGVybiBjb25zdCBmbG9hdCBkZWZhdWx0TWl0ZXJMaW1pdDsKIAogV1RG
OjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIEFuaW1hdGlvbkZpbGxN
b2RlKTsKIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBBbmlt
YXRpb25QbGF5U3RhdGUpOwotI2lmIEVOQUJMRShBUFBMRV9QQVkpCi1XVEY6OlRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgQXBwbGVQYXlCdXR0b25TdHlsZSk7Ci1XVEY6
OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgQXBwbGVQYXlCdXR0b25U
eXBlKTsKLSNlbmRpZgogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVh
bSYsIEFzcGVjdFJhdGlvVHlwZSk7CiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpU
ZXh0U3RyZWFtJiwgQXV0b1JlcGVhdFR5cGUpOwogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFdURjo6VGV4dFN0cmVhbSYsIEJhY2tmYWNlVmlzaWJpbGl0eSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGYxMWZi
OGFmNDViZC4uOTViMTRmMjUzMzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIyLTAz
LTAyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFBy
b2Nlc3NdIGRvbnQgbG9hZCBBcHBsZSBQYXkgYnV0dG9uL2xvZ28gUERGcyBpbiB0aGUgV2ViUHJv
Y2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3
MTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Vl
IGBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2dgIGZvciBhbiBleHBsYW5hdGlvbiBvZiBgU3lzdGVt
SW1hZ2VgLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAg
ICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFJlZjxTeXN0ZW1JbWFnZT4+OjplbmNvZGUpOiBBZGRlZC4KKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxSZWY8U3lzdGVtSW1hZ2U+Pjo6ZGVjb2RlKTogQWRkZWQuCisg
ICAgICAgIFN1cHBvcnQgc2VuZGluZyBgU3lzdGVtSW1hZ2VgICh0ZWNobmljYWxseSBgUmVmPFN5
c3RlbUltYWdlPmApIGFjcm9zcyBwcm9jZXNzZXMuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIubWVzc2FnZXMuaW46CisgICAgICAgICog
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6ZHJhd1N5c3RlbUltYWdl
KTogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlclByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmREcmF3U3lzdGVtSW1hZ2UpOiBBZGRk
ZWQuCisgICAgICAgIEFkZCBuZXcgYERyYXdTeXN0ZW1JbWFnZWAgZGlzcGxheSBsaXN0IGl0ZW0u
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKGNsYXNz
X3RlbXBsYXRlX2hlYWRlcnMpOgorICAgICAgICBBZGQgc3VwcG9ydCBmb3IgYFJlZjxUPmAgaW4g
SVBDIG1lc3NhZ2VzLgorCiAyMDIyLTAyLTI1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KIAogICAgICAgICBCZXR0ZXIgaXNvbGF0ZSBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cCBjbGllbnRzIGZyb20gVGhyZWFkU2FmZU9iamVjdEhlYXAgaW1wbGVtZW50YXRpb24gZGV0YWls
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IDc4NDY0NjNkOTkwYi4uZTVkMmQ2
ZjJiODA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0yODMsNiArMjgzLDEx
IEBAIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlV2l0aFF1
YWxpZmllZElkZW50aWZpZXIoUXVhbGlmaWVkCiAgICAgaGFuZGxlSXRlbShEaXNwbGF5TGlzdDo6
RHJhd05hdGl2ZUltYWdlKGltYWdlSWRlbnRpZmllci5vYmplY3QoKSwgaW1hZ2VTaXplLCBkZXN0
UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyksICppbWFnZSk7CiB9CiAKK3ZvaWQgUmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlcjo6ZHJhd1N5c3RlbUltYWdlKGNvbnN0IFJlZjxTeXN0ZW1JbWFnZT4mIHN5
c3RlbUltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKQoreworICAgIGhhbmRsZUl0
ZW0oRGlzcGxheUxpc3Q6OkRyYXdTeXN0ZW1JbWFnZShzeXN0ZW1JbWFnZSwgZGVzdGluYXRpb24p
KTsKK30KKwogdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpkcmF3UGF0dGVybihSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYg
c3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgLy8g
SW1tZWRpYXRlbHkgdHVybiB0aGUgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyICh3aGljaCBp
cyBlcnJvci1wcm9uZSkgdG8gYSBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlz
cGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCAyOWEyMjBiYmExZDcuLjY3YmE2ZDU5NWY0
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC04Miw2ICs4Miw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBzb3VyY2VJbWFnZUlkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBJUEM6OkZpbHRlclJlZmVyZW5j
ZSk7CiAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiBkZXN0aW5hdGlvblJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKTsKICAgICB2b2lkIGRyYXdOYXRpdmVJ
bWFnZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VJZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpOworICAgIHZvaWQgZHJhd1N5c3RlbUlt
YWdlKGNvbnN0IFJlZjxXZWJDb3JlOjpTeXN0ZW1JbWFnZT4mLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmKTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciBpbWFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IFdlYkNvcmU6
OkFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRp
b25zJik7CiAgICAgdm9pZCBiZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkpOwog
ICAgIHZvaWQgZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXIubWVzc2FnZXMuaW4KaW5kZXggOTVkYmU4ZGQ1NWMyLi5lMjAzMmJjMzRhYmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5
TGlzdFJlY29yZGVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLm1lc3NhZ2VzLmluCkBAIC00OCw2ICs0
OCw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIgTm90UmVmQ291bnRl
ZCBTdHJlYW0gewogICAgIERyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBzb3VyY2VJbWFnZUlkZW50aWZpZXIs
IFdlYkNvcmU6OkZsb2F0UmVjdCBzb3VyY2VJbWFnZVJlY3QsIElQQzo6RmlsdGVyUmVmZXJlbmNl
IGZpbHRlcikKICAgICBEcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllciwgV2ViQ29yZTo6RmxvYXRSZWN0IGRlc3Rp
bmF0aW9uUmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0IHNyY1JlY3QsIHN0cnVjdCBXZWJDb3JlOjpJ
bWFnZVBhaW50aW5nT3B0aW9ucyBvcHRpb25zKQogICAgIERyYXdOYXRpdmVJbWFnZShXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpG
bG9hdFNpemUgaW1hZ2VTaXplLCBXZWJDb3JlOjpGbG9hdFJlY3QgZGVzdFJlY3QsIFdlYkNvcmU6
OkZsb2F0UmVjdCBzcmNSZWN0LCBzdHJ1Y3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMg
b3B0aW9ucykKKyAgICBEcmF3U3lzdGVtSW1hZ2UoUmVmPFdlYkNvcmU6OlN5c3RlbUltYWdlPiBz
eXN0ZW1JbWFnZSwgV2ViQ29yZTo6RmxvYXRSZWN0IGRlc3RpbmF0aW9uKQogICAgIERyYXdQYXR0
ZXJuKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUlkZW50aWZpZXIs
IFdlYkNvcmU6OkZsb2F0UmVjdCBkZXN0UmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0IHRpbGVSZWN0
LCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtLCBXZWJDb3JlOjpGbG9hdFBvaW50
IHBoYXNlLCBXZWJDb3JlOjpGbG9hdFNpemUgc3BhY2luZywgc3RydWN0IFdlYkNvcmU6OkltYWdl
UGFpbnRpbmdPcHRpb25zIG9wdGlvbnMpCiAgICAgQmVnaW5UcmFuc3BhcmVuY3lMYXllcihmbG9h
dCBvcGFjaXR5KQogICAgIEVuZFRyYW5zcGFyZW5jeUxheWVyKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDhlOGFlZjcxYTU3ZC4uYjhhZjJjNTUxNWExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBi
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTYzNyw2ICs2Mzcs
NyBAQCBkZWYgY2xhc3NfdGVtcGxhdGVfaGVhZGVycyh0ZW1wbGF0ZV9zdHJpbmcpOgogICAgICAg
ICAnc3RkOjpvcHRpb25hbCc6IHsnaGVhZGVycyc6IFsnPG9wdGlvbmFsPiddLCAnYXJndW1lbnRf
Y29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnc3RkOjpw
YWlyJzogeydoZWFkZXJzJzogWyc8dXRpbGl0eT4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMn
OiBbJyJBcmd1bWVudENvZGVycy5oIiddfSwKICAgICAgICAgJ0lQQzo6QXJyYXlSZWZlcmVuY2Un
OiB7J2hlYWRlcnMnOiBbJyJBcnJheVJlZmVyZW5jZS5oIiddLCAnYXJndW1lbnRfY29kZXJfaGVh
ZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAorICAgICAgICAnUmVmJzogeydoZWFkZXJz
JzogWyc8d3RmL1JlZi5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50
Q29kZXJzLmgiJ119LAogICAgICAgICAnUmVmUHRyJzogeydoZWFkZXJzJzogWyc8d3RmL1JlZkNv
dW50ZWQuaD4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVycy5o
IiddfSwKICAgICAgICAgJ1JldGFpblB0cic6IHsnaGVhZGVycyc6IFsnPHd0Zi9SZXRhaW5QdHIu
aD4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVyc0NGLmgiJ119
LAogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCmluZGV4IDk5ODdiMWE4NDc2OC4uODU3N2Q4OGUyNTZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTMxLDYgKzMxLDkgQEAKICNp
bmNsdWRlICJTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0FwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0FwcGxlUGF5
TG9nb1N5c3RlbUltYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0Jsb2JQYXJ0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZVF1ZXJ5
T3B0aW9ucy5oPgpAQCAtODQsNiArODcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdv
cmtlckRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlRGF0YS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2hhcmVkQnVmZmVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TeXN0ZW1JbWFnZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVGV4dENoZWNrZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1RleHRJbmRpY2F0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWluZ0Z1bmN0aW9uLmg+CkBA
IC0zMTc1LDYgKzMxNzksNTIgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2QKICAgICByZXR1cm4g
V2ViQ29yZTo6U2NyaXB0QnVmZmVyIHsgV1RGTW92ZShidWZmZXIpIH07CiB9CiAKK3RlbXBsYXRl
PHR5cGVuYW1lIEVuY29kZXI+Cit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFN5c3RlbUltYWdlPj46
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8U3lzdGVtSW1hZ2U+JiBzeXN0ZW1J
bWFnZSkKK3sKKyAgICBlbmNvZGVyIDw8IHN5c3RlbUltYWdlLT5zeXN0ZW1JbWFnZVR5cGUoKTsK
KworICAgIHN3aXRjaCAoc3lzdGVtSW1hZ2UtPnN5c3RlbUltYWdlVHlwZSgpKSB7CisjaWYgRU5B
QkxFKEFQUExFX1BBWSkKKyAgICBjYXNlIFN5c3RlbUltYWdlVHlwZTo6QXBwbGVQYXlCdXR0b246
CisgICAgICAgIGRvd25jYXN0PEFwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2U+KHN5c3RlbUltYWdl
LmdldCgpKS5lbmNvZGUoZW5jb2Rlcik7CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgU3lz
dGVtSW1hZ2VUeXBlOjpBcHBsZVBheUxvZ286CisgICAgICAgIGRvd25jYXN0PEFwcGxlUGF5TG9n
b1N5c3RlbUltYWdlPihzeXN0ZW1JbWFnZS5nZXQoKSkuZW5jb2RlKGVuY29kZXIpOworICAgICAg
ICByZXR1cm47CisjZW5kaWYKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30K
KwordGVtcGxhdGUKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8U3lzdGVtSW1hZ2U+Pjo6ZW5jb2Rl
PEVuY29kZXI+KEVuY29kZXImLCBjb25zdCBSZWY8U3lzdGVtSW1hZ2U+Jik7Cit0ZW1wbGF0ZQor
dm9pZCBBcmd1bWVudENvZGVyPFJlZjxTeXN0ZW1JbWFnZT4+OjplbmNvZGU8U3RyZWFtQ29ubmVj
dGlvbkVuY29kZXI+KFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyJiwgY29uc3QgUmVmPFN5c3RlbUlt
YWdlPiYpOworCitzdGQ6Om9wdGlvbmFsPFJlZjxTeXN0ZW1JbWFnZT4+IEFyZ3VtZW50Q29kZXI8
UmVmPFN5c3RlbUltYWdlPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6
b3B0aW9uYWw8U3lzdGVtSW1hZ2VUeXBlPiBzeXN0ZW1JbWFnZVR5cGU7CisgICAgZGVjb2RlciA+
PiBzeXN0ZW1JbWFnZVR5cGU7CisgICAgaWYgKCFzeXN0ZW1JbWFnZVR5cGUpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzd2l0Y2ggKCpzeXN0ZW1JbWFnZVR5cGUpIHsKKyNp
ZiBFTkFCTEUoQVBQTEVfUEFZKQorICAgIGNhc2UgU3lzdGVtSW1hZ2VUeXBlOjpBcHBsZVBheUJ1
dHRvbjoKKyAgICAgICAgcmV0dXJuIEFwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2U6OmRlY29kZShk
ZWNvZGVyKTsKKworICAgIGNhc2UgU3lzdGVtSW1hZ2VUeXBlOjpBcHBsZVBheUxvZ286CisgICAg
ICAgIHJldHVybiBBcHBsZVBheUxvZ29TeXN0ZW1JbWFnZTo6ZGVjb2RlKGRlY29kZXIpOworI2Vu
ZGlmCisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKK30KKwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiB2b2lkIEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZSYg
bWVzc2FnZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgKaW5kZXggNmUyN2E3ODcyMDIxLi4zMmUzNTVkZTA2NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0xNDUsNiArMTQ1LDcgQEAgY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNwcmluZ1RpbWluZ0Z1bmN0aW9uOwogY2xh
c3MgU3RlcHNUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25z
dHJhaW50czsKK2NsYXNzIFN5c3RlbUltYWdlOwogY2xhc3MgVGV4dENoZWNraW5nUmVxdWVzdERh
dGE7CiBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIGNsYXNzIFVzZXJTdHlsZVNoZWV0OwpA
QCAtNzc3LDYgKzc3OCwxMiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OlNjcmlwdEJ1ZmZlcj4gewogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNj
cmlwdEJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlN5c3RlbUltYWdlPj4geworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEVuY29kZXI+CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBS
ZWY8V2ViQ29yZTo6U3lzdGVtSW1hZ2U+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVm
PFdlYkNvcmU6OlN5c3RlbUltYWdlPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKICNpZiBFTkFC
TEUoREFUQV9ERVRFQ1RJT04pCiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6RGF0YURldGVjdG9yRWxlbWVudEluZm8+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlclByb3h5LmNwcAppbmRleCA4N2FhYTBhZTIxOTAuLjkwMWI5OTA0Njc1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcApAQCAtMjAz
LDYgKzIwMywxMSBAQCB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3Jk
RHJhd05hdGl2ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbgogICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OkRyYXdOYXRpdmVJbWFnZShpbWFnZUlkZW50aWZp
ZXIsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpKTsKIH0KIAordm9pZCBS
ZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZERyYXdTeXN0ZW1JbWFnZShjb25z
dCBSZWY8U3lzdGVtSW1hZ2U+JiBzeXN0ZW1JbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvbikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpE
cmF3U3lzdGVtSW1hZ2Uoc3lzdGVtSW1hZ2UsIGRlc3RpbmF0aW9uKSk7Cit9CisKIHZvaWQgUmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmREcmF3UGF0dGVybihSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRy
YW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2lu
ZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6RHJhd1BhdHRlcm4oaW1hZ2VJZGVudGlm
aWVyLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlv
bnMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oCmluZGV4IGM2
NzhmODgzMmJlZi4uMGNkZWJiODY2OTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RS
ZWNvcmRlclByb3h5LmgKQEAgLTkxLDYgKzkxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlY29y
ZERyYXdHbHlwaHMoY29uc3QgV2ViQ29yZTo6Rm9udCYsIGNvbnN0IFdlYkNvcmU6OkdseXBoQnVm
ZmVyR2x5cGgqLCBjb25zdCBXZWJDb3JlOjpHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBj
b3VudCwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIFdlYkNvcmU6OkZv
bnRTbW9vdGhpbmdNb2RlKSBmaW5hbDsKICAgICB2b2lkIHJlY29yZERyYXdJbWFnZUJ1ZmZlcihX
ZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQ
YWludGluZ09wdGlvbnMmKSBmaW5hbDsKICAgICB2b2lkIHJlY29yZERyYXdOYXRpdmVJbWFnZShX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VJZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJD
b3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkRHJhd1N5
c3RlbUltYWdlKGNvbnN0IFJlZjxXZWJDb3JlOjpTeXN0ZW1JbWFnZT4mLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmKTsKICAgICB2b2lkIHJlY29yZERyYXdQYXR0ZXJuKFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgV2ViQ29yZTo6QWZm
aW5lVHJhbnNmb3JtJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09w
dGlvbnMmID0geyB9KSBmaW5hbDsKICAgICB2b2lkIHJlY29yZEJlZ2luVHJhbnNwYXJlbmN5TGF5
ZXIoZmxvYXQpIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkRW5kVHJhbnNwYXJlbmN5TGF5ZXIoKSBm
aW5hbDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453653</attachid>
            <date>2022-03-02 13:09:47 -0800</date>
            <delta_ts>2022-03-03 11:01:57 -0800</delta_ts>
            <desc>[fast-cq] Patch</desc>
            <filename>bug-237177-20220302140946.patch</filename>
            <type>text/plain</type>
            <size>87372</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwMDZhMDM4NDZlNTRmNjRiN2E2NmZlZjcwNDU1ZjY0OTdiOGUwZDRjLi5k
OGM1NGMyN2IxMzBlNzkzNjBmNWE3MmFkNGIyNTFmNTI1MTczZWFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTIwIEBACisyMDIyLTAzLTAyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNv
bT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIGRvbnQgbG9hZCBBcHBsZSBQYXkgYnV0dG9uL2xv
Z28gUERGcyBpbiB0aGUgV2ViUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TeXN0ZW1JbWFnZS5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUltYWdlOjpkcmF3IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlN5c3RlbUltYWdlOjpTeXN0ZW1JbWFnZSk6CisgICAgICAgIEludHJvZHVjZSBh
IG5ldyBleHRlbmRhYmxlIGNsYXNzIGBTeXN0ZW1JbWFnZWAgdGhhdCByZXByZXNlbnRzIGEgY29s
bGVjdGlvbiBvZiBhcmd1bWVudHMKKyAgICAgICAgYW5kIG1ldGhvZG9sb2d5ICh0aGF0IHVzZXMg
dGhvc2UgYXJndW1lbnRzKSB0byBkcmF3IHNvbWV0aGluZyBmcm9tIHRoZSBzeXN0ZW0uCisgICAg
ICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyB0d28gY29uY3JldGUgdXNlczoKKyAgICAgICAgLSBg
QXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZWAgdXNlcyBQYXNzS2l0IFNQSSB0byBkcmF3IGFuIEFw
cGxlIFBheSBidXR0b24uCisgICAgICAgIC0gYEFwcGxlUGF5TG9nb1N5c3RlbUltYWdlYCBsb2Fk
cyBhIFBERiBmaWxlIG9mIHRoZSBBcHBsZSBQYXkgbG9nbyBmcm9tIGluc2lkZSBQYXNzS2l0Lgor
ICAgICAgICBUaGlzIGFyY2hpdGVjdHVyZSB3YXMgY2hvc2VuIHNvIHRoYXQgYEdyYXBoaWNzQ29u
dGV4dGAgZG9lc24ndCBoYXZlIHRvIGtub3cgYWJvdXQgQXBwbGUgUGF5CisgICAgICAgIHNwZWNp
ZmljIHRoaW5ncywgaW5zdGVhZCBvbmx5IGRlYWxpbmcgd2l0aCBhIHZlcnkgZ2VuZXJpYyBpbnRl
cmZhY2UgKHdob3Mgc3ViY2xhc3NlcyBrbm93CisgICAgICAgIG1vcmUgc3BlY2lmaWNhbGx5IHdo
YXQgdG8gZG8gd2l0aCB0aGUgZGF0YSB0aGV5J3JlIGdpdmVuKS4KKworICAgICAgICAqIE1vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZS5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsZVBheUJ1dHRvblN5c3RlbUltYWdlOjpBcHBsZVBheUJ1dHRvblN5c3RlbUlt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2U6OmVuY29k
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheUJ1dHRvblN5c3RlbUltYWdlOjpk
ZWNvZGUpOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2UubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6dG9Q
S1BheW1lbnRCdXR0b25UeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvUEtQYXltZW50QnV0dG9u
U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZTo6ZHJh
dyBjb25zdCk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oOgorICAgICAgICBEcml2ZS1ieTogTW92ZSBgQXBw
bGVQYXlCdXR0b25TdHlsZWAgYW5kIGBBcHBsZVBheUJ1dHRvblR5cGVgIHRvIGBBcHBsZVBheUJ1
dHRvblN5c3RlbUltYWdlLmhgCisgICAgICAgIHNvIHRoZXkgY2FuIGJlIHVzZWQgZWxzZXdoZXJl
IChlLmcuIEdQVVByb2Nlc3MpIHdpdGhvdXQgaGF2aW5nIHRvIGluY2x1ZGUgZXZlcnl0aGluZyBl
bHNlLgorCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxvZ29TeXN0ZW1JbWFn
ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5TG9nb1N5c3RlbUltYWdlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2U6OkFwcGxl
UGF5TG9nb1N5c3RlbUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5TG9nb1N5c3Rl
bUltYWdlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlMb2dvU3lz
dGVtSW1hZ2U6OmRlY29kZSk6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIE1vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2UubW06IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6cGFzc0tpdEJ1bmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpsb2FkUGFzc0tpdFBERlBh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6YXBwbGVQYXlMb2dvV2hpdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6YXBwbGVQYXlMb2dvQmxhY2spOgorICAgICAgICAoV2ViQ29yZTo6YXBwbGVQYXlMb2dv
Rm9yU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2U6OmRy
YXcgY29uc3QpOgorICAgICAgICBBZGQgYSBuZXcgYEFwcGxlUGF5TG9nb1N0eWxlYCBzbyB0aGF0
IHRoZSBXZWJQcm9jZXNzIGlzbid0IGFibGUgdG8gcHJvdmlkZSBhbiBhcmJpdHJhcnkgUERGCisg
ICAgICAgIHRvIGxvYWQgd2hlbiByZW5kZXJpbmcgYC13ZWJraXQtbmFtZWQtaW1hZ2UoYXBwbGUt
cGF5LWxvZ28tW3doaXRlLGJsYWNrXSlgLgorCisgICAgICAgICogcGxhdGZvcm0vY29jb2EvVGhl
bWVDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lQ29jb2E6OmRyYXdOYW1lZEltYWdl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmZpdENvbnRleHRUb0JveCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpwYXNzS2l0QnVuZGxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OmxvYWRQYXNzS2l0UERGUGFnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjphcHBs
ZVBheUJ1dHRvbkxvZ29CbGFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjphcHBsZVBh
eUJ1dHRvbkxvZ29XaGl0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpkcmF3QXBwbGVQ
YXlCdXR0b24pOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29h
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDb2NvYTo6cGFpbnRBcHBsZVBheUJ1
dHRvbik6CisgICAgICAgIChXZWJDb3JlOjp0b1BLUGF5bWVudEJ1dHRvblN0eWxlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OnRvUEtQYXltZW50QnV0dG9uVHlwZSk6IERlbGV0ZWQuCisg
ICAgICAgIE1vdmUgdGhlIGxvZ2ljIHRoYXQgZHJhd3MgdGhlIEFwcGxlIFBheSBidXR0b24gdG8g
YSBtZXRob2Qgb24gYEdyYXBoaWNzQ29udGV4dGAgc28gdGhhdCBpdAorICAgICAgICBjYW4gaG9v
ayBpbnRvIHRoZSB2YXJpb3VzIEdQVVByb2Nlc3MgZmxhZ3Mvc3lzdGVtcy4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmRyYXdTeXN0ZW1JbWFnZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpzY2FsZVRvRml0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9C
aWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
QmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaWZ1cmNh
dGVkR3JhcGhpY3NDb250ZXh0OjpkcmF3U3lzdGVtSW1hZ2UpOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpOdWxsR3JhcGhpY3NDb250ZXh0OjpkcmF3U3lzdGVtSW1hZ2UpOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjphcHBlbmQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OmFwcGx5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpkZXN0cm95KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpzYWZlQ29weSBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5
cGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6c2l6ZU9mSXRl
bUluQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmlzRHJhd2luZ0l0ZW0p
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmlzSW5saW5lSXRlbSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3U3lzdGVtSW1hZ2U6OkRyYXdTeXN0ZW1J
bWFnZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdTeXN0ZW1J
bWFnZTo6c3lzdGVtSW1hZ2UgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEcmF3U3lzdGVtSW1hZ2U6OmRlc3RpbmF0aW9uIGNvbnN0KTogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1N5c3RlbUltYWdlOjpnbG9iYWxCb3VuZHMg
Y29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3U3lzdGVt
SW1hZ2U6OmxvY2FsQm91bmRzIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd1N5c3RlbUltYWdlOjplbmNvZGUgY29uc3QpOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3U3lzdGVtSW1hZ2U6OmRlY29kZSk6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3U3lzdGVtSW1hZ2U6OmFw
cGx5IGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6b3BlcmF0
b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVjb3JkZXI6OmRyYXdTeXN0ZW1JbWFnZSk6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRE
cmF3U3lzdGVtSW1hZ2UpOiBBZGRlZC4KKyAgICAgICAgQWRkIG5ldyBgRHJhd1N5c3RlbUltYWdl
YCBkaXNwbGF5IGxpc3QgaXRlbSB0byBoYW5kbGUgR1BVUHJvY2VzcyBkcmF3aW5nIG9mIGBTeXN0
ZW1JbWFnZWAuCisgICAgICAgIERyaXZlLWJ5OiBBZGQgaGVscGVyIG1ldGhvZCBmb3IgYHNjYWxl
YGluZyB0aGUgYEdyYXBoaWNzQ29udGV4dGAgYmFzZWQgb24gdGhlIGBhc3BlY3RSYXRpb2AKKyAg
ICAgICAgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGBGbG9h
dFJlY3RgIChtb3ZlZCBmcm9tIGBUaGVtZUNvY29hLm1tYCkuCisKKyAgICAgICAgKiBIZWFkZXJz
LmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50
eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAg
ICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuY3BwOgorICAgICAgICAq
IE1vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQmFzaWNDcmVkZW50aWFsLmg6CisgICAgICAg
IERyaXZlLWJ5OiBVbmlmaWVkIHNvdXJjZXMgZml4ZXMuCisKIDIwMjItMDMtMDIgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gQ29weSBjb250
ZXh0IG1lbnUgYWN0aW9uIHNob3VsZCBiZSB0aXRsZWQgIkNvcHkgTGluayIgd2hlbiBsb25nIHBy
ZXNzaW5nIGEgbm9uLWltYWdlIGxpbmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYmIwZTEyMGFhNDhmM2E4MzYwMmE5
MWY1MWY4ZDQyMzEwYjBmNDUxNS4uMjI5YmVlM2UxMjRiZDVkMjExNTFlZDZiMGU4NThmNTA5MGVl
ZmMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMi0wMy0wMiAgRGV2aW4gUm91c3Nv
ICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBkb250IGxvYWQg
QXBwbGUgUGF5IGJ1dHRvbi9sb2dvIFBERnMgaW4gdGhlIFdlYlByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzE3NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNlZSBgU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nYCBmb3IgYW4gZXhwbGFuYXRpb24gb2YgYFN5c3RlbUltYWdlYC4KKworICAgICAg
ICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8
U3lzdGVtSW1hZ2U+Pjo6ZW5jb2RlKTogQWRkZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8UmVmPFN5c3RlbUltYWdlPj46OmRlY29kZSk6IEFkZGVkLgorICAgICAgICBTdXBwb3J0IHNl
bmRpbmcgYFN5c3RlbUltYWdlYCAodGVjaG5pY2FsbHkgYFJlZjxTeXN0ZW1JbWFnZT5gKSBhY3Jv
c3MgcHJvY2Vzc2VzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNw
bGF5TGlzdFJlY29yZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmRyYXdTeXN0ZW1JbWFnZSk6IEFkZGVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94
eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXJQcm94eTo6cmVjb3JkRHJhd1N5c3RlbUltYWdlKTogQWRkZGVkLgorICAgICAgICBBZGQg
bmV3IGBEcmF3U3lzdGVtSW1hZ2VgIGRpc3BsYXkgbGlzdCBpdGVtLgorCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgIChjbGFzc190ZW1wbGF0ZV9oZWFkZXJz
KToKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGBSZWY8VD5gIGluIElQQyBtZXNzYWdlcy4KKwog
MjAyMi0wMy0wMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbaU9TXSBDb3B5IGNvbnRleHQgbWVudSBhY3Rpb24gc2hvdWxkIGJlIHRpdGxlZCAiQ29w
eSBMaW5rIiB3aGVuIGxvbmcgcHJlc3NpbmcgYSBub24taW1hZ2UgbGluawpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UKaW5kZXggM2NiNGE0OWQ5ODUxNmM5Y2JkNTFkZWRjZmFjMzZhZjJkZmQ1ZDE1MS4uOTA2ODk4
ODVhZDg0NTQxNDUwZWY3ZjUyYTNjOTAwY2M4NWY3MWE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBA
IC0xMzEsNiArMTMxLDggQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwog
CiAgICAgTW9kdWxlcy9haXJwbGF5L1BsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZp
ZXIuaAogCisgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUJ1dHRvblN5c3RlbUltYWdlLmgK
KyAgICBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TG9nb1N5c3RlbUltYWdlLmgKICAgICBNb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmgKICAgICBNb2R1bGVz
L2FwcGxlcGF5L1BheW1lbnQuaAogICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvbnRhY3Qu
aApAQCAtMTU3Miw2ICsxNTc0LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVB
REVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9TdHJpbmdUcnVuY2F0b3IuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1N5c3RlbUltYWdlLmgK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9UYWJTaXplLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9U
ZXh0UnVuLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5QnV0
dG9uU3lzdGVtSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlCdXR0b25TeXN0ZW1JbWFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5Y2VjYjJlMjI4NmEyZGY2NDk5Y2I5
MDFlNDAzNmYwNjM1OWU0N2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2UuaApAQCAtMCwwICsxLDE2MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFQUExFX1BBWSkKKwor
I2luY2x1ZGUgIlN5c3RlbUltYWdlLmgiCisjaW5jbHVkZSA8b3B0aW9uYWw+CisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBBcHBsZVBh
eUJ1dHRvblR5cGUgOiB1aW50OF90IHsKKyAgICBQbGFpbiwKKyAgICBCdXksCisgICAgU2V0VXAs
CisgICAgRG9uYXRlLAorICAgIENoZWNrT3V0LAorICAgIEJvb2ssCisgICAgU3Vic2NyaWJlLAor
I2lmIEVOQUJMRShBUFBMRV9QQVlfTkVXX0JVVFRPTl9UWVBFUykKKyAgICBSZWxvYWQsCisgICAg
QWRkTW9uZXksCisgICAgVG9wVXAsCisgICAgT3JkZXIsCisgICAgUmVudCwKKyAgICBTdXBwb3J0
LAorICAgIENvbnRyaWJ1dGUsCisgICAgVGlwLAorI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlf
TkVXX0JVVFRPTl9UWVBFUykKK307CisKK2VudW0gY2xhc3MgQXBwbGVQYXlCdXR0b25TdHlsZSA6
IHVpbnQ4X3QgeworICAgIFdoaXRlLAorICAgIFdoaXRlT3V0bGluZSwKKyAgICBCbGFjaywKK307
CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIEFwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2UgZmluYWwg
OiBwdWJsaWMgU3lzdGVtSW1hZ2UgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8QXBwbGVQYXlC
dXR0b25TeXN0ZW1JbWFnZT4gY3JlYXRlKEFwcGxlUGF5QnV0dG9uVHlwZSBhcHBsZVBheUJ1dHRv
blR5cGUsIEFwcGxlUGF5QnV0dG9uU3R5bGUgYXBwbGVQYXlCdXR0b25TdHlsZSwgY29uc3QgU3Ry
aW5nJiBsb2NhbGUsIGZsb2F0IGxhcmdlc3RDb3JuZXJSYWRpdXMpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBBcHBsZVBheUJ1dHRvblN5c3RlbUltYWdlKGFwcGxlUGF5QnV0
dG9uVHlwZSwgYXBwbGVQYXlCdXR0b25TdHlsZSwgbG9jYWxlLCBsYXJnZXN0Q29ybmVyUmFkaXVz
KSk7CisgICAgfQorCisgICAgdmlydHVhbCB+QXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZSgpID0g
ZGVmYXVsdDsKKworICAgIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmKSBjb25zdCBmaW5hbDsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
c3RkOjpvcHRpb25hbDxSZWY8QXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZT4+IGRlY29kZShEZWNv
ZGVyJik7CisKK3ByaXZhdGU6CisgICAgQXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZShBcHBsZVBh
eUJ1dHRvblR5cGUgYXBwbGVQYXlCdXR0b25UeXBlLCBBcHBsZVBheUJ1dHRvblN0eWxlIGFwcGxl
UGF5QnV0dG9uU3R5bGUsIGNvbnN0IFN0cmluZyYgbG9jYWxlLCBmbG9hdCBsYXJnZXN0Q29ybmVy
UmFkaXVzKQorICAgICAgICA6IFN5c3RlbUltYWdlKFN5c3RlbUltYWdlVHlwZTo6QXBwbGVQYXlC
dXR0b24pCisgICAgICAgICwgbV9hcHBsZVBheUJ1dHRvblR5cGUoYXBwbGVQYXlCdXR0b25UeXBl
KQorICAgICAgICAsIG1fYXBwbGVQYXlCdXR0b25TdHlsZShhcHBsZVBheUJ1dHRvblN0eWxlKQor
ICAgICAgICAsIG1fbG9jYWxlKGxvY2FsZSkKKyAgICAgICAgLCBtX2xhcmdlc3RDb3JuZXJSYWRp
dXMobGFyZ2VzdENvcm5lclJhZGl1cykKKyAgICB7CisgICAgfQorCisgICAgQXBwbGVQYXlCdXR0
b25UeXBlIG1fYXBwbGVQYXlCdXR0b25UeXBlOworICAgIEFwcGxlUGF5QnV0dG9uU3R5bGUgbV9h
cHBsZVBheUJ1dHRvblN0eWxlOworICAgIFN0cmluZyBtX2xvY2FsZTsKKyAgICBmbG9hdCBtX2xh
cmdlc3RDb3JuZXJSYWRpdXM7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBB
cHBsZVBheUJ1dHRvblN5c3RlbUltYWdlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
K3sKKyAgICBlbmNvZGVyIDw8IG1fYXBwbGVQYXlCdXR0b25UeXBlOworICAgIGVuY29kZXIgPDwg
bV9hcHBsZVBheUJ1dHRvblN0eWxlOworICAgIGVuY29kZXIgPDwgbV9sb2NhbGU7CisgICAgZW5j
b2RlciA8PCBtX2xhcmdlc3RDb3JuZXJSYWRpdXM7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29k
ZXI+CitzdGQ6Om9wdGlvbmFsPFJlZjxBcHBsZVBheUJ1dHRvblN5c3RlbUltYWdlPj4gQXBwbGVQ
YXlCdXR0b25TeXN0ZW1JbWFnZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisjZGVmaW5l
IERFQ09ERShuYW1lLCB0eXBlKSBcCisgICAgc3RkOjpvcHRpb25hbDx0eXBlPiBuYW1lOyBcCisg
ICAgZGVjb2RlciA+PiBuYW1lOyBcCisgICAgaWYgKCFuYW1lKSBcCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7IFwKKworICAgIERFQ09ERShhcHBsZVBheUJ1dHRvblR5cGUsIEFwcGxlUGF5
QnV0dG9uVHlwZSkKKyAgICBERUNPREUoYXBwbGVQYXlCdXR0b25TdHlsZSwgQXBwbGVQYXlCdXR0
b25TdHlsZSkKKyAgICBERUNPREUobG9jYWxlLCBTdHJpbmcpCisgICAgREVDT0RFKGxhcmdlc3RD
b3JuZXJSYWRpdXMsIGZsb2F0KQorCisjdW5kZWYgREVDT0RFCisKKyAgICByZXR1cm4gQXBwbGVQ
YXlCdXR0b25TeXN0ZW1JbWFnZTo6Y3JlYXRlKFdURk1vdmUoKmFwcGxlUGF5QnV0dG9uVHlwZSks
IFdURk1vdmUoKmFwcGxlUGF5QnV0dG9uU3R5bGUpLCBXVEZNb3ZlKCpsb2NhbGUpLCBXVEZNb3Zl
KCpsYXJnZXN0Q29ybmVyUmFkaXVzKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpBcHBsZVBheUJ1dHRvblN5c3Rl
bUltYWdlKQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpTeXN0ZW1JbWFn
ZSYgc3lzdGVtSW1hZ2UpIHsgcmV0dXJuIHN5c3RlbUltYWdlLnN5c3RlbUltYWdlVHlwZSgpID09
IFdlYkNvcmU6OlN5c3RlbUltYWdlVHlwZTo6QXBwbGVQYXlCdXR0b247IH0KK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfRU5EKCkKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0
IEVudW1UcmFpdHM8V2ViQ29yZTo6QXBwbGVQYXlCdXR0b25UeXBlPiB7CisgICAgdXNpbmcgdmFs
dWVzID0gRW51bVZhbHVlczxXZWJDb3JlOjpBcHBsZVBheUJ1dHRvblR5cGUsCisgICAgICAgIFdl
YkNvcmU6OkFwcGxlUGF5QnV0dG9uVHlwZTo6UGxhaW4sCisgICAgICAgIFdlYkNvcmU6OkFwcGxl
UGF5QnV0dG9uVHlwZTo6QnV5LAorICAgICAgICBXZWJDb3JlOjpBcHBsZVBheUJ1dHRvblR5cGU6
OlNldFVwLAorICAgICAgICBXZWJDb3JlOjpBcHBsZVBheUJ1dHRvblR5cGU6OkRvbmF0ZSwKKyAg
ICAgICAgV2ViQ29yZTo6QXBwbGVQYXlCdXR0b25UeXBlOjpDaGVja091dCwKKyAgICAgICAgV2Vi
Q29yZTo6QXBwbGVQYXlCdXR0b25UeXBlOjpCb29rLAorICAgICAgICBXZWJDb3JlOjpBcHBsZVBh
eUJ1dHRvblR5cGU6OlN1YnNjcmliZQorI2lmIEVOQUJMRShBUFBMRV9QQVlfTkVXX0JVVFRPTl9U
WVBFUykKKyAgICAgICAgLCBXZWJDb3JlOjpBcHBsZVBheUJ1dHRvblR5cGU6OlJlbG9hZCwKKyAg
ICAgICAgV2ViQ29yZTo6QXBwbGVQYXlCdXR0b25UeXBlOjpBZGRNb25leSwKKyAgICAgICAgV2Vi
Q29yZTo6QXBwbGVQYXlCdXR0b25UeXBlOjpUb3BVcCwKKyAgICAgICAgV2ViQ29yZTo6QXBwbGVQ
YXlCdXR0b25UeXBlOjpPcmRlciwKKyAgICAgICAgV2ViQ29yZTo6QXBwbGVQYXlCdXR0b25UeXBl
OjpSZW50LAorICAgICAgICBXZWJDb3JlOjpBcHBsZVBheUJ1dHRvblR5cGU6OlN1cHBvcnQsCisg
ICAgICAgIFdlYkNvcmU6OkFwcGxlUGF5QnV0dG9uVHlwZTo6Q29udHJpYnV0ZSwKKyAgICAgICAg
V2ViQ29yZTo6QXBwbGVQYXlCdXR0b25UeXBlOjpUaXAKKyNlbmRpZiAvLyBFTkFCTEUoQVBQTEVf
UEFZX05FV19CVVRUT05fVFlQRVMpCisgICAgPjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEVu
dW1UcmFpdHM8V2ViQ29yZTo6QXBwbGVQYXlCdXR0b25TdHlsZT4geworICAgIHVzaW5nIHZhbHVl
cyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkFwcGxlUGF5QnV0dG9uU3R5bGUsCisg
ICAgICAgIFdlYkNvcmU6OkFwcGxlUGF5QnV0dG9uU3R5bGU6OldoaXRlLAorICAgICAgICBXZWJD
b3JlOjpBcHBsZVBheUJ1dHRvblN0eWxlOjpXaGl0ZU91dGxpbmUsCisgICAgICAgIFdlYkNvcmU6
OkFwcGxlUGF5QnV0dG9uU3R5bGU6OkJsYWNrCisgICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdURgorCisjZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BBWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZS5t
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jNDdmMTBjNzk0MjM1MWM3Y2RkM2MyMTQyNWMxYzY3NTI1ODc1NjJhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eUJ1dHRvblN5c3RlbUltYWdlLm1tCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJBcHBsZVBheUJ1dHRvblN5c3RlbUltYWdlLmgiCisK
KyNpZiBFTkFCTEUoQVBQTEVfUEFZKQorCisjaW1wb3J0ICJGbG9hdFJlY3QuaCIKKyNpbXBvcnQg
IkdyYXBoaWNzQ29udGV4dENHLmgiCisjaW1wb3J0IDxwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5r
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIFBLUGF5bWVudEJ1dHRvblR5cGUg
dG9QS1BheW1lbnRCdXR0b25UeXBlKEFwcGxlUGF5QnV0dG9uVHlwZSB0eXBlKQoreworICAgIHN3
aXRjaCAodHlwZSkgeworICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpQbGFpbjoKKyAgICAg
ICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRvblR5cGVQbGFpbjsKKyAgICBjYXNlIEFwcGxlUGF5QnV0
dG9uVHlwZTo6QnV5OgorICAgICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZUJ1eTsKKyAg
ICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6U2V0VXA6CisgICAgICAgIHJldHVybiBQS1BheW1l
bnRCdXR0b25UeXBlU2V0VXA7CisgICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OkRvbmF0ZToK
KyAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRvblR5cGVEb25hdGU7CisgICAgY2FzZSBBcHBs
ZVBheUJ1dHRvblR5cGU6OkNoZWNrT3V0OgorICAgICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9u
VHlwZUNoZWNrb3V0OworICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpCb29rOgorICAgICAg
ICByZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZUJvb2s7CisgICAgY2FzZSBBcHBsZVBheUJ1dHRv
blR5cGU6OlN1YnNjcmliZToKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRvblR5cGVTdWJz
Y3JpYmU7CisjaWYgSEFWRShQQVNTS0lUX05FV19CVVRUT05fVFlQRVMpCisgICAgY2FzZSBBcHBs
ZVBheUJ1dHRvblR5cGU6OlJlbG9hZDoKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRvblR5
cGVSZWxvYWQ7CisgICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OkFkZE1vbmV5OgorICAgICAg
ICByZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZUFkZE1vbmV5OworICAgIGNhc2UgQXBwbGVQYXlC
dXR0b25UeXBlOjpUb3BVcDoKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRvblR5cGVUb3BV
cDsKKyAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6T3JkZXI6CisgICAgICAgIHJldHVybiBQ
S1BheW1lbnRCdXR0b25UeXBlT3JkZXI7CisgICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OlJl
bnQ6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRCdXR0b25UeXBlUmVudDsKKyAgICBjYXNlIEFw
cGxlUGF5QnV0dG9uVHlwZTo6U3VwcG9ydDoKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRv
blR5cGVTdXBwb3J0OworICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpDb250cmlidXRlOgor
ICAgICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZUNvbnRyaWJ1dGU7CisgICAgY2FzZSBB
cHBsZVBheUJ1dHRvblR5cGU6OlRpcDoKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRvblR5
cGVUaXA7CisjZW5kaWYgLy8gSEFWRShQQVNTS0lUX05FV19CVVRUT05fVFlQRVMpCisgICAgfQor
fQorCitzdGF0aWMgUEtQYXltZW50QnV0dG9uU3R5bGUgdG9QS1BheW1lbnRCdXR0b25TdHlsZShB
cHBsZVBheUJ1dHRvblN0eWxlIHN0eWxlKQoreworICAgIHN3aXRjaCAoc3R5bGUpIHsKKyAgICBj
YXNlIEFwcGxlUGF5QnV0dG9uU3R5bGU6OldoaXRlOgorICAgICAgICByZXR1cm4gUEtQYXltZW50
QnV0dG9uU3R5bGVXaGl0ZTsKKyAgICBjYXNlIEFwcGxlUGF5QnV0dG9uU3R5bGU6OldoaXRlT3V0
bGluZToKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRvblN0eWxlV2hpdGVPdXRsaW5lOwor
ICAgIGNhc2UgQXBwbGVQYXlCdXR0b25TdHlsZTo6QmxhY2s6CisgICAgICAgIHJldHVybiBQS1Bh
eW1lbnRCdXR0b25TdHlsZUJsYWNrOworICAgIH0KK30KKwordm9pZCBBcHBsZVBheUJ1dHRvblN5
c3RlbUltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbikgY29uc3QKK3sKKyAgICBhdXRvIHBsYXRmb3JtQ29udGV4dCA9IGNvbnRl
eHQucGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KHBsYXRmb3JtQ29udGV4dCk7CisKKyAgICBDR0NvbnRleHRTZXRTaG91bGRTbW9vdGhGb250cyhw
bGF0Zm9ybUNvbnRleHQsIHRydWUpOworICAgIENHQ29udGV4dFNjYWxlQ1RNKHBsYXRmb3JtQ29u
dGV4dCwgMSwgLTEpOworCisgICAgUEtEcmF3QXBwbGVQYXlCdXR0b25XaXRoQ29ybmVyUmFkaXVz
KHBsYXRmb3JtQ29udGV4dCwgQ0dSZWN0TWFrZShkZXN0aW5hdGlvbi54KCksIC1kZXN0aW5hdGlv
bi5tYXhZKCksIGRlc3RpbmF0aW9uLndpZHRoKCksIGRlc3RpbmF0aW9uLmhlaWdodCgpKSwgMS4w
LCBtX2xhcmdlc3RDb3JuZXJSYWRpdXMsIHRvUEtQYXltZW50QnV0dG9uVHlwZShtX2FwcGxlUGF5
QnV0dG9uVHlwZSksIHRvUEtQYXltZW50QnV0dG9uU3R5bGUobV9hcHBsZVBheUJ1dHRvblN0eWxl
KSwgbV9sb2NhbGUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoQVBQTEVfUEFZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9BcHBsZVBheUxvZ29TeXN0ZW1JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheUxvZ29TeXN0ZW1JbWFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5NDEwODM2NTk4
YWNkYWU3MDliNjM0MjhkYmI4MGUwMWNhMGFiZjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TG9nb1N5c3RlbUltYWdlLmgKQEAgLTAs
MCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBUFBM
RV9QQVkpCisKKyNpbmNsdWRlICJTeXN0ZW1JbWFnZS5oIgorI2luY2x1ZGUgPG9wdGlvbmFsPgor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2VudW0gY2xhc3MgQXBwbGVQYXlMb2dvU3R5bGUgOiB1aW50OF90IHsK
KyAgICBXaGl0ZSwKKyAgICBCbGFjaywKK307CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIEFwcGxl
UGF5TG9nb1N5c3RlbUltYWdlIGZpbmFsIDogcHVibGljIFN5c3RlbUltYWdlIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmPEFwcGxlUGF5TG9nb1N5c3RlbUltYWdlPiBjcmVhdGUoQXBwbGVQYXlM
b2dvU3R5bGUgYXBwbGVQYXlMb2dvU3R5bGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBBcHBsZVBheUxvZ29TeXN0ZW1JbWFnZShhcHBsZVBheUxvZ29TdHlsZSkpOworICAg
IH0KKworICAgIHZpcnR1YWwgfkFwcGxlUGF5TG9nb1N5c3RlbUltYWdlKCkgPSBkZWZhdWx0Owor
CisgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0
IGZpbmFsOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFJlZjxBcHBsZVBheUxvZ29TeXN0ZW1JbWFnZT4+IGRlY29kZShEZWNvZGVyJik7CisKK3By
aXZhdGU6CisgICAgQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2UoQXBwbGVQYXlMb2dvU3R5bGUgYXBw
bGVQYXlMb2dvU3R5bGUpCisgICAgICAgIDogU3lzdGVtSW1hZ2UoU3lzdGVtSW1hZ2VUeXBlOjpB
cHBsZVBheUxvZ28pCisgICAgICAgICwgbV9hcHBsZVBheUxvZ29TdHlsZShhcHBsZVBheUxvZ29T
dHlsZSkKKyAgICB7CisgICAgfQorCisgICAgQXBwbGVQYXlMb2dvU3R5bGUgbV9hcHBsZVBheUxv
Z29TdHlsZTsKK307CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEFwcGxlUGF5TG9n
b1N5c3RlbUltYWdlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNv
ZGVyIDw8IG1fYXBwbGVQYXlMb2dvU3R5bGU7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+
CitzdGQ6Om9wdGlvbmFsPFJlZjxBcHBsZVBheUxvZ29TeXN0ZW1JbWFnZT4+IEFwcGxlUGF5TG9n
b1N5c3RlbUltYWdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyNkZWZpbmUgREVDT0RF
KG5hbWUsIHR5cGUpIFwKKyAgICBzdGQ6Om9wdGlvbmFsPHR5cGU+IG5hbWU7IFwKKyAgICBkZWNv
ZGVyID4+IG5hbWU7IFwKKyAgICBpZiAoIW5hbWUpIFwKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsgXAorCisgICAgREVDT0RFKGFwcGxlUGF5TG9nb1N0eWxlLCBBcHBsZVBheUxvZ29TdHls
ZSkKKworI3VuZGVmIERFQ09ERQorCisgICAgcmV0dXJuIEFwcGxlUGF5TG9nb1N5c3RlbUltYWdl
OjpjcmVhdGUoV1RGTW92ZSgqYXBwbGVQYXlMb2dvU3R5bGUpKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkFwcGxl
UGF5TG9nb1N5c3RlbUltYWdlKQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3Jl
OjpTeXN0ZW1JbWFnZSYgc3lzdGVtSW1hZ2UpIHsgcmV0dXJuIHN5c3RlbUltYWdlLnN5c3RlbUlt
YWdlVHlwZSgpID09IFdlYkNvcmU6OlN5c3RlbUltYWdlVHlwZTo6QXBwbGVQYXlMb2dvOyB9CitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0
ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkFwcGxlUGF5TG9nb1N0eWxlPiB7CisgICAg
dXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6QXBwbGVQYXlMb2dv
U3R5bGUsCisgICAgICAgIFdlYkNvcmU6OkFwcGxlUGF5TG9nb1N0eWxlOjpXaGl0ZSwKKyAgICAg
ICAgV2ViQ29yZTo6QXBwbGVQYXlMb2dvU3R5bGU6OkJsYWNrCisgICAgPjsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BBWSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2Uu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TG9nb1N5c3RlbUlt
YWdlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU2NmVkMWEyMWJjOTI2Yzc5NTI3NTdlNDE1MTEyN2UzODk4Y2My
NTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5TG9nb1N5c3RlbUltYWdlLm1tCkBAIC0wLDAgKzEsMTE4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJBcHBsZVBheUxvZ29TeXN0ZW1JbWFnZS5oIgor
CisjaWYgRU5BQkxFKEFQUExFX1BBWSkKKworI2ltcG9ydCAiRmxvYXRSZWN0LmgiCisjaW1wb3J0
ICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitzdGF0aWMgTlNCdW5kbGUgKnBhc3NLaXRCdW5kbGUoKQoreworICAg
IHN0YXRpYyBOU0J1bmRsZSAqcGFzc0tpdEJ1bmRsZTsKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25j
ZV90IG9uY2VUb2tlbjsKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisjaWYgUExB
VEZPUk0oTUFDKQorICAgICAgICBwYXNzS2l0QnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZVdpdGhV
Ukw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpAIi9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3
b3Jrcy9QYXNzS2l0LmZyYW1ld29yayIgaXNEaXJlY3Rvcnk6WUVTXV07CisjZWxzZQorICAgICAg
ICBkbG9wZW4oIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1Bhc3NLaXQuZnJhbWV3b3JrL1Bh
c3NLaXQiLCBSVExEX05PVyk7CisgICAgICAgIHBhc3NLaXRCdW5kbGUgPSBbTlNCdW5kbGUgYnVu
ZGxlRm9yQ2xhc3M6TlNDbGFzc0Zyb21TdHJpbmcoQCJQS1BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXIiKV07CisjZW5kaWYKKyAgICB9KTsKKyAgICByZXR1cm4gcGFzc0tpdEJ1bmRs
ZTsKK30KKworc3RhdGljIFJldGFpblB0cjxDR1BERlBhZ2VSZWY+IGxvYWRQYXNzS2l0UERGUGFn
ZShOU1N0cmluZyAqaW1hZ2VOYW1lKQoreworICAgIE5TVVJMICp1cmwgPSBbcGFzc0tpdEJ1bmRs
ZSgpIFVSTEZvclJlc291cmNlOmltYWdlTmFtZSB3aXRoRXh0ZW5zaW9uOkAicGRmIl07CisgICAg
aWYgKCF1cmwpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8gZG9jdW1lbnQgPSBh
ZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoVVJMKChDRlVSTFJlZil1cmwpKTsKKyAgICBp
ZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIUNHUERGRG9j
dW1lbnRHZXROdW1iZXJPZlBhZ2VzKGRvY3VtZW50LmdldCgpKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgcmV0dXJuIENHUERGRG9jdW1lbnRHZXRQYWdlKGRvY3VtZW50LmdldCgpLCAx
KTsKK30KKworc3RhdGljIENHUERGUGFnZVJlZiBhcHBsZVBheUxvZ29XaGl0ZSgpCit7CisgICAg
c3RhdGljIENHUERGUGFnZVJlZiBsb2dvUGFnZTsKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90
IG9uY2VUb2tlbjsKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisgICAgICAgIGxv
Z29QYWdlID0gbG9hZFBhc3NLaXRQREZQYWdlKEAiUGF5QnV0dG9uTG9nb1doaXRlIikubGVha1Jl
ZigpOworICAgIH0pOworICAgIHJldHVybiBsb2dvUGFnZTsKK30KKworc3RhdGljIENHUERGUGFn
ZVJlZiBhcHBsZVBheUxvZ29CbGFjaygpCit7CisgICAgc3RhdGljIENHUERGUGFnZVJlZiBsb2dv
UGFnZTsKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBkaXNwYXRj
aF9vbmNlKCZvbmNlVG9rZW4sIF57CisgICAgICAgIGxvZ29QYWdlID0gbG9hZFBhc3NLaXRQREZQ
YWdlKEAiUGF5QnV0dG9uTG9nb0JsYWNrIikubGVha1JlZigpOworICAgIH0pOworICAgIHJldHVy
biBsb2dvUGFnZTsKK30KKworc3RhdGljIENHUERGUGFnZVJlZiBhcHBsZVBheUxvZ29Gb3JTdHls
ZShBcHBsZVBheUxvZ29TdHlsZSBzdHlsZSkKK3sKKyAgICBzd2l0Y2ggKHN0eWxlKSB7CisgICAg
Y2FzZSBBcHBsZVBheUxvZ29TdHlsZTo6V2hpdGU6CisgICAgICAgIHJldHVybiBhcHBsZVBheUxv
Z29XaGl0ZSgpOworCisgICAgY2FzZSBBcHBsZVBheUxvZ29TdHlsZTo6QmxhY2s6CisgICAgICAg
IHJldHVybiBhcHBsZVBheUxvZ29CbGFjaygpOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIEFwcGxlUGF5TG9nb1N5c3Rl
bUltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbikgY29uc3QKK3sKKyAgICBDR1BERlBhZ2VSZWYgcGFnZSA9IGFwcGxlUGF5TG9n
b0ZvclN0eWxlKG1fYXBwbGVQYXlMb2dvU3R5bGUpOworICAgIGlmICghcGFnZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgQ0dTaXplIHBkZlNpemUgPSBDR1BERlBhZ2VHZXRCb3hSZWN0KHBhZ2Us
IGtDR1BERk1lZGlhQm94KS5zaXplOworCisgICAgY29udGV4dC50cmFuc2xhdGUoZGVzdGluYXRp
b24ueCgpLCBkZXN0aW5hdGlvbi55KCkpOworICAgIGNvbnRleHQuc2NhbGVUb0ZpdChGbG9hdFNp
emUocGRmU2l6ZSksIGRlc3RpbmF0aW9uLnNpemUoKSk7CisKKyAgICBjb250ZXh0LnRyYW5zbGF0
ZSgwLCBwZGZTaXplLmhlaWdodCk7CisgICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUoMSwgLTEp
KTsKKworICAgIENHQ29udGV4dERyYXdQREZQYWdlKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCks
IHBhZ2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
QVBQTEVfUEFZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9Q
YXltZW50Q29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9Q
YXltZW50Q29vcmRpbmF0b3IuY3BwCmluZGV4IDRhOTQzMjI0OWQ1MmQ1MWQxNDdiODZlNTcwOGQ1
MTg4OGJhNjRmNTYuLjc2MmViOTY5OGY1NTYxNzY2MjQzNzU2MzI0OTc0ZTZhMTNkNWI4ZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5h
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29y
ZGluYXRvci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogCiAj
aW5jbHVkZSAiQXBwbGVQYXlDb3Vwb25Db2RlVXBkYXRlLmgiCisjaW5jbHVkZSAiQXBwbGVQYXlQ
YXltZW50QXV0aG9yaXphdGlvblJlc3VsdC5oIgogI2luY2x1ZGUgIkFwcGxlUGF5UGF5bWVudE1l
dGhvZFVwZGF0ZS5oIgogI2luY2x1ZGUgIkFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlLmgi
CiAjaW5jbHVkZSAiQXBwbGVQYXlTaGlwcGluZ01ldGhvZC5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9CYXNpY0NyZWRlbnRpYWwuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQmFzaWNDcmVkZW50
aWFsLmgKaW5kZXggNWQ3ZTQ0MTIzNjRlN2U3NDhjZDY2NWIyOTAyZTgyNDE1ODBmYjFjOC4uYTM4
MjMwYjljOTU2YmQxYjYwY2Q1NmQyM2ViZGFmYmU4OGM5NzE4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9CYXNpY0NyZWRlbnRpYWwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0Jhc2ljQ3Jl
ZGVudGlhbC5oCkBAIC0zMyw2ICszMywxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIERvY3VtZW50OwordGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlz
ZURlZmVycmVkOworc3RydWN0IElETEJvb2xlYW47CisKIGNsYXNzIEJhc2ljQ3JlZGVudGlhbCA6
IHB1YmxpYyBSZWZDb3VudGVkPEJhc2ljQ3JlZGVudGlhbD4gewogcHVibGljOgogICAgIGVudW0g
Y2xhc3MgVHlwZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA0MGRkYjFmNmQxODEzNDE3
NzYzN2U4ZmQxMDEyODQ5MjQ5Y2NiYmIzLi5hYTQ0ZjVmNTMxNjdiOWJjMGYxNDIzZjI3YmZjMjRk
NzE3ZWJhY2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTcxLDkgKzcxLDExIEBAIEpT
QXBwbGVQYXlTaGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQuY3BwCiBKU0FwcGxlUGF5U2hpcHBp
bmdNZXRob2RVcGRhdGUuY3BwCiBKU0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmNwcAog
TW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCitNb2R1bGVzL2FwcGxl
cGF5L0FwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2UubW0KIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlDb3Vwb25Db2RlQ2hhbmdlZEV2ZW50LmNwcAogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUNh
bmNlbEV2ZW50LmNwcAogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUNvbnRhY3RGaWVsZC5jcHAK
K01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2UubW0KIE1vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlNZXJjaGFudENhcGFiaWxpdHkuY3BwCiBNb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQuY3BwCiBNb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlYTU3NjVlZjY4ZDMzODFkODcw
NjQ1ZmYzZTdmYjc1ZmJjZDQ0ZGUzLi45ZGQ2MDIwODI5YTJjY2U0Mzg5NDkwZDQ0YjgwM2RlZTZk
OWUwNmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0zMTIyLDYgKzMxMjIsOSBAQAogCQk5NUFBNTcxMDI1RUVFRDMyMDA0RTky
ODMgLyogSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTVBQTU3MEUyNUVFRUQzMTAwNEU5MjgzIC8qIEluc3Bl
Y3RvckNhbnZhc0NhbGxUcmFjZXIuaCAqLzsgfTsKIAkJOTVCQTRGQUQyNkQ5ODFBQTAwMkEwRTYy
IC8qIFBsYXRmb3JtVmlld0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk1QkE0RkFCMjZEOTgxQUEwMDJBMEU2MiAvKiBQbGF0Zm9ybVZp
ZXdDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOTVERjlEMjUyNTJCRURCMjAwMEQ3RjQ2IC8qIFBvaW50ZXJDaGFyYWN0ZXJpc3Rp
Y3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1REY5
RDIzMjUyQkVEOTkwMDBEN0Y0NiAvKiBQb2ludGVyQ2hhcmFjdGVyaXN0aWNzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTVFOUY0NDYyN0M5QTM5
QzAwOTQ1MzM3IC8qIFN5c3RlbUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5NUU5RjQ0NDI3QzlBMzlCMDA5NDUzMzcgLyogU3lzdGVtSW1hZ2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5NUU5
RjQ0QjI3QzlGNjY2MDA5NDUzMzcgLyogQXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTVFOUY0NDkyN0M5RjY2
NjAwOTQ1MzM3IC8qIEFwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5NUU5RjQ0RjI3QzlGNjlDMDA5NDUz
MzcgLyogQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1RTlGNDREMjdDOUY2OUIwMDk0NTMzNyAvKiBBcHBsZVBh
eUxvZ29TeXN0ZW1JbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTk1RUFENTYzMjY2RUYyREIwMDRCOUNGMSAvKiBBcHBsZVBheUNvdXBvbkNv
ZGVDaGFuZ2VkRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk1RUFENTVGMjY2RUYyREEwMDRCOUNGMSAvKiBBcHBsZVBheUNvdXBvbkNvZGVDaGFu
Z2VkRXZlbnQuaCAqLzsgfTsKIAkJOTVFQUQ1NkEyNjZFRjJGQTAwNEI5Q0YxIC8qIEFwcGxlUGF5
RGF0ZUNvbXBvbmVudHNSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTVFQUQ1NjYyNjZFRjJGODAwNEI5Q0YxIC8qIEFwcGxlUGF5RGF0ZUNvbXBv
bmVudHNSYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTk1RUFENTZEMjY2RUYyRkEwMDRCOUNGMSAvKiBBcHBsZVBheURhdGVDb21wb25lbnRz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUVBRDU2
OTI2NkVGMkY5MDA0QjlDRjEgLyogQXBwbGVQYXlEYXRlQ29tcG9uZW50cy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMzA4OSw2ICsxMzA5Miwx
MSBAQAogCQk5NUFBNTcwRTI1RUVFRDMxMDA0RTkyODMgLyogSW5zcGVjdG9yQ2FudmFzQ2FsbFRy
YWNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JDYW52YXND
YWxsVHJhY2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1QkE0RkFCMjZEOTgx
QUEwMDJBMEU2MiAvKiBQbGF0Zm9ybVZpZXdDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtVmlld0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTVERjlEMjMyNTJCRUQ5OTAwMEQ3RjQ2IC8qIFBvaW50ZXJDaGFyYWN0
ZXJpc3RpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9pbnRlckNoYXJhY3RlcmlzdGljcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NUU5RjQ0NDI3QzlBMzlCMDA5NDUzMzcgLyogU3lz
dGVtSW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3lzdGVtSW1hZ2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTVFOUY0NDgyN0M5RjY2NTAwOTQ1MzM3
IC8qIEFwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBBcHBsZVBheUJ1dHRvblN5c3RlbUltYWdlLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5NUU5RjQ0OTI3QzlGNjY2MDA5NDUzMzcgLyogQXBwbGVQYXlC
dXR0b25TeXN0ZW1JbWFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBs
ZVBheUJ1dHRvblN5c3RlbUltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk1
RTlGNDRDMjdDOUY2OUIwMDk0NTMzNyAvKiBBcHBsZVBheUxvZ29TeXN0ZW1JbWFnZS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFwcGxlUGF5TG9nb1N5c3RlbUlt
YWdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NUU5RjQ0RDI3QzlGNjlCMDA5
NDUzMzcgLyogQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTVFQUQ1NUYyNjZFRjJEQTAwNEI5Q0YxIC8qIEFwcGxlUGF5Q291cG9uQ29k
ZUNoYW5nZWRFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBsZVBh
eUNvdXBvbkNvZGVDaGFuZ2VkRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTVFQUQ1NjEyNjZFRjJEQTAwNEI5Q0YxIC8qIEFwcGxlUGF5Q291cG9uQ29kZUNoYW5nZWRFdmVu
dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXBwbGVQYXlDb3Vwb25Db2RlQ2hhbmdlZEV2
ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTVFQUQ1NjIyNjZFRjJEQjAw
NEI5Q0YxIC8qIEFwcGxlUGF5Q291cG9uQ29kZUNoYW5nZWRFdmVudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcHBsZVBheUNvdXBvbkNvZGVDaGFuZ2VkRXZlbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk2NDIsNiArMTk2NTAsOCBAQAog
CQkJY2hpbGRyZW4gPSAoCiAJCQkJMUE1OEU4NjkxRDE5RDhDMDAwQzBFQTczIC8qIGNvY29hICov
LAogCQkJCUExREY1QTlGMUY3RUUwRjEwMDU4QTQ3NyAvKiBwYXltZW50cmVxdWVzdCAqLywKKwkJ
CQk5NUU5RjQ0OTI3QzlGNjY2MDA5NDUzMzcgLyogQXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZS5o
ICovLAorCQkJCTk1RTlGNDQ4MjdDOUY2NjUwMDk0NTMzNyAvKiBBcHBsZVBheUJ1dHRvblN5c3Rl
bUltYWdlLm1tICovLAogCQkJCUExMTNFMDJDMjMzMUEwRTQwMDlDMzNBMCAvKiBBcHBsZVBheUNh
bmNlbEV2ZW50LmNwcCAqLywKIAkJCQlBMTEzRTAyQjIzMzFBMEU0MDA5QzMzQTAgLyogQXBwbGVQ
YXlDYW5jZWxFdmVudC5oICovLAogCQkJCUExOTU2RjE4MjMzMUE0NjgwMDU3RTlEMiAvKiBBcHBs
ZVBheUNhbmNlbEV2ZW50LmlkbCAqLywKQEAgLTE5Njc5LDYgKzE5Njg5LDggQEAKIAkJCQlBMTNC
NjE2OTI0NzVERkM1MDBCQkU2REUgLyogQXBwbGVQYXlJbnN0YWxsbWVudFJldGFpbENoYW5uZWwu
aWRsICovLAogCQkJCTdDNjU3OUUyMUUwMDgyNzAwMEUzQTI3QSAvKiBBcHBsZVBheUxpbmVJdGVt
LmggKi8sCiAJCQkJN0M2NTc5RTQxRTAwODJDODAwRTNBMjdBIC8qIEFwcGxlUGF5TGluZUl0ZW0u
aWRsICovLAorCQkJCTk1RTlGNDREMjdDOUY2OUIwMDk0NTMzNyAvKiBBcHBsZVBheUxvZ29TeXN0
ZW1JbWFnZS5oICovLAorCQkJCTk1RTlGNDRDMjdDOUY2OUIwMDk0NTMzNyAvKiBBcHBsZVBheUxv
Z29TeXN0ZW1JbWFnZS5tbSAqLywKIAkJCQlBMURGNUFBODFGODA3MEQ0MDA1OEE0NzcgLyogQXBw
bGVQYXlNZXJjaGFudENhcGFiaWxpdHkuY3BwICovLAogCQkJCUExREY1QTgzMUY3RUJERjIwMDU4
QTQ3NyAvKiBBcHBsZVBheU1lcmNoYW50Q2FwYWJpbGl0eS5oICovLAogCQkJCUExREY1QTg1MUY3
RUJERjIwMDU4QTQ3NyAvKiBBcHBsZVBheU1lcmNoYW50Q2FwYWJpbGl0eS5pZGwgKi8sCkBAIC0y
OTE2NCw2ICsyOTE3Niw3IEBACiAJCQkJQjIzNTQwRjAwRDAwNzgyRTAwMjM4MkZBIC8qIFN0cmlu
Z1RydW5jYXRvci5jcHAgKi8sCiAJCQkJQjIzNTQwRjEwRDAwNzgyRTAwMjM4MkZBIC8qIFN0cmlu
Z1RydW5jYXRvci5oICovLAogCQkJCTA4NzU1OEM0MTNCNEE1N0QwMEY0OTMwNyAvKiBTdXJyb2dh
dGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuaCAqLywKKwkJCQk5NUU5RjQ0NDI3QzlBMzlCMDA5NDUz
MzcgLyogU3lzdGVtSW1hZ2UuaCAqLywKIAkJCQkzQkI2QjgwRjIyQTdEMzExMDAzQTJBNjkgLyog
VGFiU2l6ZS5oICovLAogCQkJCTM3NkRDQ0UwMTNCNEY5NjYwMDJFQkVGQyAvKiBUZXh0UnVuLmNw
cCAqLywKIAkJCQlBODI0QjQ2NDBFMkVGMkVBMDA4MUE3QjcgLyogVGV4dFJ1bi5oICovLApAQCAt
MzM1MTEsNiArMzM1MjQsNyBAQAogCQkJCTQ0MjUwNzA5MjU4MjlBMjcwMEMwOTM2OCAvKiBBcHBI
aWdobGlnaHRTdG9yYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NUZCNjYyNTI2RDcwMzNDMDA2
OEFDNjcgLyogQXBwbGVQYXlBTVNVSVBheW1lbnRIYW5kbGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5NUZCNjYyNjI2RDcwMzNDMDA2OEFDNjcgLyogQXBwbGVQYXlBTVNVSVJlcXVlc3QuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTk1RTlGNDRCMjdDOUY2NjYwMDk0NTMzNyAvKiBBcHBsZVBheUJ1dHRv
blN5c3RlbUltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTEzRTAyRTIzMzFBMTM0MDA5QzMz
QTAgLyogQXBwbGVQYXlDYW5jZWxFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFERjVBOTQx
RjdFQzQzMjAwNThBNDc3IC8qIEFwcGxlUGF5Q29udGFjdEZpZWxkLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5NUVBRDU2MzI2NkVGMkRCMDA0QjlDRjEgLyogQXBwbGVQYXlDb3Vwb25Db2RlQ2hhbmdl
ZEV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMzNTI4LDYgKzMzNTQyLDcgQEAKIAkJCQlBMTE3
NTBBMTI0NzQ2OEY3MDBENEQyNkMgLyogQXBwbGVQYXlJbnN0YWxsbWVudEl0ZW1UeXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBMTNCNjE2QjI0NzVFMDQ4MDBCQkU2REUgLyogQXBwbGVQYXlJbnN0
YWxsbWVudFJldGFpbENoYW5uZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDNjU3OUUzMUUwMDgy
NzAwMEUzQTI3QSAvKiBBcHBsZVBheUxpbmVJdGVtLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NUU5
RjQ0RjI3QzlGNjlDMDA5NDUzMzcgLyogQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUExREY1QTg2MUY3RUJERjIwMDU4QTQ3NyAvKiBBcHBsZVBheU1lcmNoYW50
Q2FwYWJpbGl0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFGNkNGRkYxRkUwOTYyMTAwMTgwNzhD
IC8qIEFwcGxlUGF5TW9kaWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDNjUyMzAxMUUwMEQw
MzQwMDY3N0YyMiAvKiBBcHBsZVBheVBheW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzc3NDMs
NiArMzc3NTgsNyBAQAogCQkJCUUxODA4MTE3MTZGQ0Y5Q0IwMEI4MEQwNyAvKiBTeW5jaHJvbm91
c0xvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzE2OTJERDUyM0QyM0UwODAwNkU4
OEY3IC8qIFN5c3RlbUJhdHRlcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0RThCNEVDMjE2Qjc5
RTUwMEI4ODM0RCAvKiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJOTVFOUY0NDYyN0M5QTM5QzAwOTQ1MzM3IC8qIFN5c3RlbUltYWdlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjAzQzA3NDE4ODQ2OTVFMDBBNUY4Q0EgLyogU3lzdGVtTWVtb3J5LmggaW4g
SGVhZGVycyAqLywKIAkJCQlFM0MwNDEzODI1NENCMzBEMDAyMUQwRTYgLyogU3lzdGVtU291bmRE
ZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTNDMDQxMkYyNTRDQTI5QjAwMjFEMEU2IC8q
IFN5c3RlbVNvdW5kTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAppbmRleCAwZWQ5Y2M4YTVlNzkxODZhNTk0
YmE2NmJiNTdlZmNlN2YxYThmNzdlLi41MDczZWNhYjRiOTg0N2Y4YjZlYjBjYTM4NDdhZjQ3MDU0
ZTNhMzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVN
YXBwaW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBp
bmdzLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJBcHBs
ZVBheUJ1dHRvblN5c3RlbUltYWdlLmgiCiAjaW5jbHVkZSAiQ1NTQ2FsY1ZhbHVlLmgiCiAjaW5j
bHVkZSAiQ1NTRm9udEZhbWlseS5oIgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5tbQppbmRleCAwNDQxYTc3
OTkwZDZkYjZlOTVkOWI5ZWE2YTM3ZjU0Zjg2NTU4MjAzLi42MTJmNmYzY2I0M2FiZDc0Nzk4YTk2
OGIzNWM4MzE2MDFlOTE4ZTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9UaGVtZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Ro
ZW1lQ29jb2EubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9y
dCAiVGhlbWVDb2NvYS5oIgogCisjaW1wb3J0ICJBcHBsZVBheUxvZ29TeXN0ZW1JbWFnZS5oIgog
I2ltcG9ydCAiRm9udENhc2NhZGUuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dC5oIgogI2lt
cG9ydCAiSW1hZ2VCdWZmZXIuaCIKQEAgLTMzLDEwMSArMzQsNiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXN0YXRpYyB2b2lkIGZpdENvbnRleHRUb0JveChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYgc3JjSW1hZ2VTaXplLCBjb25zdCBGbG9hdFNpemUmIGRz
dFNpemUpCi17Ci0gICAgZmxvYXQgc3JjUmF0aW8gPSBzcmNJbWFnZVNpemUuYXNwZWN0UmF0aW8o
KTsKLSAgICBmbG9hdCBkc3RSYXRpbyA9IGRzdFNpemUuYXNwZWN0UmF0aW8oKTsKLQotICAgIGZs
b2F0IHNjYWxlOwotICAgIGZsb2F0IHRyYW5zbGF0aW9uWCA9IDA7Ci0gICAgZmxvYXQgdHJhbnNs
YXRpb25ZID0gMDsKLSAgICBpZiAoc3JjUmF0aW8gPiBkc3RSYXRpbykgewotICAgICAgICBzY2Fs
ZSA9IGRzdFNpemUud2lkdGgoKSAvIHNyY0ltYWdlU2l6ZS53aWR0aCgpOwotICAgICAgICB0cmFu
c2xhdGlvblkgPSAoZHN0U2l6ZS5oZWlnaHQoKSAtIHNjYWxlICogc3JjSW1hZ2VTaXplLmhlaWdo
dCgpKSAvIDI7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgc2NhbGUgPSBkc3RTaXplLmhlaWdodCgp
IC8gc3JjSW1hZ2VTaXplLmhlaWdodCgpOwotICAgICAgICB0cmFuc2xhdGlvblggPSAoZHN0U2l6
ZS53aWR0aCgpIC0gc2NhbGUgKiBzcmNJbWFnZVNpemUud2lkdGgoKSkgLyAyOwotICAgIH0KLSAg
ICBjb250ZXh0LnRyYW5zbGF0ZSh0cmFuc2xhdGlvblgsIHRyYW5zbGF0aW9uWSk7Ci0gICAgY29u
dGV4dC5zY2FsZShzY2FsZSk7Ci19Ci0KLSNpZiBFTkFCTEUoQVBQTEVfUEFZKQotCi1zdGF0aWMg
TlNCdW5kbGUgKnBhc3NLaXRCdW5kbGUoKQotewotICAgIHN0YXRpYyBOU0J1bmRsZSAqcGFzc0tp
dEJ1bmRsZTsKLSAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBkaXNw
YXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgICAgICBwYXNz
S2l0QnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZVdpdGhVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0
aDpAIi9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9QYXNzS2l0LmZyYW1ld29yayIg
aXNEaXJlY3Rvcnk6WUVTXV07Ci0jZWxzZQotICAgICAgICBkbG9wZW4oIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL1Bhc3NLaXQuZnJhbWV3b3JrL1Bhc3NLaXQiLCBSVExEX05PVyk7Ci0gICAg
ICAgIHBhc3NLaXRCdW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6TlNDbGFzc0Zyb21T
dHJpbmcoQCJQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIiKV07Ci0jZW5kaWYK
LSAgICB9KTsKLQotICAgIHJldHVybiBwYXNzS2l0QnVuZGxlOwotfQotCi1zdGF0aWMgUmV0YWlu
UHRyPENHUERGUGFnZVJlZj4gbG9hZFBhc3NLaXRQREZQYWdlKE5TU3RyaW5nICppbWFnZU5hbWUp
Ci17Ci0gICAgTlNVUkwgKnVybCA9IFtwYXNzS2l0QnVuZGxlKCkgVVJMRm9yUmVzb3VyY2U6aW1h
Z2VOYW1lIHdpdGhFeHRlbnNpb246QCJwZGYiXTsKLSAgICBpZiAoIXVybCkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvIGRvY3VtZW50ID0gYWRvcHRDRihDR1BERkRvY3VtZW50
Q3JlYXRlV2l0aFVSTCgoQ0ZVUkxSZWYpdXJsKSk7Ci0gICAgaWYgKCFkb2N1bWVudCkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAoIUNHUERGRG9jdW1lbnRHZXROdW1iZXJPZlBh
Z2VzKGRvY3VtZW50LmdldCgpKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1
cm4gQ0dQREZEb2N1bWVudEdldFBhZ2UoZG9jdW1lbnQuZ2V0KCksIDEpOwotfTsKLQotc3RhdGlj
IENHUERGUGFnZVJlZiBhcHBsZVBheUJ1dHRvbkxvZ29CbGFjaygpCi17Ci0gICAgc3RhdGljIENH
UERGUGFnZVJlZiBsb2dvUGFnZTsKLSAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tl
bjsKLSAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIGxvZ29QYWdlID0g
bG9hZFBhc3NLaXRQREZQYWdlKEAiUGF5QnV0dG9uTG9nb0JsYWNrIikubGVha1JlZigpOwotICAg
IH0pOwotCi0gICAgcmV0dXJuIGxvZ29QYWdlOwotfTsKLQotc3RhdGljIENHUERGUGFnZVJlZiBh
cHBsZVBheUJ1dHRvbkxvZ29XaGl0ZSgpCi17Ci0gICAgc3RhdGljIENHUERGUGFnZVJlZiBsb2dv
UGFnZTsKLSAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBkaXNwYXRj
aF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIGxvZ29QYWdlID0gbG9hZFBhc3NLaXRQREZQ
YWdlKEAiUGF5QnV0dG9uTG9nb1doaXRlIikubGVha1JlZigpOwotICAgIH0pOwotCi0gICAgcmV0
dXJuIGxvZ29QYWdlOwotfTsKLQotc3RhdGljIHZvaWQgZHJhd0FwcGxlUGF5QnV0dG9uKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgQ0dQREZQYWdlUmVmIHBhZ2UsIGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSkKLXsKLSAgICAvLyBDcmVhdGUgYSBsb2NhbCBJbWFnZUJ1ZmZlciBiZWNhdXNlIGRlY29k
aW5nIHRoZSBQREYgaW1hZ2VzIGhhcyB0byBoYXBwZW4gaW4gV2ViUHJvY2Vzcy4KLSAgICBhdXRv
IGltYWdlQnVmZmVyID0gY29udGV4dC5jcmVhdGVBbGlnbmVkSW1hZ2VCdWZmZXIoc2l6ZSwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFJlbmRlcmluZ01ldGhvZDo6TG9jYWwpOwotICAg
IGlmICghaW1hZ2VCdWZmZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIENHU2l6ZSBwZGZTaXpl
ID0gQ0dQREZQYWdlR2V0Qm94UmVjdChwYWdlLCBrQ0dQREZNZWRpYUJveCkuc2l6ZTsKLQotICAg
IGF1dG8mIGltYWdlQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7Ci0gICAgZml0Q29u
dGV4dFRvQm94KGltYWdlQ29udGV4dCwgRmxvYXRTaXplKHBkZlNpemUpLCBzaXplKTsKLSAgICBp
bWFnZUNvbnRleHQudHJhbnNsYXRlKDAsIHBkZlNpemUuaGVpZ2h0KTsKLSAgICBpbWFnZUNvbnRl
eHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7Ci0gICAgQ0dDb250ZXh0RHJhd1BERlBhZ2UoaW1h
Z2VDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBwYWdlKTsKLQotICAgIGNvbnRleHQuZHJhd0Nv
bnN1bWluZ0ltYWdlQnVmZmVyKFdURk1vdmUoaW1hZ2VCdWZmZXIpLCBGbG9hdFJlY3QoRmxvYXRQ
b2ludDo6emVybygpLCBzaXplKSk7Ci19OwotCi0jZW5kaWYKLQogdm9pZCBUaGVtZUNvY29hOjpk
cmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmIG5hbWUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRTaXplJiBzaXplKSBjb25zdAogewogICAgIGlmIChuYW1lID09ICJ3aXJl
bGVzcy1wbGF5YmFjayIpIHsKQEAgLTEzNSw3ICs0MSw3IEBAIHZvaWQgVGhlbWVDb2NvYTo6ZHJh
d05hbWVkSW1hZ2UoY29uc3QgU3RyaW5nJiBuYW1lLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvCiAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjayk7CiAKICAgICAg
ICAgRmxvYXRTaXplIHdpcmVsZXNzUGxheWJhY2tTcmNTaXplKDMyLCAyNC4wMTYpOwotICAgICAg
ICBmaXRDb250ZXh0VG9Cb3goY29udGV4dCwgd2lyZWxlc3NQbGF5YmFja1NyY1NpemUsIHNpemUp
OworICAgICAgICBjb250ZXh0LnNjYWxlVG9GaXQod2lyZWxlc3NQbGF5YmFja1NyY1NpemUsIHNp
emUpOwogCiAgICAgICAgIFBhdGggb3V0bGluZTsKICAgICAgICAgb3V0bGluZS5tb3ZlVG8oRmxv
YXRQb2ludCgyNC4wNjYsIDE4KSk7CkBAIC0xNjQsMTcgKzcwLDEzIEBAIHZvaWQgVGhlbWVDb2Nv
YTo6ZHJhd05hbWVkSW1hZ2UoY29uc3QgU3RyaW5nJiBuYW1lLCBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvCiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogICAgIGlmIChuYW1lID09ICJhcHBs
ZS1wYXktbG9nby1ibGFjayIpIHsKLSAgICAgICAgaWYgKGF1dG8gbG9nbyA9IGFwcGxlUGF5QnV0
dG9uTG9nb0JsYWNrKCkpIHsKLSAgICAgICAgICAgIGRyYXdBcHBsZVBheUJ1dHRvbihjb250ZXh0
LCBsb2dvLCBzaXplKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICBj
b250ZXh0LmRyYXdTeXN0ZW1JbWFnZShBcHBsZVBheUxvZ29TeXN0ZW1JbWFnZTo6Y3JlYXRlKEFw
cGxlUGF5TG9nb1N0eWxlOjpCbGFjayksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIHNp
emUpKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChuYW1lID09ICJhcHBsZS1w
YXktbG9nby13aGl0ZSIpIHsKLSAgICAgICAgaWYgKGF1dG8gbG9nbyA9IGFwcGxlUGF5QnV0dG9u
TG9nb1doaXRlKCkpIHsKLSAgICAgICAgICAgIGRyYXdBcHBsZVBheUJ1dHRvbihjb250ZXh0LCBs
b2dvLCBzaXplKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICBjb250
ZXh0LmRyYXdTeXN0ZW1JbWFnZShBcHBsZVBheUxvZ29TeXN0ZW1JbWFnZTo6Y3JlYXRlKEFwcGxl
UGF5TG9nb1N0eWxlOjpXaGl0ZSksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIHNpemUp
KTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRl
eHQuY3BwCmluZGV4IDczNWE3MjZmZDIzNWQxYzYwMDNlNTJmMjFjZmUyZDQ2ZWJhMzJmNjguLjQy
MWZhZGY4YTUyNjA0ODIzZmFlMDdhY2ZhNjk2YjU1ZWUyNjAyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGlj
c0NvbnRleHQuY3BwCkBAIC0yNjMsNiArMjYzLDEyIEBAIHZvaWQgQmlmdXJjYXRlZEdyYXBoaWNz
Q29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBuYXRpdmVJbWFnZSwgY29uc3QK
ICAgICBtX3NlY29uZGFyeUNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG5hdGl2ZUltYWdlLCBzZWxm
U2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogfQogCit2b2lkIEJpZnVyY2F0ZWRH
cmFwaGljc0NvbnRleHQ6OmRyYXdTeXN0ZW1JbWFnZShjb25zdCBSZWY8U3lzdGVtSW1hZ2U+JiBz
eXN0ZW1JbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikKK3sKKyAgICBtX3ByaW1h
cnlDb250ZXh0LmRyYXdTeXN0ZW1JbWFnZShzeXN0ZW1JbWFnZSwgZGVzdGluYXRpb24pOworICAg
IG1fc2Vjb25kYXJ5Q29udGV4dC5kcmF3U3lzdGVtSW1hZ2Uoc3lzdGVtSW1hZ2UsIGRlc3RpbmF0
aW9uKTsKK30KKwogdm9pZCBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihO
YXRpdmVJbWFnZSYgbmF0aXZlSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgbV9wcmltYXJ5Q29u
dGV4dC5kcmF3UGF0dGVybihuYXRpdmVJbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJu
VHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0
LmgKaW5kZXggZjZkNGRiZGZiZDgyZDQ4YjFhMDAyNjhhM2QwMDU3OWJmMmM1ZDFmOC4uZjBiMDQ2
ZDM2YzI4OTEzNDhlMzgzOGIyYWM5MmIyZDU4MWQzNWM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRl
eHQuaApAQCAtOTgsNiArOTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNaXRlckxpbWl0KGZs
b2F0KSBmaW5hbDsKIAogICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29u
c3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIGZp
bmFsOworICAgIHZvaWQgZHJhd1N5c3RlbUltYWdlKGNvbnN0IFJlZjxTeXN0ZW1JbWFnZT4mLCBj
b25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKE5hdGl2ZUltYWdl
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50
JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgPSB7IH0pIGZpbmFsOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2Um
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1h
Z2UgfSkgZmluYWw7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBj
b25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCAyMTU1YmQy
ZWI2MzYzNWI0MmRjMDZlMTJiNDMwOTgzYjJiMzNkYmQzLi43YmYzZDg5MDQzOTIzYjgxYjNmZDUz
ZDljZDAxNTI2OTk5OTFjYzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRl
ICJNZWRpYVBsYXllclByaXZhdGUuaCIKICNpbmNsdWRlICJOdWxsR3JhcGhpY3NDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiUm91bmRlZFJlY3QuaCIKKyNpbmNsdWRlICJTeXN0ZW1JbWFnZS5oIgogI2lu
Y2x1ZGUgIlRleHRSdW4uaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKQEAg
LTYzOCw2ICs2MzksMTEgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBHcmFwaGljc0NvbnRleHQ6OmNy
ZWF0ZUFsaWduZWRJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHIKICAgICByZXR1cm4gY3Jl
YXRlU2NhbGVkSW1hZ2VCdWZmZXIocmVjdCwgc2NhbGVGYWN0b3IoKSwgY29sb3JTcGFjZSwgcmVu
ZGVyaW5nTW9kZSgpLCByZW5kZXJpbmdNZXRob2QpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd1N5c3RlbUltYWdlKGNvbnN0IFJlZjxTeXN0ZW1JbWFnZT4mIHN5c3RlbUltYWdlLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKQoreworICAgIHN5c3RlbUltYWdlLT5kcmF3KCp0
aGlzLCBkZXN0aW5hdGlvbik7Cit9CisKIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCiB7CiAgICAg
cmV0dXJuIGRyYXdJbWFnZShpbWFnZSwgRmxvYXRSZWN0KGRlc3RpbmF0aW9uLCBpbWFnZS5zaXpl
KCkpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS5zaXplKCkpLCBpbWFnZVBhaW50aW5n
T3B0aW9ucyk7CkBAIC04NTcsNiArODYzLDIyIEBAIEZsb2F0U2l6ZSBHcmFwaGljc0NvbnRleHQ6
OnNjYWxlRmFjdG9yRm9yRHJhd2luZyhjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zCiAg
ICAgcmV0dXJuIHRyYW5zZm9ybWVkRGVzdFJlY3Quc2l6ZSgpIC8gc3JjUmVjdC5zaXplKCk7CiB9
CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzY2FsZVRvRml0KGNvbnN0IEZsb2F0U2l6ZSYgc3Jj
U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBkc3RTaXplKQoreworICAgIGZsb2F0IHNjYWxlOworICAg
IGZsb2F0IHRyYW5zbGF0aW9uWCA9IDA7CisgICAgZmxvYXQgdHJhbnNsYXRpb25ZID0gMDsKKyAg
ICBpZiAoc3JjU2l6ZS5hc3BlY3RSYXRpbygpID4gZHN0U2l6ZS5hc3BlY3RSYXRpbygpKSB7Cisg
ICAgICAgIHNjYWxlID0gZHN0U2l6ZS53aWR0aCgpIC8gc3JjU2l6ZS53aWR0aCgpOworICAgICAg
ICB0cmFuc2xhdGlvblkgPSAoZHN0U2l6ZS5oZWlnaHQoKSAtIHNjYWxlICogc3JjU2l6ZS5oZWln
aHQoKSkgLyAyOworICAgIH0gZWxzZSB7CisgICAgICAgIHNjYWxlID0gZHN0U2l6ZS5oZWlnaHQo
KSAvIHNyY1NpemUuaGVpZ2h0KCk7CisgICAgICAgIHRyYW5zbGF0aW9uWCA9IChkc3RTaXplLndp
ZHRoKCkgLSBzY2FsZSAqIHNyY1NpemUud2lkdGgoKSkgLyAyOworICAgIH0KKyAgICB0aGlzLT50
cmFuc2xhdGUodHJhbnNsYXRpb25YLCB0cmFuc2xhdGlvblkpOworICAgIHRoaXMtPnNjYWxlKHNj
YWxlKTsKK30KKwogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXRoKGNvbnN0IFBhdGgmIHBh
dGgpCiB7CiAgICAgZmlsbFBhdGgocGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDU4NmI5OWI5ZmQ0NDViYjlkM2I5
NjUxMjIyOGE0NmU3ZGI4OTVlZGMuLjAyZmUzYmEyOTcwNDU3MWRkM2M5YjRkOWMyM2YxOWFiMDhk
Yzk3OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oCkBAIC04Nyw2ICs4Nyw3IEBAIGNsYXNzIE1lZGlhUGxheWVyOwogY2xhc3Mg
Um91bmRlZFJlY3Q7CiBjbGFzcyBHcmFwaGljc0NvbnRleHRHTDsKIGNsYXNzIFBhdGg7CitjbGFz
cyBTeXN0ZW1JbWFnZTsKIGNsYXNzIFRleHRSdW47CiBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJp
eDsKIApAQCAtNDI4LDYgKzQyOSw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3
TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgPSAwOwogCisgICAgdmlydHVhbCB2b2lkIGRyYXdT
eXN0ZW1JbWFnZShjb25zdCBSZWY8U3lzdGVtSW1hZ2U+JiwgY29uc3QgRmxvYXRSZWN0Jik7CisK
ICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29u
c3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9
IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwogICAgIFdFQkNPUkVfRVhQT1JUIElt
YWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IEltYWdlT3JpZW50YXRpb246OkZy
b21JbWFnZSB9KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBk
cmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9h
dFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyBJbWFnZU9yaWVu
dGF0aW9uOjpGcm9tSW1hZ2UgfSk7CkBAIC01MTgsNiArNTIxLDggQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIEZsb2F0U2l6ZSBzY2FsZUZhY3RvcigpIGNvbnN0OwogICAgIFdFQkNPUkVf
RVhQT1JUIEZsb2F0U2l6ZSBzY2FsZUZhY3RvckZvckRyYXdpbmcoY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KSBjb25zdDsKIAorICAgIHZvaWQgc2Nh
bGVUb0ZpdChjb25zdCBGbG9hdFNpemUmIHNyY1NpemUsIGNvbnN0IEZsb2F0U2l6ZSYgZHN0U2l6
ZSk7CisKICAgICAvLyBMaW5rcwogCiAgICAgdmlydHVhbCB2b2lkIHNldFVSTEZvclJlY3QoY29u
c3QgVVJMJiwgY29uc3QgRmxvYXRSZWN0JikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggZDE4MGU1MTkw
MmUyZTI3ODlkMDQ1NjVkMDdhZGY5NmRmZjVmMmRiNy4uMWFjMDMxYTAxYjNmZjBhMTA3NmRlMWRi
OGZkNTE0NDdlYzRhODhlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaApAQCAtNjMsNiArNjMsOCBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNp
emUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYpIGZpbmFsIHsgfQogCisgICAgdm9pZCBkcmF3U3lzdGVtSW1hZ2UoY29uc3Qg
UmVmPFN5c3RlbUltYWdlPiYsIGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsIHsgfTsKKwogICAgIHZv
aWQgZHJhd1BhdHRlcm4oTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3Qg
RmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBmaW5hbCB7IH0KIAogICAg
IEludFJlY3QgY2xpcEJvdW5kcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsgfTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3lzdGVtSW1hZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N5c3RlbUltYWdlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZmU4M2QzYTc0NzE2N2QxZjhkMjZhMDdlNGY5MjU5NWJiZmYxM2QzNgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N5c3RlbUltYWdlLmgKQEAgLTAs
MCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGbG9hdFJlY3Q7Citj
bGFzcyBHcmFwaGljc0NvbnRleHQ7CisKK2VudW0gY2xhc3MgU3lzdGVtSW1hZ2VUeXBlIDogdWlu
dDhfdCB7CisjaWYgRU5BQkxFKEFQUExFX1BBWSkKKyAgICBBcHBsZVBheUJ1dHRvbiwKKyAgICBB
cHBsZVBheUxvZ28sCisjZW5kaWYKK307CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIFN5c3RlbUlt
YWdlIDogcHVibGljIFJlZkNvdW50ZWQ8U3lzdGVtSW1hZ2U+IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TeXN0ZW1JbWFnZSgpID0gZGVmYXVs
dDsKKworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYpIGNvbnN0IHsgfQorCisgICAgU3lzdGVtSW1hZ2VUeXBlIHN5c3RlbUltYWdlVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3lzdGVtSW1hZ2VUeXBlOyB9CisKK3Byb3RlY3RlZDoKKyAgICBT
eXN0ZW1JbWFnZShTeXN0ZW1JbWFnZVR5cGUgc3lzdGVtSW1hZ2VUeXBlKQorICAgICAgICA6IG1f
c3lzdGVtSW1hZ2VUeXBlKHN5c3RlbUltYWdlVHlwZSkKKyAgICB7CisgICAgfQorCitwcml2YXRl
OgorICAgIFN5c3RlbUltYWdlVHlwZSBtX3N5c3RlbUltYWdlVHlwZTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVu
dW1UcmFpdHM8V2ViQ29yZTo6U3lzdGVtSW1hZ2VUeXBlPiB7CisgICAgdXNpbmcgdmFsdWVzID0g
RW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6U3lzdGVtSW1hZ2VUeXBlCisjaWYgRU5BQkxF
KEFQUExFX1BBWSkKKyAgICAgICAgLCBXZWJDb3JlOjpTeXN0ZW1JbWFnZVR5cGU6OkFwcGxlUGF5
QnV0dG9uLAorICAgICAgICBXZWJDb3JlOjpTeXN0ZW1JbWFnZVR5cGU6OkFwcGxlUGF5TG9nbwor
I2VuZGlmCisgICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdC5jcHAKaW5kZXggNzlmNGM0Njk4YzcyNTAzNmE0NzUyNTY4YjExOWMyNzQzYjZkZmIzMy4u
MmUyZjRmNGYyY2I1NWQzNjVlNWFlMzk5MzI1ZDA1ZjJjMTczNjFmZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3QuY3BwCkBAIC0yNDgsNiArMjQ4LDggQEAgdm9pZCBEaXNwbGF5TGlzdDo6YXBwZW5k
KEl0ZW1IYW5kbGUgaXRlbSkKICAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3SW1hZ2VCdWZmZXI+
KGl0ZW0uZ2V0PERyYXdJbWFnZUJ1ZmZlcj4oKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05h
dGl2ZUltYWdlOgogICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdOYXRpdmVJbWFnZT4oaXRlbS5n
ZXQ8RHJhd05hdGl2ZUltYWdlPigpKTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3U3lzdGVtSW1h
Z2U6CisgICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd1N5c3RlbUltYWdlPihpdGVtLmdldDxEcmF3
U3lzdGVtSW1hZ2U+KCkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgICAg
ICByZXR1cm4gYXBwZW5kPERyYXdQYXR0ZXJuPihpdGVtLmdldDxEcmF3UGF0dGVybj4oKSk7CiAg
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1CdWZmZXIuY3BwCmluZGV4IGNmNjE2ODczZGZmMGQ4YmFkN2Q2ZjFiMTMwMWE3Y2MxMWY3
ZTAzOGIuLjQ1Nzc1NTE4OWJkYWRkNzE5ZDI0NWE0ZTZkMmM4MWJkZGIxZjdkZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCkBAIC0xMjEsNiArMTIxLDkg
QEAgdm9pZCBJdGVtSGFuZGxlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgogICAgICAgICBnZXQ8RHJhd05hdGl2ZUlt
YWdlPigpLmFwcGx5KGNvbnRleHQpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd1N5c3RlbUltYWdlOgorICAgICAgICBnZXQ8RHJhd1N5c3RlbUltYWdlPigpLmFwcGx5
KGNvbnRleHQpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRl
cm46CiAgICAgICAgIGdldDxEcmF3UGF0dGVybj4oKS5hcHBseShjb250ZXh0KTsKICAgICAgICAg
cmV0dXJuOwpAQCAtMzM4LDYgKzM0MSw5IEBAIHZvaWQgSXRlbUhhbmRsZTo6ZGVzdHJveSgpCiAg
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgogICAgICAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxEcmF3TmF0aXZlSW1hZ2U+Ojp2YWx1ZSk7
CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3U3lzdGVtSW1hZ2U6Cisg
ICAgICAgIGdldDxEcmF3U3lzdGVtSW1hZ2U+KCkufkRyYXdTeXN0ZW1JbWFnZSgpOworICAgICAg
ICByZXR1cm47CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPERyYXdQYXR0ZXJuPjo6dmFs
dWUpOwogICAgICAgICByZXR1cm47CkBAIC00ODksNiArNDk1LDggQEAgYm9vbCBJdGVtSGFuZGxl
OjpzYWZlQ29weShJdGVtVHlwZSBpdGVtVHlwZSwgSXRlbUhhbmRsZSBkZXN0aW5hdGlvbikgY29u
c3QKICAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdMaW5lc0ZvclRleHQ+KGl0ZW1PZmZzZXQs
ICp0aGlzKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgICAgIHJl
dHVybiBjb3B5SW50bzxEcmF3TmF0aXZlSW1hZ2U+KGl0ZW1PZmZzZXQsICp0aGlzKTsKKyAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3U3lzdGVtSW1hZ2U6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxE
cmF3U3lzdGVtSW1hZ2U+KGl0ZW1PZmZzZXQsICp0aGlzKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3UGF0dGVybjoKICAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdQYXR0ZXJuPihpdGVtT2Zm
c2V0LCAqdGhpcyk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdGg6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKaW5kZXggZGEwNWQ2Y2JlMzhmYTBiNjE0ZmVjOWUz
MzYxODAwNDk3ZjY3MjRjZi4uNTRlYTFjODY4MmMwNzQ0MmUyZTg0MTRiNzMyOGFhMzI0ODAyNWE3
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcApAQCAtODQsNiAr
ODQsOCBAQCBzdGF0aWMgc2l6ZV90IHNpemVPZkl0ZW1JbkJ5dGVzKEl0ZW1UeXBlIHR5cGUpCiAg
ICAgICAgIHJldHVybiBzaXplb2YoRHJhd0ltYWdlQnVmZmVyKTsKICAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgICAgIHJldHVybiBzaXplb2YoRHJhd05hdGl2ZUltYWdl
KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3U3lzdGVtSW1hZ2U6CisgICAgICAgIHJldHVybiBz
aXplb2YoRHJhd1N5c3RlbUltYWdlKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoK
ICAgICAgICAgcmV0dXJuIHNpemVvZihEcmF3UGF0dGVybik7CiAgICAgY2FzZSBJdGVtVHlwZTo6
RHJhd1JlY3Q6CkBAIC0yMTUsNiArMjE3LDcgQEAgYm9vbCBpc0RyYXdpbmdJdGVtKEl0ZW1UeXBl
IHR5cGUpCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6CiAgICAgY2FzZSBJdGVtVHlwZTo6
RHJhd0xpbmVzRm9yVGV4dDoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6Cisg
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd1N5c3RlbUltYWdlOgogICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdQYXR0ZXJuOgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXRoOgogICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdSZWN0OgpAQCAtMjk0LDYgKzI5Nyw3IEBAIGJvb2wgaXNJbmxpbmVJdGVtKEl0ZW1U
eXBlIHR5cGUpCiAgICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZURhc2g6CiAgICAgY2FzZSBJdGVt
VHlwZTo6U2V0U3RhdGU6CiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUGF0aDoKKyAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3U3lzdGVtSW1hZ2U6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBj
YXNlIEl0ZW1UeXBlOjpBcHBseURldmljZVNjYWxlRmFjdG9yOgogI2lmIFVTRShDRykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1UeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oCmluZGV4IGE0ZGZhM2Q3NjlhYjk1MDk3NTM1
ZDMxM2ZmOTYxYzRhYzBhMTAwYTIuLmQ2ODNiMmFjZjc4NDVmOTljM2NkMDk1ZWI5MTFlNTRmMWY4
Y2UxMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaApAQCAtNTQsNiAr
NTQsNyBAQCBlbnVtIGNsYXNzIEl0ZW1UeXBlIDogdWludDhfdCB7CiAgICAgRHJhd0dseXBocywK
ICAgICBEcmF3SW1hZ2VCdWZmZXIsCiAgICAgRHJhd05hdGl2ZUltYWdlLAorICAgIERyYXdTeXN0
ZW1JbWFnZSwKICAgICBEcmF3UGF0dGVybiwKICAgICBEcmF3UmVjdCwKICAgICBEcmF3TGluZSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCAzZjM3ODM1ZGU2OTI0MjAx
NGNlOWNiMDZlZjg3YTlkMTBlZGI1Mzk3Li4zNjA0MDAxNGE3YzAwNTg5ZDIwN2U4ODA0NmZhMWI1
OTgzYTBkMTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC0zOTgs
NiArMzk4LDE4IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBEcmF3TmF0aXZlSW1hZ2UmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwogfQogCit2b2lk
IERyYXdTeXN0ZW1JbWFnZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAor
eworICAgIGNvbnRleHQuZHJhd1N5c3RlbUltYWdlKG1fc3lzdGVtSW1hZ2UsIG1fZGVzdGluYXRp
b24pOworfQorCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
Y29uc3QgRHJhd1N5c3RlbUltYWdlJiBpdGVtKQoreworICAgIC8vIEZJWE1FOiBkdW1wIG1vcmUg
c3R1ZmYuCisgICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0aW5hdGlvbiIsIGl0ZW0uZGVzdGluYXRp
b24oKSk7CisgICAgcmV0dXJuIHRzOworfQorCiBEcmF3UGF0dGVybjo6RHJhd1BhdHRlcm4oUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlSWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKICAg
ICA6IG1faW1hZ2VJZGVudGlmaWVyKGltYWdlSWRlbnRpZmllcikKICAgICAsIG1fZGVzdGluYXRp
b24oZGVzdFJlY3QpCkBAIC0xMDIxLDYgKzEwMzMsNyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgSXRlbVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3R2x5cGhzOiB0cyA8PCAiZHJhdy1nbHlwaHMiOyBicmVhazsKICAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3SW1hZ2VCdWZmZXI6IHRzIDw8ICJkcmF3LWltYWdlLWJ1ZmZlciI7IGJyZWFrOwog
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZTogdHMgPDwgImRyYXctbmF0aXZlLWlt
YWdlIjsgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1N5c3RlbUltYWdlOiB0cyA8PCAi
ZHJhdy1zeXN0ZW0taW1hZ2UiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVy
bjogdHMgPDwgImRyYXctcGF0dGVybiI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdS
ZWN0OiB0cyA8PCAiZHJhdy1yZWN0IjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xp
bmU6IHRzIDw8ICJkcmF3LWxpbmUiOyBicmVhazsKQEAgLTExNDEsNiArMTE1NCw5IEBAIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEl0ZW1IYW5kbGUgaXRlbSkKICAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERy
YXdOYXRpdmVJbWFnZT4oKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJh
d1N5c3RlbUltYWdlOgorICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3U3lzdGVtSW1hZ2U+KCk7
CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgICAg
ICB0cyA8PCBpdGVtLmdldDxEcmF3UGF0dGVybj4oKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCBmNTFkMWY4Zjk0MWFhZjM0YTRlODlmNThkNWQ1
MTk0Y2E5NjYzMzhlLi5mOTRkYWZkN2JlNGE3MjMyYWNjZmIwYmQ5NTAxNDRhZGYxNGQ3ZWM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNs
dWRlICJQaXhlbEJ1ZmZlci5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgIlN5c3RlbUltYWdlLmgi
CiAjaW5jbHVkZSA8dmFyaWFudD4KICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2luY2x1
ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KQEAgLTk5Myw2ICs5OTQsNjEgQEAgcHJpdmF0ZToKICAgICBJ
bWFnZVBhaW50aW5nT3B0aW9ucyBtX29wdGlvbnM7CiB9OwogCitjbGFzcyBEcmF3U3lzdGVtSW1h
Z2UgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5cGUgPSBJ
dGVtVHlwZTo6RHJhd1N5c3RlbUltYWdlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lu
bGluZUl0ZW0gPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRl
bSA9IHRydWU7CisKKyAgICBEcmF3U3lzdGVtSW1hZ2UoY29uc3QgUmVmPFN5c3RlbUltYWdlPiYg
c3lzdGVtSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pCisgICAgICAgIDogbV9z
eXN0ZW1JbWFnZShzeXN0ZW1JbWFnZSkKKyAgICAgICAgLCBtX2Rlc3RpbmF0aW9uKGRlc3RpbmF0
aW9uKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBSZWY8U3lzdGVtSW1hZ2U+JiBzeXN0ZW1J
bWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3lzdGVtSW1hZ2U7IH0KKyAgICBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQorCisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKKworICAg
IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBz
dGQ6Om51bGxvcHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMo
Y29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQor
CisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPERyYXdT
eXN0ZW1JbWFnZT4gZGVjb2RlKERlY29kZXImKTsKKworcHJpdmF0ZToKKyAgICBSZWY8U3lzdGVt
SW1hZ2U+IG1fc3lzdGVtSW1hZ2U7CisgICAgRmxvYXRSZWN0IG1fZGVzdGluYXRpb247Cit9Owor
Cit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBEcmF3U3lzdGVtSW1hZ2U6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9zeXN0ZW1JbWFnZTsK
KyAgICBlbmNvZGVyIDw8IG1fZGVzdGluYXRpb247Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29k
ZXI+CitzdGQ6Om9wdGlvbmFsPERyYXdTeXN0ZW1JbWFnZT4gRHJhd1N5c3RlbUltYWdlOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyNkZWZpbmUgREVDT0RFKG5hbWUsIHR5cGUpIFwKKyAg
ICBzdGQ6Om9wdGlvbmFsPHR5cGU+IG5hbWU7IFwKKyAgICBkZWNvZGVyID4+IG5hbWU7IFwKKyAg
ICBpZiAoIW5hbWUpIFwKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgXAorCisgICAgREVD
T0RFKHN5c3RlbUltYWdlLCBSZWY8U3lzdGVtSW1hZ2U+KQorICAgIERFQ09ERShkZXN0aW5hdGlv
biwgRmxvYXRSZWN0KQorCisjdW5kZWYgREVDT0RFCisKKyAgICByZXR1cm4geyB7CisgICAgICAg
IFdURk1vdmUoKnN5c3RlbUltYWdlKSwKKyAgICAgICAgV1RGTW92ZSgqZGVzdGluYXRpb24pLAor
ICAgIH0gfTsKK30KKwogY2xhc3MgRHJhd1BhdHRlcm4gewogcHVibGljOgogICAgIHN0YXRpYyBj
b25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5cGUgPSBJdGVtVHlwZTo6RHJhd1BhdHRlcm47CkBAIC0y
MjIwLDYgKzIyNzYsNyBAQCB1c2luZyBEaXNwbGF5TGlzdEl0ZW0gPSBzdGQ6OnZhcmlhbnQKICAg
ICAsIERyYXdQYXRoCiAgICAgLCBEcmF3UGF0dGVybgogICAgICwgRHJhd1JlY3QKKyAgICAsIERy
YXdTeXN0ZW1JbWFnZQogICAgICwgRW5kVHJhbnNwYXJlbmN5TGF5ZXIKICAgICAsIEZpbGxDb21w
b3NpdGVkUmVjdAogICAgICwgRmlsbEVsbGlwc2UKQEAgLTIzMDYsNiArMjM2Myw3IEBAIHRlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlPiB7
CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3R2x5cGhzLAogICAgIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyLAogICAgIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlLAorICAgIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1N5c3RlbUltYWdlLAogICAgIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdHRlcm4sCiAgICAgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpEcmF3UmVjdCwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkRyYXdMaW5lLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmlu
ZGV4IGY4OTc1N2M3Njc3YmI5NDE3MTExOTE5ZjA4Zjg1MmRmNDkzNDhkNWUuLjZjZjMwNzNhZTg0
YmVkNzJiMGE5NjYzOTE1OTgzMzQ5NGE0NmU1OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5jcHAKQEAgLTE5Niw2ICsxOTYsMTEgQEAgdm9pZCBSZWNvcmRlcjo6ZHJh
d05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNp
emUsIGMKICAgICByZWNvcmREcmF3TmF0aXZlSW1hZ2UoaW1hZ2UucmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogfQog
Cit2b2lkIFJlY29yZGVyOjpkcmF3U3lzdGVtSW1hZ2UoY29uc3QgUmVmPFN5c3RlbUltYWdlPiYg
c3lzdGVtSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pCit7CisgICAgcmVjb3Jk
RHJhd1N5c3RlbUltYWdlKHN5c3RlbUltYWdlLCBkZXN0aW5hdGlvbik7Cit9CisKIHZvaWQgUmVj
b3JkZXI6OmRyYXdQYXR0ZXJuKE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAg
ICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmgKaW5kZXggY2FmZjg4Y2JjZmVkNTQxNmRiODJmZjE2YjhkZDhkMzJi
ZmMxYjc0Zi4uMWE4NDZkYjQ3Y2Q2NDBmMGE1OTUzZmM5YmJmODIyNDExODdkMGM5OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC04NCw2ICs4NCw3IEBAIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRHJhd0dseXBocyhjb25zdCBGb250JiwgY29u
c3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVk
IGNvdW50LCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVy
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3Jk
RHJhd05hdGl2ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUlkZW50aWZp
ZXIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmREcmF3U3lzdGVtSW1hZ2UoY29uc3QgUmVmPFN5
c3RlbUltYWdlPiYsIGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVj
b3JkRHJhd1BhdHRlcm4oUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgcmVjb3JkQmVnaW5UcmFuc3BhcmVuY3lMYXllcihmbG9hdCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCByZWNvcmRFbmRUcmFuc3BhcmVuY3lMYXllcigpID0gMDsKQEAgLTIyMCw2ICsyMjEsNyBA
QCBwcml2YXRlOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1h
Z2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3Qm
IHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBmaW5hbDsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgZmluYWw7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkcmF3U3lzdGVtSW1hZ2UoY29uc3QgUmVmPFN5c3RlbUltYWdlPiYsIGNv
bnN0IEZsb2F0UmVjdCYpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd1BhdHRl
cm4oTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2VCdWZm
ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIGZpbmFsOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcAppbmRleCAy
N2QzNDAyNTU4NTY0NDBmMmExODE4ZDMyZjdmYTIyZjI5OWM3OTZkLi41YWQ0MjM0NjEwYWIyYTEx
ODM2ZDM2N2NhNzVmNjc4ZjNkMjQ2ZmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVySW1wbC5jcHAKQEAgLTE4Miw2ICsxODIsMTEgQEAgdm9pZCBSZWNvcmRlcklt
cGw6OnJlY29yZERyYXdOYXRpdmVJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1h
Z2VJZGVudGkKICAgICBhcHBlbmQ8RHJhd05hdGl2ZUltYWdlPihpbWFnZUlkZW50aWZpZXIsIGlt
YWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogfQogCit2b2lkIFJlY29yZGVy
SW1wbDo6cmVjb3JkRHJhd1N5c3RlbUltYWdlKGNvbnN0IFJlZjxTeXN0ZW1JbWFnZT4mIHN5c3Rl
bUltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKQoreworICAgIGFwcGVuZDxEcmF3
U3lzdGVtSW1hZ2U+KHN5c3RlbUltYWdlLCBkZXN0aW5hdGlvbik7Cit9CisKIHZvaWQgUmVjb3Jk
ZXJJbXBsOjpyZWNvcmREcmF3UGF0dGVybihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1h
Z2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgYXBwZW5kPERyYXdQYXR0ZXJuPihpbWFnZUlkZW50
aWZpZXIsIGRlc3RSZWN0LCB0aWxlUmVjdCwgdHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0
aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oCmluZGV4
IGY3NjQzZDY2Yzg2YzMxZmRhYjQyM2VlYWQzMmM5NDg5MTM1NzI2MGEuLjE1MmU4YTY2MTU1Yjc1
ZWFkMWUwZTQyMDFmNTk0MjI3ZTJlNGZlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVySW1wbC5oCkBAIC03MCw2ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBy
ZWNvcmREcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29u
c3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgY291bnQsIGNvbnN0IEZsb2F0UG9pbnQm
IGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSkgZmluYWw7CiAgICAgdm9pZCByZWNvcmRE
cmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgZmlu
YWw7CiAgICAgdm9pZCByZWNvcmREcmF3TmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIGltYWdlSWRlbnRpZmllciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZERyYXdTeXN0ZW1JbWFn
ZShjb25zdCBSZWY8U3lzdGVtSW1hZ2U+JiwgY29uc3QgRmxvYXRSZWN0JikgZmluYWw7CiAgICAg
dm9pZCByZWNvcmREcmF3UGF0dGVybihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUm
IHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7CiAgICAg
dm9pZCByZWNvcmRCZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0KSBmaW5hbDsKICAgICB2b2lk
IHJlY29yZEVuZFRyYW5zcGFyZW5jeUxheWVyKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tCmluZGV4IGRjZTI2NzRjNGYyODgwZjM5YjU2NTE3
NDEzM2NlM2U4OTFlYzdjOGIuLmJmMjg5YmEwOTcxNjJkZjI4NjUwMzNlNThmZTJjZDgxZjNjNzE0
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tCkBA
IC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlJlbmRlclRoZW1l
Q29jb2EuaCIKIAorI2ltcG9ydCAiQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2UuaCIKICNpbXBvcnQg
IkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW1wb3J0ICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW1w
b3J0ICJJbWFnZUJ1ZmZlci5oIgpAQCAtMTAwLDY0ICsxMDEsOCBAQCB2b2lkIFJlbmRlclRoZW1l
Q29jb2E6OmFkanVzdEFwcGxlUGF5QnV0dG9uU3R5bGUoUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25z
dCBFbGVtZQogICAgIH0KIH0KIAotc3RhdGljIFBLUGF5bWVudEJ1dHRvblN0eWxlIHRvUEtQYXlt
ZW50QnV0dG9uU3R5bGUoQXBwbGVQYXlCdXR0b25TdHlsZSBzdHlsZSkKLXsKLSAgICBzd2l0Y2gg
KHN0eWxlKSB7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblN0eWxlOjpXaGl0ZToKLSAgICAgICAg
cmV0dXJuIFBLUGF5bWVudEJ1dHRvblN0eWxlV2hpdGU7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRv
blN0eWxlOjpXaGl0ZU91dGxpbmU6Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRCdXR0b25TdHls
ZVdoaXRlT3V0bGluZTsKLSAgICBjYXNlIEFwcGxlUGF5QnV0dG9uU3R5bGU6OkJsYWNrOgotICAg
ICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9uU3R5bGVCbGFjazsKLSAgICB9Ci19Ci0KLXN0YXRp
YyBQS1BheW1lbnRCdXR0b25UeXBlIHRvUEtQYXltZW50QnV0dG9uVHlwZShBcHBsZVBheUJ1dHRv
blR5cGUgdHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIEFwcGxlUGF5QnV0
dG9uVHlwZTo6UGxhaW46Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRCdXR0b25UeXBlUGxhaW47
Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OkJ1eToKLSAgICAgICAgcmV0dXJuIFBLUGF5
bWVudEJ1dHRvblR5cGVCdXk7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OlNldFVwOgot
ICAgICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZVNldFVwOwotICAgIGNhc2UgQXBwbGVQ
YXlCdXR0b25UeXBlOjpEb25hdGU6Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRCdXR0b25UeXBl
RG9uYXRlOwotICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpDaGVja091dDoKLSAgICAgICAg
cmV0dXJuIFBLUGF5bWVudEJ1dHRvblR5cGVDaGVja291dDsKLSAgICBjYXNlIEFwcGxlUGF5QnV0
dG9uVHlwZTo6Qm9vazoKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRvblR5cGVCb29rOwot
ICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpTdWJzY3JpYmU6Ci0gICAgICAgIHJldHVybiBQ
S1BheW1lbnRCdXR0b25UeXBlU3Vic2NyaWJlOwotI2lmIEhBVkUoUEFTU0tJVF9ORVdfQlVUVE9O
X1RZUEVTKQotICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpSZWxvYWQ6Ci0gICAgICAgIHJl
dHVybiBQS1BheW1lbnRCdXR0b25UeXBlUmVsb2FkOwotICAgIGNhc2UgQXBwbGVQYXlCdXR0b25U
eXBlOjpBZGRNb25leToKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRvblR5cGVBZGRNb25l
eTsKLSAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6VG9wVXA6Ci0gICAgICAgIHJldHVybiBQ
S1BheW1lbnRCdXR0b25UeXBlVG9wVXA7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6Ok9y
ZGVyOgotICAgICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZU9yZGVyOwotICAgIGNhc2Ug
QXBwbGVQYXlCdXR0b25UeXBlOjpSZW50OgotICAgICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9u
VHlwZVJlbnQ7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OlN1cHBvcnQ6Ci0gICAgICAg
IHJldHVybiBQS1BheW1lbnRCdXR0b25UeXBlU3VwcG9ydDsKLSAgICBjYXNlIEFwcGxlUGF5QnV0
dG9uVHlwZTo6Q29udHJpYnV0ZToKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRvblR5cGVD
b250cmlidXRlOwotICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpUaXA6Ci0gICAgICAgIHJl
dHVybiBQS1BheW1lbnRCdXR0b25UeXBlVGlwOwotI2VuZGlmCi0gICAgfQotfQotCiBib29sIFJl
bmRlclRoZW1lQ29jb2E6OnBhaW50QXBwbGVQYXlCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiBy
ZW5kZXJlciwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHBhaW50
UmVjdCkKIHsKLSAgICBhdXRvJiBkZXN0aW5hdGlvbkNvbnRleHQgPSBwYWludEluZm8uY29udGV4
dCgpOwotCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IGRlc3RpbmF0aW9uQ29udGV4dC5jcmVhdGVB
bGlnbmVkSW1hZ2VCdWZmZXIocGFpbnRSZWN0LnNpemUoKSk7Ci0gICAgaWYgKCFpbWFnZUJ1ZmZl
cikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgYXV0byYgc3R5bGUgPSByZW5kZXJlci5z
dHlsZSgpOwogICAgIGF1dG8gbGFyZ2VzdENvcm5lclJhZGl1cyA9IHN0ZDo6bWF4PENHRmxvYXQ+
KHsKICAgICAgICAgZmxvYXRWYWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJUb3BMZWZ0UmFkaXVz
KCkuaGVpZ2h0LCBwYWludFJlY3QuaGVpZ2h0KCkpLApAQCAtMTY5LDE0ICsxMTQsNyBAQCBib29s
IFJlbmRlclRoZW1lQ29jb2E6OnBhaW50QXBwbGVQYXlCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0
JiByZW5kZXJlciwgY29uc3QgUAogICAgICAgICBmbG9hdFZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJv
cmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkuaGVpZ2h0LCBwYWludFJlY3QuaGVpZ2h0KCkpLAogICAg
ICAgICBmbG9hdFZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCku
d2lkdGgsIHBhaW50UmVjdC53aWR0aCgpKQogICAgIH0pOwotCi0gICAgYXV0byYgaW1hZ2VDb250
ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKLSAgICBpbWFnZUNvbnRleHQuc2V0U2hvdWxk
U21vb3RoRm9udHModHJ1ZSk7Ci0gICAgaW1hZ2VDb250ZXh0LnNldFNob3VsZFN1YnBpeGVsUXVh
bnRpemVGb250cyhmYWxzZSk7Ci0gICAgaW1hZ2VDb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxLCAt
MSkpOwotICAgIFBLRHJhd0FwcGxlUGF5QnV0dG9uV2l0aENvcm5lclJhZGl1cyhpbWFnZUNvbnRl
eHQucGxhdGZvcm1Db250ZXh0KCksIENHUmVjdE1ha2UoMCwgLXBhaW50UmVjdC5oZWlnaHQoKSwg
cGFpbnRSZWN0LndpZHRoKCksIHBhaW50UmVjdC5oZWlnaHQoKSksIDEuMCwgbGFyZ2VzdENvcm5l
clJhZGl1cywgdG9QS1BheW1lbnRCdXR0b25UeXBlKHN0eWxlLmFwcGxlUGF5QnV0dG9uVHlwZSgp
KSwgdG9QS1BheW1lbnRCdXR0b25TdHlsZShzdHlsZS5hcHBsZVBheUJ1dHRvblN0eWxlKCkpLCBz
dHlsZS5jb21wdXRlZExvY2FsZSgpKTsKLQotICAgIGRlc3RpbmF0aW9uQ29udGV4dC5kcmF3Q29u
c3VtaW5nSW1hZ2VCdWZmZXIoV1RGTW92ZShpbWFnZUJ1ZmZlciksIHBhaW50UmVjdCk7CisgICAg
cGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3U3lzdGVtSW1hZ2UoQXBwbGVQYXlCdXR0b25TeXN0ZW1J
bWFnZTo6Y3JlYXRlKHN0eWxlLmFwcGxlUGF5QnV0dG9uVHlwZSgpLCBzdHlsZS5hcHBsZVBheUJ1
dHRvblN0eWxlKCksIHN0eWxlLmNvbXB1dGVkTG9jYWxlKCksIGxhcmdlc3RDb3JuZXJSYWRpdXMp
LCBwYWludFJlY3QpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCAwOTA1OGY3OWNlNzE3NTUwMzRmZGE4
NDhkNDJhYzZhOTkyZDQ0ZTY4Li43YzRiZmM4NWZmZmYxYjY5ZGZkNWM2YTVmZDlmZDNkNDE1Zjk5
Y2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApA
QCAtMjUsNiArMjUsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBbmltYXRpb25MaXN0
LmgiCisjaW5jbHVkZSAiQXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZS5oIgogI2luY2x1ZGUgIkJv
cmRlclZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5oIgogI2luY2x1
ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmNwcAppbmRleCBmZTZhNGMwNmIyNDk5
NmUyMmFiOWFkZWJjZTk0ZDBkNjhkM2Y5ZTE1Li45MmJjNmE4MTJhMTE4YTUxOWYwYjQ2Yzk0Zjk3
MmUzMmIzYTVlZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGVDb25zdGFudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5jcHAKQEAgLTUyLDQyICs1Miw2IEBAIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEFuaW1hdGlvblBsYXlTdGF0ZSBwbGF5U3Rh
dGUpCiAgICAgcmV0dXJuIHRzOwogfQogCi0jaWYgRU5BQkxFKEFQUExFX1BBWSkKLVRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEFwcGxlUGF5QnV0dG9uU3R5bGUgYnV0dG9u
U3R5bGUpCi17Ci0gICAgc3dpdGNoIChidXR0b25TdHlsZSkgewotICAgIGNhc2UgQXBwbGVQYXlC
dXR0b25TdHlsZTo6V2hpdGU6IHRzIDw8ICJ3aGl0ZSI7IGJyZWFrOwotICAgIGNhc2UgQXBwbGVQ
YXlCdXR0b25TdHlsZTo6V2hpdGVPdXRsaW5lOiB0cyA8PCAid2hpdGUtb3V0bGluZSI7IGJyZWFr
OwotICAgIGNhc2UgQXBwbGVQYXlCdXR0b25TdHlsZTo6QmxhY2s6IHRzIDw8ICJibGFjayI7IGJy
ZWFrOwotICAgIH0KLSAgICByZXR1cm4gdHM7Ci19Ci0KLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIEFwcGxlUGF5QnV0dG9uVHlwZSBwbGF5U3RhdGUpCi17Ci0gICAgc3dp
dGNoIChwbGF5U3RhdGUpIHsKLSAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6UGxhaW46IHRz
IDw8ICJwbGFpbiI7IGJyZWFrOwotICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpCdXk6IHRz
IDw8ICJidXkiOyBicmVhazsKLSAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6U2V0VXA6IHRz
IDw8ICJzZXR1cCI7IGJyZWFrOwotICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpEb25hdGU6
IHRzIDw8ICJkb25hdGUiOyBicmVhazsKLSAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6Q2hl
Y2tPdXQ6IHRzIDw8ICJjaGVja291dCI7IGJyZWFrOwotICAgIGNhc2UgQXBwbGVQYXlCdXR0b25U
eXBlOjpCb29rOiB0cyA8PCAiYm9vayI7IGJyZWFrOwotICAgIGNhc2UgQXBwbGVQYXlCdXR0b25U
eXBlOjpTdWJzY3JpYmU6IHRzIDw8ICJzdWJzY3JpYmUiOyBicmVhazsKLSNpZiBFTkFCTEUoQVBQ
TEVfUEFZX05FV19CVVRUT05fVFlQRVMpCi0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OlJl
bG9hZDogdHMgPDwgInJlbG9hZCI7IGJyZWFrOwotICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBl
OjpBZGRNb25leTogdHMgPDwgImFkZC1tb25leSI7IGJyZWFrOwotICAgIGNhc2UgQXBwbGVQYXlC
dXR0b25UeXBlOjpUb3BVcDogdHMgPDwgInRvcC11cCI7IGJyZWFrOwotICAgIGNhc2UgQXBwbGVQ
YXlCdXR0b25UeXBlOjpPcmRlcjogdHMgPDwgIm9yZGVyIjsgYnJlYWs7Ci0gICAgY2FzZSBBcHBs
ZVBheUJ1dHRvblR5cGU6OlJlbnQ6IHRzIDw8ICJyZW50IjsgYnJlYWs7Ci0gICAgY2FzZSBBcHBs
ZVBheUJ1dHRvblR5cGU6OlN1cHBvcnQ6IHRzIDw8ICJzdXBwb3J0IjsgYnJlYWs7Ci0gICAgY2Fz
ZSBBcHBsZVBheUJ1dHRvblR5cGU6OkNvbnRyaWJ1dGU6IHRzIDw8ICJjb250cmlidXRlIjsgYnJl
YWs7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OlRpcDogdHMgPDwgInRpcCI7IGJyZWFr
OwotI2VuZGlmCi0gICAgfQotICAgIHJldHVybiB0czsKLX0KLSNlbmRpZgotCiBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBBc3BlY3RSYXRpb1R5cGUgYXNwZWN0UmF0aW9U
eXBlKQogewogICAgIHN3aXRjaCAoYXNwZWN0UmF0aW9UeXBlKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCmluZGV4IDBh
OTRiNmRmM2Q0NzQ4YjQyYWEzN2NjY2VkYzM3YmM5Mzc1MjZhZmIuLjFhYmY2OWE0ZjBhMDczODQ3
OTE0MDcxNGRkZTlmMjhmYzRkYjM4N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCkBAIC0xMTYxLDM0ICsxMTYxLDYg
QEAgZW51bSBjbGFzcyBUcmFpbGluZ1dvcmQgOiB1aW50OF90IHsKIH07CiAjZW5kaWYKIAotI2lm
IEVOQUJMRShBUFBMRV9QQVkpCi1lbnVtIGNsYXNzIEFwcGxlUGF5QnV0dG9uU3R5bGUgOiB1aW50
OF90IHsKLSAgICBXaGl0ZSwKLSAgICBXaGl0ZU91dGxpbmUsCi0gICAgQmxhY2ssCi19OwotCi1l
bnVtIGNsYXNzIEFwcGxlUGF5QnV0dG9uVHlwZSA6IHVpbnQ4X3QgewotICAgIFBsYWluLAotICAg
IEJ1eSwKLSAgICBTZXRVcCwKLSAgICBEb25hdGUsCi0gICAgQ2hlY2tPdXQsCi0gICAgQm9vaywK
LSAgICBTdWJzY3JpYmUsCi0jaWYgRU5BQkxFKEFQUExFX1BBWV9ORVdfQlVUVE9OX1RZUEVTKQot
ICAgIFJlbG9hZCwKLSAgICBBZGRNb25leSwKLSAgICBUb3BVcCwKLSAgICBPcmRlciwKLSAgICBS
ZW50LAotICAgIFN1cHBvcnQsCi0gICAgQ29udHJpYnV0ZSwKLSAgICBUaXAsCi0jZW5kaWYKLX07
Ci0jZW5kaWYKLQogLy8gVGhlc2UgYXJlIGFsbCBtaW5pbWl6ZWQgY29tYmluYXRpb25zIG9mIHBh
aW50LW9yZGVyLgogZW51bSBjbGFzcyBQYWludE9yZGVyIDogdWludDhfdCB7CiAgICAgTm9ybWFs
LApAQCAtMTI0NCwxMCArMTIxNiw2IEBAIGV4dGVybiBjb25zdCBmbG9hdCBkZWZhdWx0TWl0ZXJM
aW1pdDsKIAogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIEFu
aW1hdGlvbkZpbGxNb2RlKTsKIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRT
dHJlYW0mLCBBbmltYXRpb25QbGF5U3RhdGUpOwotI2lmIEVOQUJMRShBUFBMRV9QQVkpCi1XVEY6
OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgQXBwbGVQYXlCdXR0b25T
dHlsZSk7Ci1XVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgQXBw
bGVQYXlCdXR0b25UeXBlKTsKLSNlbmRpZgogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdU
Rjo6VGV4dFN0cmVhbSYsIEFzcGVjdFJhdGlvVHlwZSk7CiBXVEY6OlRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgQXV0b1JlcGVhdFR5cGUpOwogV1RGOjpUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIEJhY2tmYWNlVmlzaWJpbGl0eSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
RGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggNzg0NjQ2M2Q5OTBiYWRjMzBhZjk4NWJlMDU3
ZWYwNjJiMGMwZjhmYi4uZTVkMmQ2ZjJiODA1YjFmMTllN2IyYTNkMzkzMGUzNDI2ZWZiOWI2NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMjgzLDYgKzI4MywxMSBAQCB2b2lk
IFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZVdpdGhRdWFsaWZpZWRJ
ZGVudGlmaWVyKFF1YWxpZmllZAogICAgIGhhbmRsZUl0ZW0oRGlzcGxheUxpc3Q6OkRyYXdOYXRp
dmVJbWFnZShpbWFnZUlkZW50aWZpZXIub2JqZWN0KCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNy
Y1JlY3QsIG9wdGlvbnMpLCAqaW1hZ2UpOwogfQogCit2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXI6OmRyYXdTeXN0ZW1JbWFnZShjb25zdCBSZWY8U3lzdGVtSW1hZ2U+JiBzeXN0ZW1JbWFn
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikKK3sKKyAgICBoYW5kbGVJdGVtKERpc3Bs
YXlMaXN0OjpEcmF3U3lzdGVtSW1hZ2Uoc3lzdGVtSW1hZ2UsIGRlc3RpbmF0aW9uKSk7Cit9CisK
IHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6ZHJhd1BhdHRlcm4oUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIGltYWdlSWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFu
c2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIC8vIEltbWVkaWF0
ZWx5IHR1cm4gdGhlIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciAod2hpY2ggaXMgZXJyb3It
cHJvbmUpIHRvIGEgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNw
bGF5TGlzdFJlY29yZGVyLmgKaW5kZXggMjlhMjIwYmJhMWQ3YWMxOThhNjgyM2ZlYmRmZDVlMjdj
N2M4NjRlNi4uNjdiYTZkNTk1ZjRjZmJjZTBiNzhlYTk3MGNiZWFjZmUwN2U1Y2NkYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
RGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC04Miw2ICs4Miw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyPiBzb3VyY2VJbWFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBJUEM6OkZpbHRlclJlZmVyZW5jZSk7CiAgICAg
dm9pZCBkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IGltYWdlQnVmZmVySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0aW5h
dGlvblJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29y
ZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKTsKICAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VJZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3Jl
OjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpOworICAgIHZvaWQgZHJhd1N5c3RlbUltYWdlKGNvbnN0
IFJlZjxXZWJDb3JlOjpTeXN0ZW1JbWFnZT4mLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsK
ICAgICB2b2lkIGRyYXdQYXR0ZXJuKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciBpbWFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRy
YW5zZm9ybSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmIHNwYWNpbmcsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJik7CiAg
ICAgdm9pZCBiZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkpOwogICAgIHZvaWQg
ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIu
bWVzc2FnZXMuaW4KaW5kZXggOTVkYmU4ZGQ1NWMyYWZmMmRmMDA1ODAzODYzYjA3OGU5YjU5ZDU5
YS4uZTIwMzJiYzM0YWJlYjE5Y2Y3YWVlYjU3YzU0NDAzNWFjZTNiMzVjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3Jk
ZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXIubWVzc2FnZXMuaW4KQEAgLTQ4LDYgKzQ4LDcgQEAgbWVz
c2FnZXMgLT4gUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlciBOb3RSZWZDb3VudGVkIFN0cmVhbSB7
CiAgICAgRHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHNvdXJjZUltYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6
RmxvYXRSZWN0IHNvdXJjZUltYWdlUmVjdCwgSVBDOjpGaWx0ZXJSZWZlcmVuY2UgZmlsdGVyKQog
ICAgIERyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
aW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpGbG9hdFJlY3QgZGVzdGluYXRpb25SZWN0
LCBXZWJDb3JlOjpGbG9hdFJlY3Qgc3JjUmVjdCwgc3RydWN0IFdlYkNvcmU6OkltYWdlUGFpbnRp
bmdPcHRpb25zIG9wdGlvbnMpCiAgICAgRHJhd05hdGl2ZUltYWdlKFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZsb2F0U2l6ZSBp
bWFnZVNpemUsIFdlYkNvcmU6OkZsb2F0UmVjdCBkZXN0UmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0
IHNyY1JlY3QsIHN0cnVjdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyBvcHRpb25zKQor
ICAgIERyYXdTeXN0ZW1JbWFnZShSZWY8V2ViQ29yZTo6U3lzdGVtSW1hZ2U+IHN5c3RlbUltYWdl
LCBXZWJDb3JlOjpGbG9hdFJlY3QgZGVzdGluYXRpb24pCiAgICAgRHJhd1BhdHRlcm4oV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6
RmxvYXRSZWN0IGRlc3RSZWN0LCBXZWJDb3JlOjpGbG9hdFJlY3QgdGlsZVJlY3QsIFdlYkNvcmU6
OkFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0sIFdlYkNvcmU6OkZsb2F0UG9pbnQgcGhhc2UsIFdl
YkNvcmU6OkZsb2F0U2l6ZSBzcGFjaW5nLCBzdHJ1Y3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09w
dGlvbnMgb3B0aW9ucykKICAgICBCZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkp
CiAgICAgRW5kVHJhbnNwYXJlbmN5TGF5ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkKaW5kZXggNjcwZDQxNTFkOGIyNDZhY2JiZTY1MTE5YzQ5N2Y2ZDMxMzQwZmFk
Ny4uOGM5ZmYyMzlhMTY1MjhjYmFkYmU1MWZiMDgzYTRjMTYwYjRiNDhiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC02MzcsNiArNjM3LDcgQEAgZGVmIGNs
YXNzX3RlbXBsYXRlX2hlYWRlcnModGVtcGxhdGVfc3RyaW5nKToKICAgICAgICAgJ3N0ZDo6b3B0
aW9uYWwnOiB7J2hlYWRlcnMnOiBbJzxvcHRpb25hbD4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRl
cnMnOiBbJyJBcmd1bWVudENvZGVycy5oIiddfSwKICAgICAgICAgJ3N0ZDo6cGFpcic6IHsnaGVh
ZGVycyc6IFsnPHV0aWxpdHk+J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1l
bnRDb2RlcnMuaCInXX0sCiAgICAgICAgICdJUEM6OkFycmF5UmVmZXJlbmNlJzogeydoZWFkZXJz
JzogWyciQXJyYXlSZWZlcmVuY2UuaCInXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJB
cmd1bWVudENvZGVycy5oIiddfSwKKyAgICAgICAgJ1JlZic6IHsnaGVhZGVycyc6IFsnPHd0Zi9S
ZWYuaD4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVycy5oIidd
fSwKICAgICAgICAgJ1JlZlB0cic6IHsnaGVhZGVycyc6IFsnPHd0Zi9SZWZDb3VudGVkLmg+J10s
ICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAg
ICAgICdSZXRhaW5QdHInOiB7J2hlYWRlcnMnOiBbJzx3dGYvUmV0YWluUHRyLmg+J10sICdhcmd1
bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnNDRi5oIiddfSwKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCAy
N2EwMzNmNzBjZGU0MWYyYWZkYTEyYjBhMTg1ZDcxMTRiNDBkMTA2Li5lNjBlYmUyYWZmYTJmY2Ux
YTFjY2UzNzRmN2JmODg4ZjQwZWJkYjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTMxLDYgKzMxLDkgQEAKICNpbmNsdWRlICJTdHJl
YW1Db25uZWN0aW9uRW5jb2Rlci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dlbmVyaWNU
eXBlZEFycmF5Vmlld0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0FwcGxlUGF5QnV0
dG9uU3lzdGVtSW1hZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0FwcGxlUGF5TG9nb1N5c3RlbUlt
YWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0Jsb2JQYXJ0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZVF1ZXJ5T3B0aW9ucy5oPgpA
QCAtODQsNiArODcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckRhdGEuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVk
QnVmZmVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TeXN0ZW1JbWFnZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvVGV4dENoZWNrZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRJbmRpY2F0
b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWluZ0Z1bmN0aW9uLmg+CkBAIC0zMTc1LDYgKzMx
NzksNTIgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2QKICAgICByZXR1cm4gV2ViQ29yZTo6U2Ny
aXB0QnVmZmVyIHsgV1RGTW92ZShidWZmZXIpIH07CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEVu
Y29kZXI+Cit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFN5c3RlbUltYWdlPj46OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8U3lzdGVtSW1hZ2U+JiBzeXN0ZW1JbWFnZSkKK3sKKyAg
ICBlbmNvZGVyIDw8IHN5c3RlbUltYWdlLT5zeXN0ZW1JbWFnZVR5cGUoKTsKKworICAgIHN3aXRj
aCAoc3lzdGVtSW1hZ2UtPnN5c3RlbUltYWdlVHlwZSgpKSB7CisjaWYgRU5BQkxFKEFQUExFX1BB
WSkKKyAgICBjYXNlIFN5c3RlbUltYWdlVHlwZTo6QXBwbGVQYXlCdXR0b246CisgICAgICAgIGRv
d25jYXN0PEFwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2U+KHN5c3RlbUltYWdlLmdldCgpKS5lbmNv
ZGUoZW5jb2Rlcik7CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgU3lzdGVtSW1hZ2VUeXBl
OjpBcHBsZVBheUxvZ286CisgICAgICAgIGRvd25jYXN0PEFwcGxlUGF5TG9nb1N5c3RlbUltYWdl
PihzeXN0ZW1JbWFnZS5nZXQoKSkuZW5jb2RlKGVuY29kZXIpOworICAgICAgICByZXR1cm47Cisj
ZW5kaWYKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordGVtcGxhdGUK
K3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8U3lzdGVtSW1hZ2U+Pjo6ZW5jb2RlPEVuY29kZXI+KEVu
Y29kZXImLCBjb25zdCBSZWY8U3lzdGVtSW1hZ2U+Jik7Cit0ZW1wbGF0ZQordm9pZCBBcmd1bWVu
dENvZGVyPFJlZjxTeXN0ZW1JbWFnZT4+OjplbmNvZGU8U3RyZWFtQ29ubmVjdGlvbkVuY29kZXI+
KFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyJiwgY29uc3QgUmVmPFN5c3RlbUltYWdlPiYpOworCitz
dGQ6Om9wdGlvbmFsPFJlZjxTeXN0ZW1JbWFnZT4+IEFyZ3VtZW50Q29kZXI8UmVmPFN5c3RlbUlt
YWdlPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6b3B0aW9uYWw8U3lz
dGVtSW1hZ2VUeXBlPiBzeXN0ZW1JbWFnZVR5cGU7CisgICAgZGVjb2RlciA+PiBzeXN0ZW1JbWFn
ZVR5cGU7CisgICAgaWYgKCFzeXN0ZW1JbWFnZVR5cGUpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICBzd2l0Y2ggKCpzeXN0ZW1JbWFnZVR5cGUpIHsKKyNpZiBFTkFCTEUoQVBQ
TEVfUEFZKQorICAgIGNhc2UgU3lzdGVtSW1hZ2VUeXBlOjpBcHBsZVBheUJ1dHRvbjoKKyAgICAg
ICAgcmV0dXJuIEFwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2U6OmRlY29kZShkZWNvZGVyKTsKKwor
ICAgIGNhc2UgU3lzdGVtSW1hZ2VUeXBlOjpBcHBsZVBheUxvZ286CisgICAgICAgIHJldHVybiBB
cHBsZVBheUxvZ29TeXN0ZW1JbWFnZTo6ZGVjb2RlKGRlY29kZXIpOworI2VuZGlmCisgICAgfQor
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30K
KwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZSYgbWVzc2FnZSkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggNzRl
MzMwMGMwYzZlNDhkMmM3MjIwOWRkOWU0YTQyZDhhMzk0NThkOC4uMTBmNDgxNGJhN2E4OTk0MmJk
NTYxODA3YzZlNDQ4OGNmNWM2NjFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTE0NCw2ICsxNDQsNyBAQCBjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogY2xhc3MgU3ByaW5nVGltaW5nRnVuY3Rpb247CiBjbGFzcyBTdGVwc1RpbWlu
Z0Z1bmN0aW9uOwogY2xhc3MgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzOworY2xh
c3MgU3lzdGVtSW1hZ2U7CiBjbGFzcyBUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YTsKIGNsYXNzIFRy
YW5zZm9ybWF0aW9uTWF0cml4OwogY2xhc3MgVXNlclN0eWxlU2hlZXQ7CkBAIC03NzIsNiArNzcz
LDEyIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVm
ZmVyPiB7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBk
ZWNvZGUoRGVjb2RlciYpOwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxS
ZWY8V2ViQ29yZTo6U3lzdGVtSW1hZ2U+PiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rl
cj4KKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpT
eXN0ZW1JbWFnZT4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6U3lz
dGVtSW1hZ2U+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwogI2lmIEVOQUJMRShEQVRBX0RFVEVD
VElPTikKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpEYXRhRGV0
ZWN0b3JFbGVtZW50SW5mbz4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVy
UHJveHkuY3BwCmluZGV4IDFlNjgzYzVlYjAzZTE2MjBkNjNkZTA1MWE1YjYzMzgzMTMwNDRjOTIu
LjIzNmFjODQzYmQ0NjI0MDY0NGM5ZWRhNGU3MmE4ZGFiNzZkNGU0ZTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHAKQEAgLTE5NSw2ICsxOTUsMTEgQEAg
dm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZERyYXdOYXRpdmVJbWFn
ZShSZW5kZXJpbmdSZXNvdXJjZUlkZW4KICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVEaXNwbGF5
TGlzdFJlY29yZGVyOjpEcmF3TmF0aXZlSW1hZ2UoaW1hZ2VJZGVudGlmaWVyLCBpbWFnZVNpemUs
IGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKSk7CiB9CiAKK3ZvaWQgUmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlclByb3h5OjpyZWNvcmREcmF3U3lzdGVtSW1hZ2UoY29uc3QgUmVmPFN5c3RlbUlt
YWdlPiYgc3lzdGVtSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6RHJhd1N5c3RlbUltYWdl
KHN5c3RlbUltYWdlLCBkZXN0aW5hdGlvbikpOworfQorCiB2b2lkIFJlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXJQcm94eTo6cmVjb3JkRHJhd1BhdHRlcm4oUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIGltYWdlSWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0
IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXI6OkRyYXdQYXR0ZXJuKGltYWdlSWRlbnRpZmllciwgZGVzdFJlY3Qs
IHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlM
aXN0UmVjb3JkZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaAppbmRleCA3ZTZhMGExMDc3YTE1MjA1
MmMzM2MzYzhiMjc3NmI5YTJjZWY4NTJhLi4zNDVjZmNhMGVmOWFiZmZhZjk0MzUzYzQzMzE1OWFm
NmEzN2M0ZTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmgK
QEAgLTg5LDYgKzg5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlY29yZERyYXdHbHlwaHMoY29u
c3QgV2ViQ29yZTo6Rm9udCYsIGNvbnN0IFdlYkNvcmU6OkdseXBoQnVmZmVyR2x5cGgqLCBjb25z
dCBXZWJDb3JlOjpHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBjb3VudCwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIFdlYkNvcmU6OkZvbnRTbW9vdGhpbmdNb2Rl
KSBmaW5hbDsKICAgICB2b2lkIHJlY29yZERyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1
ZmZlciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMm
KSBmaW5hbDsKICAgICB2b2lkIHJlY29yZERyYXdOYXRpdmVJbWFnZShXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmIGltYWdlU2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50
aW5nT3B0aW9ucyYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkRHJhd1N5c3RlbUltYWdlKGNvbnN0
IFJlZjxXZWJDb3JlOjpTeXN0ZW1JbWFnZT4mLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsK
ICAgICB2b2lkIHJlY29yZERyYXdQYXR0ZXJuKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6
ZSYgc3BhY2luZywgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBm
aW5hbDsKICAgICB2b2lkIHJlY29yZEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQpIGZpbmFs
OwogICAgIHZvaWQgcmVjb3JkRW5kVHJhbnNwYXJlbmN5TGF5ZXIoKSBmaW5hbDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453762</attachid>
            <date>2022-03-03 11:02:01 -0800</date>
            <delta_ts>2022-03-03 11:56:55 -0800</delta_ts>
            <desc>[fast-cq] Patch</desc>
            <filename>bug-237177-20220303120200.patch</filename>
            <type>text/plain</type>
            <size>84932</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlOWIxMmQzNGMyZDUyOTg2NGE2YmY3Y2RiYzIzMzgzY2Y2N2UwNWZjLi5h
MWEzNGE3OTBhYzdhOWRhZWJmOGFjZTQ1OTQ1MDc0ZTcwYjM0OWU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTEzIEBACisyMDIyLTAzLTAzICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNv
bT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIGRvbnQgbG9hZCBBcHBsZSBQYXkgYnV0dG9uL2xv
Z28gUERGcyBpbiB0aGUgV2ViUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJh
c2VyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU3lzdGVtSW1hZ2UuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1JbWFnZTo6ZHJhdyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTeXN0ZW1JbWFnZTo6U3lzdGVtSW1hZ2UpOgorICAgICAgICBJbnRyb2R1Y2UgYSBu
ZXcgZXh0ZW5kYWJsZSBjbGFzcyBgU3lzdGVtSW1hZ2VgIHRoYXQgcmVwcmVzZW50cyBhIGNvbGxl
Y3Rpb24gb2YgYXJndW1lbnRzCisgICAgICAgIGFuZCBtZXRob2RvbG9neSAodGhhdCB1c2VzIHRo
b3NlIGFyZ3VtZW50cykgdG8gZHJhdyBzb21ldGhpbmcgZnJvbSB0aGUgc3lzdGVtLgorICAgICAg
ICBUaGlzIHBhdGNoIGludHJvZHVjZXMgdHdvIGNvbmNyZXRlIHVzZXM6CisgICAgICAgIC0gYEFw
cGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2VgIHVzZXMgUGFzc0tpdCBTUEkgdG8gZHJhdyBhbiBBcHBs
ZSBQYXkgYnV0dG9uLgorICAgICAgICAtIGBBcHBsZVBheUxvZ29TeXN0ZW1JbWFnZWAgbG9hZHMg
YSBQREYgZmlsZSBvZiB0aGUgQXBwbGUgUGF5IGxvZ28gZnJvbSBpbnNpZGUgUGFzc0tpdC4KKyAg
ICAgICAgVGhpcyBhcmNoaXRlY3R1cmUgd2FzIGNob3NlbiBzbyB0aGF0IGBHcmFwaGljc0NvbnRl
eHRgIGRvZXNuJ3QgaGF2ZSB0byBrbm93IGFib3V0IEFwcGxlIFBheQorICAgICAgICBzcGVjaWZp
YyB0aGluZ3MsIGluc3RlYWQgb25seSBkZWFsaW5nIHdpdGggYSB2ZXJ5IGdlbmVyaWMgaW50ZXJm
YWNlICh3aG9zIHN1YmNsYXNzZXMga25vdworICAgICAgICBtb3JlIHNwZWNpZmljYWxseSB3aGF0
IHRvIGRvIHdpdGggdGhlIGRhdGEgdGhleSdyZSBnaXZlbikuCisKKyAgICAgICAgKiBNb2R1bGVz
L2FwcGxlcGF5L0FwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2UuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBcHBsZVBheUJ1dHRvblN5c3RlbUltYWdlOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZTo6QXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheUJ1dHRvblN5c3RlbUltYWdlOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZTo6ZGVj
b2RlKToKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheUJ1dHRvblN5c3RlbUltYWdlLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRvUEtQ
YXltZW50QnV0dG9uVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjp0b1BLUGF5bWVudEJ1dHRvblN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2U6OmRyYXcg
Y29uc3QpOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaDoKKyAgICAgICAgRHJpdmUtYnk6IE1vdmUgYEFwcGxl
UGF5QnV0dG9uU3R5bGVgIGFuZCBgQXBwbGVQYXlCdXR0b25UeXBlYCB0byBgQXBwbGVQYXlCdXR0
b25TeXN0ZW1JbWFnZS5oYAorICAgICAgICBzbyB0aGV5IGNhbiBiZSB1c2VkIGVsc2V3aGVyZSAo
ZS5nLiBHUFVQcm9jZXNzKSB3aXRob3V0IGhhdmluZyB0byBpbmNsdWRlIGV2ZXJ5dGhpbmcgZWxz
ZS4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2Uu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheUxvZ29TeXN0ZW1JbWFnZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5TG9nb1N5c3RlbUltYWdlOjpBcHBsZVBh
eUxvZ29TeXN0ZW1JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheUxvZ29TeXN0ZW1J
bWFnZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5TG9nb1N5c3Rl
bUltYWdlOjpkZWNvZGUpOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBNb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5TG9nb1N5c3RlbUltYWdlLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OnBhc3NLaXRCdW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6bG9hZFBhc3NLaXRQREZQYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGxlUGF5TG9nb1doaXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OmFwcGxlUGF5TG9nb0JsYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGxlUGF5TG9nb0Zv
clN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5TG9nb1N5c3RlbUltYWdlOjpkcmF3
IGNvbnN0KToKKyAgICAgICAgQWRkIGEgbmV3IGBBcHBsZVBheUxvZ29TdHlsZWAgc28gdGhhdCB0
aGUgV2ViUHJvY2VzcyBpc24ndCBhYmxlIHRvIHByb3ZpZGUgYW4gYXJiaXRyYXJ5IFBERgorICAg
ICAgICB0byBsb2FkIHdoZW4gcmVuZGVyaW5nIGAtd2Via2l0LW5hbWVkLWltYWdlKGFwcGxlLXBh
eS1sb2dvLVt3aGl0ZSxibGFja10pYC4KKworICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1RoZW1l
Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpUaGVtZUNvY29hOjpkcmF3TmFtZWRJbWFnZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpmaXRDb250ZXh0VG9Cb3gpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6cGFzc0tpdEJ1bmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
Ojpsb2FkUGFzc0tpdFBERlBhZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YXBwbGVQ
YXlCdXR0b25Mb2dvQmxhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YXBwbGVQYXlC
dXR0b25Mb2dvV2hpdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0FwcGxlUGF5
QnV0dG9uKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDb2NvYS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ29jb2E6OnBhaW50QXBwbGVQYXlCdXR0
b24pOgorICAgICAgICAoV2ViQ29yZTo6dG9QS1BheW1lbnRCdXR0b25TdHlsZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjp0b1BLUGF5bWVudEJ1dHRvblR5cGUpOiBEZWxldGVkLgorICAg
ICAgICBNb3ZlIHRoZSBsb2dpYyB0aGF0IGRyYXdzIHRoZSBBcHBsZSBQYXkgYnV0dG9uIHRvIGEg
bWV0aG9kIG9uIGBHcmFwaGljc0NvbnRleHRgIHNvIHRoYXQgaXQKKyAgICAgICAgY2FuIGhvb2sg
aW50byB0aGUgdmFyaW91cyBHUFVQcm9jZXNzIGZsYWdzL3N5c3RlbXMuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpkcmF3U3lzdGVtSW1hZ2UpOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpC
aWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0OjpkcmF3U3lzdGVtSW1hZ2UpOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpOdWxsR3JhcGhpY3NDb250ZXh0OjpkcmF3U3lzdGVtSW1hZ2UpOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjphcHBlbmQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZm
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OmFwcGx5
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpkZXN0cm95KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpzYWZlQ29weSBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbVR5cGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6c2l6
ZU9mSXRlbUluQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmlzRHJhd2lu
Z0l0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmlzSW5saW5lSXRlbSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3U3lzdGVtSW1hZ2U6OkRyYXdT
eXN0ZW1JbWFnZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdT
eXN0ZW1JbWFnZTo6c3lzdGVtSW1hZ2UgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3U3lzdGVtSW1hZ2U6OmRlc3RpbmF0aW9uIGNvbnN0KTogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1N5c3RlbUltYWdlOjpnbG9iYWxC
b3VuZHMgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3
U3lzdGVtSW1hZ2U6OmxvY2FsQm91bmRzIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RHJhd1N5c3RlbUltYWdlOjplbmNvZGUgY29uc3QpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3U3lzdGVtSW1hZ2U6OmRlY29kZSk6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3U3lzdGVtSW1h
Z2U6OmFwcGx5IGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OmRyYXdTeXN0ZW1JbWFnZSk6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpy
ZWNvcmREcmF3U3lzdGVtSW1hZ2UpOiBBZGRlZC4KKyAgICAgICAgQWRkIG5ldyBgRHJhd1N5c3Rl
bUltYWdlYCBkaXNwbGF5IGxpc3QgaXRlbSB0byBoYW5kbGUgR1BVUHJvY2VzcyBkcmF3aW5nIG9m
IGBTeXN0ZW1JbWFnZWAuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNv
dXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIyLTAzLTAyICBPcmlvbCBCcnVmYXUg
IDxvYnJ1ZmF1QGlnYWxpYS5jb20+CiAKICAgICAgICAgW2Nzc10gSW1wbGVtZW50ICd0ZXh0LWRl
Y29yYXRpb24nIGFzIGEgc2hvcnRoYW5kLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkZGM1MjJiZmM4NTA3MmE4Yzlm
MzM1YzM0NWQyOTM4YmViMTQ5Y2E4Li4yNjc5YzUxNDdkODEwNGRkMjc3NzliZGM4NzMzMjRiZjQ1
NDM3MWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIyLTAzLTAzICBEZXZpbiBSb3Vz
c28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIGRvbnQgbG9h
ZCBBcHBsZSBQYXkgYnV0dG9uL2xvZ28gUERGcyBpbiB0aGUgV2ViUHJvY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MTc3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIFNlZSBgU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nYCBmb3IgYW4gZXhwbGFuYXRpb24gb2YgYFN5c3RlbUltYWdlYC4KKworICAgICAg
ICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8
U3lzdGVtSW1hZ2U+Pjo6ZW5jb2RlKTogQWRkZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8UmVmPFN5c3RlbUltYWdlPj46OmRlY29kZSk6IEFkZGVkLgorICAgICAgICBTdXBwb3J0IHNl
bmRpbmcgYFN5c3RlbUltYWdlYCAodGVjaG5pY2FsbHkgYFJlZjxTeXN0ZW1JbWFnZT5gKSBhY3Jv
c3MgcHJvY2Vzc2VzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNw
bGF5TGlzdFJlY29yZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmRyYXdTeXN0ZW1JbWFnZSk6IEFkZGVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94
eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXJQcm94eTo6cmVjb3JkRHJhd1N5c3RlbUltYWdlKTogQWRkZGVkLgorICAgICAgICBBZGQg
bmV3IGBEcmF3U3lzdGVtSW1hZ2VgIGRpc3BsYXkgbGlzdCBpdGVtLgorCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgIChjbGFzc190ZW1wbGF0ZV9oZWFkZXJz
KToKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGBSZWY8VD5gIGluIElQQyBtZXNzYWdlcy4KKwog
MjAyMi0wMy0wMiAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbQXBwU1NPXSBDb3JyZWN0IGxvZ2dpbmcgbWVzc2FnZXMgdG8gYXZvaWQgY29uZnVzaW5nIHNj
cmVlbmVycyB0aGF0IGFuIGVycm9yIGhhcyBvY2N1cnJlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXgg
M2NiNGE0OWQ5ODUxNmM5Y2JkNTFkZWRjZmFjMzZhZjJkZmQ1ZDE1MS4uOTA2ODk4ODVhZDg0NTQx
NDUwZWY3ZjUyYTNjOTAwY2M4NWY3MWE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMzEsNiAr
MTMxLDggQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogCiAgICAgTW9k
dWxlcy9haXJwbGF5L1BsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIuaAogCisg
ICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUJ1dHRvblN5c3RlbUltYWdlLmgKKyAgICBNb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5TG9nb1N5c3RlbUltYWdlLmgKICAgICBNb2R1bGVzL2FwcGxl
cGF5L0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmgKICAgICBNb2R1bGVzL2FwcGxlcGF5
L1BheW1lbnQuaAogICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvbnRhY3QuaApAQCAtMTU3
Miw2ICsxNTc0LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdU
cnVuY2F0b3IuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1N5c3RlbUltYWdlLmgKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9UYWJTaXplLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5QnV0dG9uU3lzdGVt
SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlCdXR0b25T
eXN0ZW1JbWFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5Y2VjYjJlMjI4NmEyZGY2NDk5Y2I5MDFlNDAzNmYw
NjM1OWU0N2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L0FwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2UuaApAQCAtMCwwICsxLDE2MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFQUExFX1BBWSkKKworI2luY2x1ZGUg
IlN5c3RlbUltYWdlLmgiCisjaW5jbHVkZSA8b3B0aW9uYWw+CisjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBBcHBsZVBheUJ1dHRvblR5
cGUgOiB1aW50OF90IHsKKyAgICBQbGFpbiwKKyAgICBCdXksCisgICAgU2V0VXAsCisgICAgRG9u
YXRlLAorICAgIENoZWNrT3V0LAorICAgIEJvb2ssCisgICAgU3Vic2NyaWJlLAorI2lmIEVOQUJM
RShBUFBMRV9QQVlfTkVXX0JVVFRPTl9UWVBFUykKKyAgICBSZWxvYWQsCisgICAgQWRkTW9uZXks
CisgICAgVG9wVXAsCisgICAgT3JkZXIsCisgICAgUmVudCwKKyAgICBTdXBwb3J0LAorICAgIENv
bnRyaWJ1dGUsCisgICAgVGlwLAorI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfTkVXX0JVVFRP
Tl9UWVBFUykKK307CisKK2VudW0gY2xhc3MgQXBwbGVQYXlCdXR0b25TdHlsZSA6IHVpbnQ4X3Qg
eworICAgIFdoaXRlLAorICAgIFdoaXRlT3V0bGluZSwKKyAgICBCbGFjaywKK307CisKK2NsYXNz
IFdFQkNPUkVfRVhQT1JUIEFwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2UgZmluYWwgOiBwdWJsaWMg
U3lzdGVtSW1hZ2UgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8QXBwbGVQYXlCdXR0b25TeXN0
ZW1JbWFnZT4gY3JlYXRlKEFwcGxlUGF5QnV0dG9uVHlwZSBhcHBsZVBheUJ1dHRvblR5cGUsIEFw
cGxlUGF5QnV0dG9uU3R5bGUgYXBwbGVQYXlCdXR0b25TdHlsZSwgY29uc3QgU3RyaW5nJiBsb2Nh
bGUsIGZsb2F0IGxhcmdlc3RDb3JuZXJSYWRpdXMpCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBBcHBsZVBheUJ1dHRvblN5c3RlbUltYWdlKGFwcGxlUGF5QnV0dG9uVHlwZSwg
YXBwbGVQYXlCdXR0b25TdHlsZSwgbG9jYWxlLCBsYXJnZXN0Q29ybmVyUmFkaXVzKSk7CisgICAg
fQorCisgICAgdmlydHVhbCB+QXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZSgpID0gZGVmYXVsdDsK
KworICAgIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBjb25z
dCBmaW5hbDsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRp
b25hbDxSZWY8QXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZT4+IGRlY29kZShEZWNvZGVyJik7CisK
K3ByaXZhdGU6CisgICAgQXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZShBcHBsZVBheUJ1dHRvblR5
cGUgYXBwbGVQYXlCdXR0b25UeXBlLCBBcHBsZVBheUJ1dHRvblN0eWxlIGFwcGxlUGF5QnV0dG9u
U3R5bGUsIGNvbnN0IFN0cmluZyYgbG9jYWxlLCBmbG9hdCBsYXJnZXN0Q29ybmVyUmFkaXVzKQor
ICAgICAgICA6IFN5c3RlbUltYWdlKFN5c3RlbUltYWdlVHlwZTo6QXBwbGVQYXlCdXR0b24pCisg
ICAgICAgICwgbV9hcHBsZVBheUJ1dHRvblR5cGUoYXBwbGVQYXlCdXR0b25UeXBlKQorICAgICAg
ICAsIG1fYXBwbGVQYXlCdXR0b25TdHlsZShhcHBsZVBheUJ1dHRvblN0eWxlKQorICAgICAgICAs
IG1fbG9jYWxlKGxvY2FsZSkKKyAgICAgICAgLCBtX2xhcmdlc3RDb3JuZXJSYWRpdXMobGFyZ2Vz
dENvcm5lclJhZGl1cykKKyAgICB7CisgICAgfQorCisgICAgQXBwbGVQYXlCdXR0b25UeXBlIG1f
YXBwbGVQYXlCdXR0b25UeXBlOworICAgIEFwcGxlUGF5QnV0dG9uU3R5bGUgbV9hcHBsZVBheUJ1
dHRvblN0eWxlOworICAgIFN0cmluZyBtX2xvY2FsZTsKKyAgICBmbG9hdCBtX2xhcmdlc3RDb3Ju
ZXJSYWRpdXM7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBBcHBsZVBheUJ1
dHRvblN5c3RlbUltYWdlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBl
bmNvZGVyIDw8IG1fYXBwbGVQYXlCdXR0b25UeXBlOworICAgIGVuY29kZXIgPDwgbV9hcHBsZVBh
eUJ1dHRvblN0eWxlOworICAgIGVuY29kZXIgPDwgbV9sb2NhbGU7CisgICAgZW5jb2RlciA8PCBt
X2xhcmdlc3RDb3JuZXJSYWRpdXM7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6
Om9wdGlvbmFsPFJlZjxBcHBsZVBheUJ1dHRvblN5c3RlbUltYWdlPj4gQXBwbGVQYXlCdXR0b25T
eXN0ZW1JbWFnZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisjZGVmaW5lIERFQ09ERShu
YW1lLCB0eXBlKSBcCisgICAgc3RkOjpvcHRpb25hbDx0eXBlPiBuYW1lOyBcCisgICAgZGVjb2Rl
ciA+PiBuYW1lOyBcCisgICAgaWYgKCFuYW1lKSBcCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7IFwKKworICAgIERFQ09ERShhcHBsZVBheUJ1dHRvblR5cGUsIEFwcGxlUGF5QnV0dG9uVHlw
ZSkKKyAgICBERUNPREUoYXBwbGVQYXlCdXR0b25TdHlsZSwgQXBwbGVQYXlCdXR0b25TdHlsZSkK
KyAgICBERUNPREUobG9jYWxlLCBTdHJpbmcpCisgICAgREVDT0RFKGxhcmdlc3RDb3JuZXJSYWRp
dXMsIGZsb2F0KQorCisjdW5kZWYgREVDT0RFCisKKyAgICByZXR1cm4gQXBwbGVQYXlCdXR0b25T
eXN0ZW1JbWFnZTo6Y3JlYXRlKFdURk1vdmUoKmFwcGxlUGF5QnV0dG9uVHlwZSksIFdURk1vdmUo
KmFwcGxlUGF5QnV0dG9uU3R5bGUpLCBXVEZNb3ZlKCpsb2NhbGUpLCBXVEZNb3ZlKCpsYXJnZXN0
Q29ybmVyUmFkaXVzKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpBcHBsZVBheUJ1dHRvblN5c3RlbUltYWdlKQor
ICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpTeXN0ZW1JbWFnZSYgc3lzdGVt
SW1hZ2UpIHsgcmV0dXJuIHN5c3RlbUltYWdlLnN5c3RlbUltYWdlVHlwZSgpID09IFdlYkNvcmU6
OlN5c3RlbUltYWdlVHlwZTo6QXBwbGVQYXlCdXR0b247IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfRU5EKCkKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFp
dHM8V2ViQ29yZTo6QXBwbGVQYXlCdXR0b25UeXBlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51
bVZhbHVlczxXZWJDb3JlOjpBcHBsZVBheUJ1dHRvblR5cGUsCisgICAgICAgIFdlYkNvcmU6OkFw
cGxlUGF5QnV0dG9uVHlwZTo6UGxhaW4sCisgICAgICAgIFdlYkNvcmU6OkFwcGxlUGF5QnV0dG9u
VHlwZTo6QnV5LAorICAgICAgICBXZWJDb3JlOjpBcHBsZVBheUJ1dHRvblR5cGU6OlNldFVwLAor
ICAgICAgICBXZWJDb3JlOjpBcHBsZVBheUJ1dHRvblR5cGU6OkRvbmF0ZSwKKyAgICAgICAgV2Vi
Q29yZTo6QXBwbGVQYXlCdXR0b25UeXBlOjpDaGVja091dCwKKyAgICAgICAgV2ViQ29yZTo6QXBw
bGVQYXlCdXR0b25UeXBlOjpCb29rLAorICAgICAgICBXZWJDb3JlOjpBcHBsZVBheUJ1dHRvblR5
cGU6OlN1YnNjcmliZQorI2lmIEVOQUJMRShBUFBMRV9QQVlfTkVXX0JVVFRPTl9UWVBFUykKKyAg
ICAgICAgLCBXZWJDb3JlOjpBcHBsZVBheUJ1dHRvblR5cGU6OlJlbG9hZCwKKyAgICAgICAgV2Vi
Q29yZTo6QXBwbGVQYXlCdXR0b25UeXBlOjpBZGRNb25leSwKKyAgICAgICAgV2ViQ29yZTo6QXBw
bGVQYXlCdXR0b25UeXBlOjpUb3BVcCwKKyAgICAgICAgV2ViQ29yZTo6QXBwbGVQYXlCdXR0b25U
eXBlOjpPcmRlciwKKyAgICAgICAgV2ViQ29yZTo6QXBwbGVQYXlCdXR0b25UeXBlOjpSZW50LAor
ICAgICAgICBXZWJDb3JlOjpBcHBsZVBheUJ1dHRvblR5cGU6OlN1cHBvcnQsCisgICAgICAgIFdl
YkNvcmU6OkFwcGxlUGF5QnV0dG9uVHlwZTo6Q29udHJpYnV0ZSwKKyAgICAgICAgV2ViQ29yZTo6
QXBwbGVQYXlCdXR0b25UeXBlOjpUaXAKKyNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZX05FV19C
VVRUT05fVFlQRVMpCisgICAgPjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
V2ViQ29yZTo6QXBwbGVQYXlCdXR0b25TdHlsZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1W
YWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkFwcGxlUGF5QnV0dG9uU3R5bGUsCisgICAgICAgIFdl
YkNvcmU6OkFwcGxlUGF5QnV0dG9uU3R5bGU6OldoaXRlLAorICAgICAgICBXZWJDb3JlOjpBcHBs
ZVBheUJ1dHRvblN0eWxlOjpXaGl0ZU91dGxpbmUsCisgICAgICAgIFdlYkNvcmU6OkFwcGxlUGF5
QnV0dG9uU3R5bGU6OkJsYWNrCisgICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisj
ZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BBWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZS5tbSBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZS5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jMWI3ODNjNTE2ZDNiYTA2YjhkMTE2ZjM3ZTc3NTA5NDQ4YmI5MGIwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUJ1dHRvblN5
c3RlbUltYWdlLm1tCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIkFwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2UuaCIKKworI2lmIEVOQUJM
RShBUFBMRV9QQVkpCisKKyNpbXBvcnQgIkZsb2F0UmVjdC5oIgorI2ltcG9ydCAiR3JhcGhpY3ND
b250ZXh0Q0cuaCIKKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgUEtQYXltZW50QnV0dG9uVHlwZSB0b1BLUGF5bWVu
dEJ1dHRvblR5cGUoQXBwbGVQYXlCdXR0b25UeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBl
KSB7CisgICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OlBsYWluOgorICAgICAgICByZXR1cm4g
UEtQYXltZW50QnV0dG9uVHlwZVBsYWluOworICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpC
dXk6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRCdXR0b25UeXBlQnV5OworICAgIGNhc2UgQXBw
bGVQYXlCdXR0b25UeXBlOjpTZXRVcDoKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRvblR5
cGVTZXRVcDsKKyAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6RG9uYXRlOgorICAgICAgICBy
ZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZURvbmF0ZTsKKyAgICBjYXNlIEFwcGxlUGF5QnV0dG9u
VHlwZTo6Q2hlY2tPdXQ6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRCdXR0b25UeXBlQ2hlY2tv
dXQ7CisgICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OkJvb2s6CisgICAgICAgIHJldHVybiBQ
S1BheW1lbnRCdXR0b25UeXBlQm9vazsKKyAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6U3Vi
c2NyaWJlOgorICAgICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZVN1YnNjcmliZTsKKyNp
ZiBIQVZFKFBBU1NLSVRfTkVXX0JVVFRPTl9UWVBFUykKKyAgICBjYXNlIEFwcGxlUGF5QnV0dG9u
VHlwZTo6UmVsb2FkOgorICAgICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZVJlbG9hZDsK
KyAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6QWRkTW9uZXk6CisgICAgICAgIHJldHVybiBQ
S1BheW1lbnRCdXR0b25UeXBlQWRkTW9uZXk7CisgICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6
OlRvcFVwOgorICAgICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZVRvcFVwOworICAgIGNh
c2UgQXBwbGVQYXlCdXR0b25UeXBlOjpPcmRlcjoKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1
dHRvblR5cGVPcmRlcjsKKyAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6UmVudDoKKyAgICAg
ICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRvblR5cGVSZW50OworICAgIGNhc2UgQXBwbGVQYXlCdXR0
b25UeXBlOjpTdXBwb3J0OgorICAgICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZVN1cHBv
cnQ7CisgICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OkNvbnRyaWJ1dGU6CisgICAgICAgIHJl
dHVybiBQS1BheW1lbnRCdXR0b25UeXBlQ29udHJpYnV0ZTsKKyAgICBjYXNlIEFwcGxlUGF5QnV0
dG9uVHlwZTo6VGlwOgorICAgICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZVRpcDsKKyNl
bmRpZiAvLyBIQVZFKFBBU1NLSVRfTkVXX0JVVFRPTl9UWVBFUykKKyAgICB9Cit9CisKK3N0YXRp
YyBQS1BheW1lbnRCdXR0b25TdHlsZSB0b1BLUGF5bWVudEJ1dHRvblN0eWxlKEFwcGxlUGF5QnV0
dG9uU3R5bGUgc3R5bGUpCit7CisgICAgc3dpdGNoIChzdHlsZSkgeworICAgIGNhc2UgQXBwbGVQ
YXlCdXR0b25TdHlsZTo6V2hpdGU6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRCdXR0b25TdHls
ZVdoaXRlOworICAgIGNhc2UgQXBwbGVQYXlCdXR0b25TdHlsZTo6V2hpdGVPdXRsaW5lOgorICAg
ICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9uU3R5bGVXaGl0ZU91dGxpbmU7CisgICAgY2FzZSBB
cHBsZVBheUJ1dHRvblN0eWxlOjpCbGFjazoKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRv
blN0eWxlQmxhY2s7CisgICAgfQorfQorCit2b2lkIEFwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2U6
OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uUmVjdCkgY29uc3QKK3sKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoY29udGV4dCk7CisKKyAgICBjb250ZXh0LnNldFNob3VsZFNtb290aEZvbnRzKHRydWUpOwor
ICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CisKKyAgICBQS0RyYXdBcHBsZVBh
eUJ1dHRvbldpdGhDb3JuZXJSYWRpdXMoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgQ0dSZWN0
TWFrZShkZXN0aW5hdGlvblJlY3QueCgpLCAtZGVzdGluYXRpb25SZWN0Lm1heFkoKSwgZGVzdGlu
YXRpb25SZWN0LndpZHRoKCksIGRlc3RpbmF0aW9uUmVjdC5oZWlnaHQoKSksIDEuMCwgbV9sYXJn
ZXN0Q29ybmVyUmFkaXVzLCB0b1BLUGF5bWVudEJ1dHRvblR5cGUobV9hcHBsZVBheUJ1dHRvblR5
cGUpLCB0b1BLUGF5bWVudEJ1dHRvblN0eWxlKG1fYXBwbGVQYXlCdXR0b25TdHlsZSksIG1fbG9j
YWxlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFQ
UExFX1BBWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlMb2dvU3lzdGVtSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
QXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTQxMDgzNjU5OGFjZGFlNzA5
YjYzNDI4ZGJiODBlMDFjYTBhYmY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxvZ29TeXN0ZW1JbWFnZS5oCkBAIC0wLDAgKzEsMTA2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKQor
CisjaW5jbHVkZSAiU3lzdGVtSW1hZ2UuaCIKKyNpbmNsdWRlIDxvcHRpb25hbD4KKyNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitlbnVtIGNsYXNzIEFwcGxlUGF5TG9nb1N0eWxlIDogdWludDhfdCB7CisgICAgV2hp
dGUsCisgICAgQmxhY2ssCit9OworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBBcHBsZVBheUxvZ29T
eXN0ZW1JbWFnZSBmaW5hbCA6IHB1YmxpYyBTeXN0ZW1JbWFnZSB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFJlZjxBcHBsZVBheUxvZ29TeXN0ZW1JbWFnZT4gY3JlYXRlKEFwcGxlUGF5TG9nb1N0eWxl
IGFwcGxlUGF5TG9nb1N0eWxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
QXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2UoYXBwbGVQYXlMb2dvU3R5bGUpKTsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIH5BcHBsZVBheUxvZ29TeXN0ZW1JbWFnZSgpID0gZGVmYXVsdDsKKworICAgIHZv
aWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBjb25zdCBmaW5hbDsK
KworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8
QXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2U+PiBkZWNvZGUoRGVjb2RlciYpOworCitwcml2YXRlOgor
ICAgIEFwcGxlUGF5TG9nb1N5c3RlbUltYWdlKEFwcGxlUGF5TG9nb1N0eWxlIGFwcGxlUGF5TG9n
b1N0eWxlKQorICAgICAgICA6IFN5c3RlbUltYWdlKFN5c3RlbUltYWdlVHlwZTo6QXBwbGVQYXlM
b2dvKQorICAgICAgICAsIG1fYXBwbGVQYXlMb2dvU3R5bGUoYXBwbGVQYXlMb2dvU3R5bGUpCisg
ICAgeworICAgIH0KKworICAgIEFwcGxlUGF5TG9nb1N0eWxlIG1fYXBwbGVQYXlMb2dvU3R5bGU7
Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBBcHBsZVBheUxvZ29TeXN0ZW1J
bWFnZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBt
X2FwcGxlUGF5TG9nb1N0eWxlOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpv
cHRpb25hbDxSZWY8QXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2U+PiBBcHBsZVBheUxvZ29TeXN0ZW1J
bWFnZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisjZGVmaW5lIERFQ09ERShuYW1lLCB0
eXBlKSBcCisgICAgc3RkOjpvcHRpb25hbDx0eXBlPiBuYW1lOyBcCisgICAgZGVjb2RlciA+PiBu
YW1lOyBcCisgICAgaWYgKCFuYW1lKSBcCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7IFwK
KworICAgIERFQ09ERShhcHBsZVBheUxvZ29TdHlsZSwgQXBwbGVQYXlMb2dvU3R5bGUpCisKKyN1
bmRlZiBERUNPREUKKworICAgIHJldHVybiBBcHBsZVBheUxvZ29TeXN0ZW1JbWFnZTo6Y3JlYXRl
KFdURk1vdmUoKmFwcGxlUGF5TG9nb1N0eWxlKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpBcHBsZVBheUxvZ29T
eXN0ZW1JbWFnZSkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6U3lzdGVt
SW1hZ2UmIHN5c3RlbUltYWdlKSB7IHJldHVybiBzeXN0ZW1JbWFnZS5zeXN0ZW1JbWFnZVR5cGUo
KSA9PSBXZWJDb3JlOjpTeXN0ZW1JbWFnZVR5cGU6OkFwcGxlUGF5TG9nbzsgfQorU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19FTkQoKQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1
Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpBcHBsZVBheUxvZ29TdHlsZT4geworICAgIHVzaW5nIHZh
bHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkFwcGxlUGF5TG9nb1N0eWxlLAor
ICAgICAgICBXZWJDb3JlOjpBcHBsZVBheUxvZ29TdHlsZTo6V2hpdGUsCisgICAgICAgIFdlYkNv
cmU6OkFwcGxlUGF5TG9nb1N0eWxlOjpCbGFjaworICAgID47Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXVEYKKworI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TG9nb1N5c3RlbUltYWdlLm1tIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxvZ29TeXN0ZW1JbWFnZS5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wMWNkYzk3N2JhNzc4MjkzMmY5OGVhZjQyMTBkNzZmNDVhNzFhMTI4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxv
Z29TeXN0ZW1JbWFnZS5tbQpAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2UuaCIKKworI2lmIEVO
QUJMRShBUFBMRV9QQVkpCisKKyNpbXBvcnQgIkZsb2F0UmVjdC5oIgorI2ltcG9ydCAiR2VvbWV0
cnlVdGlsaXRpZXMuaCIKKyNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dC5oIgorI2ltcG9ydCA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworc3RhdGljIE5TQnVuZGxlICpwYXNzS2l0QnVuZGxlKCkKK3sKKyAgICBz
dGF0aWMgTlNCdW5kbGUgKnBhc3NLaXRCdW5kbGU7CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2Vf
dCBvbmNlVG9rZW47CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeeworI2lmIFBMQVRG
T1JNKE1BQykKKyAgICAgICAgcGFzc0tpdEJ1bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVXaXRoVVJM
OltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6QCIvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29y
a3MvUGFzc0tpdC5mcmFtZXdvcmsiIGlzRGlyZWN0b3J5OllFU11dOworI2Vsc2UKKyAgICAgICAg
ZGxvcGVuKCIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9QYXNzS2l0LmZyYW1ld29yay9QYXNz
S2l0IiwgUlRMRF9OT1cpOworICAgICAgICBwYXNzS2l0QnVuZGxlID0gW05TQnVuZGxlIGJ1bmRs
ZUZvckNsYXNzOk5TQ2xhc3NGcm9tU3RyaW5nKEAiUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyIildOworI2VuZGlmCisgICAgfSk7CisgICAgcmV0dXJuIHBhc3NLaXRCdW5kbGU7
Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8Q0dQREZQYWdlUmVmPiBsb2FkUGFzc0tpdFBERlBhZ2Uo
TlNTdHJpbmcgKmltYWdlTmFtZSkKK3sKKyAgICBOU1VSTCAqdXJsID0gW3Bhc3NLaXRCdW5kbGUo
KSBVUkxGb3JSZXNvdXJjZTppbWFnZU5hbWUgd2l0aEV4dGVuc2lvbjpAInBkZiJdOworICAgIGlm
ICghdXJsKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvIGRvY3VtZW50ID0gYWRv
cHRDRihDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFVSTCgoQ0ZVUkxSZWYpdXJsKSk7CisgICAgaWYg
KCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFDR1BERkRvY3Vt
ZW50R2V0TnVtYmVyT2ZQYWdlcyhkb2N1bWVudC5nZXQoKSkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIHJldHVybiBDR1BERkRvY3VtZW50R2V0UGFnZShkb2N1bWVudC5nZXQoKSwgMSk7
Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8Q0dQREZQYWdlUmVmPiBhcHBsZVBheUxvZ29XaGl0ZSgp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDR1BERlBhZ2VSZWY+PiBs
b2dvUGFnZTsKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBkaXNw
YXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisgICAgICAgIGxvZ29QYWdlLmdldCgpID0gbG9hZFBh
c3NLaXRQREZQYWdlKEAiUGF5QnV0dG9uTG9nb1doaXRlIik7CisgICAgfSk7CisgICAgcmV0dXJu
IGxvZ29QYWdlOworfQorCitzdGF0aWMgUmV0YWluUHRyPENHUERGUGFnZVJlZj4gYXBwbGVQYXlM
b2dvQmxhY2soKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dQREZQ
YWdlUmVmPj4gbG9nb1BhZ2U7CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47
CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeeworICAgICAgICBsb2dvUGFnZS5nZXQo
KSA9IGxvYWRQYXNzS2l0UERGUGFnZShAIlBheUJ1dHRvbkxvZ29CbGFjayIpOworICAgIH0pOwor
ICAgIHJldHVybiBsb2dvUGFnZTsKK30KKworc3RhdGljIFJldGFpblB0cjxDR1BERlBhZ2VSZWY+
IGFwcGxlUGF5TG9nb0ZvclN0eWxlKEFwcGxlUGF5TG9nb1N0eWxlIHN0eWxlKQoreworICAgIHN3
aXRjaCAoc3R5bGUpIHsKKyAgICBjYXNlIEFwcGxlUGF5TG9nb1N0eWxlOjpXaGl0ZToKKyAgICAg
ICAgcmV0dXJuIGFwcGxlUGF5TG9nb1doaXRlKCk7CisKKyAgICBjYXNlIEFwcGxlUGF5TG9nb1N0
eWxlOjpCbGFjazoKKyAgICAgICAgcmV0dXJuIGFwcGxlUGF5TG9nb0JsYWNrKCk7CisgICAgfQor
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3Zv
aWQgQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uUmVjdCkgY29uc3QKK3sKKyAgICBhdXRvIHBh
Z2UgPSBhcHBsZVBheUxvZ29Gb3JTdHlsZShtX2FwcGxlUGF5TG9nb1N0eWxlKTsKKyAgICBpZiAo
IXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIENHU2l6ZSBwZGZTaXplID0gQ0dQREZQYWdl
R2V0Qm94UmVjdChwYWdlLmdldCgpLCBrQ0dQREZNZWRpYUJveCkuc2l6ZTsKKworICAgIGF1dG8g
bGFyZ2VzdFJlY3QgPSBsYXJnZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0luc2lkZVJlY3QocGRmU2l6
ZS53aWR0aCAvIHBkZlNpemUuaGVpZ2h0LCBkZXN0aW5hdGlvblJlY3QpOworICAgIGNvbnRleHQu
dHJhbnNsYXRlKGxhcmdlc3RSZWN0LngoKSwgbGFyZ2VzdFJlY3QueSgpKTsKKyAgICBjb250ZXh0
LnNjYWxlKGxhcmdlc3RSZWN0LndpZHRoKCkgLyBwZGZTaXplLndpZHRoKTsKKworICAgIGNvbnRl
eHQudHJhbnNsYXRlKDAsIHBkZlNpemUuaGVpZ2h0KTsKKyAgICBjb250ZXh0LnNjYWxlKEZsb2F0
U2l6ZSgxLCAtMSkpOworCisgICAgQ0dDb250ZXh0RHJhd1BERlBhZ2UoY29udGV4dC5wbGF0Zm9y
bUNvbnRleHQoKSwgcGFnZS5nZXQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA0
MGRkYjFmNmQxODEzNDE3NzYzN2U4ZmQxMDEyODQ5MjQ5Y2NiYmIzLi5hYTQ0ZjVmNTMxNjdiOWJj
MGYxNDIzZjI3YmZjMjRkNzE3ZWJhY2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTcx
LDkgKzcxLDExIEBAIEpTQXBwbGVQYXlTaGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQuY3BwCiBK
U0FwcGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGUuY3BwCiBKU0FwcGxlUGF5VmFsaWRhdGVNZXJj
aGFudEV2ZW50LmNwcAogTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3Bw
CitNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2UubW0KIE1vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlDb3Vwb25Db2RlQ2hhbmdlZEV2ZW50LmNwcAogTW9kdWxlcy9hcHBs
ZXBheS9BcHBsZVBheUNhbmNlbEV2ZW50LmNwcAogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUNv
bnRhY3RGaWVsZC5jcHAKK01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2Uu
bW0KIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlNZXJjaGFudENhcGFiaWxpdHkuY3BwCiBNb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQuY3BwCiBNb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudC5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlYTU3
NjVlZjY4ZDMzODFkODcwNjQ1ZmYzZTdmYjc1ZmJjZDQ0ZGUzLi45ZGQ2MDIwODI5YTJjY2U0Mzg5
NDkwZDQ0YjgwM2RlZTZkOWUwNmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMTIyLDYgKzMxMjIsOSBAQAogCQk5NUFBNTcx
MDI1RUVFRDMyMDA0RTkyODMgLyogSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTVBQTU3MEUyNUVFRUQzMTAw
NEU5MjgzIC8qIEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuaCAqLzsgfTsKIAkJOTVCQTRGQUQy
NkQ5ODFBQTAwMkEwRTYyIC8qIFBsYXRmb3JtVmlld0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1QkE0RkFCMjZEOTgxQUEwMDJBMEU2
MiAvKiBQbGF0Zm9ybVZpZXdDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTVERjlEMjUyNTJCRURCMjAwMEQ3RjQ2IC8qIFBvaW50
ZXJDaGFyYWN0ZXJpc3RpY3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk1REY5RDIzMjUyQkVEOTkwMDBEN0Y0NiAvKiBQb2ludGVyQ2hhcmFjdGVyaXN0
aWNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
OTVFOUY0NDYyN0M5QTM5QzAwOTQ1MzM3IC8qIFN5c3RlbUltYWdlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUU5RjQ0NDI3QzlBMzlCMDA5NDUzMzcg
LyogU3lzdGVtSW1hZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk5NUU5RjQ0QjI3QzlGNjY2MDA5NDUzMzcgLyogQXBwbGVQYXlCdXR0b25TeXN0
ZW1JbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTVFOUY0NDkyN0M5RjY2NjAwOTQ1MzM3IC8qIEFwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5NUU5RjQ0
RjI3QzlGNjlDMDA5NDUzMzcgLyogQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1RTlGNDREMjdDOUY2OUIwMDk0
NTMzNyAvKiBBcHBsZVBheUxvZ29TeXN0ZW1JbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk1RUFENTYzMjY2RUYyREIwMDRCOUNGMSAvKiBB
cHBsZVBheUNvdXBvbkNvZGVDaGFuZ2VkRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1RUFENTVGMjY2RUYyREEwMDRCOUNGMSAvKiBBcHBsZVBh
eUNvdXBvbkNvZGVDaGFuZ2VkRXZlbnQuaCAqLzsgfTsKIAkJOTVFQUQ1NkEyNjZFRjJGQTAwNEI5
Q0YxIC8qIEFwcGxlUGF5RGF0ZUNvbXBvbmVudHNSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTVFQUQ1NjYyNjZFRjJGODAwNEI5Q0YxIC8qIEFw
cGxlUGF5RGF0ZUNvbXBvbmVudHNSYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTk1RUFENTZEMjY2RUYyRkEwMDRCOUNGMSAvKiBBcHBsZVBh
eURhdGVDb21wb25lbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5NUVBRDU2OTI2NkVGMkY5MDA0QjlDRjEgLyogQXBwbGVQYXlEYXRlQ29tcG9uZW50
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0x
MzA4OSw2ICsxMzA5MiwxMSBAQAogCQk5NUFBNTcwRTI1RUVFRDMxMDA0RTkyODMgLyogSW5zcGVj
dG9yQ2FudmFzQ2FsbFRyYWNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk1QkE0RkFCMjZEOTgxQUEwMDJBMEU2MiAvKiBQbGF0Zm9ybVZpZXdDb250cm9sbGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtVmlld0NvbnRyb2xsZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTVERjlEMjMyNTJCRUQ5OTAwMEQ3RjQ2IC8q
IFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9pbnRlckNoYXJhY3Rl
cmlzdGljcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NUU5RjQ0NDI3QzlBMzlC
MDA5NDUzMzcgLyogU3lzdGVtSW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU3lzdGVtSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTVFOUY0NDgy
N0M5RjY2NTAwOTQ1MzM3IC8qIEFwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2UubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBcHBsZVBheUJ1dHRvblN5c3RlbUltYWdl
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NUU5RjQ0OTI3QzlGNjY2MDA5NDUz
MzcgLyogQXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBcHBsZVBheUJ1dHRvblN5c3RlbUltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTk1RTlGNDRDMjdDOUY2OUIwMDk0NTMzNyAvKiBBcHBsZVBheUxvZ29TeXN0
ZW1JbWFnZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFwcGxl
UGF5TG9nb1N5c3RlbUltYWdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NUU5
RjQ0RDI3QzlGNjlCMDA5NDUzMzcgLyogQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTVFQUQ1NUYyNjZFRjJEQTAwNEI5Q0YxIC8qIEFw
cGxlUGF5Q291cG9uQ29kZUNoYW5nZWRFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBcHBsZVBheUNvdXBvbkNvZGVDaGFuZ2VkRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTVFQUQ1NjEyNjZFRjJEQTAwNEI5Q0YxIC8qIEFwcGxlUGF5Q291cG9u
Q29kZUNoYW5nZWRFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXBwbGVQYXlDb3Vw
b25Db2RlQ2hhbmdlZEV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTVF
QUQ1NjIyNjZFRjJEQjAwNEI5Q0YxIC8qIEFwcGxlUGF5Q291cG9uQ29kZUNoYW5nZWRFdmVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcHBsZVBheUNvdXBvbkNv
ZGVDaGFuZ2VkRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk2NDIs
NiArMTk2NTAsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMUE1OEU4NjkxRDE5RDhDMDAwQzBF
QTczIC8qIGNvY29hICovLAogCQkJCUExREY1QTlGMUY3RUUwRjEwMDU4QTQ3NyAvKiBwYXltZW50
cmVxdWVzdCAqLywKKwkJCQk5NUU5RjQ0OTI3QzlGNjY2MDA5NDUzMzcgLyogQXBwbGVQYXlCdXR0
b25TeXN0ZW1JbWFnZS5oICovLAorCQkJCTk1RTlGNDQ4MjdDOUY2NjUwMDk0NTMzNyAvKiBBcHBs
ZVBheUJ1dHRvblN5c3RlbUltYWdlLm1tICovLAogCQkJCUExMTNFMDJDMjMzMUEwRTQwMDlDMzNB
MCAvKiBBcHBsZVBheUNhbmNlbEV2ZW50LmNwcCAqLywKIAkJCQlBMTEzRTAyQjIzMzFBMEU0MDA5
QzMzQTAgLyogQXBwbGVQYXlDYW5jZWxFdmVudC5oICovLAogCQkJCUExOTU2RjE4MjMzMUE0Njgw
MDU3RTlEMiAvKiBBcHBsZVBheUNhbmNlbEV2ZW50LmlkbCAqLywKQEAgLTE5Njc5LDYgKzE5Njg5
LDggQEAKIAkJCQlBMTNCNjE2OTI0NzVERkM1MDBCQkU2REUgLyogQXBwbGVQYXlJbnN0YWxsbWVu
dFJldGFpbENoYW5uZWwuaWRsICovLAogCQkJCTdDNjU3OUUyMUUwMDgyNzAwMEUzQTI3QSAvKiBB
cHBsZVBheUxpbmVJdGVtLmggKi8sCiAJCQkJN0M2NTc5RTQxRTAwODJDODAwRTNBMjdBIC8qIEFw
cGxlUGF5TGluZUl0ZW0uaWRsICovLAorCQkJCTk1RTlGNDREMjdDOUY2OUIwMDk0NTMzNyAvKiBB
cHBsZVBheUxvZ29TeXN0ZW1JbWFnZS5oICovLAorCQkJCTk1RTlGNDRDMjdDOUY2OUIwMDk0NTMz
NyAvKiBBcHBsZVBheUxvZ29TeXN0ZW1JbWFnZS5tbSAqLywKIAkJCQlBMURGNUFBODFGODA3MEQ0
MDA1OEE0NzcgLyogQXBwbGVQYXlNZXJjaGFudENhcGFiaWxpdHkuY3BwICovLAogCQkJCUExREY1
QTgzMUY3RUJERjIwMDU4QTQ3NyAvKiBBcHBsZVBheU1lcmNoYW50Q2FwYWJpbGl0eS5oICovLAog
CQkJCUExREY1QTg1MUY3RUJERjIwMDU4QTQ3NyAvKiBBcHBsZVBheU1lcmNoYW50Q2FwYWJpbGl0
eS5pZGwgKi8sCkBAIC0yOTE2NCw2ICsyOTE3Niw3IEBACiAJCQkJQjIzNTQwRjAwRDAwNzgyRTAw
MjM4MkZBIC8qIFN0cmluZ1RydW5jYXRvci5jcHAgKi8sCiAJCQkJQjIzNTQwRjEwRDAwNzgyRTAw
MjM4MkZBIC8qIFN0cmluZ1RydW5jYXRvci5oICovLAogCQkJCTA4NzU1OEM0MTNCNEE1N0QwMEY0
OTMwNyAvKiBTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuaCAqLywKKwkJCQk5NUU5RjQ0
NDI3QzlBMzlCMDA5NDUzMzcgLyogU3lzdGVtSW1hZ2UuaCAqLywKIAkJCQkzQkI2QjgwRjIyQTdE
MzExMDAzQTJBNjkgLyogVGFiU2l6ZS5oICovLAogCQkJCTM3NkRDQ0UwMTNCNEY5NjYwMDJFQkVG
QyAvKiBUZXh0UnVuLmNwcCAqLywKIAkJCQlBODI0QjQ2NDBFMkVGMkVBMDA4MUE3QjcgLyogVGV4
dFJ1bi5oICovLApAQCAtMzM1MTEsNiArMzM1MjQsNyBAQAogCQkJCTQ0MjUwNzA5MjU4MjlBMjcw
MEMwOTM2OCAvKiBBcHBIaWdobGlnaHRTdG9yYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NUZC
NjYyNTI2RDcwMzNDMDA2OEFDNjcgLyogQXBwbGVQYXlBTVNVSVBheW1lbnRIYW5kbGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5NUZCNjYyNjI2RDcwMzNDMDA2OEFDNjcgLyogQXBwbGVQYXlBTVNV
SVJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTk1RTlGNDRCMjdDOUY2NjYwMDk0NTMzNyAv
KiBBcHBsZVBheUJ1dHRvblN5c3RlbUltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTEzRTAy
RTIzMzFBMTM0MDA5QzMzQTAgLyogQXBwbGVQYXlDYW5jZWxFdmVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTFERjVBOTQxRjdFQzQzMjAwNThBNDc3IC8qIEFwcGxlUGF5Q29udGFjdEZpZWxkLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5NUVBRDU2MzI2NkVGMkRCMDA0QjlDRjEgLyogQXBwbGVQYXlD
b3Vwb25Db2RlQ2hhbmdlZEV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMzNTI4LDYgKzMzNTQy
LDcgQEAKIAkJCQlBMTE3NTBBMTI0NzQ2OEY3MDBENEQyNkMgLyogQXBwbGVQYXlJbnN0YWxsbWVu
dEl0ZW1UeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTNCNjE2QjI0NzVFMDQ4MDBCQkU2REUg
LyogQXBwbGVQYXlJbnN0YWxsbWVudFJldGFpbENoYW5uZWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTdDNjU3OUUzMUUwMDgyNzAwMEUzQTI3QSAvKiBBcHBsZVBheUxpbmVJdGVtLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk5NUU5RjQ0RjI3QzlGNjlDMDA5NDUzMzcgLyogQXBwbGVQYXlMb2dvU3lzdGVt
SW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUExREY1QTg2MUY3RUJERjIwMDU4QTQ3NyAvKiBB
cHBsZVBheU1lcmNoYW50Q2FwYWJpbGl0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFGNkNGRkYx
RkUwOTYyMTAwMTgwNzhDIC8qIEFwcGxlUGF5TW9kaWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTdDNjUyMzAxMUUwMEQwMzQwMDY3N0YyMiAvKiBBcHBsZVBheVBheW1lbnQuaCBpbiBIZWFkZXJz
ICovLApAQCAtMzc3NDMsNiArMzc3NTgsNyBAQAogCQkJCUUxODA4MTE3MTZGQ0Y5Q0IwMEI4MEQw
NyAvKiBTeW5jaHJvbm91c0xvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzE2OTJE
RDUyM0QyM0UwODAwNkU4OEY3IC8qIFN5c3RlbUJhdHRlcnkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUU0RThCNEVDMjE2Qjc5RTUwMEI4ODM0RCAvKiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJOTVFOUY0NDYyN0M5QTM5QzAwOTQ1MzM3IC8qIFN5c3RlbUlt
YWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjAzQzA3NDE4ODQ2OTVFMDBBNUY4Q0EgLyogU3lz
dGVtTWVtb3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQlFM0MwNDEzODI1NENCMzBEMDAyMUQwRTYg
LyogU3lzdGVtU291bmREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTNDMDQxMkYyNTRD
QTI5QjAwMjFEMEU2IC8qIFN5c3RlbVNvdW5kTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAppbmRleCAwZWQ5
Y2M4YTVlNzkxODZhNTk0YmE2NmJiNTdlZmNlN2YxYThmNzdlLi41MDczZWNhYjRiOTg0N2Y4YjZl
YjBjYTM4NDdhZjQ3MDU0ZTNhMzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmlt
aXRpdmVWYWx1ZU1hcHBpbmdzLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAK
KyNpbmNsdWRlICJBcHBsZVBheUJ1dHRvblN5c3RlbUltYWdlLmgiCiAjaW5jbHVkZSAiQ1NTQ2Fs
Y1ZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udEZhbWlseS5oIgogI2luY2x1ZGUgIkNTU1ByaW1p
dGl2ZVZhbHVlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9U
aGVtZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5t
bQppbmRleCAwNDQxYTc3OTkwZDZkYjZlOTVkOWI5ZWE2YTM3ZjU0Zjg2NTU4MjAzLi5iMTYyNzJj
OGUwMWE0YjJiYjM4NjRiYWVmNzNiMDE2ZWFiYmNmMTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1RoZW1lQ29jb2EubW0KQEAgLTI2LDEwOCArMjYsMTUgQEAKICNpbXBvcnQg
ImNvbmZpZy5oIgogI2ltcG9ydCAiVGhlbWVDb2NvYS5oIgogCisjaW1wb3J0ICJBcHBsZVBheUxv
Z29TeXN0ZW1JbWFnZS5oIgogI2ltcG9ydCAiRm9udENhc2NhZGUuaCIKKyNpbXBvcnQgIkdlb21l
dHJ5VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbXBvcnQgIklt
YWdlQnVmZmVyLmgiCiAjaW1wb3J0IDxkbGZjbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXN0YXRpYyB2b2lkIGZpdENvbnRleHRUb0JveChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZsb2F0U2l6ZSYgc3JjSW1hZ2VTaXplLCBjb25zdCBGbG9hdFNpemUmIGRzdFNpemUpCi17
Ci0gICAgZmxvYXQgc3JjUmF0aW8gPSBzcmNJbWFnZVNpemUuYXNwZWN0UmF0aW8oKTsKLSAgICBm
bG9hdCBkc3RSYXRpbyA9IGRzdFNpemUuYXNwZWN0UmF0aW8oKTsKLQotICAgIGZsb2F0IHNjYWxl
OwotICAgIGZsb2F0IHRyYW5zbGF0aW9uWCA9IDA7Ci0gICAgZmxvYXQgdHJhbnNsYXRpb25ZID0g
MDsKLSAgICBpZiAoc3JjUmF0aW8gPiBkc3RSYXRpbykgewotICAgICAgICBzY2FsZSA9IGRzdFNp
emUud2lkdGgoKSAvIHNyY0ltYWdlU2l6ZS53aWR0aCgpOwotICAgICAgICB0cmFuc2xhdGlvblkg
PSAoZHN0U2l6ZS5oZWlnaHQoKSAtIHNjYWxlICogc3JjSW1hZ2VTaXplLmhlaWdodCgpKSAvIDI7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgc2NhbGUgPSBkc3RTaXplLmhlaWdodCgpIC8gc3JjSW1h
Z2VTaXplLmhlaWdodCgpOwotICAgICAgICB0cmFuc2xhdGlvblggPSAoZHN0U2l6ZS53aWR0aCgp
IC0gc2NhbGUgKiBzcmNJbWFnZVNpemUud2lkdGgoKSkgLyAyOwotICAgIH0KLSAgICBjb250ZXh0
LnRyYW5zbGF0ZSh0cmFuc2xhdGlvblgsIHRyYW5zbGF0aW9uWSk7Ci0gICAgY29udGV4dC5zY2Fs
ZShzY2FsZSk7Ci19Ci0KLSNpZiBFTkFCTEUoQVBQTEVfUEFZKQotCi1zdGF0aWMgTlNCdW5kbGUg
KnBhc3NLaXRCdW5kbGUoKQotewotICAgIHN0YXRpYyBOU0J1bmRsZSAqcGFzc0tpdEJ1bmRsZTsK
LSAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBkaXNwYXRjaF9vbmNl
KCZvbmNlVG9rZW4sIF57Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgICAgICBwYXNzS2l0QnVuZGxl
ID0gW05TQnVuZGxlIGJ1bmRsZVdpdGhVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpAIi9TeXN0
ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9QYXNzS2l0LmZyYW1ld29yayIgaXNEaXJlY3Rv
cnk6WUVTXV07Ci0jZWxzZQotICAgICAgICBkbG9wZW4oIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL1Bhc3NLaXQuZnJhbWV3b3JrL1Bhc3NLaXQiLCBSVExEX05PVyk7Ci0gICAgICAgIHBhc3NL
aXRCdW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6TlNDbGFzc0Zyb21TdHJpbmcoQCJQ
S1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIiKV07Ci0jZW5kaWYKLSAgICB9KTsK
LQotICAgIHJldHVybiBwYXNzS2l0QnVuZGxlOwotfQotCi1zdGF0aWMgUmV0YWluUHRyPENHUERG
UGFnZVJlZj4gbG9hZFBhc3NLaXRQREZQYWdlKE5TU3RyaW5nICppbWFnZU5hbWUpCi17Ci0gICAg
TlNVUkwgKnVybCA9IFtwYXNzS2l0QnVuZGxlKCkgVVJMRm9yUmVzb3VyY2U6aW1hZ2VOYW1lIHdp
dGhFeHRlbnNpb246QCJwZGYiXTsKLSAgICBpZiAoIXVybCkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICBhdXRvIGRvY3VtZW50ID0gYWRvcHRDRihDR1BERkRvY3VtZW50Q3JlYXRlV2l0
aFVSTCgoQ0ZVUkxSZWYpdXJsKSk7Ci0gICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0KLSAgICBpZiAoIUNHUERGRG9jdW1lbnRHZXROdW1iZXJPZlBhZ2VzKGRvY3Vt
ZW50LmdldCgpKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gQ0dQREZE
b2N1bWVudEdldFBhZ2UoZG9jdW1lbnQuZ2V0KCksIDEpOwotfTsKLQotc3RhdGljIENHUERGUGFn
ZVJlZiBhcHBsZVBheUJ1dHRvbkxvZ29CbGFjaygpCi17Ci0gICAgc3RhdGljIENHUERGUGFnZVJl
ZiBsb2dvUGFnZTsKLSAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBk
aXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIGxvZ29QYWdlID0gbG9hZFBhc3NL
aXRQREZQYWdlKEAiUGF5QnV0dG9uTG9nb0JsYWNrIikubGVha1JlZigpOwotICAgIH0pOwotCi0g
ICAgcmV0dXJuIGxvZ29QYWdlOwotfTsKLQotc3RhdGljIENHUERGUGFnZVJlZiBhcHBsZVBheUJ1
dHRvbkxvZ29XaGl0ZSgpCi17Ci0gICAgc3RhdGljIENHUERGUGFnZVJlZiBsb2dvUGFnZTsKLSAg
ICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBkaXNwYXRjaF9vbmNlKCZv
bmNlVG9rZW4sIF57Ci0gICAgICAgIGxvZ29QYWdlID0gbG9hZFBhc3NLaXRQREZQYWdlKEAiUGF5
QnV0dG9uTG9nb1doaXRlIikubGVha1JlZigpOwotICAgIH0pOwotCi0gICAgcmV0dXJuIGxvZ29Q
YWdlOwotfTsKLQotc3RhdGljIHZvaWQgZHJhd0FwcGxlUGF5QnV0dG9uKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgQ0dQREZQYWdlUmVmIHBhZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKLXsK
LSAgICAvLyBDcmVhdGUgYSBsb2NhbCBJbWFnZUJ1ZmZlciBiZWNhdXNlIGRlY29kaW5nIHRoZSBQ
REYgaW1hZ2VzIGhhcyB0byBoYXBwZW4gaW4gV2ViUHJvY2Vzcy4KLSAgICBhdXRvIGltYWdlQnVm
ZmVyID0gY29udGV4dC5jcmVhdGVBbGlnbmVkSW1hZ2VCdWZmZXIoc2l6ZSwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCksIFJlbmRlcmluZ01ldGhvZDo6TG9jYWwpOwotICAgIGlmICghaW1h
Z2VCdWZmZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIENHU2l6ZSBwZGZTaXplID0gQ0dQREZQ
YWdlR2V0Qm94UmVjdChwYWdlLCBrQ0dQREZNZWRpYUJveCkuc2l6ZTsKLQotICAgIGF1dG8mIGlt
YWdlQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7Ci0gICAgZml0Q29udGV4dFRvQm94
KGltYWdlQ29udGV4dCwgRmxvYXRTaXplKHBkZlNpemUpLCBzaXplKTsKLSAgICBpbWFnZUNvbnRl
eHQudHJhbnNsYXRlKDAsIHBkZlNpemUuaGVpZ2h0KTsKLSAgICBpbWFnZUNvbnRleHQuc2NhbGUo
RmxvYXRTaXplKDEsIC0xKSk7Ci0gICAgQ0dDb250ZXh0RHJhd1BERlBhZ2UoaW1hZ2VDb250ZXh0
LnBsYXRmb3JtQ29udGV4dCgpLCBwYWdlKTsKLQotICAgIGNvbnRleHQuZHJhd0NvbnN1bWluZ0lt
YWdlQnVmZmVyKFdURk1vdmUoaW1hZ2VCdWZmZXIpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVy
bygpLCBzaXplKSk7Ci19OwotCi0jZW5kaWYKLQogdm9pZCBUaGVtZUNvY29hOjpkcmF3TmFtZWRJ
bWFnZShjb25zdCBTdHJpbmcmIG5hbWUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRTaXplJiBzaXplKSBjb25zdAogewogICAgIGlmIChuYW1lID09ICJ3aXJlbGVzcy1wbGF5
YmFjayIpIHsKQEAgLTEzNSw3ICs0Miw5IEBAIHZvaWQgVGhlbWVDb2NvYTo6ZHJhd05hbWVkSW1h
Z2UoY29uc3QgU3RyaW5nJiBuYW1lLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvCiAgICAg
ICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjayk7CiAKICAgICAgICAgRmxvYXRT
aXplIHdpcmVsZXNzUGxheWJhY2tTcmNTaXplKDMyLCAyNC4wMTYpOwotICAgICAgICBmaXRDb250
ZXh0VG9Cb3goY29udGV4dCwgd2lyZWxlc3NQbGF5YmFja1NyY1NpemUsIHNpemUpOworICAgICAg
ICBhdXRvIGxhcmdlc3RSZWN0ID0gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0
KHdpcmVsZXNzUGxheWJhY2tTcmNTaXplLmFzcGVjdFJhdGlvKCksIEZsb2F0UmVjdChGbG9hdFBv
aW50Ojp6ZXJvKCksIHNpemUpKTsKKyAgICAgICAgY29udGV4dC50cmFuc2xhdGUobGFyZ2VzdFJl
Y3QueCgpLCBsYXJnZXN0UmVjdC55KCkpOworICAgICAgICBjb250ZXh0LnNjYWxlKGxhcmdlc3RS
ZWN0LndpZHRoKCkgLyB3aXJlbGVzc1BsYXliYWNrU3JjU2l6ZS53aWR0aCgpKTsKIAogICAgICAg
ICBQYXRoIG91dGxpbmU7CiAgICAgICAgIG91dGxpbmUubW92ZVRvKEZsb2F0UG9pbnQoMjQuMDY2
LCAxOCkpOwpAQCAtMTY0LDE3ICs3MywxMyBAQCB2b2lkIFRoZW1lQ29jb2E6OmRyYXdOYW1lZElt
YWdlKGNvbnN0IFN0cmluZyYgbmFtZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjbwogCiAj
aWYgRU5BQkxFKEFQUExFX1BBWSkKICAgICBpZiAobmFtZSA9PSAiYXBwbGUtcGF5LWxvZ28tYmxh
Y2siKSB7Ci0gICAgICAgIGlmIChhdXRvIGxvZ28gPSBhcHBsZVBheUJ1dHRvbkxvZ29CbGFjaygp
KSB7Ci0gICAgICAgICAgICBkcmF3QXBwbGVQYXlCdXR0b24oY29udGV4dCwgbG9nbywgc2l6ZSk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgY29udGV4dC5kcmF3U3lz
dGVtSW1hZ2UoQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2U6OmNyZWF0ZShBcHBsZVBheUxvZ29TdHls
ZTo6QmxhY2spLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBzaXplKSk7CisgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBpZiAobmFtZSA9PSAiYXBwbGUtcGF5LWxvZ28td2hpdGUi
KSB7Ci0gICAgICAgIGlmIChhdXRvIGxvZ28gPSBhcHBsZVBheUJ1dHRvbkxvZ29XaGl0ZSgpKSB7
Ci0gICAgICAgICAgICBkcmF3QXBwbGVQYXlCdXR0b24oY29udGV4dCwgbG9nbywgc2l6ZSk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgY29udGV4dC5kcmF3U3lzdGVt
SW1hZ2UoQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2U6OmNyZWF0ZShBcHBsZVBheUxvZ29TdHlsZTo6
V2hpdGUpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBzaXplKSk7CisgICAgICAgIHJl
dHVybjsKICAgICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCA3
MzVhNzI2ZmQyMzVkMWM2MDAzZTUyZjIxY2ZlMmQ0NmViYTMyZjY4Li45ZmQyNWQ4MGFkMTJkYzkx
ZGQxMWY5MTU5OGZjNmM4ZWZhNGNiMmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNwcApA
QCAtMjYzLDYgKzI2MywxMiBAQCB2b2lkIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRyYXdO
YXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgbmF0aXZlSW1hZ2UsIGNvbnN0CiAgICAgbV9zZWNvbmRh
cnlDb250ZXh0LmRyYXdOYXRpdmVJbWFnZShuYXRpdmVJbWFnZSwgc2VsZlNpemUsIGRlc3RSZWN0
LCBzcmNSZWN0LCBvcHRpb25zKTsKIH0KIAordm9pZCBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0
OjpkcmF3U3lzdGVtSW1hZ2UoU3lzdGVtSW1hZ2UmIHN5c3RlbUltYWdlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uUmVjdCkKK3sKKyAgICBtX3ByaW1hcnlDb250ZXh0LmRyYXdTeXN0ZW1J
bWFnZShzeXN0ZW1JbWFnZSwgZGVzdGluYXRpb25SZWN0KTsKKyAgICBtX3NlY29uZGFyeUNvbnRl
eHQuZHJhd1N5c3RlbUltYWdlKHN5c3RlbUltYWdlLCBkZXN0aW5hdGlvblJlY3QpOworfQorCiB2
b2lkIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKE5hdGl2ZUltYWdlJiBu
YXRpdmVJbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0
aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBtX3ByaW1hcnlDb250ZXh0LmRyYXdQYXR0
ZXJuKG5hdGl2ZUltYWdlLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBo
YXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuaAppbmRleCBmNmQ0
ZGJkZmJkODJkNDhiMWEwMDI2OGEzZDAwNTc5YmYyYzVkMWY4Li5mNThiMzRjOTE0MzQyYjczNzc3
MjdjMTFhNzNiNmQ4MjE4ZTE1NTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5oCkBAIC05OCw2
ICs5OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1pdGVyTGltaXQoZmxvYXQpIGZpbmFsOwog
CiAgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUm
IHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7CisgICAgdm9p
ZCBkcmF3U3lzdGVtSW1hZ2UoU3lzdGVtSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsK
ICAgICB2b2lkIGRyYXdQYXR0ZXJuKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIGZpbmFsOwogICAg
IEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmID0geyBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UgfSkgZmluYWw7CiAgICAgSW1hZ2VE
cmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXpl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9
IHsgfSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCAyMTU1YmQyZWI2MzYzNWI0MmRjMDZlMTJiNDMwOTgz
YjJiMzNkYmQzLi4wYmIxMzU5N2NlYTczNjlkYmJjNmUxNzI3ZjI2YzkyYjhmYjc1MTc2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGUuaCIK
ICNpbmNsdWRlICJOdWxsR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiUm91bmRlZFJlY3Qu
aCIKKyNpbmNsdWRlICJTeXN0ZW1JbWFnZS5oIgogI2luY2x1ZGUgIlRleHRSdW4uaCIKICNpbmNs
dWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKQEAgLTYzOCw2ICs2MzksMTEgQEAgUmVmUHRy
PEltYWdlQnVmZmVyPiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUFsaWduZWRJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFJlY3QmIHIKICAgICByZXR1cm4gY3JlYXRlU2NhbGVkSW1hZ2VCdWZmZXIocmVj
dCwgc2NhbGVGYWN0b3IoKSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZSgpLCByZW5kZXJpbmdN
ZXRob2QpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1N5c3RlbUltYWdlKFN5c3Rl
bUltYWdlJiBzeXN0ZW1JbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvblJlY3QpCit7
CisgICAgc3lzdGVtSW1hZ2UuZHJhdygqdGhpcywgZGVzdGluYXRpb25SZWN0KTsKK30KKwogSW1h
Z2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgY29u
c3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBp
bWFnZVBhaW50aW5nT3B0aW9ucykKIHsKICAgICByZXR1cm4gZHJhd0ltYWdlKGltYWdlLCBGbG9h
dFJlY3QoZGVzdGluYXRpb24sIGltYWdlLnNpemUoKSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IGltYWdlLnNpemUoKSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggNTg2Yjk5Yjlm
ZDQ0NWJiOWQzYjk2NTEyMjI4YTQ2ZTdkYjg5NWVkYy4uZTE2YzIzMDkyODFlZGE5ZjAwMGVlMzA0
ZTgzMWViMGZlYWY4YzY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTg3LDYgKzg3LDcgQEAgY2xhc3MgTWVkaWFQbGF5
ZXI7CiBjbGFzcyBSb3VuZGVkUmVjdDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMOwogY2xhc3Mg
UGF0aDsKK2NsYXNzIFN5c3RlbUltYWdlOwogY2xhc3MgVGV4dFJ1bjsKIGNsYXNzIFRyYW5zZm9y
bWF0aW9uTWF0cml4OwogCkBAIC00MjgsNiArNDI5LDggQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2Vs
ZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CiAKKyAgICB2aXJ0dWFs
IHZvaWQgZHJhd1N5c3RlbUltYWdlKFN5c3RlbUltYWdlJiwgY29uc3QgRmxvYXRSZWN0Jik7CisK
ICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29u
c3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9
IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwogICAgIFdFQkNPUkVfRVhQT1JUIElt
YWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IEltYWdlT3JpZW50YXRpb246OkZy
b21JbWFnZSB9KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBk
cmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9h
dFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyBJbWFnZU9yaWVu
dGF0aW9uOjpGcm9tSW1hZ2UgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggZDE4MGU1MTkwMmUyZTI3ODlk
MDQ1NjVkMDdhZGY5NmRmZjVmMmRiNy4uYjYyMzY3ODgwZTNlNTM1NGI2MTcxMTM0N2M5YTExYjQy
MjQ2ODg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVs
bEdyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L051bGxHcmFwaGljc0NvbnRleHQuaApAQCAtNjMsNiArNjMsOCBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYpIGZpbmFsIHsgfQogCisgICAgdm9pZCBkcmF3U3lzdGVtSW1hZ2UoU3lzdGVtSW1hZ2UmLCBj
b25zdCBGbG9hdFJlY3QmKSBmaW5hbCB7IH07CisKICAgICB2b2lkIGRyYXdQYXR0ZXJuKE5hdGl2
ZUltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJikgZmluYWwgeyB9CiAKICAgICBJbnRSZWN0IGNsaXBCb3VuZHMo
KSBjb25zdCBmaW5hbCB7IHJldHVybiB7IH07IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1N5c3RlbUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9TeXN0ZW1JbWFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlODNkM2E3NDcxNjdkMWY4ZDI2
YTA3ZTRmOTI1OTViYmZmMTNkMzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9TeXN0ZW1JbWFnZS5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRmxvYXRSZWN0OworY2xhc3MgR3JhcGhpY3NDb250ZXh0
OworCitlbnVtIGNsYXNzIFN5c3RlbUltYWdlVHlwZSA6IHVpbnQ4X3QgeworI2lmIEVOQUJMRShB
UFBMRV9QQVkpCisgICAgQXBwbGVQYXlCdXR0b24sCisgICAgQXBwbGVQYXlMb2dvLAorI2VuZGlm
Cit9OworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBTeXN0ZW1JbWFnZSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFN5c3RlbUltYWdlPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6
CisgICAgdmlydHVhbCB+U3lzdGVtSW1hZ2UoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIHZv
aWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBjb25zdCB7IH0KKwor
ICAgIFN5c3RlbUltYWdlVHlwZSBzeXN0ZW1JbWFnZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX3N5
c3RlbUltYWdlVHlwZTsgfQorCitwcm90ZWN0ZWQ6CisgICAgU3lzdGVtSW1hZ2UoU3lzdGVtSW1h
Z2VUeXBlIHN5c3RlbUltYWdlVHlwZSkKKyAgICAgICAgOiBtX3N5c3RlbUltYWdlVHlwZShzeXN0
ZW1JbWFnZVR5cGUpCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBTeXN0ZW1JbWFnZVR5
cGUgbV9zeXN0ZW1JbWFnZVR5cGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25h
bWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlN5
c3RlbUltYWdlVHlwZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAg
IFdlYkNvcmU6OlN5c3RlbUltYWdlVHlwZQorI2lmIEVOQUJMRShBUFBMRV9QQVkpCisgICAgICAg
ICwgV2ViQ29yZTo6U3lzdGVtSW1hZ2VUeXBlOjpBcHBsZVBheUJ1dHRvbiwKKyAgICAgICAgV2Vi
Q29yZTo6U3lzdGVtSW1hZ2VUeXBlOjpBcHBsZVBheUxvZ28KKyNlbmRpZgorICAgID47Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCmluZGV4IDc5ZjRj
NDY5OGM3MjUwMzZhNDc1MjU2OGIxMTljMjc0M2I2ZGZiMzMuLjJlMmY0ZjRmMmNiNTVkMzY1ZTVh
ZTM5OTMyNWQwNWYyYzE3MzYxZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcApAQCAtMjQ4
LDYgKzI0OCw4IEBAIHZvaWQgRGlzcGxheUxpc3Q6OmFwcGVuZChJdGVtSGFuZGxlIGl0ZW0pCiAg
ICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd0ltYWdlQnVmZmVyPihpdGVtLmdldDxEcmF3SW1hZ2VC
dWZmZXI+KCkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAg
cmV0dXJuIGFwcGVuZDxEcmF3TmF0aXZlSW1hZ2U+KGl0ZW0uZ2V0PERyYXdOYXRpdmVJbWFnZT4o
KSk7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1N5c3RlbUltYWdlOgorICAgICAgICByZXR1cm4g
YXBwZW5kPERyYXdTeXN0ZW1JbWFnZT4oaXRlbS5nZXQ8RHJhd1N5c3RlbUltYWdlPigpKTsKICAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3
UGF0dGVybj4oaXRlbS5nZXQ8RHJhd1BhdHRlcm4+KCkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdSZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRl
eCBjZjYxNjg3M2RmZjBkOGJhZDdkNmYxYjEzMDFhN2NjMTFmN2UwMzhiLi40NTc3NTUxODliZGFk
ZDcxOWQyNDVhNGU2ZDJjODFiZGRiMWY3ZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtQnVmZmVyLmNwcApAQCAtMTIxLDYgKzEyMSw5IEBAIHZvaWQgSXRlbUhhbmRsZTo6
YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdO
YXRpdmVJbWFnZToKICAgICAgICAgZ2V0PERyYXdOYXRpdmVJbWFnZT4oKS5hcHBseShjb250ZXh0
KTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdTeXN0ZW1JbWFnZToK
KyAgICAgICAgZ2V0PERyYXdTeXN0ZW1JbWFnZT4oKS5hcHBseShjb250ZXh0KTsKKyAgICAgICAg
cmV0dXJuOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgICAgICBnZXQ8RHJh
d1BhdHRlcm4+KCkuYXBwbHkoY29udGV4dCk7CiAgICAgICAgIHJldHVybjsKQEAgLTMzOCw2ICsz
NDEsOSBAQCB2b2lkIEl0ZW1IYW5kbGU6OmRlc3Ryb3koKQogICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdOYXRpdmVJbWFnZToKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9k
ZXN0cnVjdGlibGU8RHJhd05hdGl2ZUltYWdlPjo6dmFsdWUpOwogICAgICAgICByZXR1cm47Cisg
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd1N5c3RlbUltYWdlOgorICAgICAgICBnZXQ8RHJhd1N5c3Rl
bUltYWdlPigpLn5EcmF3U3lzdGVtSW1hZ2UoKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJp
dmlhbGx5X2Rlc3RydWN0aWJsZTxEcmF3UGF0dGVybj46OnZhbHVlKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtNDg5LDYgKzQ5NSw4IEBAIGJvb2wgSXRlbUhhbmRsZTo6c2FmZUNvcHkoSXRlbVR5cGUg
aXRlbVR5cGUsIEl0ZW1IYW5kbGUgZGVzdGluYXRpb24pIGNvbnN0CiAgICAgICAgIHJldHVybiBj
b3B5SW50bzxEcmF3TGluZXNGb3JUZXh0PihpdGVtT2Zmc2V0LCAqdGhpcyk7CiAgICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgogICAgICAgICByZXR1cm4gY29weUludG88RHJhd05h
dGl2ZUltYWdlPihpdGVtT2Zmc2V0LCAqdGhpcyk7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1N5
c3RlbUltYWdlOgorICAgICAgICByZXR1cm4gY29weUludG88RHJhd1N5c3RlbUltYWdlPihpdGVt
T2Zmc2V0LCAqdGhpcyk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAg
IHJldHVybiBjb3B5SW50bzxEcmF3UGF0dGVybj4oaXRlbU9mZnNldCwgKnRoaXMpOwogICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdQYXRoOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5
cGUuY3BwCmluZGV4IGRhMDVkNmNiZTM4ZmEwYjYxNGZlYzllMzM2MTgwMDQ5N2Y2NzI0Y2YuLjU0
ZWExYzg2ODJjMDc0NDJlMmU4NDE0YjczMjhhYTMyNDgwMjVhNzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1U
eXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKQEAgLTg0LDYgKzg0LDggQEAgc3RhdGljIHNpemVf
dCBzaXplT2ZJdGVtSW5CeXRlcyhJdGVtVHlwZSB0eXBlKQogICAgICAgICByZXR1cm4gc2l6ZW9m
KERyYXdJbWFnZUJ1ZmZlcik7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgog
ICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdOYXRpdmVJbWFnZSk7CisgICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd1N5c3RlbUltYWdlOgorICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdTeXN0ZW1JbWFn
ZSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIHJldHVybiBzaXpl
b2YoRHJhd1BhdHRlcm4pOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgpAQCAtMjE1LDYg
KzIxNyw3IEBAIGJvb2wgaXNEcmF3aW5nSXRlbShJdGVtVHlwZSB0eXBlKQogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdMaW5lOgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6CiAg
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgorICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdTeXN0ZW1JbWFnZToKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3UGF0aDoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoKQEAgLTI5
NCw2ICsyOTcsNyBAQCBib29sIGlzSW5saW5lSXRlbShJdGVtVHlwZSB0eXBlKQogICAgIGNhc2Ug
SXRlbVR5cGU6OlNldExpbmVEYXNoOgogICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgogICAg
IGNhc2UgSXRlbVR5cGU6OlN0cm9rZVBhdGg6CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1N5c3Rl
bUltYWdlOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlE
ZXZpY2VTY2FsZUZhY3RvcjoKICNpZiBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbVR5cGUuaAppbmRleCBhNGRmYTNkNzY5YWI5NTA5NzUzNWQzMTNmZjk2MWM0YWMwYTEwMGEy
Li5kNjgzYjJhY2Y3ODQ1Zjk5YzNjZDA5NWViOTExZTU0ZjFmOGNlMTExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgKQEAgLTU0LDYgKzU0LDcgQEAgZW51bSBjbGFzcyBJ
dGVtVHlwZSA6IHVpbnQ4X3QgewogICAgIERyYXdHbHlwaHMsCiAgICAgRHJhd0ltYWdlQnVmZmVy
LAogICAgIERyYXdOYXRpdmVJbWFnZSwKKyAgICBEcmF3U3lzdGVtSW1hZ2UsCiAgICAgRHJhd1Bh
dHRlcm4sCiAgICAgRHJhd1JlY3QsCiAgICAgRHJhd0xpbmUsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5jcHAKaW5kZXggM2YzNzgzNWRlNjkyNDIwMTRjZTljYjA2ZWY4N2E5ZDEwZWRi
NTM5Ny4uMjNkMGJiY2M3MWMyODFjNTJjMzVhOGMyNTJkYTk2YzBhYjEyYTk4YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtMzk4LDYgKzM5OCwxOCBAQCBzdGF0aWMg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd05hdGl2ZUlt
YWdlJiBpdGVtKQogICAgIHJldHVybiB0czsKIH0KIAordm9pZCBEcmF3U3lzdGVtSW1hZ2U6OmFw
cGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3sKKyAgICBjb250ZXh0LmRyYXdT
eXN0ZW1JbWFnZShtX3N5c3RlbUltYWdlLCBtX2Rlc3RpbmF0aW9uUmVjdCk7Cit9CisKK3N0YXRp
YyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3U3lzdGVt
SW1hZ2UmIGl0ZW0pCit7CisgICAgLy8gRklYTUU6IGR1bXAgbW9yZSBzdHVmZi4KKyAgICB0cy5k
dW1wUHJvcGVydHkoImRlc3RpbmF0aW9uIiwgaXRlbS5kZXN0aW5hdGlvblJlY3QoKSk7CisgICAg
cmV0dXJuIHRzOworfQorCiBEcmF3UGF0dGVybjo6RHJhd1BhdHRlcm4oUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIGltYWdlSWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJu
VHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFj
aW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKICAgICA6IG1faW1hZ2VJ
ZGVudGlmaWVyKGltYWdlSWRlbnRpZmllcikKICAgICAsIG1fZGVzdGluYXRpb24oZGVzdFJlY3Qp
CkBAIC0xMDIxLDYgKzEwMzMsNyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgSXRlbVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhz
OiB0cyA8PCAiZHJhdy1nbHlwaHMiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1h
Z2VCdWZmZXI6IHRzIDw8ICJkcmF3LWltYWdlLWJ1ZmZlciI7IGJyZWFrOwogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdOYXRpdmVJbWFnZTogdHMgPDwgImRyYXctbmF0aXZlLWltYWdlIjsgYnJlYWs7
CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1N5c3RlbUltYWdlOiB0cyA8PCAiZHJhdy1zeXN0ZW0t
aW1hZ2UiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjogdHMgPDwgImRy
YXctcGF0dGVybiI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OiB0cyA8PCAi
ZHJhdy1yZWN0IjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6IHRzIDw8ICJk
cmF3LWxpbmUiOyBicmVhazsKQEAgLTExNDEsNiArMTE1NCw5IEBAIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIEl0ZW1IYW5kbGUgaXRlbSkKICAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdOYXRpdmVJbWFn
ZT4oKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1N5c3RlbUltYWdl
OgorICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3U3lzdGVtSW1hZ2U+KCk7CisgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgICAgICB0cyA8PCBpdGVt
LmdldDxEcmF3UGF0dGVybj4oKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuaAppbmRleCBmNTFkMWY4Zjk0MWFhZjM0YTRlODlmNThkNWQ1MTk0Y2E5NjYzMzhl
Li45N2NiNWZjOGQwNGJhODY2MmI3MmM3ZGRlZWJjNDQxNTVjMjgyNWI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJQaXhlbEJ1
ZmZlci5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgIlN5c3RlbUltYWdlLmgiCiAjaW5jbHVkZSA8
dmFyaWFudD4KICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9UeXBl
Q2FzdHMuaD4KQEAgLTk5Myw2ICs5OTQsNjEgQEAgcHJpdmF0ZToKICAgICBJbWFnZVBhaW50aW5n
T3B0aW9ucyBtX29wdGlvbnM7CiB9OwogCitjbGFzcyBEcmF3U3lzdGVtSW1hZ2UgeworcHVibGlj
OgorICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5cGUgPSBJdGVtVHlwZTo6RHJh
d1N5c3RlbUltYWdlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSBm
YWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9IHRydWU7CisK
KyAgICBEcmF3U3lzdGVtSW1hZ2UoU3lzdGVtSW1hZ2UmIHN5c3RlbUltYWdlLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uUmVjdCkKKyAgICAgICAgOiBtX3N5c3RlbUltYWdlKHN5c3RlbUlt
YWdlKQorICAgICAgICAsIG1fZGVzdGluYXRpb25SZWN0KGRlc3RpbmF0aW9uUmVjdCkKKyAgICB7
CisgICAgfQorCisgICAgY29uc3QgUmVmPFN5c3RlbUltYWdlPiYgc3lzdGVtSW1hZ2UoKSBjb25z
dCB7IHJldHVybiBtX3N5c3RlbUltYWdlOyB9CisgICAgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvblJlY3QoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVjdDsgfQorCisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKKworICAgIHN0
ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6
Om51bGxvcHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29u
c3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0K
KworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxEcmF3
U3lzdGVtSW1hZ2U+IGRlY29kZShEZWNvZGVyJik7CisKK3ByaXZhdGU6CisgICAgUmVmPFN5c3Rl
bUltYWdlPiBtX3N5c3RlbUltYWdlOworICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uUmVjdDsK
K307CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIERyYXdTeXN0ZW1JbWFnZTo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3N5c3RlbUlt
YWdlOworICAgIGVuY29kZXIgPDwgbV9kZXN0aW5hdGlvblJlY3Q7Cit9CisKK3RlbXBsYXRlPGNs
YXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPERyYXdTeXN0ZW1JbWFnZT4gRHJhd1N5c3RlbUlt
YWdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyNkZWZpbmUgREVDT0RFKG5hbWUsIHR5
cGUpIFwKKyAgICBzdGQ6Om9wdGlvbmFsPHR5cGU+IG5hbWU7IFwKKyAgICBkZWNvZGVyID4+IG5h
bWU7IFwKKyAgICBpZiAoIW5hbWUpIFwKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgXAor
CisgICAgREVDT0RFKHN5c3RlbUltYWdlLCBSZWY8U3lzdGVtSW1hZ2U+KQorICAgIERFQ09ERShk
ZXN0aW5hdGlvblJlY3QsIEZsb2F0UmVjdCkKKworI3VuZGVmIERFQ09ERQorCisgICAgcmV0dXJu
IHsgeworICAgICAgICBXVEZNb3ZlKCpzeXN0ZW1JbWFnZSksCisgICAgICAgIFdURk1vdmUoKmRl
c3RpbmF0aW9uUmVjdCksCisgICAgfSB9OworfQorCiBjbGFzcyBEcmF3UGF0dGVybiB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpE
cmF3UGF0dGVybjsKQEAgLTIyMjAsNiArMjI3Niw3IEBAIHVzaW5nIERpc3BsYXlMaXN0SXRlbSA9
IHN0ZDo6dmFyaWFudAogICAgICwgRHJhd1BhdGgKICAgICAsIERyYXdQYXR0ZXJuCiAgICAgLCBE
cmF3UmVjdAorICAgICwgRHJhd1N5c3RlbUltYWdlCiAgICAgLCBFbmRUcmFuc3BhcmVuY3lMYXll
cgogICAgICwgRmlsbENvbXBvc2l0ZWRSZWN0CiAgICAgLCBGaWxsRWxsaXBzZQpAQCAtMjMwNiw2
ICsyMzYzLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbVR5cGU+IHsKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRy
YXdHbHlwaHMsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3SW1hZ2VC
dWZmZXIsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1h
Z2UsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3U3lzdGVtSW1hZ2Us
CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0dGVybiwKICAgICBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdSZWN0LAogICAgIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xpbmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5jcHAKaW5kZXggZjg5NzU3Yzc2NzdiYjk0MTcxMTE5MTlmMDhmODUyZGY0OTM0
OGQ1ZS4uZWVlNDQ3MWQzNTRlNzUxNTMxMjUxODlkZmNjOTQxOGEzOTQ1MTRhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMTk2LDYgKzE5NiwxMSBAQCB2
b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlLCBjb25zdCBG
bG9hdFNpemUmIGltYWdlU2l6ZSwgYwogICAgIHJlY29yZERyYXdOYXRpdmVJbWFnZShpbWFnZS5y
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVj
dCwgb3B0aW9ucyk7CiB9CiAKK3ZvaWQgUmVjb3JkZXI6OmRyYXdTeXN0ZW1JbWFnZShTeXN0ZW1J
bWFnZSYgc3lzdGVtSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0KQorewor
ICAgIHJlY29yZERyYXdTeXN0ZW1JbWFnZShzeXN0ZW1JbWFnZSwgZGVzdGluYXRpb25SZWN0KTsK
K30KKwogdm9pZCBSZWNvcmRlcjo6ZHJhd1BhdHRlcm4oTmF0aXZlSW1hZ2UmIGltYWdlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zKQogewogICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCBjYWZmODhjYmNmZWQ1NDE2ZGI4
MmZmMTZiOGRkOGQzMmJmYzFiNzRmLi44NDVlYzAwNzcyZWQyYzU0YTFlNmNiMjZiMjE1MWRhYmFh
NmVjMDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTg0LDYg
Kzg0LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCByZWNvcmREcmF3R2x5cGhzKGNv
bnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZh
bmNlKiwgdW5zaWduZWQgY291bnQsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250
U21vb3RoaW5nTW9kZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmREcmF3SW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCByZWNvcmREcmF3TmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IGltYWdlSWRlbnRpZmllciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZERyYXdTeXN0ZW1JbWFn
ZShTeXN0ZW1JbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
cmVjb3JkRHJhd1BhdHRlcm4oUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFj
aW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgcmVjb3JkQmVnaW5UcmFuc3BhcmVuY3lMYXllcihmbG9hdCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCByZWNvcmRFbmRUcmFuc3BhcmVuY3lMYXllcigpID0gMDsKQEAgLTIyMCw2ICsyMjEs
NyBAQCBwcml2YXRlOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2VCdWZmZXIo
SW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJl
Y3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBmaW5hbDsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0
U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgZmluYWw7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkcmF3U3lzdGVtSW1hZ2UoU3lzdGVtSW1hZ2UmLCBjb25zdCBGbG9h
dFJlY3QmKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdQYXR0ZXJuKE5hdGl2
ZUltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxl
UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNv
bnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBmaW5h
bDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlQnVmZmVyJiwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBmaW5hbDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAKaW5kZXggMjdkMzQwMjU1
ODU2NDQwZjJhMTgxOGQzMmY3ZmEyMmYyOTljNzk2ZC4uMWZkYzZiYTU2YmZkYjI2MzZlZmIzNDYy
YWRhMmE5OTBkMzM4OTk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlckltcGwuY3BwCkBAIC0xODIsNiArMTgyLDExIEBAIHZvaWQgUmVjb3JkZXJJbXBsOjpyZWNv
cmREcmF3TmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlSWRlbnRp
CiAgICAgYXBwZW5kPERyYXdOYXRpdmVJbWFnZT4oaW1hZ2VJZGVudGlmaWVyLCBpbWFnZVNpemUs
IGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKIH0KIAordm9pZCBSZWNvcmRlckltcGw6OnJl
Y29yZERyYXdTeXN0ZW1JbWFnZShTeXN0ZW1JbWFnZSYgc3lzdGVtSW1hZ2UsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdGluYXRpb25SZWN0KQoreworICAgIGFwcGVuZDxEcmF3U3lzdGVtSW1hZ2U+KHN5
c3RlbUltYWdlLCBkZXN0aW5hdGlvblJlY3QpOworfQorCiB2b2lkIFJlY29yZGVySW1wbDo6cmVj
b3JkRHJhd1BhdHRlcm4oUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlSWRlbnRpZmll
ciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zKQogewogICAgIGFwcGVuZDxEcmF3UGF0dGVybj4oaW1hZ2VJZGVudGlmaWVyLCBkZXN0
UmVjdCwgdGlsZVJlY3QsIHRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaAppbmRleCBmNzY0M2Q2NmM4
NmMzMWZkYWI0MjNlZWFkMzJjOTQ4OTEzNTcyNjBhLi42NDIyNjVmMDk4MDIyY2YyYjA1ZjE4MGMx
NzRmYTAzNDYyZjJkZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ckltcGwuaApAQCAtNzAsNiArNzAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVjb3JkRHJhd0ds
eXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVm
ZmVyQWR2YW5jZSosIHVuc2lnbmVkIGNvdW50LCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hv
ciwgRm9udFNtb290aGluZ01vZGUpIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkRHJhd0ltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIGZpbmFsOwogICAgIHZv
aWQgcmVjb3JkRHJhd05hdGl2ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFn
ZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJikgZmluYWw7CisgICAgdm9pZCByZWNvcmREcmF3U3lzdGVtSW1hZ2UoU3lzdGVtSW1h
Z2UmLCBjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKICAgICB2b2lkIHJlY29yZERyYXdQYXR0ZXJu
KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmID0geyB9KSBmaW5hbDsKICAgICB2b2lkIHJlY29yZEJlZ2luVHJhbnNw
YXJlbmN5TGF5ZXIoZmxvYXQpIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkRW5kVHJhbnNwYXJlbmN5
TGF5ZXIoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29j
b2EubW0KaW5kZXggZGNlMjY3NGM0ZjI4ODBmMzliNTY1MTc0MTMzY2UzZTg5MWVjN2M4Yi4uYmYy
ODliYTA5NzE2MmRmMjg2NTAzM2U1OGZlMmNkODFmM2M3MTRmYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBv
cnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUmVuZGVyVGhlbWVDb2NvYS5oIgogCisjaW1wb3J0ICJB
cHBsZVBheUxvZ29TeXN0ZW1JbWFnZS5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIK
ICNpbXBvcnQgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbXBvcnQgIkltYWdlQnVmZmVyLmgiCkBA
IC0xMDAsNjQgKzEwMSw4IEBAIHZvaWQgUmVuZGVyVGhlbWVDb2NvYTo6YWRqdXN0QXBwbGVQYXlC
dXR0b25TdHlsZShSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEVsZW1lCiAgICAgfQogfQogCi1z
dGF0aWMgUEtQYXltZW50QnV0dG9uU3R5bGUgdG9QS1BheW1lbnRCdXR0b25TdHlsZShBcHBsZVBh
eUJ1dHRvblN0eWxlIHN0eWxlKQotewotICAgIHN3aXRjaCAoc3R5bGUpIHsKLSAgICBjYXNlIEFw
cGxlUGF5QnV0dG9uU3R5bGU6OldoaXRlOgotICAgICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9u
U3R5bGVXaGl0ZTsKLSAgICBjYXNlIEFwcGxlUGF5QnV0dG9uU3R5bGU6OldoaXRlT3V0bGluZToK
LSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRvblN0eWxlV2hpdGVPdXRsaW5lOwotICAgIGNh
c2UgQXBwbGVQYXlCdXR0b25TdHlsZTo6QmxhY2s6Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRC
dXR0b25TdHlsZUJsYWNrOwotICAgIH0KLX0KLQotc3RhdGljIFBLUGF5bWVudEJ1dHRvblR5cGUg
dG9QS1BheW1lbnRCdXR0b25UeXBlKEFwcGxlUGF5QnV0dG9uVHlwZSB0eXBlKQotewotICAgIHN3
aXRjaCAodHlwZSkgewotICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpQbGFpbjoKLSAgICAg
ICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRvblR5cGVQbGFpbjsKLSAgICBjYXNlIEFwcGxlUGF5QnV0
dG9uVHlwZTo6QnV5OgotICAgICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZUJ1eTsKLSAg
ICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6U2V0VXA6Ci0gICAgICAgIHJldHVybiBQS1BheW1l
bnRCdXR0b25UeXBlU2V0VXA7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OkRvbmF0ZToK
LSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRvblR5cGVEb25hdGU7Ci0gICAgY2FzZSBBcHBs
ZVBheUJ1dHRvblR5cGU6OkNoZWNrT3V0OgotICAgICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9u
VHlwZUNoZWNrb3V0OwotICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpCb29rOgotICAgICAg
ICByZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZUJvb2s7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRv
blR5cGU6OlN1YnNjcmliZToKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRvblR5cGVTdWJz
Y3JpYmU7Ci0jaWYgSEFWRShQQVNTS0lUX05FV19CVVRUT05fVFlQRVMpCi0gICAgY2FzZSBBcHBs
ZVBheUJ1dHRvblR5cGU6OlJlbG9hZDoKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRvblR5
cGVSZWxvYWQ7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OkFkZE1vbmV5OgotICAgICAg
ICByZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZUFkZE1vbmV5OwotICAgIGNhc2UgQXBwbGVQYXlC
dXR0b25UeXBlOjpUb3BVcDoKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRvblR5cGVUb3BV
cDsKLSAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6T3JkZXI6Ci0gICAgICAgIHJldHVybiBQ
S1BheW1lbnRCdXR0b25UeXBlT3JkZXI7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OlJl
bnQ6Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRCdXR0b25UeXBlUmVudDsKLSAgICBjYXNlIEFw
cGxlUGF5QnV0dG9uVHlwZTo6U3VwcG9ydDoKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRv
blR5cGVTdXBwb3J0OwotICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpDb250cmlidXRlOgot
ICAgICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZUNvbnRyaWJ1dGU7Ci0gICAgY2FzZSBB
cHBsZVBheUJ1dHRvblR5cGU6OlRpcDoKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRvblR5
cGVUaXA7Ci0jZW5kaWYKLSAgICB9Ci19Ci0KIGJvb2wgUmVuZGVyVGhlbWVDb2NvYTo6cGFpbnRB
cHBsZVBheUJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcGFpbnRSZWN0KQogewotICAgIGF1dG8mIGRl
c3RpbmF0aW9uQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7Ci0KLSAgICBhdXRvIGltYWdl
QnVmZmVyID0gZGVzdGluYXRpb25Db250ZXh0LmNyZWF0ZUFsaWduZWRJbWFnZUJ1ZmZlcihwYWlu
dFJlY3Quc2l6ZSgpKTsKLSAgICBpZiAoIWltYWdlQnVmZmVyKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KICAgICBhdXRvJiBzdHlsZSA9IHJlbmRlcmVyLnN0eWxlKCk7CiAgICAgYXV0byBsYXJn
ZXN0Q29ybmVyUmFkaXVzID0gc3RkOjptYXg8Q0dGbG9hdD4oewogICAgICAgICBmbG9hdFZhbHVl
Rm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcExlZnRSYWRpdXMoKS5oZWlnaHQsIHBhaW50UmVjdC5o
ZWlnaHQoKSksCkBAIC0xNjksMTQgKzExNCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVDb2NvYTo6cGFp
bnRBcHBsZVBheUJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQCiAg
ICAgICAgIGZsb2F0VmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMo
KS5oZWlnaHQsIHBhaW50UmVjdC5oZWlnaHQoKSksCiAgICAgICAgIGZsb2F0VmFsdWVGb3JMZW5n
dGgoc3R5bGUuYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKS53aWR0aCwgcGFpbnRSZWN0LndpZHRo
KCkpCiAgICAgfSk7Ci0KLSAgICBhdXRvJiBpbWFnZUNvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29u
dGV4dCgpOwotICAgIGltYWdlQ29udGV4dC5zZXRTaG91bGRTbW9vdGhGb250cyh0cnVlKTsKLSAg
ICBpbWFnZUNvbnRleHQuc2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKGZhbHNlKTsKLSAg
ICBpbWFnZUNvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7Ci0gICAgUEtEcmF3QXBwbGVQ
YXlCdXR0b25XaXRoQ29ybmVyUmFkaXVzKGltYWdlQ29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwg
Q0dSZWN0TWFrZSgwLCAtcGFpbnRSZWN0LmhlaWdodCgpLCBwYWludFJlY3Qud2lkdGgoKSwgcGFp
bnRSZWN0LmhlaWdodCgpKSwgMS4wLCBsYXJnZXN0Q29ybmVyUmFkaXVzLCB0b1BLUGF5bWVudEJ1
dHRvblR5cGUoc3R5bGUuYXBwbGVQYXlCdXR0b25UeXBlKCkpLCB0b1BLUGF5bWVudEJ1dHRvblN0
eWxlKHN0eWxlLmFwcGxlUGF5QnV0dG9uU3R5bGUoKSksIHN0eWxlLmNvbXB1dGVkTG9jYWxlKCkp
OwotCi0gICAgZGVzdGluYXRpb25Db250ZXh0LmRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihXVEZN
b3ZlKGltYWdlQnVmZmVyKSwgcGFpbnRSZWN0KTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRy
YXdTeXN0ZW1JbWFnZShBcHBsZVBheUJ1dHRvblN5c3RlbUltYWdlOjpjcmVhdGUoc3R5bGUuYXBw
bGVQYXlCdXR0b25UeXBlKCksIHN0eWxlLmFwcGxlUGF5QnV0dG9uU3R5bGUoKSwgc3R5bGUuY29t
cHV0ZWRMb2NhbGUoKSwgbGFyZ2VzdENvcm5lclJhZGl1cyksIHBhaW50UmVjdCk7CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oCmluZGV4IDA5MDU4Zjc5Y2U3MTc1NTAzNGZkYTg0OGQ0MmFjNmE5OTJkNDRlNjguLjdj
NGJmYzg1ZmZmZjFiNjlkZmQ1YzZhNWZkOWZkM2Q0MTVmOTljYTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC0yNSw2ICsyNSw3IEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIkFuaW1hdGlvbkxpc3QuaCIKKyNpbmNsdWRlICJBcHBsZVBh
eUJ1dHRvblN5c3RlbUltYWdlLmgiCiAjaW5jbHVkZSAiQm9yZGVyVmFsdWUuaCIKICNpbmNsdWRl
ICJDU1NMaW5lQm94Q29udGFpblZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZUNvbnN0YW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGVDb25zdGFudHMuY3BwCmluZGV4IGZlNmE0YzA2YjI0OTk2ZTIyYWI5YWRlYmNlOTRkMGQ2OGQz
ZjllMTUuLjkyYmM2YTgxMmExMThhNTE5ZjBiNDZjOTRmOTcyZTMyYjNhNWVlNTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3Rh
bnRzLmNwcApAQCAtNTIsNDIgKzUyLDYgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgQW5pbWF0aW9uUGxheVN0YXRlIHBsYXlTdGF0ZSkKICAgICByZXR1cm4gdHM7CiB9
CiAKLSNpZiBFTkFCTEUoQVBQTEVfUEFZKQotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgQXBwbGVQYXlCdXR0b25TdHlsZSBidXR0b25TdHlsZSkKLXsKLSAgICBzd2l0Y2gg
KGJ1dHRvblN0eWxlKSB7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblN0eWxlOjpXaGl0ZTogdHMg
PDwgIndoaXRlIjsgYnJlYWs7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblN0eWxlOjpXaGl0ZU91
dGxpbmU6IHRzIDw8ICJ3aGl0ZS1vdXRsaW5lIjsgYnJlYWs7Ci0gICAgY2FzZSBBcHBsZVBheUJ1
dHRvblN0eWxlOjpCbGFjazogdHMgPDwgImJsYWNrIjsgYnJlYWs7Ci0gICAgfQotICAgIHJldHVy
biB0czsKLX0KLQotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgQXBwbGVQ
YXlCdXR0b25UeXBlIHBsYXlTdGF0ZSkKLXsKLSAgICBzd2l0Y2ggKHBsYXlTdGF0ZSkgewotICAg
IGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpQbGFpbjogdHMgPDwgInBsYWluIjsgYnJlYWs7Ci0g
ICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OkJ1eTogdHMgPDwgImJ1eSI7IGJyZWFrOwotICAg
IGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpTZXRVcDogdHMgPDwgInNldHVwIjsgYnJlYWs7Ci0g
ICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OkRvbmF0ZTogdHMgPDwgImRvbmF0ZSI7IGJyZWFr
OwotICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpDaGVja091dDogdHMgPDwgImNoZWNrb3V0
IjsgYnJlYWs7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OkJvb2s6IHRzIDw8ICJib29r
IjsgYnJlYWs7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OlN1YnNjcmliZTogdHMgPDwg
InN1YnNjcmliZSI7IGJyZWFrOwotI2lmIEVOQUJMRShBUFBMRV9QQVlfTkVXX0JVVFRPTl9UWVBF
UykKLSAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6UmVsb2FkOiB0cyA8PCAicmVsb2FkIjsg
YnJlYWs7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OkFkZE1vbmV5OiB0cyA8PCAiYWRk
LW1vbmV5IjsgYnJlYWs7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OlRvcFVwOiB0cyA8
PCAidG9wLXVwIjsgYnJlYWs7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6Ok9yZGVyOiB0
cyA8PCAib3JkZXIiOyBicmVhazsKLSAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6UmVudDog
dHMgPDwgInJlbnQiOyBicmVhazsKLSAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6U3VwcG9y
dDogdHMgPDwgInN1cHBvcnQiOyBicmVhazsKLSAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6
Q29udHJpYnV0ZTogdHMgPDwgImNvbnRyaWJ1dGUiOyBicmVhazsKLSAgICBjYXNlIEFwcGxlUGF5
QnV0dG9uVHlwZTo6VGlwOiB0cyA8PCAidGlwIjsgYnJlYWs7Ci0jZW5kaWYKLSAgICB9Ci0gICAg
cmV0dXJuIHRzOwotfQotI2VuZGlmCi0KIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIEFzcGVjdFJhdGlvVHlwZSBhc3BlY3RSYXRpb1R5cGUpCiB7CiAgICAgc3dpdGNoIChh
c3BlY3RSYXRpb1R5cGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKaW5kZXggMGE5NGI2ZGYzZDQ3NDhiNDJhYTM3Y2Nj
ZWRjMzdiYzkzNzUyNmFmYi4uMWFiZjY5YTRmMGEwNzM4NDc5MTQwNzE0ZGRlOWYyOGZjNGRiMzg3
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
Q29uc3RhbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlQ29uc3RhbnRzLmgKQEAgLTExNjEsMzQgKzExNjEsNiBAQCBlbnVtIGNsYXNzIFRyYWlsaW5n
V29yZCA6IHVpbnQ4X3QgewogfTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKEFQUExFX1BBWSkKLWVu
dW0gY2xhc3MgQXBwbGVQYXlCdXR0b25TdHlsZSA6IHVpbnQ4X3QgewotICAgIFdoaXRlLAotICAg
IFdoaXRlT3V0bGluZSwKLSAgICBCbGFjaywKLX07Ci0KLWVudW0gY2xhc3MgQXBwbGVQYXlCdXR0
b25UeXBlIDogdWludDhfdCB7Ci0gICAgUGxhaW4sCi0gICAgQnV5LAotICAgIFNldFVwLAotICAg
IERvbmF0ZSwKLSAgICBDaGVja091dCwKLSAgICBCb29rLAotICAgIFN1YnNjcmliZSwKLSNpZiBF
TkFCTEUoQVBQTEVfUEFZX05FV19CVVRUT05fVFlQRVMpCi0gICAgUmVsb2FkLAotICAgIEFkZE1v
bmV5LAotICAgIFRvcFVwLAotICAgIE9yZGVyLAotICAgIFJlbnQsCi0gICAgU3VwcG9ydCwKLSAg
ICBDb250cmlidXRlLAotICAgIFRpcCwKLSNlbmRpZgotfTsKLSNlbmRpZgotCiAvLyBUaGVzZSBh
cmUgYWxsIG1pbmltaXplZCBjb21iaW5hdGlvbnMgb2YgcGFpbnQtb3JkZXIuCiBlbnVtIGNsYXNz
IFBhaW50T3JkZXIgOiB1aW50OF90IHsKICAgICBOb3JtYWwsCkBAIC0xMjQ0LDEwICsxMjE2LDYg
QEAgZXh0ZXJuIGNvbnN0IGZsb2F0IGRlZmF1bHRNaXRlckxpbWl0OwogCiBXVEY6OlRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgQW5pbWF0aW9uRmlsbE1vZGUpOwogV1RG
OjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIEFuaW1hdGlvblBsYXlT
dGF0ZSk7Ci0jaWYgRU5BQkxFKEFQUExFX1BBWSkKLVdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChXVEY6OlRleHRTdHJlYW0mLCBBcHBsZVBheUJ1dHRvblN0eWxlKTsKLVdURjo6VGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBBcHBsZVBheUJ1dHRvblR5cGUpOwotI2Vu
ZGlmCiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgQXNwZWN0
UmF0aW9UeXBlKTsKIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0m
LCBBdXRvUmVwZWF0VHlwZSk7CiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0
U3RyZWFtJiwgQmFja2ZhY2VWaXNpYmlsaXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNw
cAppbmRleCA3ODQ2NDYzZDk5MGJhZGMzMGFmOTg1YmUwNTdlZjA2MmIwYzBmOGZiLi41NDM4MTgy
ZGRlODc2M2ViYWQzOGYxOTJkZjc5NWFhMDYwYjY1MWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwCkBAIC0yODMsNiArMjgzLDExIEBAIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlcjo6ZHJhd05hdGl2ZUltYWdlV2l0aFF1YWxpZmllZElkZW50aWZpZXIoUXVhbGlmaWVkCiAg
ICAgaGFuZGxlSXRlbShEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlKGltYWdlSWRlbnRpZmll
ci5vYmplY3QoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyksICppbWFn
ZSk7CiB9CiAKK3ZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6ZHJhd1N5c3RlbUltYWdl
KFN5c3RlbUltYWdlJiBzeXN0ZW1JbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvblJl
Y3QpCit7CisgICAgaGFuZGxlSXRlbShEaXNwbGF5TGlzdDo6RHJhd1N5c3RlbUltYWdlKHN5c3Rl
bUltYWdlLCBkZXN0aW5hdGlvblJlY3QpKTsKK30KKwogdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJl
Y29yZGVyOjpkcmF3UGF0dGVybihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VJZGVu
dGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCiB7CiAgICAgLy8gSW1tZWRpYXRlbHkgdHVybiB0aGUgUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyICh3aGljaCBpcyBlcnJvci1wcm9uZSkgdG8gYSBRdWFsaWZpZWRSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCAy
OWEyMjBiYmExZDdhYzE5OGE2ODIzZmViZGZkNWUyN2M3Yzg2NGU2Li4zYmJhZjc2NWQwNWY0NGFi
ZjRkOTYxZTc2NmNlNjU0Njk4ZWRlMjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAg
LTgyLDYgKzgyLDcgQEAgcHVibGljOgogICAgIHZvaWQgZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIo
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHNvdXJj
ZUltYWdlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJl
Y3QsIElQQzo6RmlsdGVyUmVmZXJlbmNlKTsKICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RpbmF0aW9uUmVjdCwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYp
OwogICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciBpbWFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJik7
CisgICAgdm9pZCBkcmF3U3lzdGVtSW1hZ2UoV2ViQ29yZTo6U3lzdGVtSW1hZ2UmLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmKTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdGlsZVJlY3QsIGNv
bnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQm
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IFdlYkNvcmU6OkltYWdl
UGFpbnRpbmdPcHRpb25zJik7CiAgICAgdm9pZCBiZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0
IG9wYWNpdHkpOwogICAgIHZvaWQgZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29y
ZGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZURpc3BsYXlMaXN0UmVjb3JkZXIubWVzc2FnZXMuaW4KaW5kZXggOTVkYmU4ZGQ1NWMyYWZmMmRm
MDA1ODAzODYzYjA3OGU5YjU5ZDU5YS4uMjgwMmZmZThmODM5N2MwZWQ0ZGYxMjFhMDE3ZmU3ODEw
OGZmNmMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIubWVzc2FnZXMuaW4K
QEAgLTQ4LDYgKzQ4LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlciBO
b3RSZWZDb3VudGVkIFN0cmVhbSB7CiAgICAgRHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHNvdXJjZUltYWdl
SWRlbnRpZmllciwgV2ViQ29yZTo6RmxvYXRSZWN0IHNvdXJjZUltYWdlUmVjdCwgSVBDOjpGaWx0
ZXJSZWZlcmVuY2UgZmlsdGVyKQogICAgIERyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpGbG9h
dFJlY3QgZGVzdGluYXRpb25SZWN0LCBXZWJDb3JlOjpGbG9hdFJlY3Qgc3JjUmVjdCwgc3RydWN0
IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zIG9wdGlvbnMpCiAgICAgRHJhd05hdGl2ZUlt
YWdlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUlkZW50aWZpZXIs
IFdlYkNvcmU6OkZsb2F0U2l6ZSBpbWFnZVNpemUsIFdlYkNvcmU6OkZsb2F0UmVjdCBkZXN0UmVj
dCwgV2ViQ29yZTo6RmxvYXRSZWN0IHNyY1JlY3QsIHN0cnVjdCBXZWJDb3JlOjpJbWFnZVBhaW50
aW5nT3B0aW9ucyBvcHRpb25zKQorICAgIERyYXdTeXN0ZW1JbWFnZShSZWY8V2ViQ29yZTo6U3lz
dGVtSW1hZ2U+IHN5c3RlbUltYWdlLCBXZWJDb3JlOjpGbG9hdFJlY3QgZGVzdGluYXRpb25SZWN0
KQogICAgIERyYXdQYXR0ZXJuKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBp
bWFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZsb2F0UmVjdCBkZXN0UmVjdCwgV2ViQ29yZTo6Rmxv
YXRSZWN0IHRpbGVSZWN0LCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtLCBXZWJD
b3JlOjpGbG9hdFBvaW50IHBoYXNlLCBXZWJDb3JlOjpGbG9hdFNpemUgc3BhY2luZywgc3RydWN0
IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zIG9wdGlvbnMpCiAgICAgQmVnaW5UcmFuc3Bh
cmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KQogICAgIEVuZFRyYW5zcGFyZW5jeUxheWVyKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDY3MGQ0MTUxZDhiMjQ2
YWNiYmU2NTExOWM0OTdmNmQzMTM0MGZhZDcuLjhjOWZmMjM5YTE2NTI4Y2JhZGJlNTFmYjA4M2E0
YzE2MGI0YjQ4YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpA
QCAtNjM3LDYgKzYzNyw3IEBAIGRlZiBjbGFzc190ZW1wbGF0ZV9oZWFkZXJzKHRlbXBsYXRlX3N0
cmluZyk6CiAgICAgICAgICdzdGQ6Om9wdGlvbmFsJzogeydoZWFkZXJzJzogWyc8b3B0aW9uYWw+
J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAg
ICAgICAgICdzdGQ6OnBhaXInOiB7J2hlYWRlcnMnOiBbJzx1dGlsaXR5PiddLCAnYXJndW1lbnRf
Y29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnSVBDOjpB
cnJheVJlZmVyZW5jZSc6IHsnaGVhZGVycyc6IFsnIkFycmF5UmVmZXJlbmNlLmgiJ10sICdhcmd1
bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCisgICAgICAgICdS
ZWYnOiB7J2hlYWRlcnMnOiBbJzx3dGYvUmVmLmg+J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJz
JzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgICAgICdSZWZQdHInOiB7J2hlYWRlcnMn
OiBbJzx3dGYvUmVmQ291bnRlZC5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFy
Z3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnUmV0YWluUHRyJzogeydoZWFkZXJzJzogWyc8
d3RmL1JldGFpblB0ci5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50
Q29kZXJzQ0YuaCInXX0sCiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHAKaW5kZXggMjdhMDMzZjcwY2RlNDFmMmFmZGExMmIwYTE4NWQ3MTE0
YjQwZDEwNi4uZTYwZWJlMmFmZmEyZmNlMWExY2NlMzc0ZjdiZjg4OGY0MGViZGI3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0zMSw2
ICszMSw5IEBACiAjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9BcHBsZVBheUJ1dHRvblN5c3RlbUltYWdlLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9BcHBsZVBheUxvZ29TeXN0ZW1JbWFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CbG9iUGFydC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvQ2FjaGVRdWVyeU9wdGlvbnMuaD4KQEAgLTg0LDYgKzg3LDcgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL1NlcnZpY2VXb3JrZXJEYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZURhdGEuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3lz
dGVtSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRDaGVja2VyQ2xpZW50Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1pbmdG
dW5jdGlvbi5oPgpAQCAtMzE3NSw2ICszMTc5LDUyIEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2NyaXB0QnVmZmVyPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29k
CiAgICAgcmV0dXJuIFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciB7IFdURk1vdmUoYnVmZmVyKSB9Owog
fQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgordm9pZCBBcmd1bWVudENvZGVyPFJlZjxT
eXN0ZW1JbWFnZT4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFN5c3RlbUlt
YWdlPiYgc3lzdGVtSW1hZ2UpCit7CisgICAgZW5jb2RlciA8PCBzeXN0ZW1JbWFnZS0+c3lzdGVt
SW1hZ2VUeXBlKCk7CisKKyAgICBzd2l0Y2ggKHN5c3RlbUltYWdlLT5zeXN0ZW1JbWFnZVR5cGUo
KSkgeworI2lmIEVOQUJMRShBUFBMRV9QQVkpCisgICAgY2FzZSBTeXN0ZW1JbWFnZVR5cGU6OkFw
cGxlUGF5QnV0dG9uOgorICAgICAgICBkb3duY2FzdDxBcHBsZVBheUJ1dHRvblN5c3RlbUltYWdl
PihzeXN0ZW1JbWFnZS5nZXQoKSkuZW5jb2RlKGVuY29kZXIpOworICAgICAgICByZXR1cm47CisK
KyAgICBjYXNlIFN5c3RlbUltYWdlVHlwZTo6QXBwbGVQYXlMb2dvOgorICAgICAgICBkb3duY2Fz
dDxBcHBsZVBheUxvZ29TeXN0ZW1JbWFnZT4oc3lzdGVtSW1hZ2UuZ2V0KCkpLmVuY29kZShlbmNv
ZGVyKTsKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisgICAgfQorCisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Cit9CisKK3RlbXBsYXRlCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFN5c3RlbUlt
YWdlPj46OmVuY29kZTxFbmNvZGVyPihFbmNvZGVyJiwgY29uc3QgUmVmPFN5c3RlbUltYWdlPiYp
OwordGVtcGxhdGUKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8U3lzdGVtSW1hZ2U+Pjo6ZW5jb2Rl
PFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyPihTdHJlYW1Db25uZWN0aW9uRW5jb2RlciYsIGNvbnN0
IFJlZjxTeXN0ZW1JbWFnZT4mKTsKKworc3RkOjpvcHRpb25hbDxSZWY8U3lzdGVtSW1hZ2U+PiBB
cmd1bWVudENvZGVyPFJlZjxTeXN0ZW1JbWFnZT4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
K3sKKyAgICBzdGQ6Om9wdGlvbmFsPFN5c3RlbUltYWdlVHlwZT4gc3lzdGVtSW1hZ2VUeXBlOwor
ICAgIGRlY29kZXIgPj4gc3lzdGVtSW1hZ2VUeXBlOworICAgIGlmICghc3lzdGVtSW1hZ2VUeXBl
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3dpdGNoICgqc3lzdGVtSW1h
Z2VUeXBlKSB7CisjaWYgRU5BQkxFKEFQUExFX1BBWSkKKyAgICBjYXNlIFN5c3RlbUltYWdlVHlw
ZTo6QXBwbGVQYXlCdXR0b246CisgICAgICAgIHJldHVybiBBcHBsZVBheUJ1dHRvblN5c3RlbUlt
YWdlOjpkZWNvZGUoZGVjb2Rlcik7CisKKyAgICBjYXNlIFN5c3RlbUltYWdlVHlwZTo6QXBwbGVQ
YXlMb2dvOgorICAgICAgICByZXR1cm4gQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2U6OmRlY29kZShk
ZWNvZGVyKTsKKyNlbmRpZgorICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQog
dm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT46
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Np
b246Ok1lc3NhZ2UmIG1lc3NhZ2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oCmluZGV4IDc0ZTMzMDBjMGM2ZTQ4ZDJjNzIyMDlkZDllNGE0MmQ4YTM5
NDU4ZDguLjEwZjQ4MTRiYTdhODk5NDJiZDU2MTgwN2M2ZTQ0ODhjZjVjNjYxZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0xNDQsNiArMTQ0
LDcgQEAgY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNwcmluZ1RpbWluZ0Z1
bmN0aW9uOwogY2xhc3MgU3RlcHNUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIFN0aWNreVBvc2l0aW9u
Vmlld3BvcnRDb25zdHJhaW50czsKK2NsYXNzIFN5c3RlbUltYWdlOwogY2xhc3MgVGV4dENoZWNr
aW5nUmVxdWVzdERhdGE7CiBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIGNsYXNzIFVzZXJT
dHlsZVNoZWV0OwpAQCAtNzcyLDYgKzc3MywxMiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gewogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKK3RlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlN5c3RlbUltYWdlPj4geworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29k
ZXImLCBjb25zdCBSZWY8V2ViQ29yZTo6U3lzdGVtSW1hZ2U+Jik7CisgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8UmVmPFdlYkNvcmU6OlN5c3RlbUltYWdlPj4gZGVjb2RlKERlY29kZXImKTsKK307
CisKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6RGF0YURldGVjdG9yRWxlbWVudEluZm8+IHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RS
ZWNvcmRlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcAppbmRleCAxZTY4M2M1ZWIwM2UxNjIw
ZDYzZGUwNTFhNWI2MzM4MzEzMDQ0YzkyLi44NTc3Y2JiZGU2ZDM5MDFkMzQ3MDc2MWVkMzBmNzlk
OThlODJiOThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHku
Y3BwCkBAIC0xOTUsNiArMTk1LDExIEBAIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclBy
b3h5OjpyZWNvcmREcmF3TmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVuCiAgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6RHJhd05hdGl2ZUltYWdlKGlt
YWdlSWRlbnRpZmllciwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykpOwog
fQogCit2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkRHJhd1N5c3Rl
bUltYWdlKFN5c3RlbUltYWdlJiBzeXN0ZW1JbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvblJlY3QpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRl
cjo6RHJhd1N5c3RlbUltYWdlKHN5c3RlbUltYWdlLCBkZXN0aW5hdGlvblJlY3QpKTsKK30KKwog
dm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZERyYXdQYXR0ZXJuKFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpEcmF3UGF0dGVybihpbWFn
ZUlkZW50aWZpZXIsIGRlc3RSZWN0LCB0aWxlUmVjdCwgdHJhbnNmb3JtLCBwaGFzZSwgc3BhY2lu
Zywgb3B0aW9ucykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmgK
aW5kZXggN2U2YTBhMTA3N2ExNTIwNTJjMzNjM2M4YjI3NzZiOWEyY2VmODUyYS4uOWIzM2EwNjdm
ZDE2YmNjZjE0MDQyYzE5NzRkZDY5MTk0MjI2MjQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXJQcm94eS5oCkBAIC04OSw2ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCByZWNvcmREcmF3R2x5cGhzKGNvbnN0IFdlYkNvcmU6OkZvbnQmLCBjb25zdCBXZWJDb3JlOjpH
bHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgV2ViQ29yZTo6R2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5z
aWduZWQgY291bnQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBXZWJD
b3JlOjpGb250U21vb3RoaW5nTW9kZSkgZmluYWw7CiAgICAgdm9pZCByZWNvcmREcmF3SW1hZ2VC
dWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6
OkltYWdlUGFpbnRpbmdPcHRpb25zJikgZmluYWw7CiAgICAgdm9pZCByZWNvcmREcmF3TmF0aXZl
SW1hZ2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBmaW5hbDsKKyAgICB2b2lkIHJlY29y
ZERyYXdTeXN0ZW1JbWFnZShXZWJDb3JlOjpTeXN0ZW1JbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYpOwogICAgIHZvaWQgcmVjb3JkRHJhd1BhdHRlcm4oV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVU
cmFuc2Zvcm0mLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkQmVnaW5UcmFuc3BhcmVuY3lMYXllcihm
bG9hdCkgZmluYWw7CiAgICAgdm9pZCByZWNvcmRFbmRUcmFuc3BhcmVuY3lMYXllcigpIGZpbmFs
Owo=
</data>
<flag name="commit-queue"
          id="481227"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453769</attachid>
            <date>2022-03-03 11:40:10 -0800</date>
            <delta_ts>2022-03-03 20:09:53 -0800</delta_ts>
            <desc>[fast-cq] Patch</desc>
            <filename>bug-237177-20220303124009.patch</filename>
            <type>text/plain</type>
            <size>85661</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlOWIxMmQzNGMyZDUyOTg2NGE2YmY3Y2RiYzIzMzgzY2Y2N2UwNWZjLi5l
YjExOWZlYTE3MGI4MWYxMTY3ZGViZWU5OTZiMzAyODczOTYzOTUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTE2IEBACisyMDIyLTAzLTAzICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNv
bT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIGRvbnQgbG9hZCBBcHBsZSBQYXkgYnV0dG9uL2xv
Z28gUERGcyBpbiB0aGUgV2ViUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJh
c2VyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU3lzdGVtSW1hZ2UuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1JbWFnZTo6ZHJhdyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTeXN0ZW1JbWFnZTo6U3lzdGVtSW1hZ2UpOgorICAgICAgICBJbnRyb2R1Y2UgYSBu
ZXcgZXh0ZW5kYWJsZSBjbGFzcyBgU3lzdGVtSW1hZ2VgIHRoYXQgcmVwcmVzZW50cyBhIGNvbGxl
Y3Rpb24gb2YgYXJndW1lbnRzCisgICAgICAgIGFuZCBtZXRob2RvbG9neSAodGhhdCB1c2VzIHRo
b3NlIGFyZ3VtZW50cykgdG8gZHJhdyBzb21ldGhpbmcgZnJvbSB0aGUgc3lzdGVtLgorICAgICAg
ICBUaGlzIHBhdGNoIGludHJvZHVjZXMgdHdvIGNvbmNyZXRlIHVzZXM6CisgICAgICAgIC0gYEFw
cGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2VgIHVzZXMgUGFzc0tpdCBTUEkgdG8gZHJhdyBhbiBBcHBs
ZSBQYXkgYnV0dG9uLgorICAgICAgICAtIGBBcHBsZVBheUxvZ29TeXN0ZW1JbWFnZWAgbG9hZHMg
YSBQREYgZmlsZSBvZiB0aGUgQXBwbGUgUGF5IGxvZ28gZnJvbSBpbnNpZGUgUGFzc0tpdC4KKyAg
ICAgICAgVGhpcyBhcmNoaXRlY3R1cmUgd2FzIGNob3NlbiBzbyB0aGF0IGBHcmFwaGljc0NvbnRl
eHRgIGRvZXNuJ3QgaGF2ZSB0byBrbm93IGFib3V0IEFwcGxlIFBheQorICAgICAgICBzcGVjaWZp
YyB0aGluZ3MsIGluc3RlYWQgb25seSBkZWFsaW5nIHdpdGggYSB2ZXJ5IGdlbmVyaWMgaW50ZXJm
YWNlICh3aG9zIHN1YmNsYXNzZXMga25vdworICAgICAgICBtb3JlIHNwZWNpZmljYWxseSB3aGF0
IHRvIGRvIHdpdGggdGhlIGRhdGEgdGhleSdyZSBnaXZlbikuCisKKyAgICAgICAgKiBNb2R1bGVz
L2FwcGxlcGF5L0FwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2UuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBcHBsZVBheUJ1dHRvblN5c3RlbUltYWdlOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZTo6QXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheUJ1dHRvblN5c3RlbUltYWdlOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZTo6ZGVj
b2RlKToKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheUJ1dHRvblN5c3RlbUltYWdlLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRvUEtQ
YXltZW50QnV0dG9uVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjp0b1BLUGF5bWVudEJ1dHRvblN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2U6OmRyYXcg
Y29uc3QpOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaDoKKyAgICAgICAgRHJpdmUtYnk6IE1vdmUgYEFwcGxl
UGF5QnV0dG9uU3R5bGVgIGFuZCBgQXBwbGVQYXlCdXR0b25UeXBlYCB0byBgQXBwbGVQYXlCdXR0
b25TeXN0ZW1JbWFnZS5oYAorICAgICAgICBzbyB0aGV5IGNhbiBiZSB1c2VkIGVsc2V3aGVyZSAo
ZS5nLiBHUFVQcm9jZXNzKSB3aXRob3V0IGhhdmluZyB0byBpbmNsdWRlIGV2ZXJ5dGhpbmcgZWxz
ZS4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2Uu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheUxvZ29TeXN0ZW1JbWFnZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5TG9nb1N5c3RlbUltYWdlOjpBcHBsZVBh
eUxvZ29TeXN0ZW1JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheUxvZ29TeXN0ZW1J
bWFnZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5TG9nb1N5c3Rl
bUltYWdlOjpkZWNvZGUpOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBNb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5TG9nb1N5c3RlbUltYWdlLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OnBhc3NLaXRCdW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6bG9hZFBhc3NLaXRQREZQYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGxlUGF5TG9nb1doaXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OmFwcGxlUGF5TG9nb0JsYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGxlUGF5TG9nb0Zv
clN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5TG9nb1N5c3RlbUltYWdlOjpkcmF3
IGNvbnN0KToKKyAgICAgICAgQWRkIGEgbmV3IGBBcHBsZVBheUxvZ29TdHlsZWAgc28gdGhhdCB0
aGUgV2ViUHJvY2VzcyBpc24ndCBhYmxlIHRvIHByb3ZpZGUgYW4gYXJiaXRyYXJ5IFBERgorICAg
ICAgICB0byBsb2FkIHdoZW4gcmVuZGVyaW5nIGAtd2Via2l0LW5hbWVkLWltYWdlKGFwcGxlLXBh
eS1sb2dvLVt3aGl0ZSxibGFja10pYC4KKworICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1RoZW1l
Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpUaGVtZUNvY29hOjpkcmF3TmFtZWRJbWFnZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpmaXRDb250ZXh0VG9Cb3gpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6cGFzc0tpdEJ1bmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
Ojpsb2FkUGFzc0tpdFBERlBhZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YXBwbGVQ
YXlCdXR0b25Mb2dvQmxhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YXBwbGVQYXlC
dXR0b25Mb2dvV2hpdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0FwcGxlUGF5
QnV0dG9uKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDb2NvYS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ29jb2E6OnBhaW50QXBwbGVQYXlCdXR0
b24pOgorICAgICAgICAoV2ViQ29yZTo6dG9QS1BheW1lbnRCdXR0b25TdHlsZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjp0b1BLUGF5bWVudEJ1dHRvblR5cGUpOiBEZWxldGVkLgorICAg
ICAgICBNb3ZlIHRoZSBsb2dpYyB0aGF0IGRyYXdzIHRoZSBBcHBsZSBQYXkgYnV0dG9uIHRvIGEg
bWV0aG9kIG9uIGBHcmFwaGljc0NvbnRleHRgIHNvIHRoYXQgaXQKKyAgICAgICAgY2FuIGhvb2sg
aW50byB0aGUgdmFyaW91cyBHUFVQcm9jZXNzIGZsYWdzL3N5c3RlbXMuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpkcmF3U3lzdGVtSW1hZ2UpOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpC
aWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0OjpkcmF3U3lzdGVtSW1hZ2UpOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpOdWxsR3JhcGhpY3NDb250ZXh0OjpkcmF3U3lzdGVtSW1hZ2UpOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjphcHBlbmQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZm
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OmFwcGx5
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpkZXN0cm95KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpzYWZlQ29weSBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbVR5cGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6c2l6
ZU9mSXRlbUluQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmlzRHJhd2lu
Z0l0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmlzSW5saW5lSXRlbSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3U3lzdGVtSW1hZ2U6OkRyYXdT
eXN0ZW1JbWFnZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdT
eXN0ZW1JbWFnZTo6c3lzdGVtSW1hZ2UgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3U3lzdGVtSW1hZ2U6OmRlc3RpbmF0aW9uIGNvbnN0KTogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1N5c3RlbUltYWdlOjpnbG9iYWxC
b3VuZHMgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3
U3lzdGVtSW1hZ2U6OmxvY2FsQm91bmRzIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RHJhd1N5c3RlbUltYWdlOjplbmNvZGUgY29uc3QpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3U3lzdGVtSW1hZ2U6OmRlY29kZSk6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3U3lzdGVtSW1h
Z2U6OmFwcGx5IGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OmRyYXdTeXN0ZW1JbWFnZSk6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpy
ZWNvcmREcmF3U3lzdGVtSW1hZ2UpOiBBZGRlZC4KKyAgICAgICAgQWRkIG5ldyBgRHJhd1N5c3Rl
bUltYWdlYCBkaXNwbGF5IGxpc3QgaXRlbSB0byBoYW5kbGUgR1BVUHJvY2VzcyBkcmF3aW5nIG9m
IGBTeXN0ZW1JbWFnZWAuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNv
dXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogTW9kdWxlcy9tb2RlbC1l
bGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW06CisgICAgICAgIERyaXZl
LWJ5OiBVbmlmaWVkIHNvdXJjZXMgYnVpbGQgZml4LgorCiAyMDIyLTAzLTAyICBPcmlvbCBCcnVm
YXUgIDxvYnJ1ZmF1QGlnYWxpYS5jb20+CiAKICAgICAgICAgW2Nzc10gSW1wbGVtZW50ICd0ZXh0
LWRlY29yYXRpb24nIGFzIGEgc2hvcnRoYW5kLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkZGM1MjJiZmM4NTA3MmE4
YzlmMzM1YzM0NWQyOTM4YmViMTQ5Y2E4Li4yNjc5YzUxNDdkODEwNGRkMjc3NzliZGM4NzMzMjRi
ZjQ1NDM3MWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIyLTAzLTAzICBEZXZpbiBS
b3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIGRvbnQg
bG9hZCBBcHBsZSBQYXkgYnV0dG9uL2xvZ28gUERGcyBpbiB0aGUgV2ViUHJvY2VzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MTc3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIFNlZSBgU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nYCBmb3IgYW4gZXhwbGFuYXRpb24gb2YgYFN5c3RlbUltYWdlYC4KKworICAg
ICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxS
ZWY8U3lzdGVtSW1hZ2U+Pjo6ZW5jb2RlKTogQWRkZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8UmVmPFN5c3RlbUltYWdlPj46OmRlY29kZSk6IEFkZGVkLgorICAgICAgICBTdXBwb3J0
IHNlbmRpbmcgYFN5c3RlbUltYWdlYCAodGVjaG5pY2FsbHkgYFJlZjxTeXN0ZW1JbWFnZT5gKSBh
Y3Jvc3MgcHJvY2Vzc2VzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmRyYXdTeXN0ZW1JbWFnZSk6IEFkZGVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQ
cm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlM
aXN0UmVjb3JkZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXJQcm94eTo6cmVjb3JkRHJhd1N5c3RlbUltYWdlKTogQWRkZGVkLgorICAgICAgICBB
ZGQgbmV3IGBEcmF3U3lzdGVtSW1hZ2VgIGRpc3BsYXkgbGlzdCBpdGVtLgorCisgICAgICAgICog
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgIChjbGFzc190ZW1wbGF0ZV9oZWFk
ZXJzKToKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGBSZWY8VD5gIGluIElQQyBtZXNzYWdlcy4K
KwogMjAyMi0wMy0wMiAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbQXBwU1NPXSBDb3JyZWN0IGxvZ2dpbmcgbWVzc2FnZXMgdG8gYXZvaWQgY29uZnVzaW5n
IHNjcmVlbmVycyB0aGF0IGFuIGVycm9yIGhhcyBvY2N1cnJlZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5k
ZXggM2NiNGE0OWQ5ODUxNmM5Y2JkNTFkZWRjZmFjMzZhZjJkZmQ1ZDE1MS4uOTA2ODk4ODVhZDg0
NTQxNDUwZWY3ZjUyYTNjOTAwY2M4NWY3MWE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMzEs
NiArMTMxLDggQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogCiAgICAg
TW9kdWxlcy9haXJwbGF5L1BsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIuaAog
CisgICAgTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUJ1dHRvblN5c3RlbUltYWdlLmgKKyAgICBN
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TG9nb1N5c3RlbUltYWdlLmgKICAgICBNb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmgKICAgICBNb2R1bGVzL2FwcGxl
cGF5L1BheW1lbnQuaAogICAgIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvbnRhY3QuaApAQCAt
MTU3Miw2ICsxNTc0LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9TdHJp
bmdUcnVuY2F0b3IuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1N5c3RlbUltYWdlLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9UYWJTaXplLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVu
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5QnV0dG9uU3lz
dGVtSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlCdXR0
b25TeXN0ZW1JbWFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5Y2VjYjJlMjI4NmEyZGY2NDk5Y2I5MDFlNDAz
NmYwNjM1OWU0N2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2UuaApAQCAtMCwwICsxLDE2MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFQUExFX1BBWSkKKworI2luY2x1
ZGUgIlN5c3RlbUltYWdlLmgiCisjaW5jbHVkZSA8b3B0aW9uYWw+CisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBBcHBsZVBheUJ1dHRv
blR5cGUgOiB1aW50OF90IHsKKyAgICBQbGFpbiwKKyAgICBCdXksCisgICAgU2V0VXAsCisgICAg
RG9uYXRlLAorICAgIENoZWNrT3V0LAorICAgIEJvb2ssCisgICAgU3Vic2NyaWJlLAorI2lmIEVO
QUJMRShBUFBMRV9QQVlfTkVXX0JVVFRPTl9UWVBFUykKKyAgICBSZWxvYWQsCisgICAgQWRkTW9u
ZXksCisgICAgVG9wVXAsCisgICAgT3JkZXIsCisgICAgUmVudCwKKyAgICBTdXBwb3J0LAorICAg
IENvbnRyaWJ1dGUsCisgICAgVGlwLAorI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfTkVXX0JV
VFRPTl9UWVBFUykKK307CisKK2VudW0gY2xhc3MgQXBwbGVQYXlCdXR0b25TdHlsZSA6IHVpbnQ4
X3QgeworICAgIFdoaXRlLAorICAgIFdoaXRlT3V0bGluZSwKKyAgICBCbGFjaywKK307CisKK2Ns
YXNzIFdFQkNPUkVfRVhQT1JUIEFwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2UgZmluYWwgOiBwdWJs
aWMgU3lzdGVtSW1hZ2UgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8QXBwbGVQYXlCdXR0b25T
eXN0ZW1JbWFnZT4gY3JlYXRlKEFwcGxlUGF5QnV0dG9uVHlwZSBhcHBsZVBheUJ1dHRvblR5cGUs
IEFwcGxlUGF5QnV0dG9uU3R5bGUgYXBwbGVQYXlCdXR0b25TdHlsZSwgY29uc3QgU3RyaW5nJiBs
b2NhbGUsIGZsb2F0IGxhcmdlc3RDb3JuZXJSYWRpdXMpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBBcHBsZVBheUJ1dHRvblN5c3RlbUltYWdlKGFwcGxlUGF5QnV0dG9uVHlw
ZSwgYXBwbGVQYXlCdXR0b25TdHlsZSwgbG9jYWxlLCBsYXJnZXN0Q29ybmVyUmFkaXVzKSk7Cisg
ICAgfQorCisgICAgdmlydHVhbCB+QXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZSgpID0gZGVmYXVs
dDsKKworICAgIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBj
b25zdCBmaW5hbDsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpv
cHRpb25hbDxSZWY8QXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZT4+IGRlY29kZShEZWNvZGVyJik7
CisKK3ByaXZhdGU6CisgICAgQXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZShBcHBsZVBheUJ1dHRv
blR5cGUgYXBwbGVQYXlCdXR0b25UeXBlLCBBcHBsZVBheUJ1dHRvblN0eWxlIGFwcGxlUGF5QnV0
dG9uU3R5bGUsIGNvbnN0IFN0cmluZyYgbG9jYWxlLCBmbG9hdCBsYXJnZXN0Q29ybmVyUmFkaXVz
KQorICAgICAgICA6IFN5c3RlbUltYWdlKFN5c3RlbUltYWdlVHlwZTo6QXBwbGVQYXlCdXR0b24p
CisgICAgICAgICwgbV9hcHBsZVBheUJ1dHRvblR5cGUoYXBwbGVQYXlCdXR0b25UeXBlKQorICAg
ICAgICAsIG1fYXBwbGVQYXlCdXR0b25TdHlsZShhcHBsZVBheUJ1dHRvblN0eWxlKQorICAgICAg
ICAsIG1fbG9jYWxlKGxvY2FsZSkKKyAgICAgICAgLCBtX2xhcmdlc3RDb3JuZXJSYWRpdXMobGFy
Z2VzdENvcm5lclJhZGl1cykKKyAgICB7CisgICAgfQorCisgICAgQXBwbGVQYXlCdXR0b25UeXBl
IG1fYXBwbGVQYXlCdXR0b25UeXBlOworICAgIEFwcGxlUGF5QnV0dG9uU3R5bGUgbV9hcHBsZVBh
eUJ1dHRvblN0eWxlOworICAgIFN0cmluZyBtX2xvY2FsZTsKKyAgICBmbG9hdCBtX2xhcmdlc3RD
b3JuZXJSYWRpdXM7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBBcHBsZVBh
eUJ1dHRvblN5c3RlbUltYWdlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAg
ICBlbmNvZGVyIDw8IG1fYXBwbGVQYXlCdXR0b25UeXBlOworICAgIGVuY29kZXIgPDwgbV9hcHBs
ZVBheUJ1dHRvblN0eWxlOworICAgIGVuY29kZXIgPDwgbV9sb2NhbGU7CisgICAgZW5jb2RlciA8
PCBtX2xhcmdlc3RDb3JuZXJSYWRpdXM7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+Citz
dGQ6Om9wdGlvbmFsPFJlZjxBcHBsZVBheUJ1dHRvblN5c3RlbUltYWdlPj4gQXBwbGVQYXlCdXR0
b25TeXN0ZW1JbWFnZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisjZGVmaW5lIERFQ09E
RShuYW1lLCB0eXBlKSBcCisgICAgc3RkOjpvcHRpb25hbDx0eXBlPiBuYW1lOyBcCisgICAgZGVj
b2RlciA+PiBuYW1lOyBcCisgICAgaWYgKCFuYW1lKSBcCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7IFwKKworICAgIERFQ09ERShhcHBsZVBheUJ1dHRvblR5cGUsIEFwcGxlUGF5QnV0dG9u
VHlwZSkKKyAgICBERUNPREUoYXBwbGVQYXlCdXR0b25TdHlsZSwgQXBwbGVQYXlCdXR0b25TdHls
ZSkKKyAgICBERUNPREUobG9jYWxlLCBTdHJpbmcpCisgICAgREVDT0RFKGxhcmdlc3RDb3JuZXJS
YWRpdXMsIGZsb2F0KQorCisjdW5kZWYgREVDT0RFCisKKyAgICByZXR1cm4gQXBwbGVQYXlCdXR0
b25TeXN0ZW1JbWFnZTo6Y3JlYXRlKFdURk1vdmUoKmFwcGxlUGF5QnV0dG9uVHlwZSksIFdURk1v
dmUoKmFwcGxlUGF5QnV0dG9uU3R5bGUpLCBXVEZNb3ZlKCpsb2NhbGUpLCBXVEZNb3ZlKCpsYXJn
ZXN0Q29ybmVyUmFkaXVzKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpBcHBsZVBheUJ1dHRvblN5c3RlbUltYWdl
KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpTeXN0ZW1JbWFnZSYgc3lz
dGVtSW1hZ2UpIHsgcmV0dXJuIHN5c3RlbUltYWdlLnN5c3RlbUltYWdlVHlwZSgpID09IFdlYkNv
cmU6OlN5c3RlbUltYWdlVHlwZTo6QXBwbGVQYXlCdXR0b247IH0KK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfRU5EKCkKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1U
cmFpdHM8V2ViQ29yZTo6QXBwbGVQYXlCdXR0b25UeXBlPiB7CisgICAgdXNpbmcgdmFsdWVzID0g
RW51bVZhbHVlczxXZWJDb3JlOjpBcHBsZVBheUJ1dHRvblR5cGUsCisgICAgICAgIFdlYkNvcmU6
OkFwcGxlUGF5QnV0dG9uVHlwZTo6UGxhaW4sCisgICAgICAgIFdlYkNvcmU6OkFwcGxlUGF5QnV0
dG9uVHlwZTo6QnV5LAorICAgICAgICBXZWJDb3JlOjpBcHBsZVBheUJ1dHRvblR5cGU6OlNldFVw
LAorICAgICAgICBXZWJDb3JlOjpBcHBsZVBheUJ1dHRvblR5cGU6OkRvbmF0ZSwKKyAgICAgICAg
V2ViQ29yZTo6QXBwbGVQYXlCdXR0b25UeXBlOjpDaGVja091dCwKKyAgICAgICAgV2ViQ29yZTo6
QXBwbGVQYXlCdXR0b25UeXBlOjpCb29rLAorICAgICAgICBXZWJDb3JlOjpBcHBsZVBheUJ1dHRv
blR5cGU6OlN1YnNjcmliZQorI2lmIEVOQUJMRShBUFBMRV9QQVlfTkVXX0JVVFRPTl9UWVBFUykK
KyAgICAgICAgLCBXZWJDb3JlOjpBcHBsZVBheUJ1dHRvblR5cGU6OlJlbG9hZCwKKyAgICAgICAg
V2ViQ29yZTo6QXBwbGVQYXlCdXR0b25UeXBlOjpBZGRNb25leSwKKyAgICAgICAgV2ViQ29yZTo6
QXBwbGVQYXlCdXR0b25UeXBlOjpUb3BVcCwKKyAgICAgICAgV2ViQ29yZTo6QXBwbGVQYXlCdXR0
b25UeXBlOjpPcmRlciwKKyAgICAgICAgV2ViQ29yZTo6QXBwbGVQYXlCdXR0b25UeXBlOjpSZW50
LAorICAgICAgICBXZWJDb3JlOjpBcHBsZVBheUJ1dHRvblR5cGU6OlN1cHBvcnQsCisgICAgICAg
IFdlYkNvcmU6OkFwcGxlUGF5QnV0dG9uVHlwZTo6Q29udHJpYnV0ZSwKKyAgICAgICAgV2ViQ29y
ZTo6QXBwbGVQYXlCdXR0b25UeXBlOjpUaXAKKyNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZX05F
V19CVVRUT05fVFlQRVMpCisgICAgPjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFp
dHM8V2ViQ29yZTo6QXBwbGVQYXlCdXR0b25TdHlsZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVu
dW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkFwcGxlUGF5QnV0dG9uU3R5bGUsCisgICAgICAg
IFdlYkNvcmU6OkFwcGxlUGF5QnV0dG9uU3R5bGU6OldoaXRlLAorICAgICAgICBXZWJDb3JlOjpB
cHBsZVBheUJ1dHRvblN0eWxlOjpXaGl0ZU91dGxpbmUsCisgICAgICAgIFdlYkNvcmU6OkFwcGxl
UGF5QnV0dG9uU3R5bGU6OkJsYWNrCisgICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgor
CisjZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BBWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZS5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jMWI3ODNjNTE2ZDNiYTA2YjhkMTE2ZjM3ZTc3NTA5NDQ4YmI5MGIwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUJ1dHRv
blN5c3RlbUltYWdlLm1tCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKyNpbXBvcnQgIkFwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2UuaCIKKworI2lmIEVO
QUJMRShBUFBMRV9QQVkpCisKKyNpbXBvcnQgIkZsb2F0UmVjdC5oIgorI2ltcG9ydCAiR3JhcGhp
Y3NDb250ZXh0Q0cuaCIKKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgUEtQYXltZW50QnV0dG9uVHlwZSB0b1BLUGF5
bWVudEJ1dHRvblR5cGUoQXBwbGVQYXlCdXR0b25UeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0
eXBlKSB7CisgICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OlBsYWluOgorICAgICAgICByZXR1
cm4gUEtQYXltZW50QnV0dG9uVHlwZVBsYWluOworICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBl
OjpCdXk6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRCdXR0b25UeXBlQnV5OworICAgIGNhc2Ug
QXBwbGVQYXlCdXR0b25UeXBlOjpTZXRVcDoKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRv
blR5cGVTZXRVcDsKKyAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6RG9uYXRlOgorICAgICAg
ICByZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZURvbmF0ZTsKKyAgICBjYXNlIEFwcGxlUGF5QnV0
dG9uVHlwZTo6Q2hlY2tPdXQ6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRCdXR0b25UeXBlQ2hl
Y2tvdXQ7CisgICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OkJvb2s6CisgICAgICAgIHJldHVy
biBQS1BheW1lbnRCdXR0b25UeXBlQm9vazsKKyAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6
U3Vic2NyaWJlOgorICAgICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZVN1YnNjcmliZTsK
KyNpZiBIQVZFKFBBU1NLSVRfTkVXX0JVVFRPTl9UWVBFUykKKyAgICBjYXNlIEFwcGxlUGF5QnV0
dG9uVHlwZTo6UmVsb2FkOgorICAgICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZVJlbG9h
ZDsKKyAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6QWRkTW9uZXk6CisgICAgICAgIHJldHVy
biBQS1BheW1lbnRCdXR0b25UeXBlQWRkTW9uZXk7CisgICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5
cGU6OlRvcFVwOgorICAgICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZVRvcFVwOworICAg
IGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpPcmRlcjoKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVu
dEJ1dHRvblR5cGVPcmRlcjsKKyAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6UmVudDoKKyAg
ICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRvblR5cGVSZW50OworICAgIGNhc2UgQXBwbGVQYXlC
dXR0b25UeXBlOjpTdXBwb3J0OgorICAgICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZVN1
cHBvcnQ7CisgICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OkNvbnRyaWJ1dGU6CisgICAgICAg
IHJldHVybiBQS1BheW1lbnRCdXR0b25UeXBlQ29udHJpYnV0ZTsKKyAgICBjYXNlIEFwcGxlUGF5
QnV0dG9uVHlwZTo6VGlwOgorICAgICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZVRpcDsK
KyNlbmRpZiAvLyBIQVZFKFBBU1NLSVRfTkVXX0JVVFRPTl9UWVBFUykKKyAgICB9Cit9CisKK3N0
YXRpYyBQS1BheW1lbnRCdXR0b25TdHlsZSB0b1BLUGF5bWVudEJ1dHRvblN0eWxlKEFwcGxlUGF5
QnV0dG9uU3R5bGUgc3R5bGUpCit7CisgICAgc3dpdGNoIChzdHlsZSkgeworICAgIGNhc2UgQXBw
bGVQYXlCdXR0b25TdHlsZTo6V2hpdGU6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRCdXR0b25T
dHlsZVdoaXRlOworICAgIGNhc2UgQXBwbGVQYXlCdXR0b25TdHlsZTo6V2hpdGVPdXRsaW5lOgor
ICAgICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9uU3R5bGVXaGl0ZU91dGxpbmU7CisgICAgY2Fz
ZSBBcHBsZVBheUJ1dHRvblN0eWxlOjpCbGFjazoKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1
dHRvblN0eWxlQmxhY2s7CisgICAgfQorfQorCit2b2lkIEFwcGxlUGF5QnV0dG9uU3lzdGVtSW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uUmVjdCkgY29uc3QKK3sKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoY29udGV4dCk7CisKKyAgICBjb250ZXh0LnNldFNob3VsZFNtb290aEZvbnRzKHRydWUp
OworICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CisKKyAgICBQS0RyYXdBcHBs
ZVBheUJ1dHRvbldpdGhDb3JuZXJSYWRpdXMoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgQ0dS
ZWN0TWFrZShkZXN0aW5hdGlvblJlY3QueCgpLCAtZGVzdGluYXRpb25SZWN0Lm1heFkoKSwgZGVz
dGluYXRpb25SZWN0LndpZHRoKCksIGRlc3RpbmF0aW9uUmVjdC5oZWlnaHQoKSksIDEuMCwgbV9s
YXJnZXN0Q29ybmVyUmFkaXVzLCB0b1BLUGF5bWVudEJ1dHRvblR5cGUobV9hcHBsZVBheUJ1dHRv
blR5cGUpLCB0b1BLUGF5bWVudEJ1dHRvblN0eWxlKG1fYXBwbGVQYXlCdXR0b25TdHlsZSksIG1f
bG9jYWxlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KEFQUExFX1BBWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
QXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTQxMDgzNjU5OGFjZGFl
NzA5YjYzNDI4ZGJiODBlMDFjYTBhYmY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxvZ29TeXN0ZW1JbWFnZS5oCkBAIC0wLDAgKzEs
MTA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZ
KQorCisjaW5jbHVkZSAiU3lzdGVtSW1hZ2UuaCIKKyNpbmNsdWRlIDxvcHRpb25hbD4KKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitlbnVtIGNsYXNzIEFwcGxlUGF5TG9nb1N0eWxlIDogdWludDhfdCB7CisgICAg
V2hpdGUsCisgICAgQmxhY2ssCit9OworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBBcHBsZVBheUxv
Z29TeXN0ZW1JbWFnZSBmaW5hbCA6IHB1YmxpYyBTeXN0ZW1JbWFnZSB7CitwdWJsaWM6CisgICAg
c3RhdGljIFJlZjxBcHBsZVBheUxvZ29TeXN0ZW1JbWFnZT4gY3JlYXRlKEFwcGxlUGF5TG9nb1N0
eWxlIGFwcGxlUGF5TG9nb1N0eWxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2UoYXBwbGVQYXlMb2dvU3R5bGUpKTsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIH5BcHBsZVBheUxvZ29TeXN0ZW1JbWFnZSgpID0gZGVmYXVsdDsKKworICAg
IHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBjb25zdCBmaW5h
bDsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBj
b25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxS
ZWY8QXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2U+PiBkZWNvZGUoRGVjb2RlciYpOworCitwcml2YXRl
OgorICAgIEFwcGxlUGF5TG9nb1N5c3RlbUltYWdlKEFwcGxlUGF5TG9nb1N0eWxlIGFwcGxlUGF5
TG9nb1N0eWxlKQorICAgICAgICA6IFN5c3RlbUltYWdlKFN5c3RlbUltYWdlVHlwZTo6QXBwbGVQ
YXlMb2dvKQorICAgICAgICAsIG1fYXBwbGVQYXlMb2dvU3R5bGUoYXBwbGVQYXlMb2dvU3R5bGUp
CisgICAgeworICAgIH0KKworICAgIEFwcGxlUGF5TG9nb1N0eWxlIG1fYXBwbGVQYXlMb2dvU3R5
bGU7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBBcHBsZVBheUxvZ29TeXN0
ZW1JbWFnZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8
PCBtX2FwcGxlUGF5TG9nb1N0eWxlOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3Rk
OjpvcHRpb25hbDxSZWY8QXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2U+PiBBcHBsZVBheUxvZ29TeXN0
ZW1JbWFnZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisjZGVmaW5lIERFQ09ERShuYW1l
LCB0eXBlKSBcCisgICAgc3RkOjpvcHRpb25hbDx0eXBlPiBuYW1lOyBcCisgICAgZGVjb2RlciA+
PiBuYW1lOyBcCisgICAgaWYgKCFuYW1lKSBcCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
IFwKKworICAgIERFQ09ERShhcHBsZVBheUxvZ29TdHlsZSwgQXBwbGVQYXlMb2dvU3R5bGUpCisK
KyN1bmRlZiBERUNPREUKKworICAgIHJldHVybiBBcHBsZVBheUxvZ29TeXN0ZW1JbWFnZTo6Y3Jl
YXRlKFdURk1vdmUoKmFwcGxlUGF5TG9nb1N0eWxlKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpBcHBsZVBheUxv
Z29TeXN0ZW1JbWFnZSkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6U3lz
dGVtSW1hZ2UmIHN5c3RlbUltYWdlKSB7IHJldHVybiBzeXN0ZW1JbWFnZS5zeXN0ZW1JbWFnZVR5
cGUoKSA9PSBXZWJDb3JlOjpTeXN0ZW1JbWFnZVR5cGU6OkFwcGxlUGF5TG9nbzsgfQorU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19FTkQoKQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBz
dHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpBcHBsZVBheUxvZ29TdHlsZT4geworICAgIHVzaW5n
IHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkFwcGxlUGF5TG9nb1N0eWxl
LAorICAgICAgICBXZWJDb3JlOjpBcHBsZVBheUxvZ29TdHlsZTo6V2hpdGUsCisgICAgICAgIFdl
YkNvcmU6OkFwcGxlUGF5TG9nb1N0eWxlOjpCbGFjaworICAgID47Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXVEYKKworI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TG9nb1N5c3RlbUltYWdlLm1tIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxvZ29TeXN0ZW1JbWFnZS5t
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wMWNkYzk3N2JhNzc4MjkzMmY5OGVhZjQyMTBkNzZmNDVhNzFhMTI4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eUxvZ29TeXN0ZW1JbWFnZS5tbQpAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2UuaCIKKworI2lm
IEVOQUJMRShBUFBMRV9QQVkpCisKKyNpbXBvcnQgIkZsb2F0UmVjdC5oIgorI2ltcG9ydCAiR2Vv
bWV0cnlVdGlsaXRpZXMuaCIKKyNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dC5oIgorI2ltcG9ydCA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworc3RhdGljIE5TQnVuZGxlICpwYXNzS2l0QnVuZGxlKCkKK3sKKyAg
ICBzdGF0aWMgTlNCdW5kbGUgKnBhc3NLaXRCdW5kbGU7CisgICAgc3RhdGljIGRpc3BhdGNoX29u
Y2VfdCBvbmNlVG9rZW47CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeeworI2lmIFBM
QVRGT1JNKE1BQykKKyAgICAgICAgcGFzc0tpdEJ1bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVXaXRo
VVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6QCIvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1l
d29ya3MvUGFzc0tpdC5mcmFtZXdvcmsiIGlzRGlyZWN0b3J5OllFU11dOworI2Vsc2UKKyAgICAg
ICAgZGxvcGVuKCIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9QYXNzS2l0LmZyYW1ld29yay9Q
YXNzS2l0IiwgUlRMRF9OT1cpOworICAgICAgICBwYXNzS2l0QnVuZGxlID0gW05TQnVuZGxlIGJ1
bmRsZUZvckNsYXNzOk5TQ2xhc3NGcm9tU3RyaW5nKEAiUEtQYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyIildOworI2VuZGlmCisgICAgfSk7CisgICAgcmV0dXJuIHBhc3NLaXRCdW5k
bGU7Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8Q0dQREZQYWdlUmVmPiBsb2FkUGFzc0tpdFBERlBh
Z2UoTlNTdHJpbmcgKmltYWdlTmFtZSkKK3sKKyAgICBOU1VSTCAqdXJsID0gW3Bhc3NLaXRCdW5k
bGUoKSBVUkxGb3JSZXNvdXJjZTppbWFnZU5hbWUgd2l0aEV4dGVuc2lvbjpAInBkZiJdOworICAg
IGlmICghdXJsKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvIGRvY3VtZW50ID0g
YWRvcHRDRihDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFVSTCgoQ0ZVUkxSZWYpdXJsKSk7CisgICAg
aWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFDR1BERkRv
Y3VtZW50R2V0TnVtYmVyT2ZQYWdlcyhkb2N1bWVudC5nZXQoKSkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBDR1BERkRvY3VtZW50R2V0UGFnZShkb2N1bWVudC5nZXQoKSwg
MSk7Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8Q0dQREZQYWdlUmVmPiBhcHBsZVBheUxvZ29XaGl0
ZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDR1BERlBhZ2VSZWY+
PiBsb2dvUGFnZTsKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBk
aXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisgICAgICAgIGxvZ29QYWdlLmdldCgpID0gbG9h
ZFBhc3NLaXRQREZQYWdlKEAiUGF5QnV0dG9uTG9nb1doaXRlIik7CisgICAgfSk7CisgICAgcmV0
dXJuIGxvZ29QYWdlOworfQorCitzdGF0aWMgUmV0YWluUHRyPENHUERGUGFnZVJlZj4gYXBwbGVQ
YXlMb2dvQmxhY2soKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dQ
REZQYWdlUmVmPj4gbG9nb1BhZ2U7CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9r
ZW47CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeeworICAgICAgICBsb2dvUGFnZS5n
ZXQoKSA9IGxvYWRQYXNzS2l0UERGUGFnZShAIlBheUJ1dHRvbkxvZ29CbGFjayIpOworICAgIH0p
OworICAgIHJldHVybiBsb2dvUGFnZTsKK30KKworc3RhdGljIFJldGFpblB0cjxDR1BERlBhZ2VS
ZWY+IGFwcGxlUGF5TG9nb0ZvclN0eWxlKEFwcGxlUGF5TG9nb1N0eWxlIHN0eWxlKQoreworICAg
IHN3aXRjaCAoc3R5bGUpIHsKKyAgICBjYXNlIEFwcGxlUGF5TG9nb1N0eWxlOjpXaGl0ZToKKyAg
ICAgICAgcmV0dXJuIGFwcGxlUGF5TG9nb1doaXRlKCk7CisKKyAgICBjYXNlIEFwcGxlUGF5TG9n
b1N0eWxlOjpCbGFjazoKKyAgICAgICAgcmV0dXJuIGFwcGxlUGF5TG9nb0JsYWNrKCk7CisgICAg
fQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisK
K3ZvaWQgQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uUmVjdCkgY29uc3QKK3sKKyAgICBhdXRv
IHBhZ2UgPSBhcHBsZVBheUxvZ29Gb3JTdHlsZShtX2FwcGxlUGF5TG9nb1N0eWxlKTsKKyAgICBp
ZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIENHU2l6ZSBwZGZTaXplID0gQ0dQREZQ
YWdlR2V0Qm94UmVjdChwYWdlLmdldCgpLCBrQ0dQREZNZWRpYUJveCkuc2l6ZTsKKworICAgIGF1
dG8gbGFyZ2VzdFJlY3QgPSBsYXJnZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0luc2lkZVJlY3QocGRm
U2l6ZS53aWR0aCAvIHBkZlNpemUuaGVpZ2h0LCBkZXN0aW5hdGlvblJlY3QpOworICAgIGNvbnRl
eHQudHJhbnNsYXRlKGxhcmdlc3RSZWN0LngoKSwgbGFyZ2VzdFJlY3QueSgpKTsKKyAgICBjb250
ZXh0LnNjYWxlKGxhcmdlc3RSZWN0LndpZHRoKCkgLyBwZGZTaXplLndpZHRoKTsKKworICAgIGNv
bnRleHQudHJhbnNsYXRlKDAsIHBkZlNpemUuaGVpZ2h0KTsKKyAgICBjb250ZXh0LnNjYWxlKEZs
b2F0U2l6ZSgxLCAtMSkpOworCisgICAgQ0dDb250ZXh0RHJhd1BERlBhZ2UoY29udGV4dC5wbGF0
Zm9ybUNvbnRleHQoKSwgcGFnZS5nZXQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5t
bSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtp
dE1vZGVsTG9hZGVyVVNELm1tCmluZGV4IDEzMDNlYzRkMjU2OGE2NmY4N2Q3ZmViMjBiZjJiMDMz
OTIzMmMzYzUuLjA5ZWM4ZjYwM2U5ZDAyMmIzNzhkZGEwZTQyN2ZlYzUyMWZkZDUyZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2Vu
ZUtpdE1vZGVsTG9hZGVyVVNELm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwt
ZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCkBAIC0zMCw2ICszMCw3
IEBACiAjaW1wb3J0ICJTY2VuZUtpdE1vZGVsTG9hZGVyVVNELmgiCiAKICNpbXBvcnQgIk1vZGVs
LmgiCisjaW1wb3J0ICJSZXNvdXJjZUVycm9yLmgiCiAjaW1wb3J0ICJTY2VuZUtpdE1vZGVsLmgi
CiAjaW1wb3J0ICJTY2VuZUtpdE1vZGVsTG9hZGVyLmgiCiAjaW1wb3J0ICJTY2VuZUtpdE1vZGVs
TG9hZGVyQ2xpZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2Eu
dHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA0MGRkYjFmNmQxODEz
NDE3NzYzN2U4ZmQxMDEyODQ5MjQ5Y2NiYmIzLi5hYTQ0ZjVmNTMxNjdiOWJjMGYxNDIzZjI3YmZj
MjRkNzE3ZWJhY2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTcxLDkgKzcxLDExIEBA
IEpTQXBwbGVQYXlTaGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQuY3BwCiBKU0FwcGxlUGF5U2hp
cHBpbmdNZXRob2RVcGRhdGUuY3BwCiBKU0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmNw
cAogTW9kdWxlcy9haXJwbGF5L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCitNb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2UubW0KIE1vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlDb3Vwb25Db2RlQ2hhbmdlZEV2ZW50LmNwcAogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eUNhbmNlbEV2ZW50LmNwcAogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUNvbnRhY3RGaWVsZC5j
cHAKK01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2UubW0KIE1vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlNZXJjaGFudENhcGFiaWxpdHkuY3BwCiBNb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQuY3BwCiBNb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlYTU3NjVlZjY4ZDMzODFk
ODcwNjQ1ZmYzZTdmYjc1ZmJjZDQ0ZGUzLi45ZGQ2MDIwODI5YTJjY2U0Mzg5NDkwZDQ0YjgwM2Rl
ZTZkOWUwNmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0zMTIyLDYgKzMxMjIsOSBAQAogCQk5NUFBNTcxMDI1RUVFRDMyMDA0
RTkyODMgLyogSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTVBQTU3MEUyNUVFRUQzMTAwNEU5MjgzIC8qIElu
c3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuaCAqLzsgfTsKIAkJOTVCQTRGQUQyNkQ5ODFBQTAwMkEw
RTYyIC8qIFBsYXRmb3JtVmlld0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1QkE0RkFCMjZEOTgxQUEwMDJBMEU2MiAvKiBQbGF0Zm9y
bVZpZXdDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJOTVERjlEMjUyNTJCRURCMjAwMEQ3RjQ2IC8qIFBvaW50ZXJDaGFyYWN0ZXJp
c3RpY3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1
REY5RDIzMjUyQkVEOTkwMDBEN0Y0NiAvKiBQb2ludGVyQ2hhcmFjdGVyaXN0aWNzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTVFOUY0NDYyN0M5
QTM5QzAwOTQ1MzM3IC8qIFN5c3RlbUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NUU5RjQ0NDI3QzlBMzlCMDA5NDUzMzcgLyogU3lzdGVtSW1h
Z2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5
NUU5RjQ0QjI3QzlGNjY2MDA5NDUzMzcgLyogQXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTVFOUY0NDkyN0M5
RjY2NjAwOTQ1MzM3IC8qIEFwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5NUU5RjQ0RjI3QzlGNjlDMDA5
NDUzMzcgLyogQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1RTlGNDREMjdDOUY2OUIwMDk0NTMzNyAvKiBBcHBs
ZVBheUxvZ29TeXN0ZW1JbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTk1RUFENTYzMjY2RUYyREIwMDRCOUNGMSAvKiBBcHBsZVBheUNvdXBv
bkNvZGVDaGFuZ2VkRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk1RUFENTVGMjY2RUYyREEwMDRCOUNGMSAvKiBBcHBsZVBheUNvdXBvbkNvZGVD
aGFuZ2VkRXZlbnQuaCAqLzsgfTsKIAkJOTVFQUQ1NkEyNjZFRjJGQTAwNEI5Q0YxIC8qIEFwcGxl
UGF5RGF0ZUNvbXBvbmVudHNSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTVFQUQ1NjYyNjZFRjJGODAwNEI5Q0YxIC8qIEFwcGxlUGF5RGF0ZUNv
bXBvbmVudHNSYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTk1RUFENTZEMjY2RUYyRkEwMDRCOUNGMSAvKiBBcHBsZVBheURhdGVDb21wb25l
bnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUVB
RDU2OTI2NkVGMkY5MDA0QjlDRjEgLyogQXBwbGVQYXlEYXRlQ29tcG9uZW50cy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMzA4OSw2ICsxMzA5
MiwxMSBAQAogCQk5NUFBNTcwRTI1RUVFRDMxMDA0RTkyODMgLyogSW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1QkE0RkFCMjZE
OTgxQUEwMDJBMEU2MiAvKiBQbGF0Zm9ybVZpZXdDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtVmlld0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTVERjlEMjMyNTJCRUQ5OTAwMEQ3RjQ2IC8qIFBvaW50ZXJDaGFy
YWN0ZXJpc3RpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9pbnRlckNoYXJhY3RlcmlzdGljcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NUU5RjQ0NDI3QzlBMzlCMDA5NDUzMzcgLyog
U3lzdGVtSW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3lzdGVtSW1h
Z2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTVFOUY0NDgyN0M5RjY2NTAwOTQ1
MzM3IC8qIEFwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBBcHBsZVBheUJ1dHRvblN5c3RlbUltYWdlLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5NUU5RjQ0OTI3QzlGNjY2MDA5NDUzMzcgLyogQXBwbGVQ
YXlCdXR0b25TeXN0ZW1JbWFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
cHBsZVBheUJ1dHRvblN5c3RlbUltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTk1RTlGNDRDMjdDOUY2OUIwMDk0NTMzNyAvKiBBcHBsZVBheUxvZ29TeXN0ZW1JbWFnZS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFwcGxlUGF5TG9nb1N5c3Rl
bUltYWdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NUU5RjQ0RDI3QzlGNjlC
MDA5NDUzMzcgLyogQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTVFQUQ1NUYyNjZFRjJEQTAwNEI5Q0YxIC8qIEFwcGxlUGF5Q291cG9u
Q29kZUNoYW5nZWRFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBs
ZVBheUNvdXBvbkNvZGVDaGFuZ2VkRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTVFQUQ1NjEyNjZFRjJEQTAwNEI5Q0YxIC8qIEFwcGxlUGF5Q291cG9uQ29kZUNoYW5nZWRF
dmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXBwbGVQYXlDb3Vwb25Db2RlQ2hhbmdl
ZEV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTVFQUQ1NjIyNjZFRjJE
QjAwNEI5Q0YxIC8qIEFwcGxlUGF5Q291cG9uQ29kZUNoYW5nZWRFdmVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcHBsZVBheUNvdXBvbkNvZGVDaGFuZ2VkRXZl
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk2NDIsNiArMTk2NTAsOCBA
QAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMUE1OEU4NjkxRDE5RDhDMDAwQzBFQTczIC8qIGNvY29h
ICovLAogCQkJCUExREY1QTlGMUY3RUUwRjEwMDU4QTQ3NyAvKiBwYXltZW50cmVxdWVzdCAqLywK
KwkJCQk5NUU5RjQ0OTI3QzlGNjY2MDA5NDUzMzcgLyogQXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFn
ZS5oICovLAorCQkJCTk1RTlGNDQ4MjdDOUY2NjUwMDk0NTMzNyAvKiBBcHBsZVBheUJ1dHRvblN5
c3RlbUltYWdlLm1tICovLAogCQkJCUExMTNFMDJDMjMzMUEwRTQwMDlDMzNBMCAvKiBBcHBsZVBh
eUNhbmNlbEV2ZW50LmNwcCAqLywKIAkJCQlBMTEzRTAyQjIzMzFBMEU0MDA5QzMzQTAgLyogQXBw
bGVQYXlDYW5jZWxFdmVudC5oICovLAogCQkJCUExOTU2RjE4MjMzMUE0NjgwMDU3RTlEMiAvKiBB
cHBsZVBheUNhbmNlbEV2ZW50LmlkbCAqLywKQEAgLTE5Njc5LDYgKzE5Njg5LDggQEAKIAkJCQlB
MTNCNjE2OTI0NzVERkM1MDBCQkU2REUgLyogQXBwbGVQYXlJbnN0YWxsbWVudFJldGFpbENoYW5u
ZWwuaWRsICovLAogCQkJCTdDNjU3OUUyMUUwMDgyNzAwMEUzQTI3QSAvKiBBcHBsZVBheUxpbmVJ
dGVtLmggKi8sCiAJCQkJN0M2NTc5RTQxRTAwODJDODAwRTNBMjdBIC8qIEFwcGxlUGF5TGluZUl0
ZW0uaWRsICovLAorCQkJCTk1RTlGNDREMjdDOUY2OUIwMDk0NTMzNyAvKiBBcHBsZVBheUxvZ29T
eXN0ZW1JbWFnZS5oICovLAorCQkJCTk1RTlGNDRDMjdDOUY2OUIwMDk0NTMzNyAvKiBBcHBsZVBh
eUxvZ29TeXN0ZW1JbWFnZS5tbSAqLywKIAkJCQlBMURGNUFBODFGODA3MEQ0MDA1OEE0NzcgLyog
QXBwbGVQYXlNZXJjaGFudENhcGFiaWxpdHkuY3BwICovLAogCQkJCUExREY1QTgzMUY3RUJERjIw
MDU4QTQ3NyAvKiBBcHBsZVBheU1lcmNoYW50Q2FwYWJpbGl0eS5oICovLAogCQkJCUExREY1QTg1
MUY3RUJERjIwMDU4QTQ3NyAvKiBBcHBsZVBheU1lcmNoYW50Q2FwYWJpbGl0eS5pZGwgKi8sCkBA
IC0yOTE2NCw2ICsyOTE3Niw3IEBACiAJCQkJQjIzNTQwRjAwRDAwNzgyRTAwMjM4MkZBIC8qIFN0
cmluZ1RydW5jYXRvci5jcHAgKi8sCiAJCQkJQjIzNTQwRjEwRDAwNzgyRTAwMjM4MkZBIC8qIFN0
cmluZ1RydW5jYXRvci5oICovLAogCQkJCTA4NzU1OEM0MTNCNEE1N0QwMEY0OTMwNyAvKiBTdXJy
b2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuaCAqLywKKwkJCQk5NUU5RjQ0NDI3QzlBMzlCMDA5
NDUzMzcgLyogU3lzdGVtSW1hZ2UuaCAqLywKIAkJCQkzQkI2QjgwRjIyQTdEMzExMDAzQTJBNjkg
LyogVGFiU2l6ZS5oICovLAogCQkJCTM3NkRDQ0UwMTNCNEY5NjYwMDJFQkVGQyAvKiBUZXh0UnVu
LmNwcCAqLywKIAkJCQlBODI0QjQ2NDBFMkVGMkVBMDA4MUE3QjcgLyogVGV4dFJ1bi5oICovLApA
QCAtMzM1MTEsNiArMzM1MjQsNyBAQAogCQkJCTQ0MjUwNzA5MjU4MjlBMjcwMEMwOTM2OCAvKiBB
cHBIaWdobGlnaHRTdG9yYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NUZCNjYyNTI2RDcwMzND
MDA2OEFDNjcgLyogQXBwbGVQYXlBTVNVSVBheW1lbnRIYW5kbGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5NUZCNjYyNjI2RDcwMzNDMDA2OEFDNjcgLyogQXBwbGVQYXlBTVNVSVJlcXVlc3QuaCBp
biBIZWFkZXJzICovLAorCQkJCTk1RTlGNDRCMjdDOUY2NjYwMDk0NTMzNyAvKiBBcHBsZVBheUJ1
dHRvblN5c3RlbUltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTEzRTAyRTIzMzFBMTM0MDA5
QzMzQTAgLyogQXBwbGVQYXlDYW5jZWxFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFERjVB
OTQxRjdFQzQzMjAwNThBNDc3IC8qIEFwcGxlUGF5Q29udGFjdEZpZWxkLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5NUVBRDU2MzI2NkVGMkRCMDA0QjlDRjEgLyogQXBwbGVQYXlDb3Vwb25Db2RlQ2hh
bmdlZEV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMzNTI4LDYgKzMzNTQyLDcgQEAKIAkJCQlB
MTE3NTBBMTI0NzQ2OEY3MDBENEQyNkMgLyogQXBwbGVQYXlJbnN0YWxsbWVudEl0ZW1UeXBlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBMTNCNjE2QjI0NzVFMDQ4MDBCQkU2REUgLyogQXBwbGVQYXlJ
bnN0YWxsbWVudFJldGFpbENoYW5uZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDNjU3OUUzMUUw
MDgyNzAwMEUzQTI3QSAvKiBBcHBsZVBheUxpbmVJdGVtLmggaW4gSGVhZGVycyAqLywKKwkJCQk5
NUU5RjQ0RjI3QzlGNjlDMDA5NDUzMzcgLyogQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUExREY1QTg2MUY3RUJERjIwMDU4QTQ3NyAvKiBBcHBsZVBheU1lcmNo
YW50Q2FwYWJpbGl0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFGNkNGRkYxRkUwOTYyMTAwMTgw
NzhDIC8qIEFwcGxlUGF5TW9kaWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDNjUyMzAxMUUw
MEQwMzQwMDY3N0YyMiAvKiBBcHBsZVBheVBheW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzc3
NDMsNiArMzc3NTgsNyBAQAogCQkJCUUxODA4MTE3MTZGQ0Y5Q0IwMEI4MEQwNyAvKiBTeW5jaHJv
bm91c0xvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzE2OTJERDUyM0QyM0UwODAw
NkU4OEY3IC8qIFN5c3RlbUJhdHRlcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0RThCNEVDMjE2
Qjc5RTUwMEI4ODM0RCAvKiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJOTVFOUY0NDYyN0M5QTM5QzAwOTQ1MzM3IC8qIFN5c3RlbUltYWdlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjAzQzA3NDE4ODQ2OTVFMDBBNUY4Q0EgLyogU3lzdGVtTWVtb3J5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFM0MwNDEzODI1NENCMzBEMDAyMUQwRTYgLyogU3lzdGVtU291
bmREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTNDMDQxMkYyNTRDQTI5QjAwMjFEMEU2
IC8qIFN5c3RlbVNvdW5kTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAppbmRleCAwZWQ5Y2M4YTVlNzkxODZh
NTk0YmE2NmJiNTdlZmNlN2YxYThmNzdlLi41MDczZWNhYjRiOTg0N2Y4YjZlYjBjYTM4NDdhZjQ3
MDU0ZTNhMzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFs
dWVNYXBwaW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1h
cHBpbmdzLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJB
cHBsZVBheUJ1dHRvblN5c3RlbUltYWdlLmgiCiAjaW5jbHVkZSAiQ1NTQ2FsY1ZhbHVlLmgiCiAj
aW5jbHVkZSAiQ1NTRm9udEZhbWlseS5oIgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5tbQppbmRleCAwNDQx
YTc3OTkwZDZkYjZlOTVkOWI5ZWE2YTM3ZjU0Zjg2NTU4MjAzLi5iMTYyNzJjOGUwMWE0YjJiYjM4
NjRiYWVmNzNiMDE2ZWFiYmNmMTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9UaGVtZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1RoZW1lQ29jb2EubW0KQEAgLTI2LDEwOCArMjYsMTUgQEAKICNpbXBvcnQgImNvbmZpZy5oIgog
I2ltcG9ydCAiVGhlbWVDb2NvYS5oIgogCisjaW1wb3J0ICJBcHBsZVBheUxvZ29TeXN0ZW1JbWFn
ZS5oIgogI2ltcG9ydCAiRm9udENhc2NhZGUuaCIKKyNpbXBvcnQgIkdlb21ldHJ5VXRpbGl0aWVz
LmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbXBvcnQgIkltYWdlQnVmZmVyLmgi
CiAjaW1wb3J0IDxkbGZjbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyB2b2lk
IGZpdENvbnRleHRUb0JveChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6
ZSYgc3JjSW1hZ2VTaXplLCBjb25zdCBGbG9hdFNpemUmIGRzdFNpemUpCi17Ci0gICAgZmxvYXQg
c3JjUmF0aW8gPSBzcmNJbWFnZVNpemUuYXNwZWN0UmF0aW8oKTsKLSAgICBmbG9hdCBkc3RSYXRp
byA9IGRzdFNpemUuYXNwZWN0UmF0aW8oKTsKLQotICAgIGZsb2F0IHNjYWxlOwotICAgIGZsb2F0
IHRyYW5zbGF0aW9uWCA9IDA7Ci0gICAgZmxvYXQgdHJhbnNsYXRpb25ZID0gMDsKLSAgICBpZiAo
c3JjUmF0aW8gPiBkc3RSYXRpbykgewotICAgICAgICBzY2FsZSA9IGRzdFNpemUud2lkdGgoKSAv
IHNyY0ltYWdlU2l6ZS53aWR0aCgpOwotICAgICAgICB0cmFuc2xhdGlvblkgPSAoZHN0U2l6ZS5o
ZWlnaHQoKSAtIHNjYWxlICogc3JjSW1hZ2VTaXplLmhlaWdodCgpKSAvIDI7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgc2NhbGUgPSBkc3RTaXplLmhlaWdodCgpIC8gc3JjSW1hZ2VTaXplLmhlaWdo
dCgpOwotICAgICAgICB0cmFuc2xhdGlvblggPSAoZHN0U2l6ZS53aWR0aCgpIC0gc2NhbGUgKiBz
cmNJbWFnZVNpemUud2lkdGgoKSkgLyAyOwotICAgIH0KLSAgICBjb250ZXh0LnRyYW5zbGF0ZSh0
cmFuc2xhdGlvblgsIHRyYW5zbGF0aW9uWSk7Ci0gICAgY29udGV4dC5zY2FsZShzY2FsZSk7Ci19
Ci0KLSNpZiBFTkFCTEUoQVBQTEVfUEFZKQotCi1zdGF0aWMgTlNCdW5kbGUgKnBhc3NLaXRCdW5k
bGUoKQotewotICAgIHN0YXRpYyBOU0J1bmRsZSAqcGFzc0tpdEJ1bmRsZTsKLSAgICBzdGF0aWMg
ZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4s
IF57Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgICAgICBwYXNzS2l0QnVuZGxlID0gW05TQnVuZGxl
IGJ1bmRsZVdpdGhVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpAIi9TeXN0ZW0vTGlicmFyeS9Q
cml2YXRlRnJhbWV3b3Jrcy9QYXNzS2l0LmZyYW1ld29yayIgaXNEaXJlY3Rvcnk6WUVTXV07Ci0j
ZWxzZQotICAgICAgICBkbG9wZW4oIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1Bhc3NLaXQu
ZnJhbWV3b3JrL1Bhc3NLaXQiLCBSVExEX05PVyk7Ci0gICAgICAgIHBhc3NLaXRCdW5kbGUgPSBb
TlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6TlNDbGFzc0Zyb21TdHJpbmcoQCJQS1BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXIiKV07Ci0jZW5kaWYKLSAgICB9KTsKLQotICAgIHJldHVy
biBwYXNzS2l0QnVuZGxlOwotfQotCi1zdGF0aWMgUmV0YWluUHRyPENHUERGUGFnZVJlZj4gbG9h
ZFBhc3NLaXRQREZQYWdlKE5TU3RyaW5nICppbWFnZU5hbWUpCi17Ci0gICAgTlNVUkwgKnVybCA9
IFtwYXNzS2l0QnVuZGxlKCkgVVJMRm9yUmVzb3VyY2U6aW1hZ2VOYW1lIHdpdGhFeHRlbnNpb246
QCJwZGYiXTsKLSAgICBpZiAoIXVybCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBh
dXRvIGRvY3VtZW50ID0gYWRvcHRDRihDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFVSTCgoQ0ZVUkxS
ZWYpdXJsKSk7Ci0gICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICBpZiAoIUNHUERGRG9jdW1lbnRHZXROdW1iZXJPZlBhZ2VzKGRvY3VtZW50LmdldCgpKSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gQ0dQREZEb2N1bWVudEdldFBh
Z2UoZG9jdW1lbnQuZ2V0KCksIDEpOwotfTsKLQotc3RhdGljIENHUERGUGFnZVJlZiBhcHBsZVBh
eUJ1dHRvbkxvZ29CbGFjaygpCi17Ci0gICAgc3RhdGljIENHUERGUGFnZVJlZiBsb2dvUGFnZTsK
LSAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBkaXNwYXRjaF9vbmNl
KCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIGxvZ29QYWdlID0gbG9hZFBhc3NLaXRQREZQYWdlKEAi
UGF5QnV0dG9uTG9nb0JsYWNrIikubGVha1JlZigpOwotICAgIH0pOwotCi0gICAgcmV0dXJuIGxv
Z29QYWdlOwotfTsKLQotc3RhdGljIENHUERGUGFnZVJlZiBhcHBsZVBheUJ1dHRvbkxvZ29XaGl0
ZSgpCi17Ci0gICAgc3RhdGljIENHUERGUGFnZVJlZiBsb2dvUGFnZTsKLSAgICBzdGF0aWMgZGlz
cGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57
Ci0gICAgICAgIGxvZ29QYWdlID0gbG9hZFBhc3NLaXRQREZQYWdlKEAiUGF5QnV0dG9uTG9nb1do
aXRlIikubGVha1JlZigpOwotICAgIH0pOwotCi0gICAgcmV0dXJuIGxvZ29QYWdlOwotfTsKLQot
c3RhdGljIHZvaWQgZHJhd0FwcGxlUGF5QnV0dG9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Q0dQREZQYWdlUmVmIHBhZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKLXsKLSAgICAvLyBDcmVh
dGUgYSBsb2NhbCBJbWFnZUJ1ZmZlciBiZWNhdXNlIGRlY29kaW5nIHRoZSBQREYgaW1hZ2VzIGhh
cyB0byBoYXBwZW4gaW4gV2ViUHJvY2Vzcy4KLSAgICBhdXRvIGltYWdlQnVmZmVyID0gY29udGV4
dC5jcmVhdGVBbGlnbmVkSW1hZ2VCdWZmZXIoc2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCksIFJlbmRlcmluZ01ldGhvZDo6TG9jYWwpOwotICAgIGlmICghaW1hZ2VCdWZmZXIpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIENHU2l6ZSBwZGZTaXplID0gQ0dQREZQYWdlR2V0Qm94UmVj
dChwYWdlLCBrQ0dQREZNZWRpYUJveCkuc2l6ZTsKLQotICAgIGF1dG8mIGltYWdlQ29udGV4dCA9
IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7Ci0gICAgZml0Q29udGV4dFRvQm94KGltYWdlQ29udGV4
dCwgRmxvYXRTaXplKHBkZlNpemUpLCBzaXplKTsKLSAgICBpbWFnZUNvbnRleHQudHJhbnNsYXRl
KDAsIHBkZlNpemUuaGVpZ2h0KTsKLSAgICBpbWFnZUNvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEs
IC0xKSk7Ci0gICAgQ0dDb250ZXh0RHJhd1BERlBhZ2UoaW1hZ2VDb250ZXh0LnBsYXRmb3JtQ29u
dGV4dCgpLCBwYWdlKTsKLQotICAgIGNvbnRleHQuZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKFdU
Rk1vdmUoaW1hZ2VCdWZmZXIpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBzaXplKSk7
Ci19OwotCi0jZW5kaWYKLQogdm9pZCBUaGVtZUNvY29hOjpkcmF3TmFtZWRJbWFnZShjb25zdCBT
dHJpbmcmIG5hbWUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRTaXplJiBz
aXplKSBjb25zdAogewogICAgIGlmIChuYW1lID09ICJ3aXJlbGVzcy1wbGF5YmFjayIpIHsKQEAg
LTEzNSw3ICs0Miw5IEBAIHZvaWQgVGhlbWVDb2NvYTo6ZHJhd05hbWVkSW1hZ2UoY29uc3QgU3Ry
aW5nJiBuYW1lLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvCiAgICAgICAgIGNvbnRleHQu
c2V0RmlsbENvbG9yKENvbG9yOjpibGFjayk7CiAKICAgICAgICAgRmxvYXRTaXplIHdpcmVsZXNz
UGxheWJhY2tTcmNTaXplKDMyLCAyNC4wMTYpOwotICAgICAgICBmaXRDb250ZXh0VG9Cb3goY29u
dGV4dCwgd2lyZWxlc3NQbGF5YmFja1NyY1NpemUsIHNpemUpOworICAgICAgICBhdXRvIGxhcmdl
c3RSZWN0ID0gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KHdpcmVsZXNzUGxh
eWJhY2tTcmNTaXplLmFzcGVjdFJhdGlvKCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCks
IHNpemUpKTsKKyAgICAgICAgY29udGV4dC50cmFuc2xhdGUobGFyZ2VzdFJlY3QueCgpLCBsYXJn
ZXN0UmVjdC55KCkpOworICAgICAgICBjb250ZXh0LnNjYWxlKGxhcmdlc3RSZWN0LndpZHRoKCkg
LyB3aXJlbGVzc1BsYXliYWNrU3JjU2l6ZS53aWR0aCgpKTsKIAogICAgICAgICBQYXRoIG91dGxp
bmU7CiAgICAgICAgIG91dGxpbmUubW92ZVRvKEZsb2F0UG9pbnQoMjQuMDY2LCAxOCkpOwpAQCAt
MTY0LDE3ICs3MywxMyBAQCB2b2lkIFRoZW1lQ29jb2E6OmRyYXdOYW1lZEltYWdlKGNvbnN0IFN0
cmluZyYgbmFtZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjbwogCiAjaWYgRU5BQkxFKEFQ
UExFX1BBWSkKICAgICBpZiAobmFtZSA9PSAiYXBwbGUtcGF5LWxvZ28tYmxhY2siKSB7Ci0gICAg
ICAgIGlmIChhdXRvIGxvZ28gPSBhcHBsZVBheUJ1dHRvbkxvZ29CbGFjaygpKSB7Ci0gICAgICAg
ICAgICBkcmF3QXBwbGVQYXlCdXR0b24oY29udGV4dCwgbG9nbywgc2l6ZSk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgY29udGV4dC5kcmF3U3lzdGVtSW1hZ2UoQXBw
bGVQYXlMb2dvU3lzdGVtSW1hZ2U6OmNyZWF0ZShBcHBsZVBheUxvZ29TdHlsZTo6QmxhY2spLCBG
bG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBzaXplKSk7CisgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBpZiAobmFtZSA9PSAiYXBwbGUtcGF5LWxvZ28td2hpdGUiKSB7Ci0gICAgICAg
IGlmIChhdXRvIGxvZ28gPSBhcHBsZVBheUJ1dHRvbkxvZ29XaGl0ZSgpKSB7Ci0gICAgICAgICAg
ICBkcmF3QXBwbGVQYXlCdXR0b24oY29udGV4dCwgbG9nbywgc2l6ZSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgY29udGV4dC5kcmF3U3lzdGVtSW1hZ2UoQXBwbGVQ
YXlMb2dvU3lzdGVtSW1hZ2U6OmNyZWF0ZShBcHBsZVBheUxvZ29TdHlsZTo6V2hpdGUpLCBGbG9h
dFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBzaXplKSk7CisgICAgICAgIHJldHVybjsKICAgICB9
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
QmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCA3MzVhNzI2ZmQyMzVk
MWM2MDAzZTUyZjIxY2ZlMmQ0NmViYTMyZjY4Li45ZmQyNWQ4MGFkMTJkYzkxZGQxMWY5MTU5OGZj
NmM4ZWZhNGNiMmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtMjYzLDYgKzI2
MywxMiBAQCB2b2lkIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShO
YXRpdmVJbWFnZSYgbmF0aXZlSW1hZ2UsIGNvbnN0CiAgICAgbV9zZWNvbmRhcnlDb250ZXh0LmRy
YXdOYXRpdmVJbWFnZShuYXRpdmVJbWFnZSwgc2VsZlNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBv
cHRpb25zKTsKIH0KIAordm9pZCBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0OjpkcmF3U3lzdGVt
SW1hZ2UoU3lzdGVtSW1hZ2UmIHN5c3RlbUltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uUmVjdCkKK3sKKyAgICBtX3ByaW1hcnlDb250ZXh0LmRyYXdTeXN0ZW1JbWFnZShzeXN0ZW1J
bWFnZSwgZGVzdGluYXRpb25SZWN0KTsKKyAgICBtX3NlY29uZGFyeUNvbnRleHQuZHJhd1N5c3Rl
bUltYWdlKHN5c3RlbUltYWdlLCBkZXN0aW5hdGlvblJlY3QpOworfQorCiB2b2lkIEJpZnVyY2F0
ZWRHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKE5hdGl2ZUltYWdlJiBuYXRpdmVJbWFnZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgb3B0aW9ucykKIHsKICAgICBtX3ByaW1hcnlDb250ZXh0LmRyYXdQYXR0ZXJuKG5hdGl2ZUlt
YWdlLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5n
LCBvcHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuaAppbmRleCBmNmQ0ZGJkZmJkODJkNDhi
MWEwMDI2OGEzZDAwNTc5YmYyYzVkMWY4Li5mNThiMzRjOTE0MzQyYjczNzc3MjdjMTFhNzNiNmQ4
MjE4ZTE1NTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5oCkBAIC05OCw2ICs5OCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldE1pdGVyTGltaXQoZmxvYXQpIGZpbmFsOwogCiAgICAgdm9pZCBk
cmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7CisgICAgdm9pZCBkcmF3U3lzdGVt
SW1hZ2UoU3lzdGVtSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKICAgICB2b2lkIGRy
YXdQYXR0ZXJuKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNm
b3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIGZpbmFsOwogICAgIEltYWdlRHJhd1Jl
c3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyBJbWFn
ZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UgfSkgZmluYWw7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRy
YXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3Qg
RmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9h
dFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmNwcAppbmRleCAyMTU1YmQyZWI2MzYzNWI0MmRjMDZlMTJiNDMwOTgzYjJiMzNkYmQzLi4w
YmIxMzU5N2NlYTczNjlkYmJjNmUxNzI3ZjI2YzkyYjhmYjc1MTc2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTM4
LDYgKzM4LDcgQEAKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGUuaCIKICNpbmNsdWRlICJO
dWxsR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiUm91bmRlZFJlY3QuaCIKKyNpbmNsdWRl
ICJTeXN0ZW1JbWFnZS5oIgogI2luY2x1ZGUgIlRleHRSdW4uaCIKICNpbmNsdWRlIDx3dGYvdGV4
dC9UZXh0U3RyZWFtLmg+CiAKQEAgLTYzOCw2ICs2MzksMTEgQEAgUmVmUHRyPEltYWdlQnVmZmVy
PiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUFsaWduZWRJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJl
Y3QmIHIKICAgICByZXR1cm4gY3JlYXRlU2NhbGVkSW1hZ2VCdWZmZXIocmVjdCwgc2NhbGVGYWN0
b3IoKSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZSgpLCByZW5kZXJpbmdNZXRob2QpOwogfQog
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1N5c3RlbUltYWdlKFN5c3RlbUltYWdlJiBzeXN0
ZW1JbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvblJlY3QpCit7CisgICAgc3lzdGVt
SW1hZ2UuZHJhdygqdGhpcywgZGVzdGluYXRpb25SZWN0KTsKK30KKwogSW1hZ2VEcmF3UmVzdWx0
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRQb2lu
dCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5n
T3B0aW9ucykKIHsKICAgICByZXR1cm4gZHJhd0ltYWdlKGltYWdlLCBGbG9hdFJlY3QoZGVzdGlu
YXRpb24sIGltYWdlLnNpemUoKSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlLnNpemUo
KSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggNTg2Yjk5YjlmZDQ0NWJiOWQzYjk2
NTEyMjI4YTQ2ZTdkYjg5NWVkYy4uZTE2YzIzMDkyODFlZGE5ZjAwMGVlMzA0ZTgzMWViMGZlYWY4
YzY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmgKQEAgLTg3LDYgKzg3LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXI7CiBjbGFzcyBS
b3VuZGVkUmVjdDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMOwogY2xhc3MgUGF0aDsKK2NsYXNz
IFN5c3RlbUltYWdlOwogY2xhc3MgVGV4dFJ1bjsKIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4
OwogCkBAIC00MjgsNiArNDI5LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdO
YXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1N5
c3RlbUltYWdlKFN5c3RlbUltYWdlJiwgY29uc3QgRmxvYXRSZWN0Jik7CisKICAgICBXRUJDT1JF
X0VYUE9SVCBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRQb2lu
dCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgSW1hZ2VPcmll
bnRhdGlvbjo6RnJvbUltYWdlIH0pOwogICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jlc3Vs
dCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSB9KTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1h
Z2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJj
ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyBJbWFnZU9yaWVudGF0aW9uOjpGcm9t
SW1hZ2UgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9O
dWxsR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9O
dWxsR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggZDE4MGU1MTkwMmUyZTI3ODlkMDQ1NjVkMDdhZGY5
NmRmZjVmMmRiNy4uYjYyMzY3ODgwZTNlNTM1NGI2MTcxMTM0N2M5YTExYjQyMjQ2ODg1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGlj
c0NvbnRleHQuaApAQCAtNjMsNiArNjMsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkcmF3TmF0
aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIGZpbmFsIHsg
fQogCisgICAgdm9pZCBkcmF3U3lzdGVtSW1hZ2UoU3lzdGVtSW1hZ2UmLCBjb25zdCBGbG9hdFJl
Y3QmKSBmaW5hbCB7IH07CisKICAgICB2b2lkIGRyYXdQYXR0ZXJuKE5hdGl2ZUltYWdlJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
Y29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJikgZmluYWwgeyB9CiAKICAgICBJbnRSZWN0IGNsaXBCb3VuZHMoKSBjb25zdCBmaW5h
bCB7IHJldHVybiB7IH07IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1N5c3RlbUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9T
eXN0ZW1JbWFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlODNkM2E3NDcxNjdkMWY4ZDI2YTA3ZTRmOTI1OTVi
YmZmMTNkMzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9TeXN0ZW1JbWFnZS5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgRmxvYXRSZWN0OworY2xhc3MgR3JhcGhpY3NDb250ZXh0OworCitlbnVtIGNs
YXNzIFN5c3RlbUltYWdlVHlwZSA6IHVpbnQ4X3QgeworI2lmIEVOQUJMRShBUFBMRV9QQVkpCisg
ICAgQXBwbGVQYXlCdXR0b24sCisgICAgQXBwbGVQYXlMb2dvLAorI2VuZGlmCit9OworCitjbGFz
cyBXRUJDT1JFX0VYUE9SVCBTeXN0ZW1JbWFnZSA6IHB1YmxpYyBSZWZDb3VudGVkPFN5c3RlbUlt
YWdlPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgdmlydHVh
bCB+U3lzdGVtSW1hZ2UoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBjb25zdCB7IH0KKworICAgIFN5c3RlbUlt
YWdlVHlwZSBzeXN0ZW1JbWFnZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX3N5c3RlbUltYWdlVHlw
ZTsgfQorCitwcm90ZWN0ZWQ6CisgICAgU3lzdGVtSW1hZ2UoU3lzdGVtSW1hZ2VUeXBlIHN5c3Rl
bUltYWdlVHlwZSkKKyAgICAgICAgOiBtX3N5c3RlbUltYWdlVHlwZShzeXN0ZW1JbWFnZVR5cGUp
CisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBTeXN0ZW1JbWFnZVR5cGUgbV9zeXN0ZW1J
bWFnZVR5cGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYg
eworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlN5c3RlbUltYWdlVHlw
ZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OlN5
c3RlbUltYWdlVHlwZQorI2lmIEVOQUJMRShBUFBMRV9QQVkpCisgICAgICAgICwgV2ViQ29yZTo6
U3lzdGVtSW1hZ2VUeXBlOjpBcHBsZVBheUJ1dHRvbiwKKyAgICAgICAgV2ViQ29yZTo6U3lzdGVt
SW1hZ2VUeXBlOjpBcHBsZVBheUxvZ28KKyNlbmRpZgorICAgID47Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCmluZGV4IDc5ZjRjNDY5OGM3MjUwMzZh
NDc1MjU2OGIxMTljMjc0M2I2ZGZiMzMuLjJlMmY0ZjRmMmNiNTVkMzY1ZTVhZTM5OTMyNWQwNWYy
YzE3MzYxZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcApAQCAtMjQ4LDYgKzI0OCw4IEBA
IHZvaWQgRGlzcGxheUxpc3Q6OmFwcGVuZChJdGVtSGFuZGxlIGl0ZW0pCiAgICAgICAgIHJldHVy
biBhcHBlbmQ8RHJhd0ltYWdlQnVmZmVyPihpdGVtLmdldDxEcmF3SW1hZ2VCdWZmZXI+KCkpOwog
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgcmV0dXJuIGFwcGVu
ZDxEcmF3TmF0aXZlSW1hZ2U+KGl0ZW0uZ2V0PERyYXdOYXRpdmVJbWFnZT4oKSk7CisgICAgY2Fz
ZSBJdGVtVHlwZTo6RHJhd1N5c3RlbUltYWdlOgorICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdT
eXN0ZW1JbWFnZT4oaXRlbS5nZXQ8RHJhd1N5c3RlbUltYWdlPigpKTsKICAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3UGF0dGVybjoKICAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3UGF0dGVybj4oaXRl
bS5nZXQ8RHJhd1BhdHRlcm4+KCkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCBjZjYxNjg3M2Rm
ZjBkOGJhZDdkNmYxYjEzMDFhN2NjMTFmN2UwMzhiLi40NTc3NTUxODliZGFkZDcxOWQyNDVhNGU2
ZDJjODFiZGRiMWY3ZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVm
ZmVyLmNwcApAQCAtMTIxLDYgKzEyMSw5IEBAIHZvaWQgSXRlbUhhbmRsZTo6YXBwbHkoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToK
ICAgICAgICAgZ2V0PERyYXdOYXRpdmVJbWFnZT4oKS5hcHBseShjb250ZXh0KTsKICAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdTeXN0ZW1JbWFnZToKKyAgICAgICAgZ2V0
PERyYXdTeXN0ZW1JbWFnZT4oKS5hcHBseShjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuOwogICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgICAgICBnZXQ8RHJhd1BhdHRlcm4+KCku
YXBwbHkoY29udGV4dCk7CiAgICAgICAgIHJldHVybjsKQEAgLTMzOCw2ICszNDEsOSBAQCB2b2lk
IEl0ZW1IYW5kbGU6OmRlc3Ryb3koKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFn
ZToKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8
RHJhd05hdGl2ZUltYWdlPjo6dmFsdWUpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBJdGVt
VHlwZTo6RHJhd1N5c3RlbUltYWdlOgorICAgICAgICBnZXQ8RHJhd1N5c3RlbUltYWdlPigpLn5E
cmF3U3lzdGVtSW1hZ2UoKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdQYXR0ZXJuOgogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3Ry
dWN0aWJsZTxEcmF3UGF0dGVybj46OnZhbHVlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDg5LDYg
KzQ5NSw4IEBAIGJvb2wgSXRlbUhhbmRsZTo6c2FmZUNvcHkoSXRlbVR5cGUgaXRlbVR5cGUsIEl0
ZW1IYW5kbGUgZGVzdGluYXRpb24pIGNvbnN0CiAgICAgICAgIHJldHVybiBjb3B5SW50bzxEcmF3
TGluZXNGb3JUZXh0PihpdGVtT2Zmc2V0LCAqdGhpcyk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJh
d05hdGl2ZUltYWdlOgogICAgICAgICByZXR1cm4gY29weUludG88RHJhd05hdGl2ZUltYWdlPihp
dGVtT2Zmc2V0LCAqdGhpcyk7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1N5c3RlbUltYWdlOgor
ICAgICAgICByZXR1cm4gY29weUludG88RHJhd1N5c3RlbUltYWdlPihpdGVtT2Zmc2V0LCAqdGhp
cyk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIHJldHVybiBjb3B5
SW50bzxEcmF3UGF0dGVybj4oaXRlbU9mZnNldCwgKnRoaXMpOwogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdQYXRoOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwCmluZGV4
IGRhMDVkNmNiZTM4ZmEwYjYxNGZlYzllMzM2MTgwMDQ5N2Y2NzI0Y2YuLjU0ZWExYzg2ODJjMDc0
NDJlMmU4NDE0YjczMjhhYTMyNDgwMjVhNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtVHlwZS5jcHAKQEAgLTg0LDYgKzg0LDggQEAgc3RhdGljIHNpemVfdCBzaXplT2ZJdGVt
SW5CeXRlcyhJdGVtVHlwZSB0eXBlKQogICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdJbWFnZUJ1
ZmZlcik7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgogICAgICAgICByZXR1
cm4gc2l6ZW9mKERyYXdOYXRpdmVJbWFnZSk7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1N5c3Rl
bUltYWdlOgorICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdTeXN0ZW1JbWFnZSk7CiAgICAgY2Fz
ZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIHJldHVybiBzaXplb2YoRHJhd1BhdHRl
cm4pOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgpAQCAtMjE1LDYgKzIxNyw3IEBAIGJv
b2wgaXNEcmF3aW5nSXRlbShJdGVtVHlwZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdM
aW5lOgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6CiAgICAgY2FzZSBJdGVt
VHlwZTo6RHJhd05hdGl2ZUltYWdlOgorICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdTeXN0ZW1JbWFn
ZToKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3UGF0aDoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoKQEAgLTI5NCw2ICsyOTcsNyBA
QCBib29sIGlzSW5saW5lSXRlbShJdGVtVHlwZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OlNl
dExpbmVEYXNoOgogICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgogICAgIGNhc2UgSXRlbVR5
cGU6OlN0cm9rZVBhdGg6CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1N5c3RlbUltYWdlOgogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZh
Y3RvcjoKICNpZiBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaApp
bmRleCBhNGRmYTNkNzY5YWI5NTA5NzUzNWQzMTNmZjk2MWM0YWMwYTEwMGEyLi5kNjgzYjJhY2Y3
ODQ1Zjk5YzNjZDA5NWViOTExZTU0ZjFmOGNlMTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1UeXBlLmgKQEAgLTU0LDYgKzU0LDcgQEAgZW51bSBjbGFzcyBJdGVtVHlwZSA6IHVp
bnQ4X3QgewogICAgIERyYXdHbHlwaHMsCiAgICAgRHJhd0ltYWdlQnVmZmVyLAogICAgIERyYXdO
YXRpdmVJbWFnZSwKKyAgICBEcmF3U3lzdGVtSW1hZ2UsCiAgICAgRHJhd1BhdHRlcm4sCiAgICAg
RHJhd1JlY3QsCiAgICAgRHJhd0xpbmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5j
cHAKaW5kZXggM2YzNzgzNWRlNjkyNDIwMTRjZTljYjA2ZWY4N2E5ZDEwZWRiNTM5Ny4uMjNkMGJi
Y2M3MWMyODFjNTJjMzVhOGMyNTJkYTk2YzBhYjEyYTk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmNwcApAQCAtMzk4LDYgKzM5OCwxOCBAQCBzdGF0aWMgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd05hdGl2ZUltYWdlJiBpdGVtKQog
ICAgIHJldHVybiB0czsKIH0KIAordm9pZCBEcmF3U3lzdGVtSW1hZ2U6OmFwcGx5KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkgY29uc3QKK3sKKyAgICBjb250ZXh0LmRyYXdTeXN0ZW1JbWFnZSht
X3N5c3RlbUltYWdlLCBtX2Rlc3RpbmF0aW9uUmVjdCk7Cit9CisKK3N0YXRpYyBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3U3lzdGVtSW1hZ2UmIGl0ZW0p
Cit7CisgICAgLy8gRklYTUU6IGR1bXAgbW9yZSBzdHVmZi4KKyAgICB0cy5kdW1wUHJvcGVydHko
ImRlc3RpbmF0aW9uIiwgaXRlbS5kZXN0aW5hdGlvblJlY3QoKSk7CisgICAgcmV0dXJuIHRzOwor
fQorCiBEcmF3UGF0dGVybjo6RHJhd1BhdHRlcm4oUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IGltYWdlSWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKICAgICA6IG1faW1hZ2VJZGVudGlmaWVyKGlt
YWdlSWRlbnRpZmllcikKICAgICAsIG1fZGVzdGluYXRpb24oZGVzdFJlY3QpCkBAIC0xMDIxLDYg
KzEwMzMsNyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
SXRlbVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOiB0cyA8PCAiZHJh
dy1nbHlwaHMiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6IHRz
IDw8ICJkcmF3LWltYWdlLWJ1ZmZlciI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdO
YXRpdmVJbWFnZTogdHMgPDwgImRyYXctbmF0aXZlLWltYWdlIjsgYnJlYWs7CisgICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd1N5c3RlbUltYWdlOiB0cyA8PCAiZHJhdy1zeXN0ZW0taW1hZ2UiOyBicmVh
azsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjogdHMgPDwgImRyYXctcGF0dGVybiI7
IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OiB0cyA8PCAiZHJhdy1yZWN0Ijsg
YnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6IHRzIDw8ICJkcmF3LWxpbmUiOyBi
cmVhazsKQEAgLTExNDEsNiArMTE1NCw5IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIEl0ZW1IYW5kbGUgaXRlbSkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZl
SW1hZ2U6CiAgICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdOYXRpdmVJbWFnZT4oKTsKICAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1N5c3RlbUltYWdlOgorICAgICAgICB0
cyA8PCBpdGVtLmdldDxEcmF3U3lzdGVtSW1hZ2U+KCk7CisgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3UGF0
dGVybj4oKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApp
bmRleCBmNTFkMWY4Zjk0MWFhZjM0YTRlODlmNThkNWQ1MTk0Y2E5NjYzMzhlLi45N2NiNWZjOGQw
NGJhODY2MmI3MmM3ZGRlZWJjNDQxNTVjMjgyNWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmgKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJQaXhlbEJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlci5oIgorI2luY2x1ZGUgIlN5c3RlbUltYWdlLmgiCiAjaW5jbHVkZSA8dmFyaWFudD4KICNp
bmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KQEAg
LTk5Myw2ICs5OTQsNjEgQEAgcHJpdmF0ZToKICAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBtX29w
dGlvbnM7CiB9OwogCitjbGFzcyBEcmF3U3lzdGVtSW1hZ2UgeworcHVibGljOgorICAgIHN0YXRp
YyBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5cGUgPSBJdGVtVHlwZTo6RHJhd1N5c3RlbUltYWdl
OworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSBmYWxzZTsKKyAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9IHRydWU7CisKKyAgICBEcmF3U3lz
dGVtSW1hZ2UoU3lzdGVtSW1hZ2UmIHN5c3RlbUltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uUmVjdCkKKyAgICAgICAgOiBtX3N5c3RlbUltYWdlKHN5c3RlbUltYWdlKQorICAgICAg
ICAsIG1fZGVzdGluYXRpb25SZWN0KGRlc3RpbmF0aW9uUmVjdCkKKyAgICB7CisgICAgfQorCisg
ICAgY29uc3QgUmVmPFN5c3RlbUltYWdlPiYgc3lzdGVtSW1hZ2UoKSBjb25zdCB7IHJldHVybiBt
X3N5c3RlbUltYWdlOyB9CisgICAgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvblJlY3QoKSBj
b25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVjdDsgfQorCisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8
RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0K
KyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3ND
b250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KKworICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxEcmF3U3lzdGVtSW1hZ2U+
IGRlY29kZShEZWNvZGVyJik7CisKK3ByaXZhdGU6CisgICAgUmVmPFN5c3RlbUltYWdlPiBtX3N5
c3RlbUltYWdlOworICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uUmVjdDsKK307CisKK3RlbXBs
YXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIERyYXdTeXN0ZW1JbWFnZTo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3N5c3RlbUltYWdlOworICAgIGVu
Y29kZXIgPDwgbV9kZXN0aW5hdGlvblJlY3Q7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+
CitzdGQ6Om9wdGlvbmFsPERyYXdTeXN0ZW1JbWFnZT4gRHJhd1N5c3RlbUltYWdlOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3sKKyNkZWZpbmUgREVDT0RFKG5hbWUsIHR5cGUpIFwKKyAgICBz
dGQ6Om9wdGlvbmFsPHR5cGU+IG5hbWU7IFwKKyAgICBkZWNvZGVyID4+IG5hbWU7IFwKKyAgICBp
ZiAoIW5hbWUpIFwKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgXAorCisgICAgREVDT0RF
KHN5c3RlbUltYWdlLCBSZWY8U3lzdGVtSW1hZ2U+KQorICAgIERFQ09ERShkZXN0aW5hdGlvblJl
Y3QsIEZsb2F0UmVjdCkKKworI3VuZGVmIERFQ09ERQorCisgICAgcmV0dXJuIHsgeworICAgICAg
ICBXVEZNb3ZlKCpzeXN0ZW1JbWFnZSksCisgICAgICAgIFdURk1vdmUoKmRlc3RpbmF0aW9uUmVj
dCksCisgICAgfSB9OworfQorCiBjbGFzcyBEcmF3UGF0dGVybiB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpEcmF3UGF0dGVybjsK
QEAgLTIyMjAsNiArMjI3Niw3IEBAIHVzaW5nIERpc3BsYXlMaXN0SXRlbSA9IHN0ZDo6dmFyaWFu
dAogICAgICwgRHJhd1BhdGgKICAgICAsIERyYXdQYXR0ZXJuCiAgICAgLCBEcmF3UmVjdAorICAg
ICwgRHJhd1N5c3RlbUltYWdlCiAgICAgLCBFbmRUcmFuc3BhcmVuY3lMYXllcgogICAgICwgRmls
bENvbXBvc2l0ZWRSZWN0CiAgICAgLCBGaWxsRWxsaXBzZQpAQCAtMjMwNiw2ICsyMzYzLDcgQEAg
dGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5
cGU+IHsKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdHbHlwaHMsCiAg
ICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXIsCiAgICAg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UsCisgICAgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3U3lzdGVtSW1hZ2UsCiAgICAgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0dGVybiwKICAgICBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdSZWN0LAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6RHJhd0xpbmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5j
cHAKaW5kZXggZjg5NzU3Yzc2NzdiYjk0MTcxMTE5MTlmMDhmODUyZGY0OTM0OGQ1ZS4uZWVlNDQ3
MWQzNTRlNzUxNTMxMjUxODlkZmNjOTQxOGEzOTQ1MTRhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMTk2LDYgKzE5NiwxMSBAQCB2b2lkIFJlY29yZGVy
OjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGlt
YWdlU2l6ZSwgYwogICAgIHJlY29yZERyYXdOYXRpdmVJbWFnZShpbWFnZS5yZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7
CiB9CiAKK3ZvaWQgUmVjb3JkZXI6OmRyYXdTeXN0ZW1JbWFnZShTeXN0ZW1JbWFnZSYgc3lzdGVt
SW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0KQoreworICAgIHJlY29yZERy
YXdTeXN0ZW1JbWFnZShzeXN0ZW1JbWFnZSwgZGVzdGluYXRpb25SZWN0KTsKK30KKwogdm9pZCBS
ZWNvcmRlcjo6ZHJhd1BhdHRlcm4oTmF0aXZlSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9h
dFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewog
ICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCBjYWZmODhjYmNmZWQ1NDE2ZGI4MmZmMTZiOGRkOGQz
MmJmYzFiNzRmLi44NDVlYzAwNzcyZWQyYzU0YTFlNmNiMjZiMjE1MWRhYmFhNmVjMDc1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTg0LDYgKzg0LDcgQEAgcHJv
dGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCByZWNvcmREcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBj
b25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWdu
ZWQgY291bnQsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9k
ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmREcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZm
ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWNv
cmREcmF3TmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlSWRlbnRp
ZmllciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZERyYXdTeXN0ZW1JbWFnZShTeXN0ZW1JbWFn
ZSYsIGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRHJhd1Bh
dHRlcm4oUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3Jk
QmVnaW5UcmFuc3BhcmVuY3lMYXllcihmbG9hdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWNv
cmRFbmRUcmFuc3BhcmVuY3lMYXllcigpID0gMDsKQEAgLTIyMCw2ICsyMjEsNyBAQCBwcml2YXRl
OgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIm
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkcmF3U3lzdGVtSW1hZ2UoU3lzdGVtSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmKSBmaW5h
bDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdQYXR0ZXJuKE5hdGl2ZUltYWdlJiwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBmaW5hbDsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAKaW5kZXggMjdkMzQwMjU1ODU2NDQwZjJhMTgx
OGQzMmY3ZmEyMmYyOTljNzk2ZC4uMWZkYzZiYTU2YmZkYjI2MzZlZmIzNDYyYWRhMmE5OTBkMzM4
OTk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3Bw
CkBAIC0xODIsNiArMTgyLDExIEBAIHZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmREcmF3TmF0aXZl
SW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlSWRlbnRpCiAgICAgYXBwZW5k
PERyYXdOYXRpdmVJbWFnZT4oaW1hZ2VJZGVudGlmaWVyLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBz
cmNSZWN0LCBvcHRpb25zKTsKIH0KIAordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZERyYXdTeXN0
ZW1JbWFnZShTeXN0ZW1JbWFnZSYgc3lzdGVtSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb25SZWN0KQoreworICAgIGFwcGVuZDxEcmF3U3lzdGVtSW1hZ2U+KHN5c3RlbUltYWdlLCBk
ZXN0aW5hdGlvblJlY3QpOworfQorCiB2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRHJhd1BhdHRl
cm4oUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlSWRlbnRpZmllciwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9h
dFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewog
ICAgIGFwcGVuZDxEcmF3UGF0dGVybj4oaW1hZ2VJZGVudGlmaWVyLCBkZXN0UmVjdCwgdGlsZVJl
Y3QsIHRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaAppbmRleCBmNzY0M2Q2NmM4NmMzMWZkYWI0MjNl
ZWFkMzJjOTQ4OTEzNTcyNjBhLi42NDIyNjVmMDk4MDIyY2YyYjA1ZjE4MGMxNzRmYTAzNDYyZjJk
ZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaApAQCAt
NzAsNiArNzAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVjb3JkRHJhd0dseXBocyhjb25zdCBG
b250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSos
IHVuc2lnbmVkIGNvdW50LCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290
aGluZ01vZGUpIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkRHJhd0ltYWdlQnVmZmVyKEltYWdlQnVm
ZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkRHJh
d05hdGl2ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUlkZW50aWZpZXIs
IGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgZmlu
YWw7CisgICAgdm9pZCByZWNvcmREcmF3U3lzdGVtSW1hZ2UoU3lzdGVtSW1hZ2UmLCBjb25zdCBG
bG9hdFJlY3QmKSBmaW5hbDsKICAgICB2b2lkIHJlY29yZERyYXdQYXR0ZXJuKFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmID0geyB9KSBmaW5hbDsKICAgICB2b2lkIHJlY29yZEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIo
ZmxvYXQpIGZpbmFsOwogICAgIHZvaWQgcmVjb3JkRW5kVHJhbnNwYXJlbmN5TGF5ZXIoKSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW0KaW5kZXgg
ZGNlMjY3NGM0ZjI4ODBmMzliNTY1MTc0MTMzY2UzZTg5MWVjN2M4Yi4uYmYyODliYTA5NzE2MmRm
Mjg2NTAzM2U1OGZlMmNkODFmM2M3MTRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lQ29jb2EubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5o
IgogI2ltcG9ydCAiUmVuZGVyVGhlbWVDb2NvYS5oIgogCisjaW1wb3J0ICJBcHBsZVBheUxvZ29T
eXN0ZW1JbWFnZS5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIkhU
TUxJbnB1dEVsZW1lbnQuaCIKICNpbXBvcnQgIkltYWdlQnVmZmVyLmgiCkBAIC0xMDAsNjQgKzEw
MSw4IEBAIHZvaWQgUmVuZGVyVGhlbWVDb2NvYTo6YWRqdXN0QXBwbGVQYXlCdXR0b25TdHlsZShS
ZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEVsZW1lCiAgICAgfQogfQogCi1zdGF0aWMgUEtQYXlt
ZW50QnV0dG9uU3R5bGUgdG9QS1BheW1lbnRCdXR0b25TdHlsZShBcHBsZVBheUJ1dHRvblN0eWxl
IHN0eWxlKQotewotICAgIHN3aXRjaCAoc3R5bGUpIHsKLSAgICBjYXNlIEFwcGxlUGF5QnV0dG9u
U3R5bGU6OldoaXRlOgotICAgICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9uU3R5bGVXaGl0ZTsK
LSAgICBjYXNlIEFwcGxlUGF5QnV0dG9uU3R5bGU6OldoaXRlT3V0bGluZToKLSAgICAgICAgcmV0
dXJuIFBLUGF5bWVudEJ1dHRvblN0eWxlV2hpdGVPdXRsaW5lOwotICAgIGNhc2UgQXBwbGVQYXlC
dXR0b25TdHlsZTo6QmxhY2s6Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRCdXR0b25TdHlsZUJs
YWNrOwotICAgIH0KLX0KLQotc3RhdGljIFBLUGF5bWVudEJ1dHRvblR5cGUgdG9QS1BheW1lbnRC
dXR0b25UeXBlKEFwcGxlUGF5QnV0dG9uVHlwZSB0eXBlKQotewotICAgIHN3aXRjaCAodHlwZSkg
ewotICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpQbGFpbjoKLSAgICAgICAgcmV0dXJuIFBL
UGF5bWVudEJ1dHRvblR5cGVQbGFpbjsKLSAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6QnV5
OgotICAgICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZUJ1eTsKLSAgICBjYXNlIEFwcGxl
UGF5QnV0dG9uVHlwZTo6U2V0VXA6Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRCdXR0b25UeXBl
U2V0VXA7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OkRvbmF0ZToKLSAgICAgICAgcmV0
dXJuIFBLUGF5bWVudEJ1dHRvblR5cGVEb25hdGU7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5
cGU6OkNoZWNrT3V0OgotICAgICAgICByZXR1cm4gUEtQYXltZW50QnV0dG9uVHlwZUNoZWNrb3V0
OwotICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpCb29rOgotICAgICAgICByZXR1cm4gUEtQ
YXltZW50QnV0dG9uVHlwZUJvb2s7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OlN1YnNj
cmliZToKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRvblR5cGVTdWJzY3JpYmU7Ci0jaWYg
SEFWRShQQVNTS0lUX05FV19CVVRUT05fVFlQRVMpCi0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5
cGU6OlJlbG9hZDoKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRvblR5cGVSZWxvYWQ7Ci0g
ICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OkFkZE1vbmV5OgotICAgICAgICByZXR1cm4gUEtQ
YXltZW50QnV0dG9uVHlwZUFkZE1vbmV5OwotICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpU
b3BVcDoKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRvblR5cGVUb3BVcDsKLSAgICBjYXNl
IEFwcGxlUGF5QnV0dG9uVHlwZTo6T3JkZXI6Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRCdXR0
b25UeXBlT3JkZXI7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OlJlbnQ6Ci0gICAgICAg
IHJldHVybiBQS1BheW1lbnRCdXR0b25UeXBlUmVudDsKLSAgICBjYXNlIEFwcGxlUGF5QnV0dG9u
VHlwZTo6U3VwcG9ydDoKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRvblR5cGVTdXBwb3J0
OwotICAgIGNhc2UgQXBwbGVQYXlCdXR0b25UeXBlOjpDb250cmlidXRlOgotICAgICAgICByZXR1
cm4gUEtQYXltZW50QnV0dG9uVHlwZUNvbnRyaWJ1dGU7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRv
blR5cGU6OlRpcDoKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJ1dHRvblR5cGVUaXA7Ci0jZW5k
aWYKLSAgICB9Ci19Ci0KIGJvb2wgUmVuZGVyVGhlbWVDb2NvYTo6cGFpbnRBcHBsZVBheUJ1dHRv
bihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgSW50UmVjdCYgcGFpbnRSZWN0KQogewotICAgIGF1dG8mIGRlc3RpbmF0aW9uQ29u
dGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7Ci0KLSAgICBhdXRvIGltYWdlQnVmZmVyID0gZGVz
dGluYXRpb25Db250ZXh0LmNyZWF0ZUFsaWduZWRJbWFnZUJ1ZmZlcihwYWludFJlY3Quc2l6ZSgp
KTsKLSAgICBpZiAoIWltYWdlQnVmZmVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBh
dXRvJiBzdHlsZSA9IHJlbmRlcmVyLnN0eWxlKCk7CiAgICAgYXV0byBsYXJnZXN0Q29ybmVyUmFk
aXVzID0gc3RkOjptYXg8Q0dGbG9hdD4oewogICAgICAgICBmbG9hdFZhbHVlRm9yTGVuZ3RoKHN0
eWxlLmJvcmRlclRvcExlZnRSYWRpdXMoKS5oZWlnaHQsIHBhaW50UmVjdC5oZWlnaHQoKSksCkBA
IC0xNjksMTQgKzExNCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVDb2NvYTo6cGFpbnRBcHBsZVBheUJ1
dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQCiAgICAgICAgIGZsb2F0
VmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKS5oZWlnaHQsIHBh
aW50UmVjdC5oZWlnaHQoKSksCiAgICAgICAgIGZsb2F0VmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9y
ZGVyQm90dG9tUmlnaHRSYWRpdXMoKS53aWR0aCwgcGFpbnRSZWN0LndpZHRoKCkpCiAgICAgfSk7
Ci0KLSAgICBhdXRvJiBpbWFnZUNvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOwotICAg
IGltYWdlQ29udGV4dC5zZXRTaG91bGRTbW9vdGhGb250cyh0cnVlKTsKLSAgICBpbWFnZUNvbnRl
eHQuc2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKGZhbHNlKTsKLSAgICBpbWFnZUNvbnRl
eHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7Ci0gICAgUEtEcmF3QXBwbGVQYXlCdXR0b25XaXRo
Q29ybmVyUmFkaXVzKGltYWdlQ29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgQ0dSZWN0TWFrZSgw
LCAtcGFpbnRSZWN0LmhlaWdodCgpLCBwYWludFJlY3Qud2lkdGgoKSwgcGFpbnRSZWN0LmhlaWdo
dCgpKSwgMS4wLCBsYXJnZXN0Q29ybmVyUmFkaXVzLCB0b1BLUGF5bWVudEJ1dHRvblR5cGUoc3R5
bGUuYXBwbGVQYXlCdXR0b25UeXBlKCkpLCB0b1BLUGF5bWVudEJ1dHRvblN0eWxlKHN0eWxlLmFw
cGxlUGF5QnV0dG9uU3R5bGUoKSksIHN0eWxlLmNvbXB1dGVkTG9jYWxlKCkpOwotCi0gICAgZGVz
dGluYXRpb25Db250ZXh0LmRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihXVEZNb3ZlKGltYWdlQnVm
ZmVyKSwgcGFpbnRSZWN0KTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdTeXN0ZW1JbWFn
ZShBcHBsZVBheUJ1dHRvblN5c3RlbUltYWdlOjpjcmVhdGUoc3R5bGUuYXBwbGVQYXlCdXR0b25U
eXBlKCksIHN0eWxlLmFwcGxlUGF5QnV0dG9uU3R5bGUoKSwgc3R5bGUuY29tcHV0ZWRMb2NhbGUo
KSwgbGFyZ2VzdENvcm5lclJhZGl1cyksIHBhaW50UmVjdCk7CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4
IDA5MDU4Zjc5Y2U3MTc1NTAzNGZkYTg0OGQ0MmFjNmE5OTJkNDRlNjguLjdjNGJmYzg1ZmZmZjFi
NjlkZmQ1YzZhNWZkOWZkM2Q0MTVmOTljYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC0yNSw2ICsyNSw3IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIkFuaW1hdGlvbkxpc3QuaCIKKyNpbmNsdWRlICJBcHBsZVBheUJ1dHRvblN5c3Rl
bUltYWdlLmgiCiAjaW5jbHVkZSAiQm9yZGVyVmFsdWUuaCIKICNpbmNsdWRlICJDU1NMaW5lQm94
Q29udGFpblZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMu
Y3BwCmluZGV4IGZlNmE0YzA2YjI0OTk2ZTIyYWI5YWRlYmNlOTRkMGQ2OGQzZjllMTUuLjkyYmM2
YTgxMmExMThhNTE5ZjBiNDZjOTRmOTcyZTMyYjNhNWVlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmNwcApAQCAt
NTIsNDIgKzUyLDYgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgQW5p
bWF0aW9uUGxheVN0YXRlIHBsYXlTdGF0ZSkKICAgICByZXR1cm4gdHM7CiB9CiAKLSNpZiBFTkFC
TEUoQVBQTEVfUEFZKQotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgQXBw
bGVQYXlCdXR0b25TdHlsZSBidXR0b25TdHlsZSkKLXsKLSAgICBzd2l0Y2ggKGJ1dHRvblN0eWxl
KSB7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblN0eWxlOjpXaGl0ZTogdHMgPDwgIndoaXRlIjsg
YnJlYWs7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblN0eWxlOjpXaGl0ZU91dGxpbmU6IHRzIDw8
ICJ3aGl0ZS1vdXRsaW5lIjsgYnJlYWs7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblN0eWxlOjpC
bGFjazogdHMgPDwgImJsYWNrIjsgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiB0czsKLX0KLQot
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgQXBwbGVQYXlCdXR0b25UeXBl
IHBsYXlTdGF0ZSkKLXsKLSAgICBzd2l0Y2ggKHBsYXlTdGF0ZSkgewotICAgIGNhc2UgQXBwbGVQ
YXlCdXR0b25UeXBlOjpQbGFpbjogdHMgPDwgInBsYWluIjsgYnJlYWs7Ci0gICAgY2FzZSBBcHBs
ZVBheUJ1dHRvblR5cGU6OkJ1eTogdHMgPDwgImJ1eSI7IGJyZWFrOwotICAgIGNhc2UgQXBwbGVQ
YXlCdXR0b25UeXBlOjpTZXRVcDogdHMgPDwgInNldHVwIjsgYnJlYWs7Ci0gICAgY2FzZSBBcHBs
ZVBheUJ1dHRvblR5cGU6OkRvbmF0ZTogdHMgPDwgImRvbmF0ZSI7IGJyZWFrOwotICAgIGNhc2Ug
QXBwbGVQYXlCdXR0b25UeXBlOjpDaGVja091dDogdHMgPDwgImNoZWNrb3V0IjsgYnJlYWs7Ci0g
ICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OkJvb2s6IHRzIDw8ICJib29rIjsgYnJlYWs7Ci0g
ICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OlN1YnNjcmliZTogdHMgPDwgInN1YnNjcmliZSI7
IGJyZWFrOwotI2lmIEVOQUJMRShBUFBMRV9QQVlfTkVXX0JVVFRPTl9UWVBFUykKLSAgICBjYXNl
IEFwcGxlUGF5QnV0dG9uVHlwZTo6UmVsb2FkOiB0cyA8PCAicmVsb2FkIjsgYnJlYWs7Ci0gICAg
Y2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OkFkZE1vbmV5OiB0cyA8PCAiYWRkLW1vbmV5IjsgYnJl
YWs7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6OlRvcFVwOiB0cyA8PCAidG9wLXVwIjsg
YnJlYWs7Ci0gICAgY2FzZSBBcHBsZVBheUJ1dHRvblR5cGU6Ok9yZGVyOiB0cyA8PCAib3JkZXIi
OyBicmVhazsKLSAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6UmVudDogdHMgPDwgInJlbnQi
OyBicmVhazsKLSAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6U3VwcG9ydDogdHMgPDwgInN1
cHBvcnQiOyBicmVhazsKLSAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6Q29udHJpYnV0ZTog
dHMgPDwgImNvbnRyaWJ1dGUiOyBicmVhazsKLSAgICBjYXNlIEFwcGxlUGF5QnV0dG9uVHlwZTo6
VGlwOiB0cyA8PCAidGlwIjsgYnJlYWs7Ci0jZW5kaWYKLSAgICB9Ci0gICAgcmV0dXJuIHRzOwot
fQotI2VuZGlmCi0KIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEFzcGVj
dFJhdGlvVHlwZSBhc3BlY3RSYXRpb1R5cGUpCiB7CiAgICAgc3dpdGNoIChhc3BlY3RSYXRpb1R5
cGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZUNvbnN0YW50cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlQ29uc3RhbnRzLmgKaW5kZXggMGE5NGI2ZGYzZDQ3NDhiNDJhYTM3Y2NjZWRjMzdiYzkzNzUy
NmFmYi4uMWFiZjY5YTRmMGEwNzM4NDc5MTQwNzE0ZGRlOWYyOGZjNGRiMzg3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRz
LmgKQEAgLTExNjEsMzQgKzExNjEsNiBAQCBlbnVtIGNsYXNzIFRyYWlsaW5nV29yZCA6IHVpbnQ4
X3QgewogfTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKEFQUExFX1BBWSkKLWVudW0gY2xhc3MgQXBw
bGVQYXlCdXR0b25TdHlsZSA6IHVpbnQ4X3QgewotICAgIFdoaXRlLAotICAgIFdoaXRlT3V0bGlu
ZSwKLSAgICBCbGFjaywKLX07Ci0KLWVudW0gY2xhc3MgQXBwbGVQYXlCdXR0b25UeXBlIDogdWlu
dDhfdCB7Ci0gICAgUGxhaW4sCi0gICAgQnV5LAotICAgIFNldFVwLAotICAgIERvbmF0ZSwKLSAg
ICBDaGVja091dCwKLSAgICBCb29rLAotICAgIFN1YnNjcmliZSwKLSNpZiBFTkFCTEUoQVBQTEVf
UEFZX05FV19CVVRUT05fVFlQRVMpCi0gICAgUmVsb2FkLAotICAgIEFkZE1vbmV5LAotICAgIFRv
cFVwLAotICAgIE9yZGVyLAotICAgIFJlbnQsCi0gICAgU3VwcG9ydCwKLSAgICBDb250cmlidXRl
LAotICAgIFRpcCwKLSNlbmRpZgotfTsKLSNlbmRpZgotCiAvLyBUaGVzZSBhcmUgYWxsIG1pbmlt
aXplZCBjb21iaW5hdGlvbnMgb2YgcGFpbnQtb3JkZXIuCiBlbnVtIGNsYXNzIFBhaW50T3JkZXIg
OiB1aW50OF90IHsKICAgICBOb3JtYWwsCkBAIC0xMjQ0LDEwICsxMjE2LDYgQEAgZXh0ZXJuIGNv
bnN0IGZsb2F0IGRlZmF1bHRNaXRlckxpbWl0OwogCiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoV1RGOjpUZXh0U3RyZWFtJiwgQW5pbWF0aW9uRmlsbE1vZGUpOwogV1RGOjpUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIEFuaW1hdGlvblBsYXlTdGF0ZSk7Ci0jaWYg
RU5BQkxFKEFQUExFX1BBWSkKLVdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRT
dHJlYW0mLCBBcHBsZVBheUJ1dHRvblN0eWxlKTsKLVdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChXVEY6OlRleHRTdHJlYW0mLCBBcHBsZVBheUJ1dHRvblR5cGUpOwotI2VuZGlmCiBXVEY6OlRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgQXNwZWN0UmF0aW9UeXBlKTsK
IFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBBdXRvUmVwZWF0
VHlwZSk7CiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgQmFj
a2ZhY2VWaXNpYmlsaXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCA3ODQ2
NDYzZDk5MGJhZGMzMGFmOTg1YmUwNTdlZjA2MmIwYzBmOGZiLi41NDM4MTgyZGRlODc2M2ViYWQz
OGYxOTJkZjc5NWFhMDYwYjY1MWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBA
IC0yODMsNiArMjgzLDExIEBAIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6ZHJhd05h
dGl2ZUltYWdlV2l0aFF1YWxpZmllZElkZW50aWZpZXIoUXVhbGlmaWVkCiAgICAgaGFuZGxlSXRl
bShEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlKGltYWdlSWRlbnRpZmllci5vYmplY3QoKSwg
aW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyksICppbWFnZSk7CiB9CiAKK3Zv
aWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6ZHJhd1N5c3RlbUltYWdlKFN5c3RlbUltYWdl
JiBzeXN0ZW1JbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvblJlY3QpCit7CisgICAg
aGFuZGxlSXRlbShEaXNwbGF5TGlzdDo6RHJhd1N5c3RlbUltYWdlKHN5c3RlbUltYWdlLCBkZXN0
aW5hdGlvblJlY3QpKTsKK30KKwogdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpkcmF3
UGF0dGVybihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VJZGVudGlmaWVyLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
CiB7CiAgICAgLy8gSW1tZWRpYXRlbHkgdHVybiB0aGUgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyICh3aGljaCBpcyBlcnJvci1wcm9uZSkgdG8gYSBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCAyOWEyMjBiYmExZDdh
YzE5OGE2ODIzZmViZGZkNWUyN2M3Yzg2NGU2Li4zYmJhZjc2NWQwNWY0NGFiZjRkOTYxZTc2NmNl
NjU0Njk4ZWRlMjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTgyLDYgKzgyLDcg
QEAgcHVibGljOgogICAgIHZvaWQgZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHNvdXJjZUltYWdlSWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIElQQzo6Rmls
dGVyUmVmZXJlbmNlKTsKICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmIGRlc3RpbmF0aW9uUmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwogICAgIHZvaWQg
ZHJhd05hdGl2ZUltYWdlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFn
ZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJik7CisgICAgdm9pZCBk
cmF3U3lzdGVtSW1hZ2UoV2ViQ29yZTo6U3lzdGVtSW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmKTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciBpbWFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IFdlYkNvcmU6
OkFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRp
b25zJik7CiAgICAgdm9pZCBiZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkpOwog
ICAgIHZvaWQgZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXIubWVzc2FnZXMuaW4KaW5kZXggOTVkYmU4ZGQ1NWMyYWZmMmRmMDA1ODAzODYzYjA3
OGU5YjU5ZDU5YS4uMjgwMmZmZThmODM5N2MwZWQ0ZGYxMjFhMDE3ZmU3ODEwOGZmNmMyMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlM
aXN0UmVjb3JkZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIubWVzc2FnZXMuaW4KQEAgLTQ4LDYgKzQ4
LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlciBOb3RSZWZDb3VudGVk
IFN0cmVhbSB7CiAgICAgRHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHNvdXJjZUltYWdlSWRlbnRpZmllciwg
V2ViQ29yZTo6RmxvYXRSZWN0IHNvdXJjZUltYWdlUmVjdCwgSVBDOjpGaWx0ZXJSZWZlcmVuY2Ug
ZmlsdGVyKQogICAgIERyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpGbG9hdFJlY3QgZGVzdGlu
YXRpb25SZWN0LCBXZWJDb3JlOjpGbG9hdFJlY3Qgc3JjUmVjdCwgc3RydWN0IFdlYkNvcmU6Oklt
YWdlUGFpbnRpbmdPcHRpb25zIG9wdGlvbnMpCiAgICAgRHJhd05hdGl2ZUltYWdlKFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZs
b2F0U2l6ZSBpbWFnZVNpemUsIFdlYkNvcmU6OkZsb2F0UmVjdCBkZXN0UmVjdCwgV2ViQ29yZTo6
RmxvYXRSZWN0IHNyY1JlY3QsIHN0cnVjdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyBv
cHRpb25zKQorICAgIERyYXdTeXN0ZW1JbWFnZShSZWY8V2ViQ29yZTo6U3lzdGVtSW1hZ2U+IHN5
c3RlbUltYWdlLCBXZWJDb3JlOjpGbG9hdFJlY3QgZGVzdGluYXRpb25SZWN0KQogICAgIERyYXdQ
YXR0ZXJuKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OkZsb2F0UmVjdCBkZXN0UmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0IHRpbGVS
ZWN0LCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtLCBXZWJDb3JlOjpGbG9hdFBv
aW50IHBoYXNlLCBXZWJDb3JlOjpGbG9hdFNpemUgc3BhY2luZywgc3RydWN0IFdlYkNvcmU6Oklt
YWdlUGFpbnRpbmdPcHRpb25zIG9wdGlvbnMpCiAgICAgQmVnaW5UcmFuc3BhcmVuY3lMYXllcihm
bG9hdCBvcGFjaXR5KQogICAgIEVuZFRyYW5zcGFyZW5jeUxheWVyKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDY3MGQ0MTUxZDhiMjQ2YWNiYmU2NTExOWM0
OTdmNmQzMTM0MGZhZDcuLjhjOWZmMjM5YTE2NTI4Y2JhZGJlNTFmYjA4M2E0YzE2MGI0YjQ4YjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysr
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNjM3LDYgKzYz
Nyw3IEBAIGRlZiBjbGFzc190ZW1wbGF0ZV9oZWFkZXJzKHRlbXBsYXRlX3N0cmluZyk6CiAgICAg
ICAgICdzdGQ6Om9wdGlvbmFsJzogeydoZWFkZXJzJzogWyc8b3B0aW9uYWw+J10sICdhcmd1bWVu
dF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgICAgICdzdGQ6
OnBhaXInOiB7J2hlYWRlcnMnOiBbJzx1dGlsaXR5PiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVy
cyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnSVBDOjpBcnJheVJlZmVyZW5j
ZSc6IHsnaGVhZGVycyc6IFsnIkFycmF5UmVmZXJlbmNlLmgiJ10sICdhcmd1bWVudF9jb2Rlcl9o
ZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCisgICAgICAgICdSZWYnOiB7J2hlYWRl
cnMnOiBbJzx3dGYvUmVmLmg+J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1l
bnRDb2RlcnMuaCInXX0sCiAgICAgICAgICdSZWZQdHInOiB7J2hlYWRlcnMnOiBbJzx3dGYvUmVm
Q291bnRlZC5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJz
LmgiJ119LAogICAgICAgICAnUmV0YWluUHRyJzogeydoZWFkZXJzJzogWyc8d3RmL1JldGFpblB0
ci5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzQ0YuaCIn
XX0sCiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAKaW5kZXggMjdhMDMzZjcwY2RlNDFmMmFmZGExMmIwYTE4NWQ3MTE0YjQwZDEwNi4uZTYw
ZWJlMmFmZmEyZmNlMWExY2NlMzc0ZjdiZjg4OGY0MGViZGI3OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0zMSw2ICszMSw5IEBACiAj
aW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9BcHBsZVBheUJ1dHRvblN5c3RlbUltYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9BcHBsZVBh
eUxvZ29TeXN0ZW1JbWFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9CbG9iUGFydC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVRdWVy
eU9wdGlvbnMuaD4KQEAgLTg0LDYgKzg3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VX
b3JrZXJEYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZURhdGEuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3lzdGVtSW1hZ2UuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1RleHRDaGVja2VyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9UZXh0SW5kaWNhdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1pbmdGdW5jdGlvbi5oPgpA
QCAtMzE3NSw2ICszMTc5LDUyIEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVy
PiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29kCiAgICAgcmV0dXJu
IFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciB7IFdURk1vdmUoYnVmZmVyKSB9OwogfQogCit0ZW1wbGF0
ZTx0eXBlbmFtZSBFbmNvZGVyPgordm9pZCBBcmd1bWVudENvZGVyPFJlZjxTeXN0ZW1JbWFnZT4+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFN5c3RlbUltYWdlPiYgc3lzdGVt
SW1hZ2UpCit7CisgICAgZW5jb2RlciA8PCBzeXN0ZW1JbWFnZS0+c3lzdGVtSW1hZ2VUeXBlKCk7
CisKKyAgICBzd2l0Y2ggKHN5c3RlbUltYWdlLT5zeXN0ZW1JbWFnZVR5cGUoKSkgeworI2lmIEVO
QUJMRShBUFBMRV9QQVkpCisgICAgY2FzZSBTeXN0ZW1JbWFnZVR5cGU6OkFwcGxlUGF5QnV0dG9u
OgorICAgICAgICBkb3duY2FzdDxBcHBsZVBheUJ1dHRvblN5c3RlbUltYWdlPihzeXN0ZW1JbWFn
ZS5nZXQoKSkuZW5jb2RlKGVuY29kZXIpOworICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIFN5
c3RlbUltYWdlVHlwZTo6QXBwbGVQYXlMb2dvOgorICAgICAgICBkb3duY2FzdDxBcHBsZVBheUxv
Z29TeXN0ZW1JbWFnZT4oc3lzdGVtSW1hZ2UuZ2V0KCkpLmVuY29kZShlbmNvZGVyKTsKKyAgICAg
ICAgcmV0dXJuOworI2VuZGlmCisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9
CisKK3RlbXBsYXRlCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFN5c3RlbUltYWdlPj46OmVuY29k
ZTxFbmNvZGVyPihFbmNvZGVyJiwgY29uc3QgUmVmPFN5c3RlbUltYWdlPiYpOwordGVtcGxhdGUK
K3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8U3lzdGVtSW1hZ2U+Pjo6ZW5jb2RlPFN0cmVhbUNvbm5l
Y3Rpb25FbmNvZGVyPihTdHJlYW1Db25uZWN0aW9uRW5jb2RlciYsIGNvbnN0IFJlZjxTeXN0ZW1J
bWFnZT4mKTsKKworc3RkOjpvcHRpb25hbDxSZWY8U3lzdGVtSW1hZ2U+PiBBcmd1bWVudENvZGVy
PFJlZjxTeXN0ZW1JbWFnZT4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6
Om9wdGlvbmFsPFN5c3RlbUltYWdlVHlwZT4gc3lzdGVtSW1hZ2VUeXBlOworICAgIGRlY29kZXIg
Pj4gc3lzdGVtSW1hZ2VUeXBlOworICAgIGlmICghc3lzdGVtSW1hZ2VUeXBlKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3dpdGNoICgqc3lzdGVtSW1hZ2VUeXBlKSB7Cisj
aWYgRU5BQkxFKEFQUExFX1BBWSkKKyAgICBjYXNlIFN5c3RlbUltYWdlVHlwZTo6QXBwbGVQYXlC
dXR0b246CisgICAgICAgIHJldHVybiBBcHBsZVBheUJ1dHRvblN5c3RlbUltYWdlOjpkZWNvZGUo
ZGVjb2Rlcik7CisKKyAgICBjYXNlIFN5c3RlbUltYWdlVHlwZTo6QXBwbGVQYXlMb2dvOgorICAg
ICAgICByZXR1cm4gQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2U6OmRlY29kZShkZWNvZGVyKTsKKyNl
bmRpZgorICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Cit9CisKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogdm9pZCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT46OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2Um
IG1lc3NhZ2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oCmluZGV4IDc0ZTMzMDBjMGM2ZTQ4ZDJjNzIyMDlkZDllNGE0MmQ4YTM5NDU4ZDguLjEwZjQ4
MTRiYTdhODk5NDJiZDU2MTgwN2M2ZTQ0ODhjZjVjNjYxZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0xNDQsNiArMTQ0LDcgQEAgY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNwcmluZ1RpbWluZ0Z1bmN0aW9uOwogY2xh
c3MgU3RlcHNUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25z
dHJhaW50czsKK2NsYXNzIFN5c3RlbUltYWdlOwogY2xhc3MgVGV4dENoZWNraW5nUmVxdWVzdERh
dGE7CiBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIGNsYXNzIFVzZXJTdHlsZVNoZWV0OwpA
QCAtNzcyLDYgKzc3MywxMiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OlNjcmlwdEJ1ZmZlcj4gewogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNj
cmlwdEJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlN5c3RlbUltYWdlPj4geworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEVuY29kZXI+CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBS
ZWY8V2ViQ29yZTo6U3lzdGVtSW1hZ2U+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVm
PFdlYkNvcmU6OlN5c3RlbUltYWdlPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKICNpZiBFTkFC
TEUoREFUQV9ERVRFQ1RJT04pCiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6RGF0YURldGVjdG9yRWxlbWVudEluZm8+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlclByb3h5LmNwcAppbmRleCAxZTY4M2M1ZWIwM2UxNjIwZDYzZGUwNTFhNWI2
MzM4MzEzMDQ0YzkyLi44NTc3Y2JiZGU2ZDM5MDFkMzQ3MDc2MWVkMzBmNzlkOThlODJiOThkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwCkBAIC0xOTUs
NiArMTk1LDExIEBAIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmRE
cmF3TmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVuCiAgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6RHJhd05hdGl2ZUltYWdlKGltYWdlSWRlbnRpZmll
ciwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykpOwogfQogCit2b2lkIFJl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkRHJhd1N5c3RlbUltYWdlKFN5c3Rl
bUltYWdlJiBzeXN0ZW1JbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvblJlY3QpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6RHJhd1N5c3Rl
bUltYWdlKHN5c3RlbUltYWdlLCBkZXN0aW5hdGlvblJlY3QpKTsKK30KKwogdm9pZCBSZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZERyYXdQYXR0ZXJuKFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciBpbWFnZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNm
b3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpEcmF3UGF0dGVybihpbWFnZUlkZW50aWZpZXIs
IGRlc3RSZWN0LCB0aWxlUmVjdCwgdHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucykp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmgKaW5kZXggN2U2YTBh
MTA3N2ExNTIwNTJjMzNjM2M4YjI3NzZiOWEyY2VmODUyYS4uOWIzM2EwNjdmZDE2YmNjZjE0MDQy
YzE5NzRkZDY5MTk0MjI2MjQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3Jk
ZXJQcm94eS5oCkBAIC04OSw2ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWNvcmREcmF3
R2x5cGhzKGNvbnN0IFdlYkNvcmU6OkZvbnQmLCBjb25zdCBXZWJDb3JlOjpHbHlwaEJ1ZmZlckds
eXBoKiwgY29uc3QgV2ViQ29yZTo6R2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgY291bnQs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBXZWJDb3JlOjpGb250U21v
b3RoaW5nTW9kZSkgZmluYWw7CiAgICAgdm9pZCByZWNvcmREcmF3SW1hZ2VCdWZmZXIoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRp
bmdPcHRpb25zJikgZmluYWw7CiAgICAgdm9pZCByZWNvcmREcmF3TmF0aXZlSW1hZ2UoV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlSWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6
SW1hZ2VQYWludGluZ09wdGlvbnMmKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZERyYXdTeXN0ZW1J
bWFnZShXZWJDb3JlOjpTeXN0ZW1JbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOwog
ICAgIHZvaWQgcmVjb3JkRHJhd1BhdHRlcm4oV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
JiBzcGFjaW5nLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIGZp
bmFsOwogICAgIHZvaWQgcmVjb3JkQmVnaW5UcmFuc3BhcmVuY3lMYXllcihmbG9hdCkgZmluYWw7
CiAgICAgdm9pZCByZWNvcmRFbmRUcmFuc3BhcmVuY3lMYXllcigpIGZpbmFsOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>