<?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>150763</bug_id>
          
          <creation_ts>2015-10-31 19:19:12 -0700</creation_ts>
          <short_desc>Replace iOS-only WebKitSystemInterface calls with SPI</short_desc>
          <delta_ts>2015-12-18 22:49:39 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>150811</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jonlee</cc>
    
    <cc>mitz</cc>
    
    <cc>mjs</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1138252</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-10-31 19:19:12 -0700</bug_when>
    <thetext>Replace iOS-only WebKitSystemInterface calls with SPI</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138259</commentid>
    <comment_count>1</comment_count>
      <attachid>264498</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-10-31 19:50:35 -0700</bug_when>
    <thetext>Created attachment 264498
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138261</commentid>
    <comment_count>2</comment_count>
      <attachid>264498</attachid>
    <who name="">mitz</who>
    <bug_when>2015-10-31 20:13:22 -0700</bug_when>
    <thetext>Comment on attachment 264498
Patch

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

&gt; Source/WebKit2/Shared/AccessibilityIOS.h:1
&gt; +/*

Shouldn’t this file go somewhere inside the platform directory?

&gt; Source/WebKit2/Shared/AccessibilityIOS.h:28
&gt; +NSData *AXRemoteToken(CFUUIDRef);

This doesn’t mirror any SPI. It’s strange to give this function a name that begins with AX, the prefix of the system Accessibility APIs, even though it’s in the WebKit namespace. How about “newAccessibilityRemoteToken” (or maybe change the return type to a RetainPtr and have the name begin with create)?

&gt; Source/WebKit2/UIProcess/ios/WKContentView.mm:433
&gt; +static void AXStoreRemoteConnectionInformation(id element, pid_t pid, mach_port_t sendPort, CFUUIDRef uuidRef)

Here, too, naming this as if it were an Accessibility API is strange.

&gt; Source/WebKit2/UIProcess/ios/WKContentView.mm:443
&gt;      RetainPtr&lt;CFUUIDRef&gt; uuid = adoptCF(CFUUIDCreate(kCFAllocatorDefault));

It’d make the code a bit cleaner if you changed everything (including the function in AccessibilityIOS.mm) to use NSUUID instead. There’s no reason to use the CF type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138262</commentid>
    <comment_count>3</comment_count>
      <attachid>264500</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-10-31 20:13:32 -0700</bug_when>
    <thetext>Created attachment 264500
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138341</commentid>
    <comment_count>4</comment_count>
      <attachid>264500</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-11-01 12:20:17 -0800</bug_when>
    <thetext>Comment on attachment 264500
Patch

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

I’d prefer a version of this that does not add a Gestalt.h header.

&gt; Source/WebCore/page/NavigatorBase.cpp:75
&gt; +static CFStringRef platformNameForNavigator()

This function should return a const String&amp;, not a CFStringRef.

&gt; Source/WebCore/page/NavigatorBase.cpp:77
&gt; +    static CFStringRef deviceName = static_cast&lt;CFStringRef&gt;(CFRetain(Gestalt::deviceName()));

This should be a NeverDestroyed&lt;String&gt;, and we should not do a CFRetain here.

&gt; Source/WebCore/page/ios/UserAgentIOS.mm:42
&gt; +static inline bool isClassic(void)

No need for (void) in a .mm file; should just be ().

&gt; Source/WebCore/page/ios/UserAgentIOS.mm:47
&gt; +static inline NSString *osNameForUserAgent(void)

No need for (void) in a .mm file; should just be ().

&gt; Source/WebCore/page/ios/UserAgentIOS.mm:54
&gt; +static inline NSString *deviceName(void)

No need for (void) in a .mm file; should just be ().

&gt; Source/WebCore/page/ios/UserAgentIOS.mm:62
&gt; +    NSRange simulatorStringRange = [deviceName rangeOfString:@&quot; Simulator&quot; options:NSBackwardsSearch];
&gt; +    NSUInteger location = simulatorStringRange.location;

No need for the local variable simulatorStringRange.

&gt; Source/WebCore/page/ios/UserAgentIOS.mm:83
&gt; +        return [NSString stringWithFormat:@&quot;Mozilla/5.0 (%@; CPU %@ %@ like Mac OS X) AppleWebKit/%@ (KHTML, like Gecko)&quot;, deviceName(), osNameForUserAgent(), osMarketingVersionString, webKitVersion];
&gt; +    return [NSString stringWithFormat:@&quot;Mozilla/5.0 (%@; CPU %@ %@ like Mac OS X) AppleWebKit/%@ (KHTML, like Gecko) %@&quot;, deviceName(), osNameForUserAgent(), osMarketingVersionString, webKitVersion, static_cast&lt;NSString *&gt;(applicationName)];

Not sure why we do all this with NSString. I suggest coming back here at some point and using WTF::String and/or WTF::StringBuilder instead.

&gt; Source/WebCore/page/mac/SettingsMac.mm:36
&gt; +#if PLATFORM(IOS)
&gt; +#include &quot;Gestalt.h&quot;
&gt; +#include &quot;SoftLinking.h&quot;
&gt; +#include &quot;UIKitSPI.h&quot;
&gt; +
&gt; +SOFT_LINK_FRAMEWORK(UIKit)
&gt; +SOFT_LINK_CLASS(UIKit, UIApplication)
&gt; +#endif

I’d slightly prefer that the includes and soft linking be in two separate paragraphs.

I don’t think that SettingsMac should be compiled for iOS, so this should eventually be renamed to SettingsCocoa.mm or divided into multiple files.

&gt; Source/WebCore/platform/PlatformScreen.h:75
&gt; +    class FloatSize;

This should go at the top of the namespace section, in a separate paragraph. Also, why not do it unconditionally instead of only for PLATFORM(IOS)? Seems harmless enough.

&gt; Source/WebCore/platform/ios/Gestalt.cpp:37
&gt; +    int deviceClass = MGGetSInt32Answer(kMGQDeviceClassNumber, MGDeviceClassInvalid);

build failed with error: use of undeclared identifier &apos;kMGQDeviceClassNumber&apos;

&gt; Source/WebCore/platform/ios/Gestalt.h:34
&gt; +namespace Gestalt {

Not sure why we put these functions into a namespace nor why we call the namespace and source file Gestalt. I understand that the underlying iOS feature’s internal name is Gestalt, but in WebKit we could just give this some sensible WebKit name with less iOS/Apple flavor. Maybe even put this all into SettingsIOS.h/cpp? Or perhaps put these functions in the files that use them unless they are really used in multiple source files.

&gt; Source/WebCore/platform/ios/PlatformScreenIOS.mm:125
&gt; +        return FloatSize(CGSizeMake(320, 480));

I don’t think we should make a CGSize just to convert it to a FloatSize. Just:

    return { 320, 480 };

&gt; Source/WebCore/platform/ios/PlatformScreenIOS.mm:132
&gt; +        return FloatSize(CGSizeMake(320, 480));

I don’t think we should make a CGSize just to convert it to a FloatSize. Just:

    return { 320, 480 };

&gt; Source/WebCore/platform/ios/PlatformScreenIOS.mm:135
&gt; +#pragma clang diagnostic ignored &quot;-Wdeprecated-declarations&quot;
&gt; +    return FloatSize([getUIScreenClass() mainScreen].applicationFrame.size);

If this is deprecated, maybe we should do the non-deprecated version?

&gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:1448
&gt; +#if HAVE(AVKIT) &amp;&amp; TARGET_OS_IOS

The use of TARGET_IOS_IOS here in WebKit code is peculiar. Isn’t that just another way to say PLATFORM(IOS)?

&gt; Source/WebCore/platform/spi/ios/MobileGestaltSPI.h:56
&gt; +typedef enum {
&gt; +    MGDeviceClassInvalid = -1,
&gt; +    /* 0 is intentionally not in this enum */
&gt; +    MGDeviceClassiPhone  = 1,
&gt; +    MGDeviceClassiPod    = 2,
&gt; +    MGDeviceClassiPad    = 3,
&gt; +    MGDeviceClassAppleTV = 4,
&gt; +    /* 5 is intentionally not in this enum */
&gt; +    MGDeviceClassWatch   = 6,
&gt; +} MGDeviceClass;

I think we need to also add kMGQDeviceClassNumber here.

&gt; Source/WebKit2/Shared/AccessibilityIOS.h:28
&gt; +NSData *AXRemoteToken(CFUUIDRef);

I agree with Dan’s warning that we should *not* define functions in WebKit with prefixes that belong to system frameworks, even in our own namespace.

I agree with Dan’s suggestion that we use NSUUID and not CFUUID.

&gt; Source/WebKit2/Shared/AccessibilityIOS.mm:40
&gt; +    NSDictionary *value = @{ @&quot;ax-pid&quot; : @(getpid()), @&quot;ax-uuid&quot; : uuidString, @&quot;ax-register&quot; : @YES };

Are the spaces before the colons our usual format for this?

Not sure we need a local variable for this. Might read better as a one liner.

&gt; Source/WebKit2/UIProcess/ios/WKContentView.mm:433
&gt; +static void AXStoreRemoteConnectionInformation(id element, pid_t pid, mach_port_t sendPort, CFUUIDRef uuidRef)

I agree with Dan’s warning that we should *not* define functions in WebKit with prefixes that belong to system frameworks, even in our own namespace.

I agree with Dan’s suggestion that we use NSUUID and not CFUUID.

&gt; Source/WebKit2/UIProcess/ios/WKContentView.mm:438
&gt; +    objc_setAssociatedObject(element, (void*)[@&quot;ax-uuid&quot; hash], (id)uuidRef, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
&gt; +    objc_setAssociatedObject(element, (void*)[@&quot;ax-pid&quot; hash], @(pid), OBJC_ASSOCIATION_RETAIN_NONATOMIC);
&gt; +    objc_setAssociatedObject(element, (void*)[@&quot;ax-machport&quot; hash], @(sendPort), OBJC_ASSOCIATION_RETAIN_NONATOMIC);

I don’t know where this design comes from, where we use a hash as the associated object key. I guess it must come from some other code, since I only see the setting part here, not the getting. This does *not* seem like a good idea. It’s easy to come up with unique pointers to use as associated object keys; I really don’t see why we’d use a hash cast as a pointer instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138452</commentid>
    <comment_count>5</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-11-01 21:00:38 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 264498 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=264498&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/Shared/AccessibilityIOS.h:1
&gt; &gt; +/*
&gt; 
&gt; Shouldn’t this file go somewhere inside the platform directory?

Ok, moved to Platform/ios/.

&gt; 
&gt; &gt; Source/WebKit2/Shared/AccessibilityIOS.h:28
&gt; &gt; +NSData *AXRemoteToken(CFUUIDRef);
&gt; 
&gt; This doesn’t mirror any SPI. It’s strange to give this function a name that
&gt; begins with AX, the prefix of the system Accessibility APIs, even though
&gt; it’s in the WebKit namespace. How about “newAccessibilityRemoteToken” (or
&gt; maybe change the return type to a RetainPtr and have the name begin with
&gt; create)?

I renamed this to createAccessibilityRemoteToken.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/ios/WKContentView.mm:433
&gt; &gt; +static void AXStoreRemoteConnectionInformation(id element, pid_t pid, mach_port_t sendPort, CFUUIDRef uuidRef)
&gt; 
&gt; Here, too, naming this as if it were an Accessibility API is strange.

I renamed this to storeAccessibilityRemoteConnectionInformation.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/ios/WKContentView.mm:443
&gt; &gt;      RetainPtr&lt;CFUUIDRef&gt; uuid = adoptCF(CFUUIDCreate(kCFAllocatorDefault));
&gt; 
&gt; It’d make the code a bit cleaner if you changed everything (including the
&gt; function in AccessibilityIOS.mm) to use NSUUID instead. There’s no reason to
&gt; use the CF type.

Done.

Thanks for the feedback!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138457</commentid>
    <comment_count>6</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-11-01 21:27:02 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 264500 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=264500&amp;action=review
&gt; 
&gt; I’d prefer a version of this that does not add a Gestalt.h header.
&gt; 
&gt; &gt; Source/WebCore/page/NavigatorBase.cpp:75
&gt; &gt; +static CFStringRef platformNameForNavigator()
&gt; 
&gt; This function should return a const String&amp;, not a CFStringRef.
&gt; 
&gt; &gt; Source/WebCore/page/NavigatorBase.cpp:77
&gt; &gt; +    static CFStringRef deviceName = static_cast&lt;CFStringRef&gt;(CFRetain(Gestalt::deviceName()));
&gt; 
&gt; This should be a NeverDestroyed&lt;String&gt;, and we should not do a CFRetain
&gt; here.
&gt; 
&gt; &gt; Source/WebCore/page/ios/UserAgentIOS.mm:42
&gt; &gt; +static inline bool isClassic(void)
&gt; 
&gt; No need for (void) in a .mm file; should just be ().
&gt; 
&gt; &gt; Source/WebCore/page/ios/UserAgentIOS.mm:47
&gt; &gt; +static inline NSString *osNameForUserAgent(void)
&gt; 
&gt; No need for (void) in a .mm file; should just be ().
&gt; 
&gt; &gt; Source/WebCore/page/ios/UserAgentIOS.mm:54
&gt; &gt; +static inline NSString *deviceName(void)
&gt; 
&gt; No need for (void) in a .mm file; should just be ().
&gt; 
&gt; &gt; Source/WebCore/page/ios/UserAgentIOS.mm:62
&gt; &gt; +    NSRange simulatorStringRange = [deviceName rangeOfString:@&quot; Simulator&quot; options:NSBackwardsSearch];
&gt; &gt; +    NSUInteger location = simulatorStringRange.location;
&gt; 
&gt; No need for the local variable simulatorStringRange.

Fixed all of the above.

&gt; 
&gt; &gt; Source/WebCore/page/ios/UserAgentIOS.mm:83
&gt; &gt; +        return [NSString stringWithFormat:@&quot;Mozilla/5.0 (%@; CPU %@ %@ like Mac OS X) AppleWebKit/%@ (KHTML, like Gecko)&quot;, deviceName(), osNameForUserAgent(), osMarketingVersionString, webKitVersion];
&gt; &gt; +    return [NSString stringWithFormat:@&quot;Mozilla/5.0 (%@; CPU %@ %@ like Mac OS X) AppleWebKit/%@ (KHTML, like Gecko) %@&quot;, deviceName(), osNameForUserAgent(), osMarketingVersionString, webKitVersion, static_cast&lt;NSString *&gt;(applicationName)];
&gt; 
&gt; Not sure why we do all this with NSString. I suggest coming back here at
&gt; some point and using WTF::String and/or WTF::StringBuilder instead.

I&apos;ve added a FIXME.

&gt; 
&gt; &gt; Source/WebCore/page/mac/SettingsMac.mm:36
&gt; &gt; +#if PLATFORM(IOS)
&gt; &gt; +#include &quot;Gestalt.h&quot;
&gt; &gt; +#include &quot;SoftLinking.h&quot;
&gt; &gt; +#include &quot;UIKitSPI.h&quot;
&gt; &gt; +
&gt; &gt; +SOFT_LINK_FRAMEWORK(UIKit)
&gt; &gt; +SOFT_LINK_CLASS(UIKit, UIApplication)
&gt; &gt; +#endif
&gt; 
&gt; I’d slightly prefer that the includes and soft linking be in two separate
&gt; paragraphs.
&gt; 
&gt; I don’t think that SettingsMac should be compiled for iOS, so this should
&gt; eventually be renamed to SettingsCocoa.mm or divided into multiple files.

I renamed this to SettingsCocoa.mm and moved it to page/ios/.

&gt; 
&gt; &gt; Source/WebCore/platform/PlatformScreen.h:75
&gt; &gt; +    class FloatSize;
&gt; 
&gt; This should go at the top of the namespace section, in a separate paragraph.
&gt; Also, why not do it unconditionally instead of only for PLATFORM(IOS)? Seems
&gt; harmless enough.

Ok.

&gt; 
&gt; &gt; Source/WebCore/platform/ios/Gestalt.cpp:37
&gt; &gt; +    int deviceClass = MGGetSInt32Answer(kMGQDeviceClassNumber, MGDeviceClassInvalid);
&gt; 
&gt; build failed with error: use of undeclared identifier &apos;kMGQDeviceClassNumber&apos;

Fixed.

&gt; 
&gt; &gt; Source/WebCore/platform/ios/Gestalt.h:34
&gt; &gt; +namespace Gestalt {
&gt; 
&gt; Not sure why we put these functions into a namespace nor why we call the
&gt; namespace and source file Gestalt. I understand that the underlying iOS
&gt; feature’s internal name is Gestalt, but in WebKit we could just give this
&gt; some sensible WebKit name with less iOS/Apple flavor. Maybe even put this
&gt; all into SettingsIOS.h/cpp? Or perhaps put these functions in the files that
&gt; use them unless they are really used in multiple source files.

I struggled with this. Three of the six functions in Gestalt are only used in one source file, so I&apos;ve moved those functions to the files that use them. The other three are used in multiple places, but Settings does not seem like the right place for these. These are platform queries, not page settings to be configured by the client.

The three shared functions are deviceClass(), deviceName(), and hasIPadCapability() (which is probably the same as deviceClass() == MGDeviceClassiPad). I think I&apos;ll put this in a file called platform/ios/Device.{cpp,h}. I&apos;m open to naming suggestions.

&gt; 
&gt; &gt; Source/WebCore/platform/ios/PlatformScreenIOS.mm:125
&gt; &gt; +        return FloatSize(CGSizeMake(320, 480));
&gt; 
&gt; I don’t think we should make a CGSize just to convert it to a FloatSize.
&gt; Just:
&gt; 
&gt;     return { 320, 480 };
&gt; 
&gt; &gt; Source/WebCore/platform/ios/PlatformScreenIOS.mm:132
&gt; &gt; +        return FloatSize(CGSizeMake(320, 480));
&gt; 
&gt; I don’t think we should make a CGSize just to convert it to a FloatSize.
&gt; Just:
&gt; 
&gt;     return { 320, 480 };

Fixed both of these.

&gt; 
&gt; &gt; Source/WebCore/platform/ios/PlatformScreenIOS.mm:135
&gt; &gt; +#pragma clang diagnostic ignored &quot;-Wdeprecated-declarations&quot;
&gt; &gt; +    return FloatSize([getUIScreenClass() mainScreen].applicationFrame.size);
&gt; 
&gt; If this is deprecated, maybe we should do the non-deprecated version?

Changed to use -[UIScreen bounds].

&gt; 
&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:1448
&gt; &gt; +#if HAVE(AVKIT) &amp;&amp; TARGET_OS_IOS
&gt; 
&gt; The use of TARGET_IOS_IOS here in WebKit code is peculiar. Isn’t that just
&gt; another way to say PLATFORM(IOS)?

TARGET_OS_IOS is only true on an iOS device, whereas PLATFORM(IOS) is true on devices and simulators. I&apos;m actually suspicious that excluding the simulator here wasn&apos;t intentional, so I&apos;ll investigate.

&gt; 
&gt; &gt; Source/WebCore/platform/spi/ios/MobileGestaltSPI.h:56
&gt; &gt; +typedef enum {
&gt; &gt; +    MGDeviceClassInvalid = -1,
&gt; &gt; +    /* 0 is intentionally not in this enum */
&gt; &gt; +    MGDeviceClassiPhone  = 1,
&gt; &gt; +    MGDeviceClassiPod    = 2,
&gt; &gt; +    MGDeviceClassiPad    = 3,
&gt; &gt; +    MGDeviceClassAppleTV = 4,
&gt; &gt; +    /* 5 is intentionally not in this enum */
&gt; &gt; +    MGDeviceClassWatch   = 6,
&gt; &gt; +} MGDeviceClass;
&gt; 
&gt; I think we need to also add kMGQDeviceClassNumber here.
&gt; 
&gt; &gt; Source/WebKit2/Shared/AccessibilityIOS.h:28
&gt; &gt; +NSData *AXRemoteToken(CFUUIDRef);
&gt; 
&gt; I agree with Dan’s warning that we should *not* define functions in WebKit
&gt; with prefixes that belong to system frameworks, even in our own namespace.
&gt; 
&gt; I agree with Dan’s suggestion that we use NSUUID and not CFUUID.
&gt; 
&gt; &gt; Source/WebKit2/Shared/AccessibilityIOS.mm:40
&gt; &gt; +    NSDictionary *value = @{ @&quot;ax-pid&quot; : @(getpid()), @&quot;ax-uuid&quot; : uuidString, @&quot;ax-register&quot; : @YES };
&gt; 
&gt; Are the spaces before the colons our usual format for this?

Yes, I believe so.

&gt; 
&gt; Not sure we need a local variable for this. Might read better as a one liner.

Ok.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/ios/WKContentView.mm:433
&gt; &gt; +static void AXStoreRemoteConnectionInformation(id element, pid_t pid, mach_port_t sendPort, CFUUIDRef uuidRef)
&gt; 
&gt; I agree with Dan’s warning that we should *not* define functions in WebKit
&gt; with prefixes that belong to system frameworks, even in our own namespace.
&gt; 
&gt; I agree with Dan’s suggestion that we use NSUUID and not CFUUID.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/ios/WKContentView.mm:438
&gt; &gt; +    objc_setAssociatedObject(element, (void*)[@&quot;ax-uuid&quot; hash], (id)uuidRef, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
&gt; &gt; +    objc_setAssociatedObject(element, (void*)[@&quot;ax-pid&quot; hash], @(pid), OBJC_ASSOCIATION_RETAIN_NONATOMIC);
&gt; &gt; +    objc_setAssociatedObject(element, (void*)[@&quot;ax-machport&quot; hash], @(sendPort), OBJC_ASSOCIATION_RETAIN_NONATOMIC);
&gt; 
&gt; I don’t know where this design comes from, where we use a hash as the
&gt; associated object key. I guess it must come from some other code, since I
&gt; only see the setting part here, not the getting. This does *not* seem like a
&gt; good idea. It’s easy to come up with unique pointers to use as associated
&gt; object keys; I really don’t see why we’d use a hash cast as a pointer
&gt; instead.

The matching code is in the Accessibility framework. I&apos;ll file a radar about this.

Thanks for all the feedback!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138458</commentid>
    <comment_count>7</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-11-01 21:32:11 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #4)
&gt; &gt; Comment on attachment 264500 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=264500&amp;action=review
&gt; &gt;
&gt; &gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:1448
&gt; &gt; &gt; +#if HAVE(AVKIT) &amp;&amp; TARGET_OS_IOS
&gt; &gt; 
&gt; &gt; The use of TARGET_IOS_IOS here in WebKit code is peculiar. Isn’t that just
&gt; &gt; another way to say PLATFORM(IOS)?
&gt; 
&gt; TARGET_OS_IOS is only true on an iOS device, whereas PLATFORM(IOS) is true
&gt; on devices and simulators. I&apos;m actually suspicious that excluding the
&gt; simulator here wasn&apos;t intentional, so I&apos;ll investigate.

Oh, I had that wrong. The difference here is that TARGET_OS_IOS is false on watchOS and tvOS, unlike PLATFORM(IOS). I think we can just remove the TARGET_OS_IOS bit; HAVE(AVKIT) should be sufficient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138471</commentid>
    <comment_count>8</comment_count>
      <attachid>264556</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-11-01 22:26:59 -0800</bug_when>
    <thetext>Created attachment 264556
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138472</commentid>
    <comment_count>9</comment_count>
      <attachid>264557</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-11-01 22:34:59 -0800</bug_when>
    <thetext>Created attachment 264557
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138476</commentid>
    <comment_count>10</comment_count>
      <attachid>264557</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-11-01 23:06:00 -0800</bug_when>
    <thetext>Comment on attachment 264557
Patch

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

&gt; Source/WebCore/css/MediaQueryEvaluator.cpp:635
&gt; +    static MGDeviceClass theClass = deviceClass();
&gt; +    return theClass == MGDeviceClassiPhone || theClass == MGDeviceClassiPod;

We should cache a boolean rather than caching the device class.

We should avoid names like “theClass”; could just write:

    static auto deviceClass = WebCore::deviceClass();

&gt; Source/WebCore/page/cocoa/SettingsCocoa.mm:61
&gt; +#if PLATFORM(MAC)
&gt; +void Settings::initializeDefaultFontFamilies()

Missing blank line here.

&gt; Source/WebCore/page/cocoa/SettingsCocoa.mm:128
&gt; +}
&gt; +#endif

Missing blank line here.

&gt; Source/WebCore/platform/PlatformScreen.h:79
&gt; +    WEBCORE_EXPORT float screenScaleFactor(UIScreen * = nil);

In case a non-Objective-C C++ file includes this header, I think this needs to say nullptr instead of nil. But maybe we can get away with nil.

&gt; Source/WebCore/platform/ios/Device.cpp:39
&gt; +    case MGDeviceClassInvalid:

How can this ever be returned?

&gt; Source/WebCore/platform/ios/Device.cpp:52
&gt; +CFStringRef deviceName()

Why not have this return a String instead of a CFStringRef?

&gt; Source/WebCore/platform/ios/PlatformScreenIOS.mm:46
&gt;  SOFT_LINK(UIKit, UIAccessibilityIsGrayscaleEnabled, bool, (void), ())
&gt;  SOFT_LINK(UIKit, UIAccessibilityIsInvertColorsEnabled, bool, (void), ())

I think these need to be BOOL rather than bool.

&gt; Source/WebKit2/Platform/ios/AccessibilityIOS.h:33
&gt; +RetainPtr&lt;NSData&gt; createAccessibilityRemoteToken(NSUUID *);

Could just return an NSData * since it’s already going to be autoreleased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138616</commentid>
    <comment_count>11</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-11-02 11:10:00 -0800</bug_when>
    <thetext>Committed r191902: &lt;http://trac.webkit.org/changeset/191902&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138623</commentid>
    <comment_count>12</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-11-02 11:22:35 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Comment on attachment 264557 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=264557&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/MediaQueryEvaluator.cpp:635
&gt; &gt; +    static MGDeviceClass theClass = deviceClass();
&gt; &gt; +    return theClass == MGDeviceClassiPhone || theClass == MGDeviceClassiPod;
&gt; 
&gt; We should cache a boolean rather than caching the device class.
&gt; 
&gt; We should avoid names like “theClass”; could just write:
&gt; 
&gt;     static auto deviceClass = WebCore::deviceClass();

I made deviceClass() return a static MGDeviceClass and then just cached the result of the boolean expression.

&gt; 
&gt; &gt; Source/WebCore/page/cocoa/SettingsCocoa.mm:61
&gt; &gt; +#if PLATFORM(MAC)
&gt; &gt; +void Settings::initializeDefaultFontFamilies()
&gt; 
&gt; Missing blank line here.
&gt; 
&gt; &gt; Source/WebCore/page/cocoa/SettingsCocoa.mm:128
&gt; &gt; +}
&gt; &gt; +#endif
&gt; 
&gt; Missing blank line here.
&gt; 
&gt; &gt; Source/WebCore/platform/PlatformScreen.h:79
&gt; &gt; +    WEBCORE_EXPORT float screenScaleFactor(UIScreen * = nil);
&gt; 
&gt; In case a non-Objective-C C++ file includes this header, I think this needs
&gt; to say nullptr instead of nil. But maybe we can get away with nil.

Done.

&gt; 
&gt; &gt; Source/WebCore/platform/ios/Device.cpp:39
&gt; &gt; +    case MGDeviceClassInvalid:
&gt; 
&gt; How can this ever be returned?

This is the default value if MGGetSInt32Answer() doesn&apos;t find the query. I don&apos;t know if it&apos;d happen in practice, but it is a valid member of the enum, so might as well cover it.

&gt; 
&gt; &gt; Source/WebCore/platform/ios/Device.cpp:52
&gt; &gt; +CFStringRef deviceName()
&gt; 
&gt; Why not have this return a String instead of a CFStringRef?

Yeah, I did that, and moved the caching of the name to here, which simplifies deviceName()&apos;s callers.

&gt; 
&gt; &gt; Source/WebCore/platform/ios/PlatformScreenIOS.mm:46
&gt; &gt;  SOFT_LINK(UIKit, UIAccessibilityIsGrayscaleEnabled, bool, (void), ())
&gt; &gt;  SOFT_LINK(UIKit, UIAccessibilityIsInvertColorsEnabled, bool, (void), ())
&gt; 
&gt; I think these need to be BOOL rather than bool.
&gt; 
&gt; &gt; Source/WebKit2/Platform/ios/AccessibilityIOS.h:33
&gt; &gt; +RetainPtr&lt;NSData&gt; createAccessibilityRemoteToken(NSUUID *);
&gt; 
&gt; Could just return an NSData * since it’s already going to be autoreleased.

Done. Thanks again!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138643</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-02 11:52:09 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 150811</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138649</commentid>
    <comment_count>14</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2015-11-02 11:59:38 -0800</bug_when>
    <thetext>Rolled out due to breaking iOS builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138658</commentid>
    <comment_count>15</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-11-02 12:31:34 -0800</bug_when>
    <thetext>Committed r191904: &lt;http://trac.webkit.org/changeset/191904&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150508</commentid>
    <comment_count>16</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-12-18 22:49:39 -0800</bug_when>
    <thetext>*** Bug 146130 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264498</attachid>
            <date>2015-10-31 19:50:35 -0700</date>
            <delta_ts>2015-10-31 20:13:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150763-20151031194941.patch</filename>
            <type>text/plain</type>
            <size>90722</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxNzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjZmZDdkY2Q4MDEzMjRj
MGZhNWNiZmFkYWRjM2M3MzI0ZTMwZmNkZS4uOGRjNDUxYjgwNzUzNTdlMzQ1NTllMDdhYzFhYjE3
ODFlNmM3ZmIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE1LTEwLTMxICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIGlPUy1vbmx5IFdl
YktpdFN5c3RlbUludGVyZmFjZSBjYWxscyB3aXRoIFNQSQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogY29uZmlnLmg6IFJlbW92ZWQgV0VCQ09SRV9OQVZJR0FUT1JfUExB
VEZPUk0gYW5kIFdFQkNPUkVfTkFWSUdBVE9SX1ZFTkRPUi4KKyAgICAgICAgKiBjc3MvTWVkaWFR
dWVyeUV2YWx1YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1J1bm5pbmdPbklQaG9uZU9y
SVBvZCk6IFVzZWQgR2VzdGFsdDo6ZGV2aWNlQ2xhc3MoKSBpbnN0ZWFkIG9mIGlvc0RldmljZUNs
YXNzKCkuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNob3VsZE92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNr
UmVzdHJpY3Rpb24pOiBVc2VkIHN1cHBvcnRzUGljdHVyZUluUGljdHVyZSgpIGluc3RlYWQgb2Yg
d2tJc09wdGltaXplZEZ1bGxzY3JlZW5TdXBwb3J0ZWQoKS4KKyAgICAgICAgKiBodG1sL0hUTUxP
YmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZE5vdFBlcmZvcm1VUkxB
ZGp1c3RtZW50KTogVXNlZCBkeWxkX2dldF9wcm9ncmFtX3Nka192ZXJzaW9uKCkgaW5zdGVhZCBv
ZiBpb3NFeGVjdXRhYmxlV2FzTGlua2VkT25PckFmdGVyVmVyc2lvbigpLgorICAgICAgICAqIGh0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVt
ZW50Ojp3ZWJraXRTdXBwb3J0c1ByZXNlbnRhdGlvbk1vZGUpOiBVc2VkIHN1cHBvcnRzUGljdHVy
ZUluUGljdHVyZSgpIGluc3RlYWQgb2Ygd2tJc09wdGltaXplZEZ1bGxzY3JlZW5TdXBwb3J0ZWQo
KS4KKyAgICAgICAgKiBwYWdlL05hdmlnYXRvckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
cGxhdGZvcm1OYW1lRm9yTmF2aWdhdG9yKTogQWRkZWQgdG8gcmV0dXJuIEdlc3RhbHQ6OmRldmlj
ZU5hbWUoKS4KKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6CisgICAgICAgICogcGFnZS9WaWV3
cG9ydENvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1
cmF0aW9uOjp0ZXh0RG9jdW1lbnRQYXJhbWV0ZXJzKTogVXNlZCBzY3JlZW5TaXplKCkgaW5zdGVh
ZCBvZiB3a0dldFNjcmVlblNpemUoKS4KKyAgICAgICAgKiBwYWdlL2lvcy9Vc2VyQWdlbnRJT1Mu
bW06CisgICAgICAgIChXZWJDb3JlOjppc0NsYXNzaWMpOiBBZGRlZCB0byByZXR1cm4gLVtVSUFw
cGxpY2F0aW9uIF9pc0NsYXNzaWNdLgorICAgICAgICAoV2ViQ29yZTo6b3NOYW1lRm9yVXNlckFn
ZW50KTogVXBzdHJlYW1lZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgV0tHZXRPU05hbWVGb3JVc2Vy
QWdlbnQoKSBmcm9tIFdlYktpdFN5c3RlbUludGVyZmFjZS4KKyAgICAgICAgKFdlYkNvcmU6OmRl
dmljZU5hbWUpOiBEaXR0byBmb3Igd2tHZXREZXZpY2VOYW1lKCkuCisgICAgICAgIChXZWJDb3Jl
OjpzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUpOiBDYWxsZWQgZGV2aWNlTmFt
ZSgpIGFuZCBvc05hbWVGb3JVc2VyQWdlbnQoKS4KKyAgICAgICAgKiBwYWdlL21hYy9TZXR0aW5n
c01hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpkZWZhdWx0TWluaW11bVpvb21G
b250U2l6ZSk6IFVwc3RyZWFtZWQgdGhlIGltcGxlbWVudGF0aW9uIG9mIFdLR2V0TWluaW11bVpv
b21Gb250U2l6ZSgpIGZyb20gV2ViS2l0U3lzdGVtSW50ZXJmYWNlLgorICAgICAgICAqIHBsYXRm
b3JtL1BsYXRmb3JtU2NyZWVuLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0dlc3RhbHQuY3Bw
OiBBZGRlZCBhIGNsYXNzIHRoYXQgcmV0dXJucyBhbnN3ZXJzIGZyb20gTW9iaWxlR2VzdGFsdC4K
KyAgICAgICAgKFdlYkNvcmU6Okdlc3RhbHQ6OmRldmljZUNsYXNzKToKKyAgICAgICAgKFdlYkNv
cmU6Okdlc3RhbHQ6OmRldmljZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6R2VzdGFsdDo6aGFz
SVBhZENhcGFiaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6R2VzdGFsdDo6aXNBcHBsZUludGVy
bmFsSW5zdGFsbCk6CisgICAgICAgIChXZWJDb3JlOjpHZXN0YWx0OjptYWluU2NyZWVuUGl0Y2gp
OgorICAgICAgICAoV2ViQ29yZTo6R2VzdGFsdDo6bWFpblNjcmVlblNjYWxlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9pb3MvR2VzdGFsdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9y
bVNjcmVlbklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlblBQSUZhY3Rvcik6IFVzZWQg
R2VzdGFsdCBpbnN0ZWFkIG9mIGNhbGxpbmcgTUdDb3B5QW5zd2VyIGRpcmVjdGx5LgorICAgICAg
ICAoV2ViQ29yZTo6c2NyZWVuU2l6ZSk6IFVwc3RyZWFtZWQgdGhlIGltcGxlbWVudGF0aW9uIG9m
IFdLR2V0U2NyZWVuU2l6ZSgpIGZyb20gV2ViS2l0U3lzdGVtSW50ZXJmYWNlLgorICAgICAgICAo
V2ViQ29yZTo6YXZhaWxhYmxlU2NyZWVuU2l6ZSk6IERpdHRvIGZvciBXS0dldEF2YWlsYWJsZVNj
cmVlblNpemUoKS4KKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlblNjYWxlRmFjdG9yKTogRGl0dG8g
Zm9yIFdLR2V0U2NyZWVuU2NhbGVGYWN0b3IoKSBhbmQgV0tHZXRTY2FsZUZhY3RvckZvclNjcmVl
bigpLgorICAgICAgICAoV2ViQ29yZTo6bW9iaWxlR2VzdGFsdEZsb2F0VmFsdWUpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLmg6IFJl
bW92ZWQuCisgICAgICAgIChpb3NFeGVjdXRhYmxlV2FzTGlua2VkT25PckFmdGVyVmVyc2lvbik6
IERlbGV0ZWQuCisgICAgICAgIChpb3NEZXZpY2VDbGFzcyk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW06CisgICAgICAgICogcGxh
dGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lmg6CisgICAgICAgICog
cGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tOgorICAgICAg
ICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6Om1heUF1dG9tYXRpY2FsbHlTaG93
VmlkZW9QaWN0dXJlSW5QaWN0dXJlKTogVXNlZCBzdXBwb3J0c1BpY3R1cmVJblBpY3R1cmUoKSBp
bnN0ZWFkIG9mIHdrSXNPcHRpbWl6ZWRGdWxsc2NyZWVuU3VwcG9ydGVkKCkuCisgICAgICAgIChX
ZWJDb3JlOjpzdXBwb3J0c1BpY3R1cmVJblBpY3R1cmUpOiBVcHN0cmVhbWVkIHRoZSBpbXBsZW1l
bnRhdGlvbiBvZiBXS0lzT3B0aW1pemVkRnVsbHNjcmVlblN1cHBvcnRlZCgpIGZyb20gV2ViS2l0
U3lzdGVtSW50ZXJmYWNlLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lm1t
OgorICAgICAgICAoLVtXQUtXaW5kb3cgaW5pdFdpdGhMYXllcjpdKTogVXNlZCBzY3JlZW5TY2Fs
ZUZhY3RvcigpIGluc3RlYWQgb2YgV0tHZXRTY3JlZW5TY2FsZUZhY3RvcigpLgorICAgICAgICAo
LVtXQUtXaW5kb3cgaW5pdFdpdGhGcmFtZTpdKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0v
aW9zL3dhay9XS0dyYXBoaWNzLm1tOgorICAgICAgICAoV0tHcmFwaGljc0NyZWF0ZUltYWdlRnJv
bUJ1bmRsZVdpdGhOYW1lKTogRGl0dG8uCisgICAgICAgIChXS0RyYXdQYXR0ZXJuQml0bWFwKTog
RGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9zcGkvY29jb2EvRHluYW1pY0xpbmtlclNQSS5oOiBEZWZpbmVk
IGFkZGl0aW9uYWwgRFlMRF9JT1NfVkVSU0lPTiBtYWNyb3MuCisgICAgICAgICogcGxhdGZvcm0v
c3BpL2lvcy9Nb2JpbGVHZXN0YWx0U1BJLmg6IERlZmluZWQgYWRkaXRpb25hbCBNb2JpbGVHZXN0
YWx0IHF1ZXJpZXMsIGVudW0gTUdEZXZpY2VDbGFzcywgTUdHZXRTSW50MzJBbnN3ZXIsIGFuZCBN
R0dldEZsb2F0MzJBbnN3ZXIuCisgICAgICAgICogcGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvaW9zL1VJQ29sb3JTUEku
aCwgYW5kIGFkZGVkIFNQSSBkZWNsYXJhdGlvbnMgZm9yIFVJQXBwbGljYXRpb24gYW5kIFVJU2Ny
ZWVuLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbToKKwogMjAxNS0xMC0y
OCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWVk
aWFTdHJlYW1dIFBsYXkgTWVkaWFTdHJlYW0gdGhyb3VnaCBtZWRpYSBlbGVtZW50IGFuZCByZW5k
ZXJlZCB0byBjYW52YXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwppbmRleCA0ZmE1YmFlZjgxOGQ5NjEzNDUzZjA0
N2Y2Y2M0ZTBiMThmZDE1MGVjLi4wMzkwMmUyODZhOTZiZTZiN2U3MTBlMzNjY2E0OTJlMTIzYjhi
MTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTUtMTAtMzEgIEFuZHkg
RXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgaU9TLW9ubHkgV2Vi
S2l0U3lzdGVtSW50ZXJmYWNlIGNhbGxzIHdpdGggU1BJCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3NjMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tOgorICAg
ICAgICAobGlua2VkT25PckFmdGVySU9TNSk6IFVzZWQgZHlsZF9nZXRfcHJvZ3JhbV9zZGtfdmVy
c2lvbigpIGluc3RlYWQgb2YgaW9zRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JBZnRlclZlcnNpb24o
KS4KKyAgICAgICAgKFdlYktpdEdldE1pbmltdW1ab29tRm9udFNpemUpOiBVc2VkIFNldHRpbmdz
OjpkZWZhdWx0TWluaW11bVpvb21Gb250U2l6ZSgpIGluc3RlYWQgb2YgV0tHZXRNaW5pbXVtWm9v
bUZvbnRTaXplKCkuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9T
Lm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50SU9TOjpzY3JlZW5TaXplKTogVXNlZCBzY3Jl
ZW5TaXplKCkgaW5zdGVhZCBvZiBXS0dldFNjcmVlblNpemUoKS4KKwogMjAxNS0xMC0xNCAgWmh1
byBMaSAgPHphY2hsaUBhcHBsZS5jb20+CiAKICAgICAgICAgQXVnbWVudCA8aW5wdXQgdHlwZT1z
ZWFyY2g+4oCZcyByZWNlbnQgc2VhcmNoIGhpc3Rvcnkgd2l0aCB0aGUgdGltZSBlYWNoIGVudHJ5
IHdhcyBhZGRlZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA0ZjljNTVlNGE0MTcyMjVmNjkxODkyYjQw
NjY5NTVmMjcwOWQwNDNhLi5lMWM3YWEwZjY0OTU1N2VkMTUxNzg5MWExYTZmY2EyNDMzMjEwZjAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTUtMTAtMzEgIEFuZHkgRXN0
ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgaU9TLW9ubHkgV2ViS2l0
U3lzdGVtSW50ZXJmYWNlIGNhbGxzIHdpdGggU1BJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFj
ZS5tbToKKyAgICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tOgorICAgICAgICAoK1tXZWJQcmVmZXJl
bmNlcyBpbml0aWFsaXplXSk6IFVzZWQgR2VzdGFsdDo6ZGV2aWNlQ2xhc3MoKSBhbmQgU2V0dGlu
Z3M6OmRlZmF1bHRNaW5pbXVtWm9vbUZvbnRTaXplKCkgaW5zdGVhZCBvZiBXS0dldERldmljZUNs
YXNzKCkgYW5kIFdLR2V0TWluaW11bVpvb21Gb250U2l6ZSgpLgorICAgICAgICAqIFdlYlZpZXcv
V2ViVmlldy5tbToKKyAgICAgICAgKGlzSW50ZXJuYWxJbnN0YWxsKTogVXNlZCBHZXN0YWx0Ojpp
c0FwcGxlSW50ZXJuYWxJbnN0YWxsKCkgaW5zdGVhZCBvZiBNR0dldEJvb2xBbnN3ZXIoKS4KKyAg
ICAgICAgKHNob3VsZEFsbG93UGljdHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2spOiBVc2VkIGR5
bGRfZ2V0X3Byb2dyYW1fc2RrX3ZlcnNpb24oKSBpbnN0ZWFkIG9mIGlvc0V4ZWN1dGFibGVXYXNM
aW5rZWRPbk9yQWZ0ZXJWZXJzaW9uKCkuCisgICAgICAgICgtW1dlYlZpZXcgX3VwZGF0ZVNjcmVl
blNjYWxlRnJvbVdpbmRvd10pOiBVc2VkIHNjcmVlblNjYWxlRmFjdG9yKCkgaW5zdGVhZCBvZiBX
S0dldFNjcmVlblNjYWxlRmFjdG9yKCkuCisKIDIwMTUtMTAtMjggIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQsIG5vdCBXZWJDb3JlLCBzaG91
bGQgZG8gY29udGV4dCBtZW51IGNvbnZlcnNpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzOTEyYjQzN2JkZTRk
Y2NjNzM1NDhmYmM0ZDhmZGNhZDU2NDliMzVhLi5mNWQ5YWM0YjExMzhjMjA1Mjc2ZGIyMDhlNjNi
NTE1NzNhODUxNGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTUtMTAtMzEgIEFu
ZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgaU9TLW9ubHkg
V2ViS2l0U3lzdGVtSW50ZXJmYWNlIGNhbGxzIHdpdGggU1BJCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3NjMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9BY2Nlc3NpYmlsaXR5SU9TLmg6
IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9BY2Nlc3NpYmlsaXR5SU9TLm1tOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6QVhSZW1vdGVUb2tlbik6IFVwc3RyZWFtZWQgdGhlIGltcGxlbWVudGF0
aW9uIG9mIFdLQVhSZW1vdGVUb2tlbigpIGZyb20gV2ViS2l0U3lzdGVtSW50ZXJmYWNlLgorICAg
ICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmg6IFVzZWQgU2V0dGluZ3M6
OmRlZmF1bHRNaW5pbXVtWm9vbUZvbnRTaXplKCkgaW5zdGVhZCBvZiBXS0dldE1pbmltdW1ab29t
Rm9udFNpemUoKS4KKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHA6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgIChzaG91
bGRBbGxvd1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrKTogVXNlZCBkeWxkX2dldF9wcm9n
cmFtX3Nka192ZXJzaW9uKCkgaW5zdGVhZCBvZiBpb3NFeGVjdXRhYmxlV2FzTGlua2VkT25PckFm
dGVyVmVyc2lvbigpLgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Rha2VWaWV3U25hcHNob3RdKTog
VXNlZCBzY3JlZW5TY2FsZUZhY3RvcigpIGluc3RlYWQgb2YgV0tHZXRTY3JlZW5TY2FsZUZhY3Rv
cigpLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlv
bi5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBpbml0XSk6IFVzZWQgR2Vz
dGFsdDo6ZGV2aWNlQ2xhc3MoKSBpbnN0ZWFkIG9mIFdLR2V0RGV2aWNlQ2xhc3MoKS4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW06CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOmNvbmZpZ3VyYXRpb246
XSk6IFVzZWQgc2NyZWVuU2NhbGVGYWN0b3IoKSBpbnN0ZWFkIG9mIFdLR2V0U2NhbGVGYWN0b3JG
b3JTY3JlZW4oKS4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfdXBkYXRlRm9yU2NyZWVuOl0p
OiBEaXR0by4KKyAgICAgICAgKEFYU3RvcmVSZW1vdGVDb25uZWN0aW9uSW5mb3JtYXRpb24pOiBV
cHN0cmVhbWVkIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBXS0FYU3RvcmVSZW1vdGVDb25uZWN0aW9u
SW5mb3JtYXRpb24oKSBmcm9tIFdlYktpdFN5c3RlbUludGVyZmFjZS4KKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBfYWNjZXNzaWJpbGl0eVJlZ2lzdGVyVUlQcm9jZXNzVG9rZW5zXSk6IFVzZWQg
QVhSZW1vdGVUb2tlbigpIGFuZCBBWFN0b3JlUmVtb3RlQ29ubmVjdGlvbkluZm9ybWF0aW9uKCkg
aW5zdGVhZCBvZiBXS0FYUmVtb3RlVG9rZW4oKSBhbmQgV0tBWFN0b3JlUmVtb3RlQ29ubmVjdGlv
bkluZm9ybWF0aW9uKCkuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW06CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2NyZWVuU2l6ZSk6IFVzZWQgc2NyZWVu
U2l6ZSgpIGluc3RlYWQgb2YgV0tHZXRTY3JlZW5TaXplKCkuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6YXZhaWxhYmxlU2NyZWVuU2l6ZSk6IFVzZWQgYXZhaWxhYmxlU2NyZWVuU2l6
ZSgpIGluc3RlYWQgb2YgV0tHZXRBdmFpbGFibGVTY3JlZW5TaXplKCkuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6dGV4dEF1dG9zaXppbmdXaWR0aCk6IFVzZWQgc2NyZWVuU2l6ZSgp
IGluc3RlYWQgb2YgV0tHZXRTY3JlZW5TaXplKCkuCisgICAgICAgICogV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbToKKyAgICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50
ZXJmYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZUFj
Y2Vzc2liaWxpdHkpOiBVc2VkIEFYUmVtb3RlVG9rZW4oKSBpbnN0ZWFkIG9mIFdLQVhSZW1vdGVU
b2tlbigpLgorCiAyMDE1LTEwLTI4ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUu
Y29tPgogCiAgICAgICAgIEZpeCB0aGUgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1MWM2YTIyMjNkNjgzMjNhNjEwNGJl
NDZiM2QxZTBmZThhYmZhYjc5Li4xNGMzOGE5MzQyM2FlMmQyNDVlYTBjNmZkZjlhOTU4MmU2MDcz
NDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xMzU5LDcgKzEzNTksNiBAQAogCQkzMURFQTQ1NTFCMzlGNEQ5MDBGNzcxNzgg
LyogV2ViU3lzdGVtQmFja2Ryb3BMYXllci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxREVBNDUzMUIzOUY0RDkwMEY3NzE3OCAvKiBXZWJTeXN0ZW1C
YWNrZHJvcExheWVyLm1tICovOyB9OwogCQkzMURFQTQ1NjFCMzlGNEQ5MDBGNzcxNzggLyogV2Vi
U3lzdGVtQmFja2Ryb3BMYXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzFERUE0NTQxQjM5RjREOTAwRjc3MTc4IC8qIFdlYlN5c3RlbUJhY2tkcm9w
TGF5ZXIuaCAqLzsgfTsKIAkJMzFERjYzNTcxQUYxODdERDAwNzhGRDkxIC8qIE5TQ29sb3JTUEku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxREY2MzU2
MUFGMTg3REQwMDc4RkQ5MSAvKiBOU0NvbG9yU1BJLmggKi87IH07Ci0JCTMxREY2MzU5MUFGMTk0
RjAwMDc4RkQ5MSAvKiBVSUNvbG9yU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzMURGNjM1ODFBRjE5NEYwMDA3OEZEOTEgLyogVUlDb2xvclNQSS5o
ICovOyB9OwogCQkzMUVBRjk3RTEyMTQzNUE0MDBFN0MxQkYgLyogRGV2aWNlTW90aW9uQ2xpZW50
SU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUVB
Rjk3QzEyMTQzNUE0MDBFN0MxQkYgLyogRGV2aWNlTW90aW9uQ2xpZW50SU9TLmggKi87IH07CiAJ
CTMxRUFGOTdGMTIxNDM1QTQwMEU3QzFCRiAvKiBEZXZpY2VNb3Rpb25DbGllbnRJT1MubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUVBRjk3RDEyMTQz
NUE0MDBFN0MxQkYgLyogRGV2aWNlTW90aW9uQ2xpZW50SU9TLm1tICovOyB9OwogCQkzMUVDMUUy
ODE0RkY2MEVFMDBDOTQ2NjIgLyogSlNOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFFQzFFMjYx
NEZGNjBFRTAwQzk0NjYyIC8qIEpTTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcCAq
LzsgfTsKQEAgLTE2NzgsNyArMTY3Nyw2IEBACiAJCTQ0QTI4QUFGMTJERkI4QkYwMEFFOTIzQiAv
KiBNYXRoTUxOYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDRBMjhBQUUxMkRGQjhCRjAwQUU5MjNCIC8qIE1hdGhNTE5hbWVzLmggKi87IH07CiAJ
CTQ0QzM2M0YwMEZBQTdCQjMwMDk3RjhDQyAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1Mu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QzM2M0VF
MEZBQTdCQjMwMDk3RjhDQyAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NEMzNjNGMTBGQUE3
QkIzMDA5N0Y4Q0MgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRDMzYzRUYwRkFBN0JCMzAwOTdG
OENDIC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5tbSAqLzsgfTsKLQkJNDRDM0NGRTgx
NTU2QkU1RDAwMDEzNjA5IC8qIFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QzNDRkU3MTU1NkJFNUQwMDAx
MzYwOSAvKiBXZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDRDOTkxODIwRjNEMUUwRDAwNTg2NjcwIC8q
IFNjcm9sbGJhclRoZW1lSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDRDOTkxODEwRjNEMUUwRDAwNTg2NjcwIC8qIFNjcm9sbGJhclRoZW1lSU9T
Lm1tICovOyB9OwogCQk0NEM5OTE4NjBGM0QxRUJFMDA1ODY2NzAgLyogU2Nyb2xsYmFyVGhlbWVJ
T1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Qzk5
MTg1MEYzRDFFQkUwMDU4NjY3MCAvKiBTY3JvbGxiYXJUaGVtZUlPUy5oICovOyB9OwogCQk0NEM5
OTE5RjBGM0QyMTBFMDA1ODY2NzAgLyogVGhlbWVJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Qzk5MTlEMEYzRDIxMEUwMDU4NjY3MCAvKiBUaGVt
ZUlPUy5oICovOyB9OwpAQCAtNDA1NSw2ICs0MDUzLDkgQEAKIAkJQTFFMTE1NDYxMzAxNUM0RTAw
NTRBQzhDIC8qIFBvaW50TGlnaHRTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTFFMTE1NDUxMzAxNUM0RTAwNTRBQzhDIC8qIFBvaW50TGln
aHRTb3VyY2UuY3BwICovOyB9OwogCQlBMUUxMTU0ODEzMDE1QzVEMDA1NEFDOEMgLyogU3BvdExp
Z2h0U291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExRTExNTQ3MTMwMTVDNUQwMDU0QUM4QyAvKiBTcG90TGlnaHRTb3VyY2UuY3BwICovOyB9
OwogCQlBMUU1QjMxRjFBQUQxREE0MDA2RUJFRkIgLyogSlNNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExRTVCMzFEMUFBRDFEQTQwMDZFQkVGQiAvKiBKU01vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3NDdXN0b20uY3BwICovOyB9OworCQlBMUVENzc4QzFCRTMyOTQwMDBEQzE3OTEgLyogR2VzdGFs
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUVE
Nzc4QTFCRTMyOTNGMDBEQzE3OTEgLyogR2VzdGFsdC5jcHAgKi87IH07CisJCUExRUQ3NzhEMUJF
MzI5NDAwMERDMTc5MSAvKiBHZXN0YWx0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMUVENzc4QjFCRTMyOTQwMDBEQzE3OTEgLyogR2VzdGFsdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUExRUQ3NzhG
MUJFNDI5MTgwMERDMTc5MSAvKiBVSUtpdFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTFFRDc3OEUxQkU0MjkxODAwREMxNzkxIC8qIFVJS2l0U1BJ
LmggKi87IH07CiAJCUEyQjkyMTczMTZDNUNDNDIwMDQxRENEOSAvKiBJbnRSZWN0RXh0ZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMkI5MjE3MjE2
QzVDQzQyMDA0MURDRDkgLyogSW50UmVjdEV4dGVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUEzMUM0RTREMTZFMDJBQTYwMDJGNzk1NyAvKiBP
RVNUZXh0dXJlSGFsZkZsb2F0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEEzMUM0RTRDMTZFMDJBQTYwMDJGNzk1NyAvKiBPRVNUZXh0dXJlSGFsZkZs
b2F0LmNwcCAqLzsgfTsKIAkJQTMxQzRFNEYxNkUwMkFCNDAwMkY3OTU3IC8qIE9FU1RleHR1cmVI
YWxmRmxvYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEEzMUM0RTRFMTZFMDJBQjQwMDJGNzk1NyAvKiBPRVNUZXh0dXJlSGFsZkZsb2F0LmggKi87IH07
CkBAIC02MDU5LDcgKzYwNjAsNyBAQAogCQlDRTEyNTIzRDFBMTY3NkNEMDA4NjQ0ODAgLyogUXVh
cnR6Q29yZVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0UxMjUyM0MxQTE2NzZDRDAwODY0NDgwIC8qIFF1YXJ0ekNvcmVTUEkuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTEyNTI0MTFBMTZCMUI2
MDA4NjQ0ODAgLyogTWVkaWFQbGF5ZXJTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENFMTI1MjQwMUExNkIxQjYwMDg2NDQ4MCAvKiBNZWRpYVBsYXll
clNQSS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUNFMTI1MjQzMUExNkMwMUEwMDg2NDQ4MCAvKiBDb3JlVUlTUEkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMTI1MjQyMUExNkMwMUEwMDg2NDQ4MCAv
KiBDb3JlVUlTUEkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQlDRTEyNTI0NTFBMTZDMjI1MDA4NjQ0ODAgLyogRHluYW1pY0xpbmtlclNQSS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxMjUyNDQxQTE2
QzIyNTAwODY0NDgwIC8qIER5bmFtaWNMaW5rZXJTUEkuaCAqLzsgfTsKKwkJQ0UxMjUyNDUxQTE2
QzIyNTAwODY0NDgwIC8qIER5bmFtaWNMaW5rZXJTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMTI1MjQ0MUExNkMyMjUwMDg2NDQ4MCAvKiBEeW5h
bWljTGlua2VyU1BJLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQ0UxMjUyNDcxQTE2QzJDMjAwODY0NDgwIC8qIE5TUG9pbnRlckZ1bmN0aW9uc1NQ
SS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxMjUy
NDYxQTE2QzJDMjAwODY0NDgwIC8qIE5TUG9pbnRlckZ1bmN0aW9uc1NQSS5oICovOyB9OwogCQlD
RTEyNTI0OTFBMTZDM0JDMDA4NjQ0ODAgLyogTW9iaWxlR2VzdGFsdFNQSS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxMjUyNDgxQTE2QzNCQzAwODY0
NDgwIC8qIE1vYmlsZUdlc3RhbHRTUEkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlDRTEyNTI0RDFBMUE3N0RFMDA4NjQ0ODAgLyogSU9QTUxpYlNQ
SS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxMjUy
NEMxQTFBNzdERTAwODY0NDgwIC8qIElPUE1MaWJTUEkuaCAqLzsgfTsKQEAgLTg2OTYsNyArODY5
Nyw2IEBACiAJCTMxREVBNDUzMUIzOUY0RDkwMEY3NzE3OCAvKiBXZWJTeXN0ZW1CYWNrZHJvcExh
eWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViU3lzdGVt
QmFja2Ryb3BMYXllci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFERUE0NTQx
QjM5RjREOTAwRjc3MTc4IC8qIFdlYlN5c3RlbUJhY2tkcm9wTGF5ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU3lzdGVtQmFja2Ryb3BMYXllci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzMURGNjM1NjFBRjE4N0REMDA3OEZEOTEgLyogTlNDb2xvclNQ
SS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU0NvbG9yU1BJLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxREY2MzU4MUFGMTk0RjAwMDc4RkQ5MSAvKiBVSUNv
bG9yU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVJQ29sb3JTUEkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFFOEQ4QkExNjBCQzk0QjAwNENFOEY1IC8q
IFJlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMzFFOEQ4QkIxNjBCQzk0QzAwNENFOEY1IC8qIFJlbmRlclNuYXBzaG90dGVk
UGx1Z0luLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclNuYXBzaG90
dGVkUGx1Z0luLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxRUFGOTdDMTIxNDM1
QTQwMEU3QzFCRiAvKiBEZXZpY2VNb3Rpb25DbGllbnRJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRGV2aWNlTW90aW9uQ2xpZW50SU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC05MDM3LDcgKzkwMzcsNiBAQAogCQk0NEEyOEFBRTEyREZCOEJGMDBBRTky
M0IgLyogTWF0aE1MTmFtZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0
aE1MTmFtZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRDMzYzRUUwRkFBN0JC
MzAwOTdGOENDIC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRDMzYzRUYwRkFBN0JCMzAwOTdGOENDIC8qIFJ1bnRp
bWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNDRDM0NGRTcxNTU2QkU1RDAwMDEzNjA5IC8qIFdlYkNvcmVTeXN0ZW1J
bnRlcmZhY2VJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZVN5
c3RlbUludGVyZmFjZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NEM5OTE4
MTBGM0QxRTBEMDA1ODY2NzAgLyogU2Nyb2xsYmFyVGhlbWVJT1MubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTY3JvbGxiYXJUaGVtZUlPUy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRDOTkxODUwRjNEMUVCRTAwNTg2NjcwIC8qIFNjcm9sbGJh
clRoZW1lSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGJhclRo
ZW1lSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0Qzk5MTlEMEYzRDIxMEUw
MDU4NjY3MCAvKiBUaGVtZUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
aGVtZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE1ODYsNiArMTE1ODUs
OSBAQAogCQlBMUUxMTU0NTEzMDE1QzRFMDA1NEFDOEMgLyogUG9pbnRMaWdodFNvdXJjZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2ludExpZ2h0U291cmNlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFFMTE1NDcxMzAxNUM1RDAwNTRBQzhD
IC8qIFNwb3RMaWdodFNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTcG90TGlnaHRTb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
MUU1QjMxRDFBQUQxREE0MDA2RUJFRkIgLyogSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ3Vz
dG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5nc0N1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUExRUQ3NzhBMUJFMzI5M0YwMERDMTc5MSAvKiBHZXN0YWx0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlc3RhbHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBMUVENzc4QjFCRTMyOTQwMDBEQzE3OTEgLyogR2VzdGFsdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBHZXN0YWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUExRUQ3NzhFMUJFNDI5MTgwMERDMTc5MSAvKiBVSUtpdFNQSS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBVSUtpdFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBMjA4RTIyMkE1NkEwQzc1NzVGMkE3MkUgLyogUmVuZGVyTWF0aE1MTWVuY2xvc2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTWF0aE1MTWVuY2xvc2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTJCOTIxNzIxNkM1Q0M0MjAwNDFEQ0Q5
IC8qIEludFJlY3RFeHRlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50
UmVjdEV4dGVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzFDNEU0QzE2RTAy
QUE2MDAyRjc5NTcgLyogT0VTVGV4dHVyZUhhbGZGbG9hdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBPRVNUZXh0dXJlSGFsZkZsb2F0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NDgwLDcgKzE5NDgyLDcgQEAKIAkJCQlDRTEyNTI0ODFBMTZD
M0JDMDA4NjQ0ODAgLyogTW9iaWxlR2VzdGFsdFNQSS5oICovLAogCQkJCTZGQUQ0QTU2MUE5RDBG
QUUwMDlGN0QzQyAvKiBPcGVuR0xFU1NQSS5oICovLAogCQkJCUNFMTI1MjM4MUExNjZGQTAwMDg2
NDQ4MCAvKiBRdWlja0xvb2tTUEkuaCAqLywKLQkJCQkzMURGNjM1ODFBRjE5NEYwMDA3OEZEOTEg
LyogVUlDb2xvclNQSS5oICovLAorCQkJCUExRUQ3NzhFMUJFNDI5MTgwMERDMTc5MSAvKiBVSUtp
dFNQSS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBpb3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwpAQCAtMTk1MDcsNiArMTk1MDksOCBAQAogCQkJCTI2RjQwRDQ5MTQ5MDRBNjMwMENBNjdD
NCAvKiBFdmVudExvb3BJT1MubW0gKi8sCiAJCQkJMjZDMTdBM0MxNDkxRDJENDAwRDEyQkEyIC8q
IEZpbGVTeXN0ZW1JT1MuaCAqLywKIAkJCQkyNkMxN0EzRDE0OTFEMkQ0MDBEMTJCQTIgLyogRmls
ZVN5c3RlbUlPUy5tbSAqLywKKwkJCQlBMUVENzc4QTFCRTMyOTNGMDBEQzE3OTEgLyogR2VzdGFs
dC5jcHAgKi8sCisJCQkJQTFFRDc3OEIxQkUzMjk0MDAwREMxNzkxIC8qIEdlc3RhbHQuaCAqLywK
IAkJCQkyNjU1NDEzNzE0ODk4MTFDMDAwREZDNUQgLyogS2V5RXZlbnRDb2Rlc0lPUy5oICovLAog
CQkJCTI2NTU0MTM4MTQ4OTgxMUMwMDBERkM1RCAvKiBLZXlFdmVudElPUy5tbSAqLywKIAkJCQlF
NEMzQjFGOTBGMEU0MTYxMDA5NjkzRjYgLyogTGVnYWN5VGlsZUNhY2hlLmggKi8sCkBAIC0xOTU0
Nyw3ICsxOTU1MSw2IEBACiAJCQkJMUY3MkJGMDkxODdGRDQyNzAwMDlCQ0IzIC8qIFRpbGVDb250
cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5oICovLAogCQkJCTMxNDAzNzk3MTI0QkVBN0YwMEFGNDBF
NCAvKiBXZWJDb3JlTW90aW9uTWFuYWdlci5oICovLAogCQkJCTMxNDAzNzk4MTI0QkVBN0YwMEFG
NDBFNCAvKiBXZWJDb3JlTW90aW9uTWFuYWdlci5tbSAqLywKLQkJCQk0NEMzQ0ZFNzE1NTZCRTVE
MDAwMTM2MDkgLyogV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5oICovLAogCQkJCUU0NTM5MDM4
MEVBRkQ2MzcwMDM2OTVDOCAvKiBXZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLm1tICovLAogCQkJ
CUZFMEQ4NEU4MTA0ODQzNDgwMDFBMTc5RSAvKiBXZWJFdmVudC5oICovLAogCQkJCUZFMEQ4NEVB
MTA0ODQzNkUwMDFBMTc5RSAvKiBXZWJFdmVudC5tbSAqLywKQEAgLTI1MjkxLDYgKzI1Mjk0LDcg
QEAKIAkJCQk4NTUyNkNEMjBBQjBCN0Q5MDAwMzAyRUEgLyogRE9NVHJlZVdhbGtlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODUwQjQxQzMwQUQ5RTdFNzAwQTZFRDRGIC8qIERPTVRyZWVXYWxrZXJJ
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVDN0Y0OTEwQUFGNzlEQzAwNDAxNEREIC8q
IERPTVVJRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUExRUQ3NzhGMUJFNDI5MTgwMERDMTc5
MSAvKiBVSUtpdFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU5ODlERDAwQUNDOEJCRDAwQTBC
QzUxIC8qIERPTVVJRXZlbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVEMTNEMkEw
Q0VBOTFERjAwRDg5NDY2IC8qIERPTVVJS2l0RXh0ZW5zaW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMkUzN0RGREIxMkRCQUZCODAwQTZCMjMzIC8qIERPTVVSTC5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNzY4NSw2ICsyNzY4OSw3IEBACiAJCQkJQzEwNURBNjQwRjNBQTZCODAwMURENDRGIC8qIFRl
eHRFbmNvZGluZ0RldGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREE0OTBEMDA2QzFE
MDBFRjZGMjYgLyogVGV4dEVuY29kaW5nUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTkz
M0ExNDMwMEI3RDE4ODYwMEE1M0ZGRCAvKiBUZXh0RXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUExRUQ3NzhEMUJFMzI5NDAwMERDMTc5MSAvKiBHZXN0YWx0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNzdCNDFBMDEyRTY3NUE5MDA1NDM0M0QgLyogVGV4dEV2ZW50SW5wdXRUeXBlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGNTVCM0REODEyNTFGMTJEMDAzRUYyNjkgLyogVGV4dEZpZWxkSW5wdXRU
eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREE0NTBEMDA2QzFEMDBFRjZGMjYgLyogVGV4
dEZsYWdzLmggaW4gSGVhZGVycyAqLywKQEAgLTI3NzYzLDcgKzI3NzY4LDYgQEAKIAkJCQlDMzc1
RDdGRTE2NjM5NTE5MDA2MTg0QUIgLyogVHlwZUFoZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
NDZBMkIxQzE3Q0E2NUI5MDAwREJDRDggLyogVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUxQTA5OUU2NDkyMDA1NkU1ODEgLyogVHlwaW5n
Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzFERjYzNTkxQUYxOTRGMDAwNzhGRDkxIC8q
IFVJQ29sb3JTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDMxQjRFMEE0NEVGQzcwMEY5OTJF
MCAvKiBVSUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTAzMUI0RjBBNDRFRkM3MDBGOTky
RTAgLyogVUlFdmVudFdpdGhLZXlTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUE0NzM5RDIx
NzU3QUZFQzAwRTc2NzY3IC8qIFVJUmVxdWVzdEV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI3
ODczLDcgKzI3ODc3LDYgQEAKIAkJCQlFMTgwODEwRjE2RkNFQ0RGMDBCODBEMDcgLyogV2ViQ29y
ZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE1MjU1MTUx
NkZEMjM1MDAwM0Q3QURCIC8qIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVE
ZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNFQjE2OTcwOUY4ODBDMDAwOTFGOEZGIC8q
IFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ0QzNDRkU4MTU1
NkJFNUQwMDAxMzYwOSAvKiBXZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBMTQ4MzJDNzE4N0Y2NkM4MDBEQTYzQTYgLyogV2ViQ29yZVRocmVhZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTE0ODMyQzkxODdGNjc2QjAwREE2M0E2IC8qIFdlYkNvcmVUaHJlYWRJ
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE0ODMyQ0ExODdGNjc4MDAwREE2M0E2IC8q
IFdlYkNvcmVUaHJlYWRNZXNzYWdlLmggaW4gSGVhZGVycyAqLywKQEAgLTI4NjYwLDYgKzI4NjYz
LDcgQEAKIAkJCQk0MDlFQkRCMjE2QjdFRTc0MDBDQkEzRkMgLyogQ1NTRm9udEZhY2VMb2FkRXZl
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgwRTZDRTcwQTE5ODlDQTAwN0ZCOEM1IC8qIENT
U0ZvbnRGYWNlUnVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzY0QjRENzBDQjQyOThBMDA1
RjJCNjIgLyogQ1NTRm9udEZhY2VTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTFFRDc3
OEMxQkUzMjk0MDAwREMxNzkxIC8qIEdlc3RhbHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM2
NEI0RDkwQ0I0Mjk4QTAwNUYyQjYyIC8qIENTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNEE2RTlGQzMxM0MxN0QxRDAwNDZBN0Y4IC8qIENTU0ZvbnRGZWF0dXJlVmFs
dWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM2NEI0REIwQ0I0Mjk4QTAwNUYyQjYyIC8qIENT
U0ZvbnRTZWxlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2NvbmZpZy5oIGIvU291cmNlL1dlYkNvcmUvY29uZmlnLmgKaW5kZXggODg5ODU3ZDdjNjgy
ZDkyMDY3ZmQ0OTIyZjdkYmM0ODcwZTk1MWRiYS4uZTMxZjg4ZmQzNWEzZWQxNzE0N2ZlMDI5NGJj
NzBlNDMyNmE2MTVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29uZmlnLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY29uZmlnLmgKQEAgLTExNiwxMSArMTE2LDYgQEAgdHlwZWRlZiBmbG9h
dCBDR0Zsb2F0OwogI2VuZGlmCiAjZW5kaWYgLyogVVNFKENHKSAqLwogCi0jaWYgUExBVEZPUk0o
SU9TKQotI2RlZmluZSBXRUJDT1JFX05BVklHQVRPUl9QTEFURk9STSB3a0dldFBsYXRmb3JtTmFt
ZUZvck5hdmlnYXRvcigpOwotI2RlZmluZSBXRUJDT1JFX05BVklHQVRPUl9WRU5ET1Igd2tHZXRW
ZW5kb3JOYW1lRm9yTmF2aWdhdG9yKCk7Ci0jZW5kaWYKLQogLy8gRklYTUU6IE1vdmUgdGhpcyB0
byBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaCwgd2hpY2ggaXMgd2hlcmUgd2UgZGVmaW5l
IFVTRV9BVkZPVU5EQVRJT04gb24gdGhlIE1hYy4KIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NzMzNAogI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENHKSAmJiBI
QVZFKEFWQ0YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1
YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKaW5k
ZXggZDM0MWMyMTY3M2UzZDJiM2RmZGNmODdmZTMwNjNhYTQ4YjFiYmI2MC4uZjgzMjNkMzk5YjIz
MGRiNjJhOWJjYzMxYmU2NjkzMjZiMTllNmVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRp
YVF1ZXJ5RXZhbHVhdG9yLmNwcApAQCAtNTcsNyArNTcsNyBAQAogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShJT1MpCi0jaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgorI2luY2x1ZGUg
Ikdlc3RhbHQuaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02MzEsOCArNjMx
LDggQEAgc3RhdGljIGJvb2wgdmlld19tb2RlTWVkaWFGZWF0dXJlRXZhbChDU1NWYWx1ZSogdmFs
dWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2kKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1J1bm5p
bmdPbklQaG9uZU9ySVBvZCgpCiB7CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHN0YXRpYyB3a0Rl
dmljZUNsYXNzIGRldmljZUNsYXNzID0gaW9zRGV2aWNlQ2xhc3MoKTsKLSAgICByZXR1cm4gZGV2
aWNlQ2xhc3MgPT0gd2tEZXZpY2VDbGFzc2lQaG9uZSB8fCBkZXZpY2VDbGFzcyA9PSB3a0Rldmlj
ZUNsYXNzaVBvZDsKKyAgICBzdGF0aWMgTUdEZXZpY2VDbGFzcyBkZXZpY2VDbGFzcyA9IEdlc3Rh
bHQ6OmRldmljZUNsYXNzKCk7CisgICAgcmV0dXJuIGRldmljZUNsYXNzID09IE1HRGV2aWNlQ2xh
c3NpUGhvbmUgfHwgZGV2aWNlQ2xhc3MgPT0gTUdEZXZpY2VDbGFzc2lQb2Q7CiAjZWxzZQogICAg
IHJldHVybiBmYWxzZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKaW5kZXggM2Q4YzJhZDAzNDBhMTUwOWFiMTkxMWEzM2JlYmJmYWQyNGRmNDEwYy4uMGUy
NmViYWM5MTVjMjZkODIyZWFiZDJkOTY2OTVhMDZlMDk2N2FhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xMTAsNiArMTEwLDcgQEAKIAogI2lmIFBMQVRG
T1JNKElPUykKICNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaCIKKyNpbmNs
dWRlICJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oIgogI2VuZGlmCiAKICNpZiBF
TkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQpAQCAtNjQzNCw3ICs2NDM1LDcgQEAgYm9v
bCBIVE1MTWVkaWFFbGVtZW50OjpzaG91bGRPdmVycmlkZUJhY2tncm91bmRQbGF5YmFja1Jlc3Ry
aWN0aW9uKFBsYXRmb3JtTWVkaWEKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlICYgVmlk
ZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpCiAgICAgICAgIHJldHVybiB0cnVlOwog
I2lmIFBMQVRGT1JNKElPUykKLSAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlID09IFZpZGVv
RnVsbHNjcmVlbk1vZGVTdGFuZGFyZCAmJiB3a0lzT3B0aW1pemVkRnVsbHNjcmVlblN1cHBvcnRl
ZCgpICYmIGlzUGxheWluZygpKQorICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGUgPT0gVmlk
ZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkICYmIHN1cHBvcnRzUGljdHVyZUluUGljdHVyZSgpICYm
IGlzUGxheWluZygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKaW5kZXggYzI0
MTY3YzAxNGQxZDczNWQxZDBlYTFjZWMyYTU5MzU1MjdlN2JiOC4uZGQzY2EzNDM1ZmFjODIwZDBk
MTgwOWUyZmQxMjE4YmZiZGQwYjZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT2JqZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0
RWxlbWVudC5jcHAKQEAgLTU1LDggKzU1LDggQEAKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKICNp
ZiBQTEFURk9STShJT1MpCisjaW5jbHVkZSAiRHluYW1pY0xpbmtlclNQSS5oIgogI2luY2x1ZGUg
IlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5oIgotI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1J
bnRlcmZhY2UuaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNTksNyArMTU5
LDcgQEAgc3RhdGljIHZvaWQgbWFwRGF0YVBhcmFtVG9TcmMoVmVjdG9yPFN0cmluZz4qIHBhcmFt
TmFtZXMsIFZlY3RvcjxTdHJpbmc+KiBwYXJhbVYKICNpZiBQTEFURk9STShJT1MpCiBzdGF0aWMg
Ym9vbCBzaG91bGROb3RQZXJmb3JtVVJMQWRqdXN0bWVudCgpCiB7Ci0gICAgc3RhdGljIGJvb2wg
c2hvdWxkTm90UGVyZm9ybVVSTEFkanVzdG1lbnQgPSBhcHBsaWNhdGlvbklzTkFTQUhEKCkgJiYg
IWlvc0V4ZWN1dGFibGVXYXNMaW5rZWRPbk9yQWZ0ZXJWZXJzaW9uKHdrSU9TU3lzdGVtVmVyc2lv
bl81XzApOworICAgIHN0YXRpYyBib29sIHNob3VsZE5vdFBlcmZvcm1VUkxBZGp1c3RtZW50ID0g
YXBwbGljYXRpb25Jc05BU0FIRCgpICYmIGR5bGRfZ2V0X3Byb2dyYW1fc2RrX3ZlcnNpb24oKSA8
IERZTERfSU9TX1ZFUlNJT05fNV8wOwogICAgIHJldHVybiBzaG91bGROb3RQZXJmb3JtVVJMQWRq
dXN0bWVudDsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5j
cHAKaW5kZXggYmQzMDY3NWNiMWFjZWE4YTE1ZTc3OWQ3NjNiYmRlYTY2OTc5M2FmNC4uZTY4MTJk
YjE3YjY0NGJiMDg4MmRhZDMzZTgyNDVjNWMzNzM0YTA3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC00Myw2ICs0MywxMCBAQAogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKKyNpZiBFTkFCTEUoVklE
RU9fUFJFU0VOVEFUSU9OX01PREUpCisjaW5jbHVkZSAiV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CkBAIC0zNjksNyArMzczLDcgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50
Ojp3ZWJraXRTdXBwb3J0c1ByZXNlbnRhdGlvbk1vZGUoY29uc3QgU3RyaW5nJiBtb2RlKSBjb25z
dAogICAgICAgICByZXR1cm4gbWVkaWFTZXNzaW9uKCkuZnVsbHNjcmVlblBlcm1pdHRlZCgqdGhp
cykgJiYgc3VwcG9ydHNGdWxsc2NyZWVuKCk7CiAKICAgICBpZiAobW9kZSA9PSBwcmVzZW50YXRp
b25Nb2RlUGljdHVyZUluUGljdHVyZSgpKQotICAgICAgICByZXR1cm4gd2tJc09wdGltaXplZEZ1
bGxzY3JlZW5TdXBwb3J0ZWQoKSAmJiBtZWRpYVNlc3Npb24oKS5hbGxvd3NQaWN0dXJlSW5QaWN0
dXJlKCp0aGlzKSAmJiBzdXBwb3J0c0Z1bGxzY3JlZW4oKTsKKyAgICAgICAgcmV0dXJuIHN1cHBv
cnRzUGljdHVyZUluUGljdHVyZSgpICYmIG1lZGlhU2Vzc2lvbigpLmFsbG93c1BpY3R1cmVJblBp
Y3R1cmUoKnRoaXMpICYmIHN1cHBvcnRzRnVsbHNjcmVlbigpOwogCiAgICAgaWYgKG1vZGUgPT0g
cHJlc2VudGF0aW9uTW9kZUlubGluZSgpKQogICAgICAgICByZXR1cm4gIW1lZGlhU2Vzc2lvbigp
LnJlcXVpcmVzRnVsbHNjcmVlbkZvclZpZGVvUGxheWJhY2soKnRoaXMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTmF2aWdhdG9yQmFzZS5jcHAKaW5kZXggZWQ5OWNmZjdmMDY4YTM0NDMzMGQ3OGY2MDhiYWQw
Mzk0NTgxOWMxMC4uNGQwYzM5ZjM0ZGVkYWYyN2IyNzI1MThlOTlkZDJlNTY2YmIwNzYyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwCkBAIC0zNiwxMiArMzYsMTIgQEAKICNl
bmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQotI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2UuaCIKKyNpbmNsdWRlICJHZXN0YWx0LmgiCiAjZW5kaWYKIAogI2lmbmRlZiBXRUJDT1JFX05B
VklHQVRPUl9QTEFURk9STQogI2lmIFBMQVRGT1JNKElPUykKLSNkZWZpbmUgV0VCQ09SRV9OQVZJ
R0FUT1JfUExBVEZPUk0gIiIKKyNkZWZpbmUgV0VCQ09SRV9OQVZJR0FUT1JfUExBVEZPUk0gcGxh
dGZvcm1OYW1lRm9yTmF2aWdhdG9yKCkKICNlbGlmIE9TKE1BQ19PU19YKSAmJiAoQ1BVKFBQQykg
fHwgQ1BVKFBQQzY0KSkKICNkZWZpbmUgV0VCQ09SRV9OQVZJR0FUT1JfUExBVEZPUk0gIk1hY1BQ
QyIKICNlbGlmIE9TKE1BQ19PU19YKSAmJiAoQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkpCkBAIC02
OSw5ICs2OSwxNiBAQAogI2RlZmluZSBXRUJDT1JFX05BVklHQVRPUl9WRU5ET1JfU1VCICIiCiAj
ZW5kaWYgLy8gaWZuZGVmIFdFQkNPUkVfTkFWSUdBVE9SX1ZFTkRPUl9TVUIKIAotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKKyNpZiBQTEFURk9STShJT1MpCitzdGF0aWMgQ0ZTdHJpbmdSZWYgcGxh
dGZvcm1OYW1lRm9yTmF2aWdhdG9yKCkKK3sKKyAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgZGV2aWNl
TmFtZSA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRlJldGFpbihHZXN0YWx0OjpkZXZpY2VO
YW1lKCkpKTsKKyAgICByZXR1cm4gZGV2aWNlTmFtZTsKK30KKyNlbmRpZgorCiBOYXZpZ2F0b3JC
YXNlOjp+TmF2aWdhdG9yQmFzZSgpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5kZXggY2Y3
YjA0ZmY3YWE5MDkzY2Q3NDQ0MDcyMWM4NTE0YmM0N2ZhNGQyOS4uM2IwNDc2YTMxNmQ1MWRjZjcz
Y2U1NWQ4YzVhODcwZDUxYmMyMWFmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAtMjc3LDYg
KzI3NywxMCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZvcmNlUGVu
ZGluZ1dlYkdMUG9saWN5KGJvb2wpOwogICAgIGJvb2wgaXNGb3JjZVBlbmRpbmdXZWJHTFBvbGlj
eSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9yY2VQZW5kaW5nV2ViR0xQb2xpY3k7IH0KKyAgICAKKyNp
ZiBQTEFURk9STShJT1MpCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGZsb2F0IGRlZmF1bHRN
aW5pbXVtWm9vbUZvbnRTaXplKCk7CisjZW5kaWYKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBT
ZXR0aW5ncyhQYWdlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0
Q29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJh
dGlvbi5jcHAKaW5kZXggOTI0NzkwZDkzYTZjNDQxNTBjNjBiNmFlZmI0NDE5ZjIzMzgxYTk5ZS4u
NWE4NjhmNGFkOWJlYjkwOGFlNGE0ZDZkZWQ2Y2JhOWE2ZTc4MjhlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmNwcApAQCAtMzIsNyArMzIsNyBAQAog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKLSNpbmNs
dWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4u
aCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yMTMsNyArMjEzLDcgQEAgVmll
d3BvcnRDb25maWd1cmF0aW9uOjpQYXJhbWV0ZXJzIFZpZXdwb3J0Q29uZmlndXJhdGlvbjo6dGV4
dERvY3VtZW50UGFyYW1ldGVycygKICAgICBQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAKICNpZiBQ
TEFURk9STShJT1MpCi0gICAgcGFyYW1ldGVycy53aWR0aCA9IHN0YXRpY19jYXN0PGludD4od2tH
ZXRTY3JlZW5TaXplKCkud2lkdGgpOworICAgIHBhcmFtZXRlcnMud2lkdGggPSBzdGF0aWNfY2Fz
dDxpbnQ+KHNjcmVlblNpemUoKS53aWR0aCgpKTsKICNlbHNlCiAgICAgLy8gRklYTUU6IHRoaXMg
bmVlZHMgdG8gYmUgdW5pZmllZCB3aXRoIFZpZXdwb3J0QXJndW1lbnRzIG9uIGFsbCBwb3J0cy4K
ICAgICBwYXJhbWV0ZXJzLndpZHRoID0gMzIwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9pb3MvVXNlckFnZW50SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvVXNlckFn
ZW50SU9TLm1tCmluZGV4IDY4ZmJkZjJhNzIzNGM4MTM2YmI1Zjk0NzA5OTc5OGIxY2YzYTBkZmEu
LmVhNmEwZDFlZmQyYzhkNmU2ZWY3YjNjZDZmNjUzOTc2Y2I0N2UxMWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvaW9zL1VzZXJBZ2VudElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2lvcy9Vc2VyQWdlbnRJT1MubW0KQEAgLTI2LDE2ICsyNiw0OCBAQAogI2ltcG9ydCAi
Y29uZmlnLmgiCiAjaW1wb3J0ICJVc2VyQWdlbnQuaCIKIAorI2ltcG9ydCAiR2VzdGFsdC5oIgor
I2ltcG9ydCAiTW9iaWxlR2VzdGFsdFNQSS5oIgorI2ltcG9ydCAiU29mdExpbmtpbmcuaCIKICNp
bXBvcnQgIlN5c3RlbVZlcnNpb24uaCIKKyNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0ICJX
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK1NP
RlRfTElOS19GUkFNRVdPUksoVUlLaXQpOworU09GVF9MSU5LX0NMQVNTKFVJS2l0LCBVSUFwcGxp
Y2F0aW9uKTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TdHJpbmcgc3RhbmRhcmRVc2VyQWdl
bnRXaXRoQXBwbGljYXRpb25OYW1lKGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25OYW1lLCBjb25z
dCBTdHJpbmcmIGZ1bGxXZWJLaXRWZXJzaW9uU3RyaW5nKQorc3RhdGljIGlubGluZSBib29sIGlz
Q2xhc3NpYyh2b2lkKQoreworICAgIHJldHVybiBbW2dldFVJQXBwbGljYXRpb25DbGFzcygpIHNo
YXJlZEFwcGxpY2F0aW9uXSBfaXNDbGFzc2ljXTsKK30KKworc3RhdGljIGlubGluZSBOU1N0cmlu
ZyAqb3NOYW1lRm9yVXNlckFnZW50KHZvaWQpCiB7Ci0gICAgaWYgKENGU3RyaW5nUmVmIG92ZXJy
aWRlVXNlckFnZW50ID0gd2tHZXRVc2VyQWdlbnQoKSkKLSAgICAgICAgcmV0dXJuIG92ZXJyaWRl
VXNlckFnZW50OworICAgIGlmIChHZXN0YWx0OjpoYXNJUGFkQ2FwYWJpbGl0eSgpICYmICFpc0Ns
YXNzaWMoKSkKKyAgICAgICAgcmV0dXJuIEAiT1MiOworICAgIHJldHVybiBAImlQaG9uZSBPUyI7
Cit9CiAKK3N0YXRpYyBpbmxpbmUgTlNTdHJpbmcgKmRldmljZU5hbWUodm9pZCkKK3sKKyAgICBp
ZiAoaXNDbGFzc2ljKCkpCisgICAgICAgIHJldHVybiBAImlQaG9uZSI7CisgICAgCisgICAgYXV0
byBkZXZpY2VOYW1lID0gcmV0YWluUHRyKChOU1N0cmluZyAqKUdlc3RhbHQ6OmRldmljZU5hbWUo
KSk7CisjaWYgUExBVEZPUk0oSU9TX1NJTVVMQVRPUikKKyAgICBOU1JhbmdlIHNpbXVsYXRvclN0
cmluZ1JhbmdlID0gW2RldmljZU5hbWUgcmFuZ2VPZlN0cmluZzpAIiBTaW11bGF0b3IiIG9wdGlv
bnM6TlNCYWNrd2FyZHNTZWFyY2hdOworICAgIE5TVUludGVnZXIgbG9jYXRpb24gPSBzaW11bGF0
b3JTdHJpbmdSYW5nZS5sb2NhdGlvbjsKKyAgICBpZiAobG9jYXRpb24gIT0gTlNOb3RGb3VuZCAm
JiBsb2NhdGlvbiA+IDApCisgICAgICAgIHJldHVybiBbZGV2aWNlTmFtZSBzdWJzdHJpbmdUb0lu
ZGV4OmxvY2F0aW9uXTsKKyNlbmRpZgorICAgIHJldHVybiBkZXZpY2VOYW1lLmF1dG9yZWxlYXNl
KCk7Cit9CisKK1N0cmluZyBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoY29u
c3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgZnVsbFdlYktpdFZlcnNp
b25TdHJpbmcpCit7CiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZXJlIGlzIGEgdXNlciBhZ2Vu
dCBvdmVycmlkZSBmb3IgYWxsIFdlYktpdCBjbGllbnRzLgogICAgIENGUHJvcGVydHlMaXN0UmVm
IG92ZXJyaWRlID0gQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZShDRlNUUigiVXNlckFnZW50Iiks
IENGU1RSKCJjb20uYXBwbGUuV2ViRm91bmRhdGlvbiIpKTsKICAgICBpZiAob3ZlcnJpZGUpIHsK
QEAgLTQ1LDEyICs3NywxMCBAQCBTdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRp
b25OYW1lKGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25OYW1lLCBjb25zdAogICAgIH0KIAogICAg
IE5TU3RyaW5nICp3ZWJLaXRWZXJzaW9uID0gdXNlckFnZW50QnVuZGxlVmVyc2lvbkZyb21GdWxs
VmVyc2lvblN0cmluZyhmdWxsV2ViS2l0VmVyc2lvblN0cmluZyk7Ci0gICAgQ0ZTdHJpbmdSZWYg
ZGV2aWNlTmFtZSA9IHdrR2V0RGV2aWNlTmFtZSgpOwotICAgIENGU3RyaW5nUmVmIG9zTmFtZUZv
clVzZXJBZ2VudCA9IHdrR2V0T1NOYW1lRm9yVXNlckFnZW50KCk7CiAgICAgTlNTdHJpbmcgKm9z
TWFya2V0aW5nVmVyc2lvblN0cmluZyA9IHN5c3RlbU1hcmtldGluZ1ZlcnNpb25Gb3JVc2VyQWdl
bnRTdHJpbmcoKTsKICAgICBpZiAoYXBwbGljYXRpb25OYW1lLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiTW96aWxsYS81LjAgKCVAOyBDUFUg
JUAgJUAgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvJUAgKEtIVE1MLCBsaWtlIEdlY2tvKSIs
IGRldmljZU5hbWUsIG9zTmFtZUZvclVzZXJBZ2VudCwgb3NNYXJrZXRpbmdWZXJzaW9uU3RyaW5n
LCB3ZWJLaXRWZXJzaW9uXTsKLSAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCJNb3ppbGxhLzUuMCAoJUA7IENQVSAlQCAlQCBsaWtlIE1hYyBPUyBYKSBBcHBsZVdlYktpdC8l
QCAoS0hUTUwsIGxpa2UgR2Vja28pICVAIiwgZGV2aWNlTmFtZSwgb3NOYW1lRm9yVXNlckFnZW50
LCBvc01hcmtldGluZ1ZlcnNpb25TdHJpbmcsIHdlYktpdFZlcnNpb24sIHN0YXRpY19jYXN0PE5T
U3RyaW5nICo+KGFwcGxpY2F0aW9uTmFtZSldOworICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCJNb3ppbGxhLzUuMCAoJUA7IENQVSAlQCAlQCBsaWtlIE1hYyBPUyBY
KSBBcHBsZVdlYktpdC8lQCAoS0hUTUwsIGxpa2UgR2Vja28pIiwgZGV2aWNlTmFtZSgpLCBvc05h
bWVGb3JVc2VyQWdlbnQoKSwgb3NNYXJrZXRpbmdWZXJzaW9uU3RyaW5nLCB3ZWJLaXRWZXJzaW9u
XTsKKyAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJNb3ppbGxhLzUuMCAo
JUA7IENQVSAlQCAlQCBsaWtlIE1hYyBPUyBYKSBBcHBsZVdlYktpdC8lQCAoS0hUTUwsIGxpa2Ug
R2Vja28pICVAIiwgZGV2aWNlTmFtZSgpLCBvc05hbWVGb3JVc2VyQWdlbnQoKSwgb3NNYXJrZXRp
bmdWZXJzaW9uU3RyaW5nLCB3ZWJLaXRWZXJzaW9uLCBzdGF0aWNfY2FzdDxOU1N0cmluZyAqPihh
cHBsaWNhdGlvbk5hbWUpXTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NldHRpbmdzTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9tYWMvU2V0dGluZ3NNYWMubW0KaW5kZXggYWUwNjEzMmMwZWQ4NTQ2ODE3ZWQ1Mzll
ZGNkZmIwZWYyMTExMTU2NC4uZjBiZDhhYjgyMTAwOTI0NDg4NDFlZjhlN2FiMTQ3YjQyNTQ2MWM2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2V0dGluZ3NNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2V0dGluZ3NNYWMubW0KQEAgLTI2LDYgKzI2LDE1
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKIAorI2lmIFBM
QVRGT1JNKElPUykKKyNpbmNsdWRlICJHZXN0YWx0LmgiCisjaW5jbHVkZSAiU29mdExpbmtpbmcu
aCIKKyNpbmNsdWRlICJVSUtpdFNQSS5oIgorCitTT0ZUX0xJTktfRlJBTUVXT1JLKFVJS2l0KQor
U09GVF9MSU5LX0NMQVNTKFVJS2l0LCBVSUFwcGxpY2F0aW9uKQorI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RhdGljIGlubGluZSBjb25zdCBjaGFyKiBzYW5zU2VyaWZUcmFkaXRp
b25hbEhhbkZvbnRGYW1pbHkoKQpAQCAtMTA3LDYgKzExNiwxMyBAQCB2b2lkIFNldHRpbmdzOjpp
bml0aWFsaXplRGVmYXVsdEZvbnRGYW1pbGllcygpCiAgICAgc2V0U2VyaWZGb250RmFtaWx5KCJU
aW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKICAgICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2
ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7CiB9CisgICAgCitmbG9hdCBTZXR0aW5nczo6ZGVmYXVs
dE1pbmltdW1ab29tRm9udFNpemUoKQoreworICAgIGlmIChHZXN0YWx0OjpoYXNJUGFkQ2FwYWJp
bGl0eSgpICYmICFbW2dldFVJQXBwbGljYXRpb25DbGFzcygpIHNoYXJlZEFwcGxpY2F0aW9uXSBf
aXNDbGFzc2ljXSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIDE1OworfQogI2VuZGlm
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtU2NyZWVuLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVNjcmVlbi5oCmluZGV4IGU0Y2FlMTBmZDliMTk0NzUzMGMxOWJiOWRkMDJlOGMzZWExYTlkY2Mu
LjQ3MzVjOTJlYmVmYmU4ZWVkMDE0Mzg0OTA3NTE4N2EwMzZjOTJiMjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1TY3JlZW4uaApAQCAtNDAsNiArNDAsMTAgQEAgdHlwZWRlZiBz
dHJ1Y3QgX05TUG9pbnQgTlNQb2ludDsKICNlbmRpZgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJ
T1MpCitPQkpDX0NMQVNTIFVJU2NyZWVuOworI2VuZGlmCisKIHR5cGVkZWYgdWludDMyX3QgUGxh
dGZvcm1EaXNwbGF5SUQ7CiAKIHR5cGVkZWYgV1RGOjpWZWN0b3I8Y2hhcj4gQ29sb3JQcm9maWxl
OwpAQCAtNjgsNyArNzIsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShJT1MpCisgICAgY2xhc3MgRmxvYXRTaXplOworCiAgICAgZmxvYXQgc2NyZWVuUFBJ
RmFjdG9yKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRTaXplIHNjcmVlblNpemUoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBGbG9hdFNpemUgYXZhaWxhYmxlU2NyZWVuU2l6ZSgpOworICAgIFdF
QkNPUkVfRVhQT1JUIGZsb2F0IHNjcmVlblNjYWxlRmFjdG9yKFVJU2NyZWVuICogPSBuaWwpOwog
I2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9HZXN0YWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9HZXN0YWx0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNmFjM2ViMmY2NzMzZGM2ZWY1NGJiZjc3NzNkYzUy
MjY5MWM1MTYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L0dlc3RhbHQuY3BwCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiR2VzdGFsdC5oIgorCisjaWYgUExBVEZPUk0oSU9TKQorCisjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01HRGV2aWNl
Q2xhc3MgR2VzdGFsdDo6ZGV2aWNlQ2xhc3MoKQoreworICAgIGludCBkZXZpY2VDbGFzcyA9IE1H
R2V0U0ludDMyQW5zd2VyKGtNR1FEZXZpY2VDbGFzc051bWJlciwgTUdEZXZpY2VDbGFzc0ludmFs
aWQpOworICAgIHN3aXRjaCAoZGV2aWNlQ2xhc3MpIHsKKyAgICBjYXNlIE1HRGV2aWNlQ2xhc3NJ
bnZhbGlkOgorICAgIGNhc2UgTUdEZXZpY2VDbGFzc2lQaG9uZToKKyAgICBjYXNlIE1HRGV2aWNl
Q2xhc3NpUG9kOgorICAgIGNhc2UgTUdEZXZpY2VDbGFzc2lQYWQ6CisgICAgY2FzZSBNR0Rldmlj
ZUNsYXNzQXBwbGVUVjoKKyAgICBjYXNlIE1HRGV2aWNlQ2xhc3NXYXRjaDoKKyAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PE1HRGV2aWNlQ2xhc3M+KGRldmljZUNsYXNzKTsKKyAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIE1HRGV2aWNl
Q2xhc3NJbnZhbGlkOworICAgIH0KK30KKworQ0ZTdHJpbmdSZWYgR2VzdGFsdDo6ZGV2aWNlTmFt
ZSgpCit7CisgICAgYXV0byBkZXZpY2VOYW1lID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRlN0cmlu
Z1JlZj4oTUdDb3B5QW5zd2VyKGtNR1FEZXZpY2VOYW1lLCBudWxscHRyKSkpOworICAgIEFTU0VS
VCghZGV2aWNlTmFtZSB8fCBDRkdldFR5cGVJRChkZXZpY2VOYW1lLmdldCgpKSA9PSBDRlN0cmlu
Z0dldFR5cGVJRCgpKTsKKyAgICByZXR1cm4gZGV2aWNlTmFtZS5hdXRvcmVsZWFzZSgpOworfQor
Citib29sIEdlc3RhbHQ6Omhhc0lQYWRDYXBhYmlsaXR5KCkKK3sKKyAgICByZXR1cm4gTUdHZXRC
b29sQW5zd2VyKGtNR1FpUGFkQ2FwYWJpbGl0eSk7Cit9CisgICAgCitib29sIEdlc3RhbHQ6Omlz
QXBwbGVJbnRlcm5hbEluc3RhbGwoKQoreworICAgIHJldHVybiBNR0dldEJvb2xBbnN3ZXIoa01H
UUFwcGxlSW50ZXJuYWxJbnN0YWxsQ2FwYWJpbGl0eSk7Cit9CisKK2ludCBHZXN0YWx0OjptYWlu
U2NyZWVuUGl0Y2goKQoreworICAgIHJldHVybiBNR0dldFNJbnQzMkFuc3dlcihrTUdRTWFpblNj
cmVlblBpdGNoLCAwKTsKK30KKworZmxvYXQgR2VzdGFsdDo6bWFpblNjcmVlblNjYWxlKCkKK3sK
KyAgICByZXR1cm4gTUdHZXRGbG9hdDMyQW5zd2VyKGtNR1FNYWluU2NyZWVuU2NhbGUsIDApOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvR2VzdGFsdC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL0dlc3RhbHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NjgyNjdjYjg0NTk5
OTg4MGMxOTRlM2EwYjQ5ZGQ2NmZlN2MyNTExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL0dlc3RhbHQuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBHZXN0YWx0X2gKKyNkZWZpbmUgR2VzdGFsdF9oCisKKyNpbmNsdWRlICJNb2Jp
bGVHZXN0YWx0U1BJLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBHZXN0YWx0
IHsKKworV0VCQ09SRV9FWFBPUlQgTUdEZXZpY2VDbGFzcyBkZXZpY2VDbGFzcygpOworQ0ZTdHJp
bmdSZWYgZGV2aWNlTmFtZSgpOworYm9vbCBoYXNJUGFkQ2FwYWJpbGl0eSgpOworV0VCQ09SRV9F
WFBPUlQgYm9vbCBpc0FwcGxlSW50ZXJuYWxJbnN0YWxsKCk7CitpbnQgbWFpblNjcmVlblBpdGNo
KCk7CitmbG9hdCBtYWluU2NyZWVuU2NhbGUoKTsKKworfQorfQorCisjZW5kaWYgLy8gR2VzdGFs
dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3Jl
ZW5JT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5JT1Mu
bW0KaW5kZXggYTIwOGZlOWU2OTYwNDJiYjhkNzNjMTVjNjJmMmY2Zjg1M2U3ODEzZS4uZmNjYzBl
YWM2NmQ4NDNhMTRmNjJiY2I4NWMwYTVjZDQ5ZDkwMzQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtU2NyZWVuSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNjcmVlbklPUy5tbQpAQCAtMjcsMTYgKzI3LDIwIEBA
CiAjaW1wb3J0ICJQbGF0Zm9ybVNjcmVlbi5oIgogCiAjaW1wb3J0ICJGbG9hdFJlY3QuaCIKKyNp
bXBvcnQgIkZsb2F0U2l6ZS5oIgogI2ltcG9ydCAiRnJhbWVWaWV3LmgiCisjaW1wb3J0ICJHZXN0
YWx0LmgiCiAjaW1wb3J0ICJIb3N0V2luZG93LmgiCiAjaW1wb3J0ICJJbnRSZWN0LmgiCi0jaW1w
b3J0ICJNb2JpbGVHZXN0YWx0U1BJLmgiCiAjaW1wb3J0ICJTb2Z0TGlua2luZy5oIgorI2ltcG9y
dCAiVUlLaXRTUEkuaCIKICNpbXBvcnQgIldBS1dpbmRvdy5oIgogI2ltcG9ydCAiV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCAiV2lkZ2V0LmgiCiAKIFNPRlRfTElOS19GUkFNRVdP
UksoVUlLaXQpCitTT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJQXBwbGljYXRpb24pCitTT0ZUX0xJ
TktfQ0xBU1MoVUlLaXQsIFVJU2NyZWVuKQogU09GVF9MSU5LKFVJS2l0LCBVSUFjY2Vzc2liaWxp
dHlJc0dyYXlzY2FsZUVuYWJsZWQsIGJvb2wsICh2b2lkKSwgKCkpCiBTT0ZUX0xJTksoVUlLaXQs
IFVJQWNjZXNzaWJpbGl0eUlzSW52ZXJ0Q29sb3JzRW5hYmxlZCwgYm9vbCwgKHZvaWQpLCAoKSkK
IApAQCAtOTgsMjUgKzEwMiwxNCBAQCBGbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxlUmVjdChXaWRn
ZXQqIHdpZGdldCkKICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChGbG9hdFJlY3QoRmxvYXRQ
b2ludCgpLCB3aWRnZXQtPnJvb3QoKS0+aG9zdFdpbmRvdygpLT5hdmFpbGFibGVTY3JlZW5TaXpl
KCkpKTsKIH0KIAotc3RhdGljIGZsb2F0IG1vYmlsZUdlc3RhbHRGbG9hdFZhbHVlKENGU3RyaW5n
UmVmIHF1ZXN0aW9uKQotewotICAgIGZsb2F0IHJlc3VsdCA9IDA7Ci0gICAgaWYgKENGVHlwZVJl
ZiB2YWx1ZSA9IE1HQ29weUFuc3dlcihxdWVzdGlvbiwgMCkpIHsKLSAgICAgICAgaWYgKENGR2V0
VHlwZUlEKHZhbHVlKSA9PSBDRk51bWJlckdldFR5cGVJRCgpKQotICAgICAgICAgICAgQ0ZOdW1i
ZXJHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRk51bWJlclJlZj4odmFsdWUpLCBrQ0ZOdW1iZXJGbG9h
dFR5cGUsICZyZXN1bHQpOwotICAgICAgICBDRlJlbGVhc2UodmFsdWUpOwotICAgIH0KLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCiBmbG9hdCBzY3JlZW5QUElGYWN0b3IoKQogewogICAgIHN0YXRp
YyBmbG9hdCBwcGlGYWN0b3I7CiAKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tl
bjsKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIGZsb2F0IHBpdGNo
ID0gbW9iaWxlR2VzdGFsdEZsb2F0VmFsdWUoa01HUU1haW5TY3JlZW5QaXRjaCk7Ci0gICAgICAg
IGZsb2F0IHNjYWxlID0gbW9iaWxlR2VzdGFsdEZsb2F0VmFsdWUoa01HUU1haW5TY3JlZW5TY2Fs
ZSk7CisgICAgICAgIGZsb2F0IHBpdGNoID0gR2VzdGFsdDo6bWFpblNjcmVlblBpdGNoKCk7Cisg
ICAgICAgIGZsb2F0IHNjYWxlID0gR2VzdGFsdDo6bWFpblNjcmVlblNjYWxlKCk7CiAKICAgICAg
ICAgc3RhdGljIGNvbnN0IGZsb2F0IG9yaWdpbmFsSVBob25lUFBJID0gMTYzOwogICAgICAgICBm
bG9hdCBtYWluU2NyZWVuUFBJID0gKHBpdGNoICYmIHNjYWxlKSA/IHBpdGNoIC8gc2NhbGUgOiBv
cmlnaW5hbElQaG9uZVBQSTsKQEAgLTEyNiw0ICsxMTksMzYgQEAgZmxvYXQgc2NyZWVuUFBJRmFj
dG9yKCkKICAgICByZXR1cm4gcHBpRmFjdG9yOwogfQogCitGbG9hdFNpemUgc2NyZWVuU2l6ZSgp
Cit7CisgICAgaWYgKFdlYkNvcmU6Okdlc3RhbHQ6Omhhc0lQYWRDYXBhYmlsaXR5KCkgJiYgW1tn
ZXRVSUFwcGxpY2F0aW9uQ2xhc3MoKSBzaGFyZWRBcHBsaWNhdGlvbl0gX2lzQ2xhc3NpY10pCisg
ICAgICAgIHJldHVybiBGbG9hdFNpemUoQ0dTaXplTWFrZSgzMjAsIDQ4MCkpOworICAgIHJldHVy
biBGbG9hdFNpemUoW1tnZXRVSVNjcmVlbkNsYXNzKCkgbWFpblNjcmVlbl0gX3JlZmVyZW5jZUJv
dW5kc10uc2l6ZSk7Cit9CisKK0Zsb2F0U2l6ZSBhdmFpbGFibGVTY3JlZW5TaXplKCkKK3sKKyAg
ICBpZiAoV2ViQ29yZTo6R2VzdGFsdDo6aGFzSVBhZENhcGFiaWxpdHkoKSAmJiBbW2dldFVJQXBw
bGljYXRpb25DbGFzcygpIHNoYXJlZEFwcGxpY2F0aW9uXSBfaXNDbGFzc2ljXSkKKyAgICAgICAg
cmV0dXJuIEZsb2F0U2l6ZShDR1NpemVNYWtlKDMyMCwgNDgwKSk7CisjcHJhZ21hIGNsYW5nIGRp
YWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVj
YXRlZC1kZWNsYXJhdGlvbnMiCisgICAgcmV0dXJuIEZsb2F0U2l6ZShbZ2V0VUlTY3JlZW5DbGFz
cygpIG1haW5TY3JlZW5dLmFwcGxpY2F0aW9uRnJhbWUuc2l6ZSk7CisjcHJhZ21hIGNsYW5nIGRp
YWdub3N0aWMgcG9wCit9CisKK2Zsb2F0IHNjcmVlblNjYWxlRmFjdG9yKFVJU2NyZWVuICpzY3Jl
ZW4pCit7CisgICAgaWYgKCFzY3JlZW4pCisgICAgICAgIHNjcmVlbiA9IFtnZXRVSVNjcmVlbkNs
YXNzKCkgbWFpblNjcmVlbl07CisKKyAgICBDR0Zsb2F0IHNjYWxlID0gc2NyZWVuLnNjYWxlOwor
CisgICAgLy8gV2UgY2FuIHJlbW92ZSB0aGlzIGNsYW1waW5nIG9uY2UgPHJkYXI6Ly9wcm9ibGVt
LzE2Mzk1NDc1PiBpcyBmaXhlZC4KKyAgICBjb25zdCBDR0Zsb2F0IG1heGltdW1DbGFzc2ljU2Ny
ZWVuU2NhbGVGYWN0b3IgPSAyOworICAgIGlmIChbW2dldFVJQXBwbGljYXRpb25DbGFzcygpIHNo
YXJlZEFwcGxpY2F0aW9uXSBfaXNDbGFzc2ljXSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWluKHNj
YWxlLCBtYXhpbXVtQ2xhc3NpY1NjcmVlblNjYWxlRmFjdG9yKTsKKworICAgIHJldHVybiBzY2Fs
ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDk4ZjAxMWFkYjU5YjI1MWQ4NzU0NDQyM2U1OGI3ZTQxZjI5OWIw
MDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MuaAorKysgL2Rl
di9udWxsCkBAIC0xLDc5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKLSAqLwotCi0jaWZuZGVmIFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1NfaAotI2RlZmluZSBX
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TX2gKLQotI2luY2x1ZGUgPEF2YWlsYWJpbGl0eS5oPgot
Ci10eXBlZGVmIGVudW0gewotICAgIHdrSU9TU3lzdGVtVmVyc2lvbl8zXzAgPSBfX0lQSE9ORV8z
XzAsCi0gICAgd2tJT1NTeXN0ZW1WZXJzaW9uXzRfMiA9IF9fSVBIT05FXzRfMiwKLSAgICB3a0lP
U1N5c3RlbVZlcnNpb25fNV8wID0gX19JUEhPTkVfNV8wLAotICAgIHdrSU9TU3lzdGVtVmVyc2lv
bl82XzAgPSBfX0lQSE9ORV82XzAsCi0gICAgd2tJT1NTeXN0ZW1WZXJzaW9uXzlfMCA9IF9fSVBI
T05FXzlfMCwKLX0gd2tJT1NTeXN0ZW1WZXJzaW9uOwotCi1ib29sIGlvc0V4ZWN1dGFibGVXYXNM
aW5rZWRPbk9yQWZ0ZXJWZXJzaW9uKHdrSU9TU3lzdGVtVmVyc2lvbik7Ci0KLWV4dGVybiBib29s
ICgqd2tFeGVjdXRhYmxlV2FzTGlua2VkT25PckFmdGVySU9TVmVyc2lvbikoaW50KTsKLQotZXh0
ZXJuIGJvb2wgKCp3a0lzR0IxODAzMENvbXBsaWFuY2VSZXF1aXJlZCkodm9pZCk7Ci0KLWlubGlu
ZSBib29sIGlvc0V4ZWN1dGFibGVXYXNMaW5rZWRPbk9yQWZ0ZXJWZXJzaW9uKHdrSU9TU3lzdGVt
VmVyc2lvbiB2ZXJzaW9uKQotewotICAgIHJldHVybiB3a0V4ZWN1dGFibGVXYXNMaW5rZWRPbk9y
QWZ0ZXJJT1NWZXJzaW9uKHZlcnNpb24pOwotfQotCi10eXBlZGVmIGVudW0gewotICAgIHdrRGV2
aWNlQ2xhc3NJbnZhbGlkID0gLTEsCi0gICAgd2tEZXZpY2VDbGFzc2lQYWQsCi0gICAgd2tEZXZp
Y2VDbGFzc2lQaG9uZSwKLSAgICB3a0RldmljZUNsYXNzaVBvZCwKLX0gd2tEZXZpY2VDbGFzczsK
LWV4dGVybiBpbnQgKCp3a0dldERldmljZUNsYXNzKSh2b2lkKTsKLWlubGluZSB3a0RldmljZUNs
YXNzIGlvc0RldmljZUNsYXNzKHZvaWQpCi17Ci0gICAgaW50IGRldmljZUNsYXNzID0gd2tHZXRE
ZXZpY2VDbGFzcygpOwotICAgIHN3aXRjaCAoZGV2aWNlQ2xhc3MpIHsKLSAgICBjYXNlIHdrRGV2
aWNlQ2xhc3NJbnZhbGlkOgotICAgIGNhc2Ugd2tEZXZpY2VDbGFzc2lQYWQ6Ci0gICAgY2FzZSB3
a0RldmljZUNsYXNzaVBob25lOgotICAgIGNhc2Ugd2tEZXZpY2VDbGFzc2lQb2Q6Ci0gICAgICAg
IHJldHVybiAod2tEZXZpY2VDbGFzcylkZXZpY2VDbGFzczsKLSAgICB9Ci0gICAgYXNzZXJ0KGZh
bHNlKTsKLSAgICByZXR1cm4gd2tEZXZpY2VDbGFzc0ludmFsaWQ7Ci19Ci0KLWV4dGVybiBDRlN0
cmluZ1JlZiAoKndrR2V0VXNlckFnZW50KSh2b2lkKTsKLWV4dGVybiBDRlN0cmluZ1JlZiAoKndr
R2V0RGV2aWNlTmFtZSkodm9pZCk7Ci1leHRlcm4gQ0ZTdHJpbmdSZWYgKCp3a0dldE9TTmFtZUZv
clVzZXJBZ2VudCkodm9pZCk7Ci1leHRlcm4gQ0ZTdHJpbmdSZWYgKCp3a0dldFBsYXRmb3JtTmFt
ZUZvck5hdmlnYXRvcikodm9pZCk7Ci1leHRlcm4gQ0ZTdHJpbmdSZWYgKCp3a0dldFZlbmRvck5h
bWVGb3JOYXZpZ2F0b3IpKHZvaWQpOwotCi1leHRlcm4gYm9vbCAoKndrSXNPcHRpbWl6ZWRGdWxs
c2NyZWVuU3VwcG9ydGVkKSh2b2lkKTsKLQotI2VuZGlmIC8vIFdlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2VJT1NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVT
eXN0ZW1JbnRlcmZhY2VJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29y
ZVN5c3RlbUludGVyZmFjZUlPUy5tbQppbmRleCBjNmU0YzE2OTczZmM3NmZlZDUzMzVjNWI4Yzkz
ZWJhYmVjZjNkZDhkLi40ZTMwMzY2ZDRlYjdmYWIxODhkZTRjYWU5MGY5ZDU1MTFmOTA2ZGFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVy
ZmFjZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3Rl
bUludGVyZmFjZUlPUy5tbQpAQCAtNDYsMTMgKzQ2LDcgQEAgV0VCQ09SRV9FWFBPUlQgdm9pZCAo
KndrU2V0Q09OTkVDVFByb3h5Rm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVm
IHAKIFdFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25G
b3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJveHlBdXRob3JpemF0aW9u
U3RyaW5nKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a1NldENvb2tpZVN0b3JhZ2VQcml2YXRl
QnJvd3NpbmdFbmFibGVkKShCT09MKTsKIFdFQkNPUkVfRVhQT1JUIENGSFRUUE1lc3NhZ2VSZWYg
KCp3a0NvcHlDT05ORUNUUHJveHlSZXNwb25zZSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlVSTFJlZiBy
ZXNwb25zZVVSTCwgQ0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQp
OwotV0VCQ09SRV9FWFBPUlQgYm9vbCAoKndrRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JBZnRlcklP
U1ZlcnNpb24pKGludCk7Ci1XRUJDT1JFX0VYUE9SVCBpbnQgKCp3a0dldERldmljZUNsYXNzKSh2
b2lkKTsKLVdFQkNPUkVfRVhQT1JUIENHU2l6ZSAoKndrR2V0U2NyZWVuU2l6ZSkodm9pZCk7Ci1X
RUJDT1JFX0VYUE9SVCBDR1NpemUgKCp3a0dldEF2YWlsYWJsZVNjcmVlblNpemUpKHZvaWQpOwog
V0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0TGF5ZXJDb250ZW50c1NjYWxlKShDQUxheWVyICop
OwotV0VCQ09SRV9FWFBPUlQgZmxvYXQgKCp3a0dldFNjcmVlblNjYWxlRmFjdG9yKSh2b2lkKTsK
LVdFQkNPUkVfRVhQT1JUIGJvb2wgKCp3a0lzR0IxODAzMENvbXBsaWFuY2VSZXF1aXJlZCkodm9p
ZCk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tDRlVSTFJlcXVlc3RBbGxvd0FsbFBvc3RDYWNo
aW5nKShDRlVSTFJlcXVlc3RSZWYpOwogV0VCQ09SRV9FWFBPUlQgQ0ZBcnJheVJlZiAoKndrQ29w
eU5TVVJMUmVzcG9uc2VDZXJ0aWZpY2F0ZUNoYWluKShOU1VSTFJlc3BvbnNlKik7CiBXRUJDT1JF
X0VYUE9SVCBDRlN0cmluZ0VuY29kaW5nICgqd2tHZXRXZWJEZWZhdWx0Q0ZTdHJpbmdFbmNvZGlu
Zykodm9pZCk7CkBAIC0xMDQsMTQgKzk4LDYgQEAgV0VCQ09SRV9FWFBPUlQgYm9vbCAoKndrSXNQ
dWJsaWNTdWZmaXgpKE5TU3RyaW5nICpob3N0KTsKIFdFQkNPUkVfRVhQT1JUIENGU3RyaW5nUmVm
ICgqd2tDYWNoZVBhcnRpdGlvbktleSkodm9pZCk7CiAjZW5kaWYKIAotV0VCQ09SRV9FWFBPUlQg
Q0ZTdHJpbmdSZWYgKCp3a0dldFVzZXJBZ2VudCkodm9pZCk7Ci1XRUJDT1JFX0VYUE9SVCBDRlN0
cmluZ1JlZiAoKndrR2V0RGV2aWNlTmFtZSkodm9pZCk7Ci1XRUJDT1JFX0VYUE9SVCBDRlN0cmlu
Z1JlZiAoKndrR2V0T1NOYW1lRm9yVXNlckFnZW50KSh2b2lkKTsKLVdFQkNPUkVfRVhQT1JUIENG
U3RyaW5nUmVmICgqd2tHZXRQbGF0Zm9ybU5hbWVGb3JOYXZpZ2F0b3IpKHZvaWQpOwotV0VCQ09S
RV9FWFBPUlQgQ0ZTdHJpbmdSZWYgKCp3a0dldFZlbmRvck5hbWVGb3JOYXZpZ2F0b3IpKHZvaWQp
OwotCi1XRUJDT1JFX0VYUE9SVCBib29sICgqd2tJc09wdGltaXplZEZ1bGxzY3JlZW5TdXBwb3J0
ZWQpKHZvaWQpOwotCiBXRUJDT1JFX0VYUE9SVCBpbnQgKCp3a0V4ZXJuYWxEZXZpY2VUeXBlRm9y
UGxheWVyKShBVlBsYXllciAqKTsKIFdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICooKndrRXhlcm5h
bERldmljZURpc3BsYXlOYW1lRm9yUGxheWVyKShBVlBsYXllciAqKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQuaAppbmRleCA4ZDJkOGM4MDM4YTUxMmRiZjdlNGFlNWY4MTYxMjM5OTBhNTMy
ZTAyLi5kNTYxMmVjM2I5OWI2MTFjMTM3ZmZkYzAwNjBiMDM4ZDBmMTcyNThlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQuaApAQCAtMTU4LDYgKzE1OCw4IEBAIHByb3RlY3RlZDoKICAgICB2
b2lkIGRvRW50ZXJGdWxsc2NyZWVuKCk7CiB9OwogCitib29sIHN1cHBvcnRzUGljdHVyZUluUGlj
dHVyZSgpOworCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCmluZGV4
IDgyNmFmMTNhNjUzMTgxYjA3MTI5YjlmYWNiODkyMmVlMzQyZjNkMmIuLjkzNTU4ZTA1YWMxYmNj
OWI1Y2U3ODA5YjAyMjE3MjI5YTkzMjk1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQu
bW0KQEAgLTI2LDcgKzI2LDkgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAKLSNpZiBQTEFURk9S
TShJT1MpICYmIEhBVkUoQVZLSVQpCisjaWYgUExBVEZPUk0oSU9TKQorCisjaWYgSEFWRShBVktJ
VCkKIAogI2ltcG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaCIKIApAQCAt
NTcsNiArNTksNyBAQCBTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVkxheWVyVmlk
ZW9HcmF2aXR5UmVzaXplQXNwZWN0LCBOU1N0cmluZyAqKQogU09GVF9MSU5LX0NPTlNUQU5UKEFW
Rm91bmRhdGlvbiwgQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGwsIE5TU3RyaW5n
ICopCiAKIFNPRlRfTElOS19GUkFNRVdPUksoQVZLaXQpCitTT0ZUX0xJTktfQ0xBU1MoQVZLaXQs
IEFWUGljdHVyZUluUGljdHVyZUNvbnRyb2xsZXIpCiBTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFW
UGxheWVyQ29udHJvbGxlcikKIFNPRlRfTElOS19DTEFTUyhBVktpdCwgQVZQbGF5ZXJWaWV3Q29u
dHJvbGxlcikKIFNPRlRfTElOS19DTEFTUyhBVktpdCwgQVZWYWx1ZVRpbWluZykKQEAgLTEzMDIs
NyArMTMwNSw3IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnByZXBh
cmVkVG9SZXR1cm5Ub0lubGluZShib29sIHZpc2libGUsIGNvCiAKIGJvb2wgV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ6Om1heUF1dG9tYXRpY2FsbHlTaG93VmlkZW9QaWN0dXJlSW5Q
aWN0dXJlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gW21fcGxheWVyQ29udHJvbGxlciBpc1BsYXlp
bmddICYmIG1fbW9kZSA9PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1v
ZGVTdGFuZGFyZCAmJiB3a0lzT3B0aW1pemVkRnVsbHNjcmVlblN1cHBvcnRlZCgpOworICAgIHJl
dHVybiBbbV9wbGF5ZXJDb250cm9sbGVyIGlzUGxheWluZ10gJiYgbV9tb2RlID09IEhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkICYmIHN1cHBvcnRzUGlj
dHVyZUluUGljdHVyZSgpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0OjpmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wp
PiBjYWxsYmFjaykKQEAgLTE0MzgsNCArMTQ0MSwxNSBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0OjpjbGVhck1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1
bAogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5mdWxsc2NyZWVuTW9kZUNoYW5nZWQo
bV9tb2RlKTsKIH0KIAorI2VuZGlmIC8vIEhBVkUoQVZLSVQpCisKK2Jvb2wgV2ViQ29yZTo6c3Vw
cG9ydHNQaWN0dXJlSW5QaWN0dXJlKCkKK3sKKyNpZiBIQVZFKEFWS0lUKSAmJiBUQVJHRVRfT1Nf
SU9TCisgICAgcmV0dXJuIFtnZXRBVlBpY3R1cmVJblBpY3R1cmVDb250cm9sbGVyQ2xhc3MoKSBp
c1BpY3R1cmVJblBpY3R1cmVTdXBwb3J0ZWRdOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CiAj
ZW5kaWYKK30KKworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL3dhay9XQUtXaW5kb3cubW0KaW5kZXggOWQ4M2M1ZDBjNmI2MWIxZDQzNmIzYmY2
Y2I1ZGM3MjAxZDg2Mzg1ZC4uOTg5Y2Q3N2ZkYWMyNGViZTZjNzQwNzM5MmY5MjBlMjYzODFmOTBi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtXaW5kb3cu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtXaW5kb3cubW0KQEAg
LTI5LDYgKzI5LDcgQEAKICNpZiBQTEFURk9STShJT1MpCiAKICNpbXBvcnQgIkxlZ2FjeVRpbGVD
YWNoZS5oIgorI2ltcG9ydCAiUGxhdGZvcm1TY3JlZW4uaCIKICNpbXBvcnQgIldBS1ZpZXdJbnRl
cm5hbC5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCAiV2Vi
Q29yZVRocmVhZFJ1bi5oIgpAQCAtNjcsNyArNjgsNyBAQCAtIChpZClpbml0V2l0aExheWVyOihD
QUxheWVyICopbGF5ZXIKICAgICBfaG9zdExheWVyID0gW2xheWVyIHJldGFpbl07CiAKICAgICBf
ZnJhbWUgPSBbX2hvc3RMYXllciBmcmFtZV07Ci0gICAgX3NjcmVlblNjYWxlID0gd2tHZXRTY3Jl
ZW5TY2FsZUZhY3RvcigpOworICAgIF9zY3JlZW5TY2FsZSA9IHNjcmVlblNjYWxlRmFjdG9yKCk7
CiAgICAgCiAgICAgX3RpbGVDYWNoZSA9IG5ldyBMZWdhY3lUaWxlQ2FjaGUoc2VsZik7CiAKQEAg
LTg2LDcgKzg3LDcgQEAgLSAoaWQpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lCiAgICAgICAg
IHJldHVybiBuaWw7CiAKICAgICBfZnJhbWUgPSBmcmFtZTsKLSAgICBfc2NyZWVuU2NhbGUgPSB3
a0dldFNjcmVlblNjYWxlRmFjdG9yKCk7CisgICAgX3NjcmVlblNjYWxlID0gc2NyZWVuU2NhbGVG
YWN0b3IoKTsKIAogICAgIF9leHBvc2VkU2Nyb2xsVmlld1JlY3QgPSBDR1JlY3ROdWxsOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dLR3JhcGhpY3MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dLR3JhcGhpY3MubW0KaW5kZXggOTlj
NDE2MTk1YzJiYTQ1ODU4MDQ5MGM1NTBlMmU5NWI1MWYwNWQ2Zi4uMmRlNDNkZjNmMmY4NmZiNWEw
ZDU2YmJlY2UyNmVjZTg0ZDJkNzk0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL3dhay9XS0dyYXBoaWNzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy93YWsvV0tHcmFwaGljcy5tbQpAQCAtMzAsNyArMzAsNyBAQAogCiAjaW1wb3J0ICJDb3JlR3Jh
cGhpY3NTUEkuaCIKICNpbXBvcnQgIkZvbnRDYXNjYWRlLmgiCi0jaW1wb3J0ICJXZWJDb3JlU3lz
dGVtSW50ZXJmYWNlLmgiCisjaW1wb3J0ICJQbGF0Zm9ybVNjcmVlbi5oIgogI2ltcG9ydCAiV2Vi
Q29yZVRocmVhZC5oIgogI2ltcG9ydCA8SW1hZ2VJTy9JbWFnZUlPLmg+CiAjaW1wb3J0IDx3dGYv
U3RkTGliRXh0cmFzLmg+CkBAIC0xMTMsOSArMTEzLDkgQEAgQ0dJbWFnZVJlZiBXS0dyYXBoaWNz
Q3JlYXRlSW1hZ2VGcm9tQnVuZGxlV2l0aE5hbWUoY29uc3QgY2hhciAqaW1hZ2VfZmlsZSkKIAog
ICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBudWxscHRyOwogICAgIE5TRGF0YSAqaW1hZ2VEYXRhID0g
bnVsbHB0cjsKLSAgICBmb3IgKHVuc2lnbmVkIHNjYWxlRmFjdG9yID0gd2tHZXRTY3JlZW5TY2Fs
ZUZhY3RvcigpOyBzY2FsZUZhY3RvciA+IDA7IC0tc2NhbGVGYWN0b3IpIHsKKyAgICBmb3IgKHVu
c2lnbmVkIHNjYWxlRmFjdG9yID0gc2NyZWVuU2NhbGVGYWN0b3IoKTsgc2NhbGVGYWN0b3IgPiAw
OyAtLXNjYWxlRmFjdG9yKSB7CiAgICAgICAgIGltYWdlRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhD
b250ZW50c09mRmlsZTppbWFnZVJlc291cmNlUGF0aChpbWFnZV9maWxlLCBzY2FsZUZhY3Rvcild
OwotICAgICAgICBBU1NFUlQoc2NhbGVGYWN0b3IgIT0gd2tHZXRTY3JlZW5TY2FsZUZhY3Rvcigp
IHx8IGltYWdlRGF0YSk7CisgICAgICAgIEFTU0VSVChzY2FsZUZhY3RvciAhPSBzY3JlZW5TY2Fs
ZUZhY3RvcigpIHx8IGltYWdlRGF0YSk7CiAgICAgICAgIGlmIChpbWFnZURhdGEpCiAgICAgICAg
ICAgICBicmVhazsKICAgICB9CkBAIC0xMzEsNyArMTMxLDcgQEAgQ0dJbWFnZVJlZiBXS0dyYXBo
aWNzQ3JlYXRlSW1hZ2VGcm9tQnVuZGxlV2l0aE5hbWUoY29uc3QgY2hhciAqaW1hZ2VfZmlsZSkK
IHN0YXRpYyB2b2lkIFdLRHJhd1BhdHRlcm5CaXRtYXAodm9pZCAqaW5mbywgQ0dDb250ZXh0UmVm
IGMpIAogewogICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSAoQ0dJbWFnZVJlZilpbmZvOwotICAgIENH
RmxvYXQgc2NhbGUgPSB3a0dldFNjcmVlblNjYWxlRmFjdG9yKCk7CisgICAgQ0dGbG9hdCBzY2Fs
ZSA9IHNjcmVlblNjYWxlRmFjdG9yKCk7CiAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGMsIENHUmVj
dE1ha2UoMCwgMCwgQ0dJbWFnZUdldFdpZHRoKGltYWdlKSAvIHNjYWxlLCBDR0ltYWdlR2V0SGVp
Z2h0KGltYWdlKSAvIHNjYWxlKSwgaW1hZ2UpOyAgICAKIH0KIApAQCAtMTUwLDcgKzE1MCw3IEBA
IENHUGF0dGVyblJlZiBXS0NyZWF0ZVBhdHRlcm5Gcm9tQ0dJbWFnZShDR0ltYWdlUmVmIGltYWdl
UmVmKQogICAgIC8vIHJldGFpbiBpbWFnZSBzaW5jZSBpdCdzIGZyZWVkIGJ5IG91ciBjYWxsYmFj
awogICAgIENHSW1hZ2VSZXRhaW4oaW1hZ2VSZWYpOwogCi0gICAgQ0dGbG9hdCBzY2FsZSA9IHdr
R2V0U2NyZWVuU2NhbGVGYWN0b3IoKTsKKyAgICBDR0Zsb2F0IHNjYWxlID0gc2NyZWVuU2NhbGVG
YWN0b3IoKTsKICAgICByZXR1cm4gQ0dQYXR0ZXJuQ3JlYXRlKCh2b2lkKilpbWFnZVJlZiwgQ0dS
ZWN0TWFrZSgwLCAwLCBDR0ltYWdlR2V0V2lkdGgoaW1hZ2VSZWYpIC8gc2NhbGUsIENHSW1hZ2VH
ZXRIZWlnaHQoaW1hZ2VSZWYpIC8gc2NhbGUpLCBDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5LCBD
R0ltYWdlR2V0V2lkdGgoaW1hZ2VSZWYpIC8gc2NhbGUsIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2VS
ZWYpIC8gc2NhbGUsIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcsIDEgLyppc0NvbG9y
ZWQqLywgJldLUGF0dGVybkJpdG1hcENhbGxiYWNrcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCmluZGV4IDA0NmRk
NmI3NzQxMTQwZDgwZjdhMWZmMDI2MWU0NDFlYWZlMDYxMjUuLjYwYjQ4OTA1NzNhZDZhODVkM2Iw
YTM3M2NjOGNhMjVmZjM5ZjAyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaApAQCAtMjgsMTAgKzI4LDYgQEAKIAogI2lu
Y2x1ZGUgPG9iamMvb2JqYy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQotI2luY2x1ZGUgIldlYkNv
cmVTeXN0ZW1JbnRlcmZhY2VJT1MuaCIKLSNlbmRpZgotCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBf
X0NGU3RyaW5nICogQ0ZTdHJpbmdSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGTnVtYmVy
ICogQ0ZOdW1iZXJSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGRGljdGlvbmFyeSAqIENG
RGljdGlvbmFyeVJlZjsKQEAgLTIzNywxMCArMjMzLDcgQEAgZXh0ZXJuIEFYVUlFbGVtZW50UmVm
ICgqd2tDcmVhdGVBWFVJRWxlbWVudFJlZikoaWQgZWxlbWVudCk7CiAjZW5kaWYgLy8gIVBMQVRG
T1JNKElPUykKIAogI2lmIFBMQVRGT1JNKElPUykKLWV4dGVybiBDR1NpemUgKCp3a0dldFNjcmVl
blNpemUpKHZvaWQpOwotZXh0ZXJuIENHU2l6ZSAoKndrR2V0QXZhaWxhYmxlU2NyZWVuU2l6ZSko
dm9pZCk7CiBleHRlcm4gdm9pZCAoKndrU2V0TGF5ZXJDb250ZW50c1NjYWxlKShDQUxheWVyICop
OwotZXh0ZXJuIGZsb2F0ICgqd2tHZXRTY3JlZW5TY2FsZUZhY3Rvcikodm9pZCk7CiAjZW5kaWYK
IAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlVSTFN0b3JhZ2VTZXNzaW9uKiBDRlVSTFN0b3Jh
Z2VTZXNzaW9uUmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2Nv
Y29hL0R5bmFtaWNMaW5rZXJTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2Nv
YS9EeW5hbWljTGlua2VyU1BJLmgKaW5kZXggNDYwZGE5MTlhNGU5YTZjYzgwOGZjYjIzMWE0NTMy
MTk2ZTUzMjBkZi4uZGU2MjZiMTE2ZjA1MjhiN2UxZjdkNTJiZjZiMmRjYzM0YWMxNmFjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL0R5bmFtaWNMaW5rZXJT
UEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvRHluYW1pY0xpbmtl
clNQSS5oCkBAIC0zNSw4ICszNSwxMSBAQAogI2Vsc2UKIAogI2RlZmluZSBEWUxEX0lPU19WRVJT
SU9OXzNfMCAweDAwMDMwMDAwCi0jZGVmaW5lIERZTERfSU9TX1ZFUlNJT05fNl8wIDB4MDAwNjAw
MDA7Ci0jZGVmaW5lIERZTERfSU9TX1ZFUlNJT05fN18wIDB4MDAwNzAwMDA7CisjZGVmaW5lIERZ
TERfSU9TX1ZFUlNJT05fNF8yIDB4MDAwNDAyMDAKKyNkZWZpbmUgRFlMRF9JT1NfVkVSU0lPTl81
XzAgMHgwMDA1MDAwMAorI2RlZmluZSBEWUxEX0lPU19WRVJTSU9OXzZfMCAweDAwMDYwMDAwCisj
ZGVmaW5lIERZTERfSU9TX1ZFUlNJT05fN18wIDB4MDAwNzAwMDAKKyNkZWZpbmUgRFlMRF9JT1Nf
VkVSU0lPTl85XzAgMHgwMDA5MDAwMAogCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3BpL2lvcy9Nb2JpbGVHZXN0YWx0U1BJLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcGkvaW9zL01vYmlsZUdlc3RhbHRTUEkuaAppbmRleCAwMzZhNDQ3MTM0NzY2
NWMxYTBkNDc5YWE3M2IxMjk4NmY0ZGE4NjhjLi40NzEzODZmZjYxOTFhMzA5MjQ4ZTJjOThmY2I1
ZDMwMmUxZDMwYjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvaW9z
L01vYmlsZUdlc3RhbHRTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvaW9z
L01vYmlsZUdlc3RhbHRTUEkuaApAQCAtNDEsNiArNDEsMTkgQEAKIEVYVEVSTl9DIGNvbnN0IENG
U3RyaW5nUmVmIGtNR1FBcHBsZUludGVybmFsSW5zdGFsbENhcGFiaWxpdHkgPSBDRlNUUigiYXBw
bGUtaW50ZXJuYWwtaW5zdGFsbCIpOwogRVhURVJOX0MgY29uc3QgQ0ZTdHJpbmdSZWYga01HUU1h
aW5TY3JlZW5QaXRjaCA9IENGU1RSKCJtYWluLXNjcmVlbi1waXRjaCIpOwogRVhURVJOX0MgY29u
c3QgQ0ZTdHJpbmdSZWYga01HUU1haW5TY3JlZW5TY2FsZSA9IENGU1RSKCJtYWluLXNjcmVlbi1z
Y2FsZSIpOworRVhURVJOX0MgY29uc3QgQ0ZTdHJpbmdSZWYga01HUWlQYWRDYXBhYmlsaXR5ID0g
Q0ZTVFIoImlwYWQiKTsKK0VYVEVSTl9DIGNvbnN0IENGU3RyaW5nUmVmIGtNR1FEZXZpY2VOYW1l
ID0gQ0ZTVFIoIkRldmljZU5hbWUiKTsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBNR0RldmljZUNs
YXNzSW52YWxpZCA9IC0xLAorICAgIC8qIDAgaXMgaW50ZW50aW9uYWxseSBub3QgaW4gdGhpcyBl
bnVtICovCisgICAgTUdEZXZpY2VDbGFzc2lQaG9uZSAgPSAxLAorICAgIE1HRGV2aWNlQ2xhc3Np
UG9kICAgID0gMiwKKyAgICBNR0RldmljZUNsYXNzaVBhZCAgICA9IDMsCisgICAgTUdEZXZpY2VD
bGFzc0FwcGxlVFYgPSA0LAorICAgIC8qIDUgaXMgaW50ZW50aW9uYWxseSBub3QgaW4gdGhpcyBl
bnVtICovCisgICAgTUdEZXZpY2VDbGFzc1dhdGNoICAgPSA2LAorfSBNR0RldmljZUNsYXNzOwog
CiAjZW5kaWYKIApAQCAtNTAsNiArNjMsMTQgQEAgRVhURVJOX0MgQ0ZUeXBlUmVmIE1HQ29weUFu
c3dlcihDRlN0cmluZ1JlZiBxdWVzdGlvbiwgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpOwogRVhU
RVJOX0MgYm9vbCBNR0dldEJvb2xBbnN3ZXIoQ0ZTdHJpbmdSZWYgcXVlc3Rpb24pOwogI2VuZGlm
CiAKKyNpZm5kZWYgTUdHZXRTSW50MzJBbnN3ZXIKK0VYVEVSTl9DIFNJbnQzMiBNR0dldFNJbnQz
MkFuc3dlcihDRlN0cmluZ1JlZiBxdWVzdGlvbiwgU0ludDMyIGRlZmF1bHRWYWx1ZSk7CisjZW5k
aWYKKworI2lmbmRlZiBNR0dldEZsb2F0MzJBbnN3ZXIKK0VYVEVSTl9DIEZsb2F0MzIgTUdHZXRG
bG9hdDMyQW5zd2VyKENGU3RyaW5nUmVmIHF1ZXN0aW9uLCBGbG9hdDMyIGRlZmF1bHRWYWx1ZSk7
CisjZW5kaWYKKwogI2VuZGlmCiAKICNlbmRpZiAvLyBNb2JpbGVHZXN0YWx0U1BJX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9pb3MvVUlDb2xvclNQSS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2lvcy9VSUNvbG9yU1BJLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGI5ODE0YTU2OGUwMmZkNmMwZWUxOTdiOGY5ZWNkYThhNjg0YjViNjcu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3BpL2lvcy9VSUNvbG9yU1BJLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0
NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0KLSNp
bXBvcnQgPFVJS2l0L1VJSW50ZXJmYWNlX1ByaXZhdGUuaD4KLQotI2Vsc2UKLQotI2ltcG9ydCA8
VUlLaXQvVUlDb2xvci5oPgotCi1AaW50ZXJmYWNlIFVJQ29sb3IgKCkKLQotKyAoVUlDb2xvciAq
KXN5c3RlbUJsdWVDb2xvcjsKLSsgKFVJQ29sb3IgKilzeXN0ZW1HcmF5Q29sb3I7Ci0rIChVSUNv
bG9yICopc3lzdGVtR3JlZW5Db2xvcjsKLSsgKFVJQ29sb3IgKilzeXN0ZW1PcmFuZ2VDb2xvcjsK
LSsgKFVJQ29sb3IgKilzeXN0ZW1QaW5rQ29sb3I7Ci0rIChVSUNvbG9yICopc3lzdGVtUmVkQ29s
b3I7Ci0rIChVSUNvbG9yICopc3lzdGVtWWVsbG93Q29sb3I7Ci0KLUBlbmQKLQotI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Nm
MjBmOTg3OTcwNzNkNmYxYmJkYjcwOTk1MzVlNTFjZDZkYjJhMgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaApAQCAtMCwwICsxLDYw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisKKyNpbXBvcnQg
PFVJS2l0L1VJQXBwbGljYXRpb25fUHJpdmF0ZS5oPgorI2ltcG9ydCA8VUlLaXQvVUlJbnRlcmZh
Y2VfUHJpdmF0ZS5oPgorI2ltcG9ydCA8VUlLaXQvVUlTY3JlZW5fUHJpdmF0ZS5oPgorCisjZWxz
ZQorCisjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgorCitAaW50ZXJmYWNlIFVJQXBwbGljYXRpb24g
KCkKKworLSAoQk9PTClfaXNDbGFzc2ljOworCitAZW5kCisKK0BpbnRlcmZhY2UgVUlDb2xvciAo
KQorCisrIChVSUNvbG9yICopc3lzdGVtQmx1ZUNvbG9yOworKyAoVUlDb2xvciAqKXN5c3RlbUdy
YXlDb2xvcjsKKysgKFVJQ29sb3IgKilzeXN0ZW1HcmVlbkNvbG9yOworKyAoVUlDb2xvciAqKXN5
c3RlbU9yYW5nZUNvbG9yOworKyAoVUlDb2xvciAqKXN5c3RlbVBpbmtDb2xvcjsKKysgKFVJQ29s
b3IgKilzeXN0ZW1SZWRDb2xvcjsKKysgKFVJQ29sb3IgKilzeXN0ZW1ZZWxsb3dDb2xvcjsKKwor
QGVuZAorCitAaW50ZXJmYWNlIFVJU2NyZWVuICgpCisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSkgQ0dSZWN0IF9yZWZlcmVuY2VCb3VuZHM7CisKK0BlbmQKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggOTk2NzljOGEyZDNi
YTNkM2NiMjQzNjFjZDIyNWJmMDg0ZTM1ODVjNi4uNWVjZjgxZGNhMTg4ZjJhMmExNmY0ZDhmZDNh
MDI1ZTFlOTYzYjk2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlP
Uy5tbQpAQCAtNTYsNyArNTYsNyBAQAogI2ltcG9ydCAiUmVuZGVyVGhlbWVJT1MuaCIKICNpbXBv
cnQgIlJlbmRlclZpZXcuaCIKICNpbXBvcnQgIlNvZnRMaW5raW5nLmgiCi0jaW1wb3J0ICJVSUNv
bG9yU1BJLmgiCisjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2ltcG9ydCAiVXNlckFnZW50U2NyaXB0
cy5oIgogI2ltcG9ydCAiVXNlckFnZW50U3R5bGVTaGVldHMuaCIKICNpbXBvcnQgIldlYkNvcmVU
aHJlYWRSdW4uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL01pc2MvV2ViVUlLaXRT
dXBwb3J0Lm1tIGIvU291cmNlL1dlYktpdC9pb3MvTWlzYy9XZWJVSUtpdFN1cHBvcnQubW0KaW5k
ZXggMDJjOTdhNjNkYWNiMTE3MjRiM2FkMmMxZjU2MzZlYzU1YmE0MzlkYy4uNzM5MzlmMzVkMWIy
NGE4YzRjOTlmZWFiZTkyZDhjZWEyMjQ2MDRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9p
b3MvTWlzYy9XZWJVSUtpdFN1cHBvcnQubW0KKysrIGIvU291cmNlL1dlYktpdC9pb3MvTWlzYy9X
ZWJVSUtpdFN1cHBvcnQubW0KQEAgLTMzLDggKzMzLDEwIEBACiAjaW1wb3J0ICJXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaCIKICNpbXBvcnQgIldlYlN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCAi
V2ViVmlld1ByaXZhdGUuaCIKKyNpbXBvcnQgPFdlYkNvcmUvRHluYW1pY0xpbmtlclNQSS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9QYXRoVXRpbGl0aWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291
cmNlUmVxdWVzdC5oPgorI2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9UZXh0QnJlYWtJdGVyYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWRTeXN0ZW1JbnRlcmZh
Y2UuaD4KQEAgLTQ2LDcgKzQ4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0YXRp
YyBpbmxpbmUgYm9vbCBsaW5rZWRPbk9yQWZ0ZXJJT1M1KCkKIHsKLSAgICBzdGF0aWMgYm9vbCBz
X2xpbmtlZE9uT3JBZnRlcklPUzUgPSBpb3NFeGVjdXRhYmxlV2FzTGlua2VkT25PckFmdGVyVmVy
c2lvbih3a0lPU1N5c3RlbVZlcnNpb25fNV8wKTsKKyAgICBzdGF0aWMgYm9vbCBzX2xpbmtlZE9u
T3JBZnRlcklPUzUgPSBkeWxkX2dldF9wcm9ncmFtX3Nka192ZXJzaW9uKCkgPj0gRFlMRF9JT1Nf
VkVSU0lPTl81XzA7CiAgICAgcmV0dXJuIHNfbGlua2VkT25PckFmdGVySU9TNTsKIH0KIApAQCAt
ODMsNyArODUsNyBAQCB2b2lkIFdlYktpdFNldElzQ2xhc3NpYyhCT09MIGZsYWcpCiAKIGZsb2F0
IFdlYktpdEdldE1pbmltdW1ab29tRm9udFNpemUodm9pZCkKIHsKLSAgICByZXR1cm4gV0tHZXRN
aW5pbXVtWm9vbUZvbnRTaXplKCk7CisgICAgcmV0dXJuIFNldHRpbmdzOjpkZWZhdWx0TWluaW11
bVpvb21Gb250U2l6ZSgpOwogfQogCiBpbnQgV2ViS2l0R2V0TGFzdExpbmVCcmVha0luQnVmZmVy
KFVDaGFyICpjaGFyYWN0ZXJzLCBpbnQgcG9zaXRpb24sIGludCBsZW5ndGgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW0g
Yi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW0K
aW5kZXggYjljZjEzOTc4NGU2ZjUyMGU0ZWNhODY5ZDRiMmI0OWYzZmRjM2Q4Ny4uNGU0MGFiNTI0
YzViZmZlZGRlNjY1YzExODA0ZjE1NjlhNzYzOTQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5tbQpAQCAtNTQsNiAr
NTQsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUv
SW50UmVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1Bs
YXRmb3JtU2NyZWVuLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlckJveC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9SZW5kZXJPYmplY3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzSU9TLmg+CkBAIC02MSwxMCArNjIsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9XQUtX
aW5kb3cuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRocmVhZE1lc3NhZ2UuaD4KIAotI2lm
IFBMQVRGT1JNKElPUykKLSNpbmNsdWRlICJXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaCIKLSNlbmRp
ZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogdm9pZCBXZWJDaHJvbWVDbGllbnRJT1M6
OnNldFdpbmRvd1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiByKQpAQCAtMTc0LDcgKzE3
MSw3IEBAIHN0YXRpYyBpbmxpbmUgTlNEaWN0aW9uYXJ5KiBkaWN0aW9uYXJ5Rm9yVmlld3BvcnRB
cmd1bWVudHMoY29uc3QgV2ViQ29yZTo6Vmlld3BvCiAKIEZsb2F0U2l6ZSBXZWJDaHJvbWVDbGll
bnRJT1M6OnNjcmVlblNpemUoKSBjb25zdAogewotICAgIHJldHVybiBGbG9hdFNpemUoV0tHZXRT
Y3JlZW5TaXplKCkpOworICAgIHJldHVybiBGbG9hdFNpemUoc2NyZWVuU2l6ZSgpKTsKIH0KIAog
RmxvYXRTaXplIFdlYkNocm9tZUNsaWVudElPUzo6YXZhaWxhYmxlU2NyZWVuU2l6ZSgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1J
bnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1J
bnRlcmZhY2UubW0KaW5kZXggOGMyMDViNDZiM2YyOTkxNWQ3MGUwYTJiYjlhM2EwZmQyZjU1ZTNk
MC4uMTRjMWJjNmM2YjYxZWU1YzZjYzg0NjYxNWM0ODlkM2FkNGU0YzEzMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5t
bQpAQCAtMTExLDE2ICsxMTEsNiBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZv
aWQpCiAgICAgSU5JVChRVENsZWFyTWVkaWFEb3dubG9hZENhY2hlKTsKICNlbmRpZgogCi0jaWYg
UExBVEZPUk0oSU9TKQotICAgIElOSVQoRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JBZnRlcklPU1Zl
cnNpb24pOwotICAgIElOSVQoR2V0RGV2aWNlQ2xhc3MpOwotICAgIElOSVQoR2V0U2NyZWVuU2l6
ZSk7Ci0gICAgSU5JVChHZXRBdmFpbGFibGVTY3JlZW5TaXplKTsKLSAgICBJTklUKEdldFNjcmVl
blNjYWxlRmFjdG9yKTsKLSAgICBJTklUKElzR0IxODAzMENvbXBsaWFuY2VSZXF1aXJlZCk7Ci0g
ICAgSU5JVChJc09wdGltaXplZEZ1bGxzY3JlZW5TdXBwb3J0ZWQpOwotI2VuZGlmCi0KICNpZiAh
UExBVEZPUk0oSU9TKQogICAgIElOSVQoRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JCZWZvcmVTbm93
TGVvcGFyZCk7CiAgICAgSU5JVChDb3B5RGVmYXVsdFNlYXJjaFByb3ZpZGVyRGlzcGxheU5hbWUp
OwpAQCAtMTcwLDE0ICsxNjAsNiBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZv
aWQpCiAKICAgICBJTklUKENGVVJMUmVxdWVzdEFsbG93QWxsUG9zdENhY2hpbmcpOwogCi0jaWYg
UExBVEZPUk0oSU9TKQotICAgIElOSVQoR2V0VXNlckFnZW50KTsKLSAgICBJTklUKEdldERldmlj
ZU5hbWUpOwotICAgIElOSVQoR2V0T1NOYW1lRm9yVXNlckFnZW50KTsKLSAgICBJTklUKEdldFBs
YXRmb3JtTmFtZUZvck5hdmlnYXRvcik7Ci0gICAgSU5JVChHZXRWZW5kb3JOYW1lRm9yTmF2aWdh
dG9yKTsKLSNlbmRpZgotCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBJTklUKE5TRWxhc3RpY0Rl
bHRhRm9yVGltZURlbHRhKTsKICAgICBJTklUKE5TRWxhc3RpY0RlbHRhRm9yUmVib3VuZERlbHRh
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCmluZGV4IGUw
MmE5MThkZTIzM2E3Yzk1MTlmZDRhMjBjODUyMDZjZjdkYzExOWYuLjViZmI3ZmUyYmIyYTM4Yzdi
ODQxZTg3MThhZjJiMWIwMDVlZWYzMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJQcmVmZXJlbmNlcy5tbQpAQCAtNTksNiArNTksNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogI2lmIFBMQVRGT1JNKElPUykKICNpbXBvcnQgPEF1ZGlvVG9vbGJveC9BdWRpb1Nlc3Np
b24uaD4KKyNpbXBvcnQgPFdlYkNvcmUvR2VzdGFsdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9HcmFw
aGljc0NvbnRleHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSW1hZ2VTb3VyY2UuaD4KICNpbXBvcnQg
PFdlYkNvcmUvV2ViQ29yZVRocmVhZE1lc3NhZ2UuaD4KQEAgLTM5Niw3ICszOTcsNyBAQCArICh2
b2lkKWluaXRpYWxpemUKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkVG9Qcm9jZXNzTWFp
blRocmVhZCgpOwogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwogI2Vsc2UK
LSAgICBib29sIGFsbG93c0lubGluZU1lZGlhUGxheWJhY2sgPSBXS0dldERldmljZUNsYXNzKCkg
PT0gV0tEZXZpY2VDbGFzc2lQYWQ7CisgICAgYm9vbCBhbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNr
ID0gR2VzdGFsdDo6ZGV2aWNlQ2xhc3MoKSA9PSBNR0RldmljZUNsYXNzaVBhZDsKICAgICBib29s
IHJlcXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1dGUgPSAhYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFj
azsKICNlbmRpZgogICAgIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKCk7CkBAIC01NzYsNyAr
NTc3LDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAgICAgIEAiIiwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXROZXR3b3JrSW50ZXJmYWNlTmFtZVByZWZlcmVuY2VLZXksCiAj
ZW5kaWYKICNpZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykKLSAgICAgICAgW05TTnVtYmVy
IG51bWJlcldpdGhGbG9hdDpXS0dldE1pbmltdW1ab29tRm9udFNpemUoKV0sIFdlYktpdE1pbmlt
dW1ab29tRm9udFNpemVQcmVmZXJlbmNlS2V5LAorICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aEZsb2F0OlNldHRpbmdzOjpkZWZhdWx0TWluaW11bVpvb21Gb250U2l6ZSgpXSwgV2ViS2l0TWlu
aW11bVpvb21Gb250U2l6ZVByZWZlcmVuY2VLZXksCiAjZW5kaWYKICAgICAgICAgW05TTnVtYmVy
IG51bWJlcldpdGhMb25nTG9uZzpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bm9RdW90YSgpXSwg
V2ViS2l0QXBwbGljYXRpb25DYWNoZVRvdGFsUXVvdGEsCiAgICAgICAgIFtOU051bWJlciBudW1i
ZXJXaXRoTG9uZ0xvbmc6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om5vUXVvdGEoKV0sIFdlYktp
dEFwcGxpY2F0aW9uQ2FjaGVEZWZhdWx0T3JpZ2luUXVvdGEsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KaW5kZXggOTFkOGJjNDcxNzJhMWYxYzNmNDlhNjEzZTBiYTMyNDcxYzcyYjky
Ni4uMTQ2YTRlNjY3ZmNlZjMwY2RlNmIzMTE5NTMxZjQ5ZWFhN2MzY2E4OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMjQzLDEzICsyNDMsMTUgQEAKICNpbXBvcnQgIldl
YlN0b3JhZ2VNYW5hZ2VyUHJpdmF0ZS5oIgogI2ltcG9ydCAiV2ViVUlLaXRTdXBwb3J0LmgiCiAj
aW1wb3J0ICJXZWJWaXNpYmxlUG9zaXRpb24uaCIKKyNpbXBvcnQgPFdlYkNvcmUvRHluYW1pY0xp
bmtlclNQSS5oPgogI2ltcG9ydCA8V2ViQ29yZS9FdmVudE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0ZvbnRDYWNoZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9HZXN0YWx0Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvSWNvbkNvbnRyb2xsZXIu
aD4KICNpbXBvcnQgPFdlYkNvcmUvTGVnYWN5VGlsZUNhY2hlLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L01vYmlsZUdlc3RhbHRTUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvTmV0d29ya1N0YXRlTm90aWZp
ZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbXBvcnQgPFdlYkNv
cmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NRTGl0
ZURhdGFiYXNlVHJhY2tlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TbWFydFJlcGxhY2UuaD4KQEAg
LTgyMyw3ICs4MjUsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGREaXNwYXRjaEphdmFTY3JpcHRXaW5k
b3dPbkVycm9yRXZlbnRzKCkKIAogc3RhdGljIGJvb2wgaXNJbnRlcm5hbEluc3RhbGwoKQogewot
ICAgIHN0YXRpYyBib29sIGlzSW50ZXJuYWwgPSBNR0dldEJvb2xBbnN3ZXIoa01HUUFwcGxlSW50
ZXJuYWxJbnN0YWxsQ2FwYWJpbGl0eSk7CisgICAgc3RhdGljIGJvb2wgaXNJbnRlcm5hbCA9IEdl
c3RhbHQ6OmlzQXBwbGVJbnRlcm5hbEluc3RhbGwoKTsKICAgICByZXR1cm4gaXNJbnRlcm5hbDsK
IH0KIApAQCAtODUwLDcgKzg1Miw3IEBAIHN0YXRpYyBib29sIHNob3VsZEFsbG93RGlzcGxheUFu
ZFJ1bm5pbmdPZkluc2VjdXJlQ29udGVudCgpCiBzdGF0aWMgYm9vbCBzaG91bGRBbGxvd1BpY3R1
cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrKCkKIHsKICNpZiBQTEFURk9STShJT1MpCi0gICAgc3Rh
dGljIGJvb2wgc2hvdWxkQWxsb3dQaWN0dXJlSW5QaWN0dXJlTWVkaWFQbGF5YmFjayA9IGlvc0V4
ZWN1dGFibGVXYXNMaW5rZWRPbk9yQWZ0ZXJWZXJzaW9uKHdrSU9TU3lzdGVtVmVyc2lvbl85XzAp
OworICAgIHN0YXRpYyBib29sIHNob3VsZEFsbG93UGljdHVyZUluUGljdHVyZU1lZGlhUGxheWJh
Y2sgPSBkeWxkX2dldF9wcm9ncmFtX3Nka192ZXJzaW9uKCkgPj0gRFlMRF9JT1NfVkVSU0lPTl85
XzA7CiAgICAgcmV0dXJuIHNob3VsZEFsbG93UGljdHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2s7
CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKQEAgLTUzOTgsNyArNTQwMCw3IEBAIC0gKHZvaWQp
X3VwZGF0ZVNjcmVlblNjYWxlRnJvbVdpbmRvdwogICAgIGlmIChXQUtXaW5kb3cgKndpbmRvdyA9
IFtzZWxmIHdpbmRvd10pCiAgICAgICAgIHNjYWxlRmFjdG9yID0gW3dpbmRvdyBzY3JlZW5TY2Fs
ZV07CiAgICAgZWxzZQotICAgICAgICBzY2FsZUZhY3RvciA9IFdLR2V0U2NyZWVuU2NhbGVGYWN0
b3IoKTsKKyAgICAgICAgc2NhbGVGYWN0b3IgPSBzY3JlZW5TY2FsZUZhY3RvcigpOwogCiAgICAg
X3ByaXZhdGUtPnBhZ2UtPnNldERldmljZVNjYWxlRmFjdG9yKHNjYWxlRmFjdG9yKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BY2Nlc3NpYmlsaXR5SU9TLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQWNjZXNzaWJpbGl0eUlPUy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0ZDRkZDc4
NDJkZjUxNGUyOTliNzI3NGE1MmRhMWVhZDhlYmIyMTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQWNjZXNzaWJpbGl0eUlPUy5oCkBAIC0wLDAgKzEsMzAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCituYW1lc3BhY2UgV2ViS2l0IHsKKworTlNEYXRhICpBWFJlbW90ZVRva2VuKENG
VVVJRFJlZik7CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FjY2Vzc2liaWxpdHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QWNjZXNzaWJpbGl0eUlPUy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNjlkYTQxYmMwZDU1M2MyMWE4NDg3ZjQ3
MTRlZjc3MjczY2NhODdjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FjY2Vzc2liaWxpdHlJT1MubW0KQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUlPUy5oIgorCisjaWYgUExBVEZP
Uk0oSU9TKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworTlNEYXRhICpBWFJlbW90ZVRva2VuKENG
VVVJRFJlZiB1dWlkUmVmKQoreworICAgIGlmICghdXVpZFJlZikKKyAgICAgICAgcmV0dXJuIG5p
bDsKKyAgICAKKyAgICAvLyBUaGUgdG9rZW4gdGhhdCBpcyB0cmFuc21pdHRlZCBhbGxvd3MgdGhl
IG90aGVyIHNpZGUgdG8gcmVmZXIgYmFjayB0byB0aGlzIHByb2Nlc3MuCisgICAgTlNTdHJpbmcg
KnV1aWRTdHJpbmcgPSBbKE5TU3RyaW5nICopQ0ZVVUlEQ3JlYXRlU3RyaW5nKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIHV1aWRSZWYpIGF1dG9yZWxlYXNlXTsKKyAgICBOU0RpY3Rpb25hcnkgKnZhbHVl
ID0gQHsgQCJheC1waWQiIDogQChnZXRwaWQoKSksIEAiYXgtdXVpZCIgOiB1dWlkU3RyaW5nLCBA
ImF4LXJlZ2lzdGVyIiA6IEBZRVMgfTsKKyAgICByZXR1cm4gW05TS2V5ZWRBcmNoaXZlciBhcmNo
aXZlZERhdGFXaXRoUm9vdE9iamVjdDp2YWx1ZV07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmgKaW5kZXggZmVkMDBlMTg0MTg3NGU0NDgxMGVi
YzdmNmQ0NGFmY2ZjYmY5N2IxYS4uZmI1MjkzOTBhM2MyZjVjODkyYzY1OWIwM2VjMzgwY2Y1MDcx
OTM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVm
aW5pdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZp
bml0aW9ucy5oCkBAIC01NSw3ICs1NSw3IEBACiAjZGVmaW5lIERFRkFVTFRfVEVYVF9BUkVBU19B
UkVfUkVTSVpBQkxFIGZhbHNlCiAjZGVmaW5lIERFRkFVTFRfSkFWQVNDUklQVF9DQU5fT1BFTl9X
SU5ET1dTX0FVVE9NQVRJQ0FMTFkgZmFsc2UKICNkZWZpbmUgREVGQVVMVF9TSE9VTERfUkVTUEVD
VF9JTUFHRV9PUklFTlRBVElPTiB0cnVlCi0jZGVmaW5lIERFRkFVTFRfTUlOSU1VTV9GT05UX1pP
T01fU0laRSBXS0dldE1pbmltdW1ab29tRm9udFNpemUoKQorI2RlZmluZSBERUZBVUxUX01JTklN
VU1fRk9OVF9aT09NX1NJWkUgV2ViQ29yZTo6U2V0dGluZ3M6OmRlZmF1bHRNaW5pbXVtWm9vbUZv
bnRTaXplKCkKICNkZWZpbmUgREVGQVVMVF9QQVNTV09SRF9FQ0hPX0VOQUJMRUQgdHJ1ZQogI2Rl
ZmluZSBERUZBVUxUX0FMTE9XU19JTkxJTkVfTUVESUFfUExBWUJBQ0sgZmFsc2UKICNkZWZpbmUg
REVGQVVMVF9JTkxJTkVfTUVESUFfUExBWUJBQ0tfUkVRVUlSRVNfUExBWVNfSU5MSU5FX0FUVFJJ
QlVURSB0cnVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5j
ZXNTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5j
cHAKaW5kZXggYjFkNGUzZTBiYWFhYzQ5NWFiMGJmMWVjODlkNTM5NDk2MjE3YjA4NS4uY2MyNGRk
ODY3OTAyZWY4MzUwZGViNWQzNTIxZjQ2YmVlYWVlMWYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmNwcApAQCAtMzMsMTAgKzMzLDYgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL1RleHRFbmNvZGluZ1JlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCi0jaW1wb3J0IDxXZWJLaXRTeXN0ZW1J
bnRlcmZhY2VJT1MuaD4KLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCmluZGV4IDg4NTJjYzQyY2RlNmNkMWQ1NTY0YTNkMWRjZGFkN2JmN2FhNThm
NjcuLjVlYjczMmI2NTZiZGVhMTNjMjFiNjg4YWI4OWM5NGQ5NGMwMGQzMDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xMDMsNiAr
MTAzLDcgQEAKICNpbXBvcnQgIldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIgogI2lt
cG9ydCA8VUlLaXQvVUlBcHBsaWNhdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db3JlR3JhcGhp
Y3NTUEkuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRHluYW1pY0xpbmtlclNQSS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0luc3BlY3Rvck92
ZXJsYXkuaD4KICNpbXBvcnQgPFdlYkNvcmUvUXVhcnR6Q29yZVNQSS5oPgpAQCAtMjczLDcgKzI3
NCw3IEBAIC0gKEJPT0wpX21heUF1dG9tYXRpY2FsbHlTaG93VmlkZW9QaWN0dXJlSW5QaWN0dXJl
CiAKIHN0YXRpYyBib29sIHNob3VsZEFsbG93UGljdHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2so
KQogewotICAgIHN0YXRpYyBib29sIHNob3VsZEFsbG93UGljdHVyZUluUGljdHVyZU1lZGlhUGxh
eWJhY2sgPSBpb3NFeGVjdXRhYmxlV2FzTGlua2VkT25PckFmdGVyVmVyc2lvbih3a0lPU1N5c3Rl
bVZlcnNpb25fOV8wKTsKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRBbGxvd1BpY3R1cmVJblBpY3R1
cmVNZWRpYVBsYXliYWNrID0gZHlsZF9nZXRfcHJvZ3JhbV9zZGtfdmVyc2lvbigpID49IERZTERf
SU9TX1ZFUlNJT05fOV8wOwogICAgIHJldHVybiBzaG91bGRBbGxvd1BpY3R1cmVJblBpY3R1cmVN
ZWRpYVBsYXliYWNrOwogfQogCkBAIC0xMTI5LDcgKzExMzAsNyBAQCAtICh2b2lkKV9yZXN0b3Jl
UGFnZVN0YXRlVG9Vbm9ic2N1cmVkQ2VudGVyOihXZWJDb3JlOjpGbG9hdFBvaW50KWNlbnRlciBz
Y2FsZTooZAogCiAtIChQYXNzUmVmUHRyPFdlYktpdDo6Vmlld1NuYXBzaG90PilfdGFrZVZpZXdT
bmFwc2hvdAogewotICAgIGZsb2F0IGRldmljZVNjYWxlID0gV0tHZXRTY3JlZW5TY2FsZUZhY3Rv
cigpOworICAgIGZsb2F0IGRldmljZVNjYWxlID0gV2ViQ29yZTo6c2NyZWVuU2NhbGVGYWN0b3Io
KTsKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgc25hcHNob3RTaXplKHNlbGYuYm91bmRzLnNpemUp
OwogICAgIHNuYXBzaG90U2l6ZS5zY2FsZShkZXZpY2VTY2FsZSwgZGV2aWNlU2NhbGUpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24ubW0KaW5kZXggZjY1N2UyNDI3NGY1YjAyZDQ0YWMxYjUyYjVhMGU4
NzExOGY0MzU2Yi4uYTk5OTI0Y2E3ZTQzZTQyMjU0NTgyOTE1NzYwODlhZThmNDYwNGJiMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25m
aWd1cmF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbi5tbQpAQCAtNDAsNyArNDAsNyBAQAogCiAjaWYgUExBVEZPUk0o
SU9TKQogI2ltcG9ydCAiVUlLaXRTUEkuaCIKLSNpbXBvcnQgIldlYktpdFN5c3RlbUludGVyZmFj
ZUlPUy5oIgorI2ltcG9ydCA8V2ViQ29yZS9HZXN0YWx0Lmg+CiAjZW5kaWYKIAogdGVtcGxhdGU8
dHlwZW5hbWUgVD4gY2xhc3MgTGF6eUluaXRpYWxpemVkIHsKQEAgLTEwOSw3ICsxMDksNyBAQCAt
IChpbnN0YW5jZXR5cGUpaW5pdAogI2lmIFBMQVRGT1JNKElPUykKICAgICBfcmVxdWlyZXNVc2Vy
QWN0aW9uRm9yTWVkaWFQbGF5YmFjayA9IFlFUzsKICAgICBfYWxsb3dzUGljdHVyZUluUGljdHVy
ZU1lZGlhUGxheWJhY2sgPSBZRVM7Ci0gICAgX2FsbG93c0lubGluZU1lZGlhUGxheWJhY2sgPSBX
S0dldERldmljZUNsYXNzKCkgPT0gV0tEZXZpY2VDbGFzc2lQYWQ7CisgICAgX2FsbG93c0lubGlu
ZU1lZGlhUGxheWJhY2sgPSBXZWJDb3JlOjpHZXN0YWx0OjpkZXZpY2VDbGFzcygpID09IE1HRGV2
aWNlQ2xhc3NpUGFkOwogICAgIF9pbmxpbmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQbGF5c0lubGlu
ZUF0dHJpYnV0ZSA9ICFfYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjazsKICAgICBfbWVkaWFEYXRh
TG9hZHNBdXRvbWF0aWNhbGx5ID0gTk87CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQppbmRleCBiZDM0ZDQ1NjQ1NWIwMTQ3ODEwMmNlNmY4
YTMxODE2YTdjMzcyMGFiLi42NDVhYjk3ZjkzYjgwYTFlNWQzMTYzMWY5NzI4ZmVjZGVhYTQ2MzE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCkBA
IC0yOSw2ICsyOSw3IEBACiAjaWYgUExBVEZPUk0oSU9TKQogCiAjaW1wb3J0ICJBUElQYWdlQ29u
ZmlndXJhdGlvbi5oIgorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUlPUy5oIgogI2ltcG9ydCAiQXBw
bGljYXRpb25TdGF0ZVRyYWNrZXIuaCIKICNpbXBvcnQgIlBhZ2VDbGllbnRJbXBsSU9TLmgiCiAj
aW1wb3J0ICJSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5LmgiCkBAIC00NCw3ICs0NSw2
IEBACiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViRnJhbWVQcm94
eS5oIgogI2ltcG9ydCAiV2ViS2l0MkluaXRpYWxpemUuaCIKLSNpbXBvcnQgIldlYktpdFN5c3Rl
bUludGVyZmFjZUlPUy5oIgogI2ltcG9ydCAiV2ViUGFnZUdyb3VwLmgiCiAjaW1wb3J0ICJXZWJQ
cm9jZXNzUG9vbC5oIgogI2ltcG9ydCAiV2ViU3lzdGVtSW50ZXJmYWNlLmgiCkBAIC01Myw2ICs1
Myw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9J
bnNwZWN0b3JPdmVybGF5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Cisj
aW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1F1YXJ0
ekNvcmVTUEkuaD4KICNpbXBvcnQgPHd0Zi9DdXJyZW50VGltZS5oPgogI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgpAQCAtMTg4LDcgKzE4OSw3IEBAIC0gKGluc3RhbmNldHlwZSlfY29tbW9uSW5p
dGlhbGl6YXRpb25XaXRoUHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByCiAK
ICAgICBfcGFnZSA9IHByb2Nlc3NQb29sLmNyZWF0ZVdlYlBhZ2UoKl9wYWdlQ2xpZW50LCBXVEY6
Om1vdmUoY29uZmlndXJhdGlvbikpOwogICAgIF9wYWdlLT5pbml0aWFsaXplV2ViUGFnZSgpOwot
ICAgIF9wYWdlLT5zZXRJbnRyaW5zaWNEZXZpY2VTY2FsZUZhY3RvcihXS0dldFNjYWxlRmFjdG9y
Rm9yU2NyZWVuKFtVSVNjcmVlbiBtYWluU2NyZWVuXSkpOworICAgIF9wYWdlLT5zZXRJbnRyaW5z
aWNEZXZpY2VTY2FsZUZhY3RvcihzY3JlZW5TY2FsZUZhY3RvcihbVUlTY3JlZW4gbWFpblNjcmVl
bl0pKTsKICAgICBfcGFnZS0+c2V0VXNlRml4ZWRMYXlvdXQodHJ1ZSk7CiAgICAgX3BhZ2UtPnNl
dERlbGVnYXRlc1Njcm9sbGluZyh0cnVlKTsKIApAQCAtNDE5LDcgKzQyMCw3IEBAIC0gKHZvaWQp
X3dpbmRvd0RpZE1vdmVUb1NjcmVlbk5vdGlmaWNhdGlvbjooTlNOb3RpZmljYXRpb24gKilub3Rp
ZmljYXRpb24KIC0gKHZvaWQpX3VwZGF0ZUZvclNjcmVlbjooVUlTY3JlZW4gKilzY3JlZW4KIHsK
ICAgICBBU1NFUlQoc2NyZWVuKTsKLSAgICBfcGFnZS0+c2V0SW50cmluc2ljRGV2aWNlU2NhbGVG
YWN0b3IoV0tHZXRTY2FsZUZhY3RvckZvclNjcmVlbihzY3JlZW4pKTsKKyAgICBfcGFnZS0+c2V0
SW50cmluc2ljRGV2aWNlU2NhbGVGYWN0b3Ioc2NyZWVuU2NhbGVGYWN0b3Ioc2NyZWVuKSk7CiAg
ICAgW3NlbGYgX2FjY2Vzc2liaWxpdHlSZWdpc3RlclVJUHJvY2Vzc1Rva2Vuc107CiB9CiAKQEAg
LTQyOSwxNSArNDMwLDIzIEBAIC0gKHZvaWQpX3NldEFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9r
ZW46KE5TRGF0YSAqKWRhdGEKICAgICBbc2VsZiBfYWNjZXNzaWJpbGl0eVJlZ2lzdGVyVUlQcm9j
ZXNzVG9rZW5zXTsKIH0KIAorc3RhdGljIHZvaWQgQVhTdG9yZVJlbW90ZUNvbm5lY3Rpb25JbmZv
cm1hdGlvbihpZCBlbGVtZW50LCBwaWRfdCBwaWQsIG1hY2hfcG9ydF90IHNlbmRQb3J0LCBDRlVV
SURSZWYgdXVpZFJlZikKK3sKKyAgICAvLyBUaGUgYWNjZXNzaWJpbGl0eSBidW5kbGUgbmVlZHMg
dG8ga25vdyB0aGUgdXVpZCwgcGlkIGFuZCBtYWNoX3BvcnQgdGhhdCB0aGlzIG9iamVjdCB3aWxs
IHJlZmVyIHRvLgorICAgIG9iamNfc2V0QXNzb2NpYXRlZE9iamVjdChlbGVtZW50LCAodm9pZCop
W0AiYXgtdXVpZCIgaGFzaF0sIChpZCl1dWlkUmVmLCBPQkpDX0FTU09DSUFUSU9OX1JFVEFJTl9O
T05BVE9NSUMpOworICAgIG9iamNfc2V0QXNzb2NpYXRlZE9iamVjdChlbGVtZW50LCAodm9pZCop
W0AiYXgtcGlkIiBoYXNoXSwgQChwaWQpLCBPQkpDX0FTU09DSUFUSU9OX1JFVEFJTl9OT05BVE9N
SUMpOworICAgIG9iamNfc2V0QXNzb2NpYXRlZE9iamVjdChlbGVtZW50LCAodm9pZCopW0AiYXgt
bWFjaHBvcnQiIGhhc2hdLCBAKHNlbmRQb3J0KSwgT0JKQ19BU1NPQ0lBVElPTl9SRVRBSU5fTk9O
QVRPTUlDKTsKK30KKwogLSAodm9pZClfYWNjZXNzaWJpbGl0eVJlZ2lzdGVyVUlQcm9jZXNzVG9r
ZW5zCiB7CiAgICAgUmV0YWluUHRyPENGVVVJRFJlZj4gdXVpZCA9IGFkb3B0Q0YoQ0ZVVUlEQ3Jl
YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQpKTsKLSAgICBOU0RhdGEgKnJlbW90ZUVsZW1lbnRUb2tl
biA9IFdLQVhSZW1vdGVUb2tlbih1dWlkLmdldCgpKTsKKyAgICBOU0RhdGEgKnJlbW90ZUVsZW1l
bnRUb2tlbiA9IEFYUmVtb3RlVG9rZW4odXVpZC5nZXQoKSk7CiAKICAgICAvLyBTdG9yZSBpbmZv
cm1hdGlvbiBhYm91dCB0aGUgV2ViUHJvY2VzcyB0aGF0IGNhbiBsYXRlciBiZSByZXRyaWV2ZWQg
YnkgdGhlIGlPUyBBY2Nlc3NpYmlsaXR5IHJ1bnRpbWUuCiAgICAgaWYgKF9wYWdlLT5wcm9jZXNz
KCkuc3RhdGUoKSA9PSBXZWJQcm9jZXNzUHJveHk6OlN0YXRlOjpSdW5uaW5nKSB7CiAgICAgICAg
IElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiA9IF9wYWdlLT5wcm9jZXNzKCkuY29ubmVjdGlv
bigpOwotICAgICAgICBXS0FYU3RvcmVSZW1vdGVDb25uZWN0aW9uSW5mb3JtYXRpb24oc2VsZiwg
X3BhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzSWRlbnRpZmllcigpLCBjb25uZWN0aW9uLT5pZGVudGlm
aWVyKCkucG9ydCwgdXVpZC5nZXQoKSk7CisgICAgICAgIEFYU3RvcmVSZW1vdGVDb25uZWN0aW9u
SW5mb3JtYXRpb24oc2VsZiwgX3BhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzSWRlbnRpZmllcigpLCBj
b25uZWN0aW9uLT5pZGVudGlmaWVyKCkucG9ydCwgdXVpZC5nZXQoKSk7CiAKICAgICAgICAgSVBD
OjpEYXRhUmVmZXJlbmNlIGVsZW1lbnRUb2tlbiA9IElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihbcmVtb3RlRWxlbWVudFRva2VuIGJ5dGVzXSksIFty
ZW1vdGVFbGVtZW50VG9rZW4gbGVuZ3RoXSk7CiAgICAgICAgIF9wYWdlLT5yZWdpc3RlclVJUHJv
Y2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoZWxlbWVudFRva2VuLCBlbGVtZW50VG9rZW4pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQppbmRleCAwZmY2OWQ3ZjE0YWJlOWRkZjdjYjAyMTkyNTMyZWEyZWM5ZTBlYmNh
Li4wYjI0NDU1OGU1ZmJlZWMwNjU1Zjk5YzI1MWUwOGRmNmVkM2Q4YTdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQpAQCAtNzEsNyArNzEsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViU2VsZWN0
aW9uUmVjdC5oPiAvLyBGSVhNRTogV0syIHNob3VsZCBub3QgaW5jbHVkZSBXZWJLaXQgaGVhZGVy
cyEKLSNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZUlPUy5oPgogI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgogCiBAaW50ZXJmYWNlIFVJRXZlbnQoVUlFdmVudEludGVybmFsKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCAyMWQz
Yzg3OTIxNDQzODRhZWM1ZTJkY2RmNjc2M2RjMDIxZTRkNDhiLi43NjY3NTE0ZTY1MzM0ODJkM2Uz
YWU4OGE4OWNlOTg2ZDY1OTg0NWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtNDAsMTIgKzQwLDEyIEBACiAjaW1wb3J0ICJVc2Vy
RGF0YS5oIgogI2ltcG9ydCAiVmlld1VwZGF0ZURpc3BhdGNoZXJNZXNzYWdlcy5oIgogI2ltcG9y
dCAiV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVySW50ZXJuYWwuaCIKLSNpbXBvcnQgIldlYktp
dFN5c3RlbUludGVyZmFjZUlPUy5oIgogI2ltcG9ydCAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW1w
b3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIldlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eS5oIgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNv
cmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4K
ICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VzZXJB
Z2VudC5oPgogCkBAIC03NjUsMTcgKzc2NSwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Ymx1ckFz
c2lzdGVkTm9kZSgpCiAKIEZsb2F0U2l6ZSBXZWJQYWdlUHJveHk6OnNjcmVlblNpemUoKQogewot
ICAgIHJldHVybiBGbG9hdFNpemUoV0tHZXRTY3JlZW5TaXplKCkpOworICAgIHJldHVybiBXZWJD
b3JlOjpzY3JlZW5TaXplKCk7CiB9CiAKIEZsb2F0U2l6ZSBXZWJQYWdlUHJveHk6OmF2YWlsYWJs
ZVNjcmVlblNpemUoKQogewotICAgIHJldHVybiBGbG9hdFNpemUoV0tHZXRBdmFpbGFibGVTY3Jl
ZW5TaXplKCkpOworICAgIHJldHVybiBXZWJDb3JlOjphdmFpbGFibGVTY3JlZW5TaXplKCk7CiB9
CiAgICAgCiBmbG9hdCBXZWJQYWdlUHJveHk6OnRleHRBdXRvc2l6aW5nV2lkdGgoKQogewotICAg
IHJldHVybiBXS0dldFNjcmVlblNpemUoKS53aWR0aDsKKyAgICByZXR1cm4gV2ViQ29yZTo6c2Ny
ZWVuU2l6ZSgpLndpZHRoKCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkeW5hbWljVmlld3Bv
cnRVcGRhdGVDaGFuZ2VkVGFyZ2V0KGRvdWJsZSBuZXdTY2FsZSwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRQb2ludCYgbmV3U2Nyb2xsUG9zaXRpb24sIHVpbnQ2NF90IGR5bmFtaWNWaWV3cG9ydFNpemVV
cGRhdGVJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA3MGY3OGRjNmRmZDk3NjRhMjliNjQyYWMwZDEzOGI1ZDE3Zjg1NzdmLi5l
MzZhMjA0MGI2MDU0YmMzOGI5ZWRmNDNjYjY4MDI2MzgxZmZlZTg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjM0LDYgKzEy
MzQsOCBAQAogCQlBMTE4QTlFRjE5MDdBRDZGMDBGN0M5MkIgLyogUXVpY2tMb29rRG9jdW1lbnRE
YXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE4
QTlFRDE5MDdBRDZGMDBGN0M5MkIgLyogUXVpY2tMb29rRG9jdW1lbnREYXRhLmggKi87IH07CiAJ
CUExMThBOUYyMTkwOEI4RUEwMEY3QzkyQiAvKiBfV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTExOEE5RjAxOTA4
QjhFQTAwRjdDOTJCIC8qIF9XS05TRmlsZU1hbmFnZXJFeHRyYXMubW0gKi87IH07CiAJCUExMThB
OUYzMTkwOEI4RUEwMEY3QzkyQiAvKiBfV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE4QTlGMTE5MDhCOEVBMDBG
N0M5MkIgLyogX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUExN0ZFOENDMUJFNTdGNDgwMDIxRTM1QyAvKiBB
Y2Nlc3NpYmlsaXR5SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTE3RkU4Q0ExQkU1N0Y0ODAwMjFFMzVDIC8qIEFjY2Vzc2liaWxpdHlJT1MubW0g
Ki87IH07CisJCUExN0ZFOENEMUJFNTdGNDgwMDIxRTM1QyAvKiBBY2Nlc3NpYmlsaXR5SU9TLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTdGRThDQjFC
RTU3RjQ4MDAyMUUzNUMgLyogQWNjZXNzaWJpbGl0eUlPUy5oICovOyB9OwogCQlBMUE0RkU1QTE4
RENFOUZBMDBCNUVBOEEgLyogX1dLRG93bmxvYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQTRGRTU3MThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3du
bG9hZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUExQTRGRTVCMThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9hZC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQTRGRTU4MThEQ0U5RkEwMEI1RUE4
QSAvKiBfV0tEb3dubG9hZC5tbSAqLzsgfTsKIAkJQTFBNEZFNUMxOERDRTlGQTAwQjVFQThBIC8q
IF9XS0Rvd25sb2FkSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEExQTRGRTU5MThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9hZEludGVy
bmFsLmggKi87IH07CkBAIC0zNDU2LDYgKzM0NTgsOCBAQAogCQlBMTE4QTlFRDE5MDdBRDZGMDBG
N0M5MkIgLyogUXVpY2tMb29rRG9jdW1lbnREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFF1aWNrTG9va0RvY3VtZW50RGF0YS5oOyBwYXRoID0gaW9zL1F1aWNrTG9va0Rv
Y3VtZW50RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTE4QTlGMDE5MDhC
OEVBMDBGN0M5MkIgLyogX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS05TRmlsZU1hbmFnZXJFeHRyYXMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMThBOUYxMTkwOEI4RUEwMEY3QzkyQiAvKiBfV0tO
U0ZpbGVNYW5hZ2VyRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9X
S05TRmlsZU1hbmFnZXJFeHRyYXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE3
RkU4Q0ExQkU1N0Y0ODAwMjFFMzVDIC8qIEFjY2Vzc2liaWxpdHlJT1MubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5SU9TLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBMTdGRThDQjFCRTU3RjQ4MDAyMUUzNUMgLyogQWNjZXNz
aWJpbGl0eUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmls
aXR5SU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExQTRGRTU3MThEQ0U5RkEw
MEI1RUE4QSAvKiBfV0tEb3dubG9hZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBfV0tEb3dubG9hZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUE0RkU1ODE4
RENFOUZBMDBCNUVBOEEgLyogX1dLRG93bmxvYWQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBfV0tEb3dubG9hZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTFBNEZFNTkxOERDRTlGQTAwQjVFQThBIC8qIF9XS0Rvd25sb2FkSW50ZXJuYWwuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLRG93bmxvYWRJbnRlcm5hbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTEzNyw2ICs1MTQxLDggQEAKIAkJMkRBOTQ0
OTYxODg0RTREQTAwRUQ4NkRCIC8qIGlvcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJQTE3RkU4Q0IxQkU1N0Y0ODAwMjFFMzVDIC8qIEFjY2Vzc2liaWxp
dHlJT1MuaCAqLywKKwkJCQlBMTdGRThDQTFCRTU3RjQ4MDAyMUUzNUMgLyogQWNjZXNzaWJpbGl0
eUlPUy5tbSAqLywKIAkJCQlBN0U5M0NFQjE5MjUzMUFBMDBBMURDNDggLyogQ2hpbGRQcm9jZXNz
SU9TLm1tICovLAogCQkJCTJEQTk0NDlEMTg4NEU0RjAwMEVEODZEQiAvKiBHZXN0dXJlVHlwZXMu
aCAqLywKIAkJCQkyREE5NDQ5NzE4ODRFNEYwMDBFRDg2REIgLyogTmF0aXZlV2ViS2V5Ym9hcmRF
dmVudElPUy5tbSAqLywKQEAgLTc3MDUsNiArNzcxMSw3IEBACiAJCQkJMUEyRDk1NkYxMjg0ODU2
NDAwMUVCOTYyIC8qIENoaWxkUHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4MjgzN0Ex
NkIzNkE0RjAwQTI3OEZFIC8qIENoaWxkUHJvY2Vzc0VudHJ5UG9pbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxRkFFQzNBMUIwNjU3NjMwMDA5QzRFNyAvKiBDaGlsZFByb2Nlc3NNZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQTE3RkU4Q0QxQkU1N0Y0ODAwMjFFMzVDIC8qIEFjY2Vzc2li
aWxpdHlJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxNTEzQzY3MTY2RUFCQjIwMDE0OUZDQiAv
KiBDaGlsZFByb2Nlc3NQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjkwRjQyNzIxNzJBMEM3
NDAwOTM5RkYwIC8qIENoaWxkUHJvY2Vzc1N1cHBsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBNkY5RjkwMTFFMTNFRkMwMERCMTM3MSAvKiBDb21tYW5kTGluZS5oIGluIEhlYWRlcnMgKi8s
CkBAIC05ODE0LDYgKzk4MjEsNyBAQAogCQkJCTJENkNEMTFBMTg5MDU4QTUwMEU1QTRBMCAvKiBW
aWV3U25hcHNob3RTdG9yZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTI2ODQwNTRGMThCODZDOEUw
MDIyQzM4QiAvKiBWaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQky
Njg0MDU1MjE4Qjg2RUQ2MDAyMkMzOEIgLyogVmlld1VwZGF0ZURpc3BhdGNoZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTE3RkU4Q0MxQkU1N0Y0ODAwMjFFMzVDIC8q
IEFjY2Vzc2liaWxpdHlJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQkyNjg0MDU0QzE4Qjg2QzM1
MDAyMkMzOEIgLyogVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQTBGMjlFMzEyMEI0NDQyMDA1M0QxQjkgLyogVmlzaXRlZExpbmtTdG9yZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxQTYwMjI0QzE4QzE2QjlGMDBDM0U4QzkgLyogVmlzaXRlZExp
bmtTdG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVy
ZmFjZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YlN5c3RlbUludGVyZmFjZS5tbQppbmRleCBkY2UyNTc0ZGIzNWQxNzE0NjNmODcyY2QwOGY0NTA4
Mjk2MjcyYzIxLi4wM2YyODgyMzAyMTEzNmZlMDhkZDJmNzNjNTRhYmIzNWYzM2I4ZThmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJT
eXN0ZW1JbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCkBAIC0xNTEsMjggKzE1MSwxMSBAQCB2
b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAKICAgICAgICAgSU5JVChDRlVS
TFJlcXVlc3RBbGxvd0FsbFBvc3RDYWNoaW5nKTsKIAotI2lmIFBMQVRGT1JNKElPUykKLSAgICAg
ICAgSU5JVChHZXRVc2VyQWdlbnQpOwotICAgICAgICBJTklUKEdldERldmljZU5hbWUpOwotICAg
ICAgICBJTklUKEdldE9TTmFtZUZvclVzZXJBZ2VudCk7Ci0gICAgICAgIElOSVQoR2V0UGxhdGZv
cm1OYW1lRm9yTmF2aWdhdG9yKTsKLSAgICAgICAgSU5JVChHZXRWZW5kb3JOYW1lRm9yTmF2aWdh
dG9yKTsKLSNlbmRpZgotCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICAgICAgSU5JVChOU0VsYXN0
aWNEZWx0YUZvclRpbWVEZWx0YSk7CiAgICAgICAgIElOSVQoTlNFbGFzdGljRGVsdGFGb3JSZWJv
dW5kRGVsdGEpOwogICAgICAgICBJTklUKE5TUmVib3VuZERlbHRhRm9yRWxhc3RpY0RlbHRhKTsK
ICNlbmRpZgotI2lmIFBMQVRGT1JNKElPUykKLSAgICAgICAgSU5JVChFeGVjdXRhYmxlV2FzTGlu
a2VkT25PckFmdGVySU9TVmVyc2lvbik7Ci0gICAgICAgIElOSVQoR2V0RGV2aWNlQ2xhc3MpOwot
ICAgICAgICBJTklUKEdldFNjcmVlblNpemUpOwotICAgICAgICBJTklUKEdldEF2YWlsYWJsZVNj
cmVlblNpemUpOwotICAgICAgICBJTklUKEdldFNjcmVlblNjYWxlRmFjdG9yKTsKLSAgICAgICAg
SU5JVChJc0dCMTgwMzBDb21wbGlhbmNlUmVxdWlyZWQpOwotICAgICAgICBJTklUKElzT3B0aW1p
emVkRnVsbHNjcmVlblN1cHBvcnRlZCk7Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShQVUJMSUNfU1VG
RklYX0xJU1QpCiAgICAgICAgIElOSVQoSXNQdWJsaWNTdWZmaXgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDVjOThi
NjJhNzJmOWEwNzdiNzU4NWM4NzRjZDYwZDYwN2JjNjIwMzAuLjc1YmNiNTU1YjdmOTA2OTY0YTU2
MmNiMmIwYjQxOTJjNGY4ZDQ5NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFBM
QVRGT1JNKElPUykKIAorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUlPUy5oIgogI2ltcG9ydCAiQXNz
aXN0ZWROb2RlSW5mb3JtYXRpb24uaCIKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBv
cnQgIkRyYXdpbmdBcmVhLmgiCkBAIC00NSw3ICs0Niw2IEBACiAjaW1wb3J0ICJXZWJGcmFtZS5o
IgogI2ltcG9ydCAiV2ViSW1hZ2UuaCIKICNpbXBvcnQgIldlYktpdFN5c3RlbUludGVyZmFjZS5o
IgotI2ltcG9ydCAiV2ViS2l0U3lzdGVtSW50ZXJmYWNlSU9TLmgiCiAjaW1wb3J0ICJXZWJQYWdl
UHJveHlNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgogI2ltcG9ydCA8Q29yZVRl
eHQvQ1RGb250Lmg+CkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUlu
aXRpYWxpemVBY2Nlc3NpYmlsaXR5KCkKICAgICBbbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQg
c2V0V2ViUGFnZTp0aGlzXTsKICAgICAKICAgICBSZXRhaW5QdHI8Q0ZVVUlEUmVmPiB1dWlkID0g
YWRvcHRDRihDRlVVSURDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCkpOwotICAgIE5TRGF0YSAq
cmVtb3RlVG9rZW4gPSBXS0FYUmVtb3RlVG9rZW4odXVpZC5nZXQoKSk7CisgICAgTlNEYXRhICpy
ZW1vdGVUb2tlbiA9IEFYUmVtb3RlVG9rZW4odXVpZC5nZXQoKSk7CiAgICAgCiAgICAgSVBDOjpE
YXRhUmVmZXJlbmNlIGRhdGFUb2tlbiA9IElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihbcmVtb3RlVG9rZW4gYnl0ZXNdKSwgW3JlbW90ZVRva2VuIGxl
bmd0aF0pOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJXZWJQcm9j
ZXNzQWNjZXNzaWJpbGl0eVRva2VuKGRhdGFUb2tlbikpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264500</attachid>
            <date>2015-10-31 20:13:32 -0700</date>
            <delta_ts>2015-11-01 22:26:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150763-20151031201238.patch</filename>
            <type>text/plain</type>
            <size>90770</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxNzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjZmZDdkY2Q4MDEzMjRj
MGZhNWNiZmFkYWRjM2M3MzI0ZTMwZmNkZS4uOGRjNDUxYjgwNzUzNTdlMzQ1NTllMDdhYzFhYjE3
ODFlNmM3ZmIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE1LTEwLTMxICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIGlPUy1vbmx5IFdl
YktpdFN5c3RlbUludGVyZmFjZSBjYWxscyB3aXRoIFNQSQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogY29uZmlnLmg6IFJlbW92ZWQgV0VCQ09SRV9OQVZJR0FUT1JfUExB
VEZPUk0gYW5kIFdFQkNPUkVfTkFWSUdBVE9SX1ZFTkRPUi4KKyAgICAgICAgKiBjc3MvTWVkaWFR
dWVyeUV2YWx1YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1J1bm5pbmdPbklQaG9uZU9y
SVBvZCk6IFVzZWQgR2VzdGFsdDo6ZGV2aWNlQ2xhc3MoKSBpbnN0ZWFkIG9mIGlvc0RldmljZUNs
YXNzKCkuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNob3VsZE92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNr
UmVzdHJpY3Rpb24pOiBVc2VkIHN1cHBvcnRzUGljdHVyZUluUGljdHVyZSgpIGluc3RlYWQgb2Yg
d2tJc09wdGltaXplZEZ1bGxzY3JlZW5TdXBwb3J0ZWQoKS4KKyAgICAgICAgKiBodG1sL0hUTUxP
YmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZE5vdFBlcmZvcm1VUkxB
ZGp1c3RtZW50KTogVXNlZCBkeWxkX2dldF9wcm9ncmFtX3Nka192ZXJzaW9uKCkgaW5zdGVhZCBv
ZiBpb3NFeGVjdXRhYmxlV2FzTGlua2VkT25PckFmdGVyVmVyc2lvbigpLgorICAgICAgICAqIGh0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVt
ZW50Ojp3ZWJraXRTdXBwb3J0c1ByZXNlbnRhdGlvbk1vZGUpOiBVc2VkIHN1cHBvcnRzUGljdHVy
ZUluUGljdHVyZSgpIGluc3RlYWQgb2Ygd2tJc09wdGltaXplZEZ1bGxzY3JlZW5TdXBwb3J0ZWQo
KS4KKyAgICAgICAgKiBwYWdlL05hdmlnYXRvckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
cGxhdGZvcm1OYW1lRm9yTmF2aWdhdG9yKTogQWRkZWQgdG8gcmV0dXJuIEdlc3RhbHQ6OmRldmlj
ZU5hbWUoKS4KKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6CisgICAgICAgICogcGFnZS9WaWV3
cG9ydENvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1
cmF0aW9uOjp0ZXh0RG9jdW1lbnRQYXJhbWV0ZXJzKTogVXNlZCBzY3JlZW5TaXplKCkgaW5zdGVh
ZCBvZiB3a0dldFNjcmVlblNpemUoKS4KKyAgICAgICAgKiBwYWdlL2lvcy9Vc2VyQWdlbnRJT1Mu
bW06CisgICAgICAgIChXZWJDb3JlOjppc0NsYXNzaWMpOiBBZGRlZCB0byByZXR1cm4gLVtVSUFw
cGxpY2F0aW9uIF9pc0NsYXNzaWNdLgorICAgICAgICAoV2ViQ29yZTo6b3NOYW1lRm9yVXNlckFn
ZW50KTogVXBzdHJlYW1lZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgV0tHZXRPU05hbWVGb3JVc2Vy
QWdlbnQoKSBmcm9tIFdlYktpdFN5c3RlbUludGVyZmFjZS4KKyAgICAgICAgKFdlYkNvcmU6OmRl
dmljZU5hbWUpOiBEaXR0byBmb3Igd2tHZXREZXZpY2VOYW1lKCkuCisgICAgICAgIChXZWJDb3Jl
OjpzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUpOiBDYWxsZWQgZGV2aWNlTmFt
ZSgpIGFuZCBvc05hbWVGb3JVc2VyQWdlbnQoKS4KKyAgICAgICAgKiBwYWdlL21hYy9TZXR0aW5n
c01hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpkZWZhdWx0TWluaW11bVpvb21G
b250U2l6ZSk6IFVwc3RyZWFtZWQgdGhlIGltcGxlbWVudGF0aW9uIG9mIFdLR2V0TWluaW11bVpv
b21Gb250U2l6ZSgpIGZyb20gV2ViS2l0U3lzdGVtSW50ZXJmYWNlLgorICAgICAgICAqIHBsYXRm
b3JtL1BsYXRmb3JtU2NyZWVuLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0dlc3RhbHQuY3Bw
OiBBZGRlZCBhIGNsYXNzIHRoYXQgcmV0dXJucyBhbnN3ZXJzIGZyb20gTW9iaWxlR2VzdGFsdC4K
KyAgICAgICAgKFdlYkNvcmU6Okdlc3RhbHQ6OmRldmljZUNsYXNzKToKKyAgICAgICAgKFdlYkNv
cmU6Okdlc3RhbHQ6OmRldmljZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6R2VzdGFsdDo6aGFz
SVBhZENhcGFiaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6R2VzdGFsdDo6aXNBcHBsZUludGVy
bmFsSW5zdGFsbCk6CisgICAgICAgIChXZWJDb3JlOjpHZXN0YWx0OjptYWluU2NyZWVuUGl0Y2gp
OgorICAgICAgICAoV2ViQ29yZTo6R2VzdGFsdDo6bWFpblNjcmVlblNjYWxlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9pb3MvR2VzdGFsdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9y
bVNjcmVlbklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlblBQSUZhY3Rvcik6IFVzZWQg
R2VzdGFsdCBpbnN0ZWFkIG9mIGNhbGxpbmcgTUdDb3B5QW5zd2VyIGRpcmVjdGx5LgorICAgICAg
ICAoV2ViQ29yZTo6c2NyZWVuU2l6ZSk6IFVwc3RyZWFtZWQgdGhlIGltcGxlbWVudGF0aW9uIG9m
IFdLR2V0U2NyZWVuU2l6ZSgpIGZyb20gV2ViS2l0U3lzdGVtSW50ZXJmYWNlLgorICAgICAgICAo
V2ViQ29yZTo6YXZhaWxhYmxlU2NyZWVuU2l6ZSk6IERpdHRvIGZvciBXS0dldEF2YWlsYWJsZVNj
cmVlblNpemUoKS4KKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlblNjYWxlRmFjdG9yKTogRGl0dG8g
Zm9yIFdLR2V0U2NyZWVuU2NhbGVGYWN0b3IoKSBhbmQgV0tHZXRTY2FsZUZhY3RvckZvclNjcmVl
bigpLgorICAgICAgICAoV2ViQ29yZTo6bW9iaWxlR2VzdGFsdEZsb2F0VmFsdWUpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLmg6IFJl
bW92ZWQuCisgICAgICAgIChpb3NFeGVjdXRhYmxlV2FzTGlua2VkT25PckFmdGVyVmVyc2lvbik6
IERlbGV0ZWQuCisgICAgICAgIChpb3NEZXZpY2VDbGFzcyk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW06CisgICAgICAgICogcGxh
dGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lmg6CisgICAgICAgICog
cGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tOgorICAgICAg
ICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6Om1heUF1dG9tYXRpY2FsbHlTaG93
VmlkZW9QaWN0dXJlSW5QaWN0dXJlKTogVXNlZCBzdXBwb3J0c1BpY3R1cmVJblBpY3R1cmUoKSBp
bnN0ZWFkIG9mIHdrSXNPcHRpbWl6ZWRGdWxsc2NyZWVuU3VwcG9ydGVkKCkuCisgICAgICAgIChX
ZWJDb3JlOjpzdXBwb3J0c1BpY3R1cmVJblBpY3R1cmUpOiBVcHN0cmVhbWVkIHRoZSBpbXBsZW1l
bnRhdGlvbiBvZiBXS0lzT3B0aW1pemVkRnVsbHNjcmVlblN1cHBvcnRlZCgpIGZyb20gV2ViS2l0
U3lzdGVtSW50ZXJmYWNlLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lm1t
OgorICAgICAgICAoLVtXQUtXaW5kb3cgaW5pdFdpdGhMYXllcjpdKTogVXNlZCBzY3JlZW5TY2Fs
ZUZhY3RvcigpIGluc3RlYWQgb2YgV0tHZXRTY3JlZW5TY2FsZUZhY3RvcigpLgorICAgICAgICAo
LVtXQUtXaW5kb3cgaW5pdFdpdGhGcmFtZTpdKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0v
aW9zL3dhay9XS0dyYXBoaWNzLm1tOgorICAgICAgICAoV0tHcmFwaGljc0NyZWF0ZUltYWdlRnJv
bUJ1bmRsZVdpdGhOYW1lKTogRGl0dG8uCisgICAgICAgIChXS0RyYXdQYXR0ZXJuQml0bWFwKTog
RGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9zcGkvY29jb2EvRHluYW1pY0xpbmtlclNQSS5oOiBEZWZpbmVk
IGFkZGl0aW9uYWwgRFlMRF9JT1NfVkVSU0lPTiBtYWNyb3MuCisgICAgICAgICogcGxhdGZvcm0v
c3BpL2lvcy9Nb2JpbGVHZXN0YWx0U1BJLmg6IERlZmluZWQgYWRkaXRpb25hbCBNb2JpbGVHZXN0
YWx0IHF1ZXJpZXMsIGVudW0gTUdEZXZpY2VDbGFzcywgTUdHZXRTSW50MzJBbnN3ZXIsIGFuZCBN
R0dldEZsb2F0MzJBbnN3ZXIuCisgICAgICAgICogcGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvaW9zL1VJQ29sb3JTUEku
aCwgYW5kIGFkZGVkIFNQSSBkZWNsYXJhdGlvbnMgZm9yIFVJQXBwbGljYXRpb24gYW5kIFVJU2Ny
ZWVuLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbToKKwogMjAxNS0xMC0y
OCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWVk
aWFTdHJlYW1dIFBsYXkgTWVkaWFTdHJlYW0gdGhyb3VnaCBtZWRpYSBlbGVtZW50IGFuZCByZW5k
ZXJlZCB0byBjYW52YXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwppbmRleCA0ZmE1YmFlZjgxOGQ5NjEzNDUzZjA0
N2Y2Y2M0ZTBiMThmZDE1MGVjLi4wMzkwMmUyODZhOTZiZTZiN2U3MTBlMzNjY2E0OTJlMTIzYjhi
MTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTUtMTAtMzEgIEFuZHkg
RXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgaU9TLW9ubHkgV2Vi
S2l0U3lzdGVtSW50ZXJmYWNlIGNhbGxzIHdpdGggU1BJCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3NjMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tOgorICAg
ICAgICAobGlua2VkT25PckFmdGVySU9TNSk6IFVzZWQgZHlsZF9nZXRfcHJvZ3JhbV9zZGtfdmVy
c2lvbigpIGluc3RlYWQgb2YgaW9zRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JBZnRlclZlcnNpb24o
KS4KKyAgICAgICAgKFdlYktpdEdldE1pbmltdW1ab29tRm9udFNpemUpOiBVc2VkIFNldHRpbmdz
OjpkZWZhdWx0TWluaW11bVpvb21Gb250U2l6ZSgpIGluc3RlYWQgb2YgV0tHZXRNaW5pbXVtWm9v
bUZvbnRTaXplKCkuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9T
Lm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50SU9TOjpzY3JlZW5TaXplKTogVXNlZCBzY3Jl
ZW5TaXplKCkgaW5zdGVhZCBvZiBXS0dldFNjcmVlblNpemUoKS4KKwogMjAxNS0xMC0xNCAgWmh1
byBMaSAgPHphY2hsaUBhcHBsZS5jb20+CiAKICAgICAgICAgQXVnbWVudCA8aW5wdXQgdHlwZT1z
ZWFyY2g+4oCZcyByZWNlbnQgc2VhcmNoIGhpc3Rvcnkgd2l0aCB0aGUgdGltZSBlYWNoIGVudHJ5
IHdhcyBhZGRlZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA0ZjljNTVlNGE0MTcyMjVmNjkxODkyYjQw
NjY5NTVmMjcwOWQwNDNhLi5lMWM3YWEwZjY0OTU1N2VkMTUxNzg5MWExYTZmY2EyNDMzMjEwZjAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTUtMTAtMzEgIEFuZHkgRXN0
ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgaU9TLW9ubHkgV2ViS2l0
U3lzdGVtSW50ZXJmYWNlIGNhbGxzIHdpdGggU1BJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFj
ZS5tbToKKyAgICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tOgorICAgICAgICAoK1tXZWJQcmVmZXJl
bmNlcyBpbml0aWFsaXplXSk6IFVzZWQgR2VzdGFsdDo6ZGV2aWNlQ2xhc3MoKSBhbmQgU2V0dGlu
Z3M6OmRlZmF1bHRNaW5pbXVtWm9vbUZvbnRTaXplKCkgaW5zdGVhZCBvZiBXS0dldERldmljZUNs
YXNzKCkgYW5kIFdLR2V0TWluaW11bVpvb21Gb250U2l6ZSgpLgorICAgICAgICAqIFdlYlZpZXcv
V2ViVmlldy5tbToKKyAgICAgICAgKGlzSW50ZXJuYWxJbnN0YWxsKTogVXNlZCBHZXN0YWx0Ojpp
c0FwcGxlSW50ZXJuYWxJbnN0YWxsKCkgaW5zdGVhZCBvZiBNR0dldEJvb2xBbnN3ZXIoKS4KKyAg
ICAgICAgKHNob3VsZEFsbG93UGljdHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2spOiBVc2VkIGR5
bGRfZ2V0X3Byb2dyYW1fc2RrX3ZlcnNpb24oKSBpbnN0ZWFkIG9mIGlvc0V4ZWN1dGFibGVXYXNM
aW5rZWRPbk9yQWZ0ZXJWZXJzaW9uKCkuCisgICAgICAgICgtW1dlYlZpZXcgX3VwZGF0ZVNjcmVl
blNjYWxlRnJvbVdpbmRvd10pOiBVc2VkIHNjcmVlblNjYWxlRmFjdG9yKCkgaW5zdGVhZCBvZiBX
S0dldFNjcmVlblNjYWxlRmFjdG9yKCkuCisKIDIwMTUtMTAtMjggIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQsIG5vdCBXZWJDb3JlLCBzaG91
bGQgZG8gY29udGV4dCBtZW51IGNvbnZlcnNpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzOTEyYjQzN2JkZTRk
Y2NjNzM1NDhmYmM0ZDhmZGNhZDU2NDliMzVhLi5mNWQ5YWM0YjExMzhjMjA1Mjc2ZGIyMDhlNjNi
NTE1NzNhODUxNGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTUtMTAtMzEgIEFu
ZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgaU9TLW9ubHkg
V2ViS2l0U3lzdGVtSW50ZXJmYWNlIGNhbGxzIHdpdGggU1BJCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3NjMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9BY2Nlc3NpYmlsaXR5SU9TLmg6
IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9BY2Nlc3NpYmlsaXR5SU9TLm1tOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6QVhSZW1vdGVUb2tlbik6IFVwc3RyZWFtZWQgdGhlIGltcGxlbWVudGF0
aW9uIG9mIFdLQVhSZW1vdGVUb2tlbigpIGZyb20gV2ViS2l0U3lzdGVtSW50ZXJmYWNlLgorICAg
ICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmg6IFVzZWQgU2V0dGluZ3M6
OmRlZmF1bHRNaW5pbXVtWm9vbUZvbnRTaXplKCkgaW5zdGVhZCBvZiBXS0dldE1pbmltdW1ab29t
Rm9udFNpemUoKS4KKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHA6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgIChzaG91
bGRBbGxvd1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrKTogVXNlZCBkeWxkX2dldF9wcm9n
cmFtX3Nka192ZXJzaW9uKCkgaW5zdGVhZCBvZiBpb3NFeGVjdXRhYmxlV2FzTGlua2VkT25PckFm
dGVyVmVyc2lvbigpLgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Rha2VWaWV3U25hcHNob3RdKTog
VXNlZCBzY3JlZW5TY2FsZUZhY3RvcigpIGluc3RlYWQgb2YgV0tHZXRTY3JlZW5TY2FsZUZhY3Rv
cigpLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlv
bi5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBpbml0XSk6IFVzZWQgR2Vz
dGFsdDo6ZGV2aWNlQ2xhc3MoKSBpbnN0ZWFkIG9mIFdLR2V0RGV2aWNlQ2xhc3MoKS4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW06CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOmNvbmZpZ3VyYXRpb246
XSk6IFVzZWQgc2NyZWVuU2NhbGVGYWN0b3IoKSBpbnN0ZWFkIG9mIFdLR2V0U2NhbGVGYWN0b3JG
b3JTY3JlZW4oKS4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfdXBkYXRlRm9yU2NyZWVuOl0p
OiBEaXR0by4KKyAgICAgICAgKEFYU3RvcmVSZW1vdGVDb25uZWN0aW9uSW5mb3JtYXRpb24pOiBV
cHN0cmVhbWVkIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBXS0FYU3RvcmVSZW1vdGVDb25uZWN0aW9u
SW5mb3JtYXRpb24oKSBmcm9tIFdlYktpdFN5c3RlbUludGVyZmFjZS4KKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBfYWNjZXNzaWJpbGl0eVJlZ2lzdGVyVUlQcm9jZXNzVG9rZW5zXSk6IFVzZWQg
QVhSZW1vdGVUb2tlbigpIGFuZCBBWFN0b3JlUmVtb3RlQ29ubmVjdGlvbkluZm9ybWF0aW9uKCkg
aW5zdGVhZCBvZiBXS0FYUmVtb3RlVG9rZW4oKSBhbmQgV0tBWFN0b3JlUmVtb3RlQ29ubmVjdGlv
bkluZm9ybWF0aW9uKCkuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW06CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2NyZWVuU2l6ZSk6IFVzZWQgc2NyZWVu
U2l6ZSgpIGluc3RlYWQgb2YgV0tHZXRTY3JlZW5TaXplKCkuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6YXZhaWxhYmxlU2NyZWVuU2l6ZSk6IFVzZWQgYXZhaWxhYmxlU2NyZWVuU2l6
ZSgpIGluc3RlYWQgb2YgV0tHZXRBdmFpbGFibGVTY3JlZW5TaXplKCkuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6dGV4dEF1dG9zaXppbmdXaWR0aCk6IFVzZWQgc2NyZWVuU2l6ZSgp
IGluc3RlYWQgb2YgV0tHZXRTY3JlZW5TaXplKCkuCisgICAgICAgICogV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbToKKyAgICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50
ZXJmYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZUFj
Y2Vzc2liaWxpdHkpOiBVc2VkIEFYUmVtb3RlVG9rZW4oKSBpbnN0ZWFkIG9mIFdLQVhSZW1vdGVU
b2tlbigpLgorCiAyMDE1LTEwLTI4ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUu
Y29tPgogCiAgICAgICAgIEZpeCB0aGUgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1MWM2YTIyMjNkNjgzMjNhNjEwNGJl
NDZiM2QxZTBmZThhYmZhYjc5Li4xNGMzOGE5MzQyM2FlMmQyNDVlYTBjNmZkZjlhOTU4MmU2MDcz
NDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xMzU5LDcgKzEzNTksNiBAQAogCQkzMURFQTQ1NTFCMzlGNEQ5MDBGNzcxNzgg
LyogV2ViU3lzdGVtQmFja2Ryb3BMYXllci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxREVBNDUzMUIzOUY0RDkwMEY3NzE3OCAvKiBXZWJTeXN0ZW1C
YWNrZHJvcExheWVyLm1tICovOyB9OwogCQkzMURFQTQ1NjFCMzlGNEQ5MDBGNzcxNzggLyogV2Vi
U3lzdGVtQmFja2Ryb3BMYXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzFERUE0NTQxQjM5RjREOTAwRjc3MTc4IC8qIFdlYlN5c3RlbUJhY2tkcm9w
TGF5ZXIuaCAqLzsgfTsKIAkJMzFERjYzNTcxQUYxODdERDAwNzhGRDkxIC8qIE5TQ29sb3JTUEku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxREY2MzU2
MUFGMTg3REQwMDc4RkQ5MSAvKiBOU0NvbG9yU1BJLmggKi87IH07Ci0JCTMxREY2MzU5MUFGMTk0
RjAwMDc4RkQ5MSAvKiBVSUNvbG9yU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzMURGNjM1ODFBRjE5NEYwMDA3OEZEOTEgLyogVUlDb2xvclNQSS5o
ICovOyB9OwogCQkzMUVBRjk3RTEyMTQzNUE0MDBFN0MxQkYgLyogRGV2aWNlTW90aW9uQ2xpZW50
SU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUVB
Rjk3QzEyMTQzNUE0MDBFN0MxQkYgLyogRGV2aWNlTW90aW9uQ2xpZW50SU9TLmggKi87IH07CiAJ
CTMxRUFGOTdGMTIxNDM1QTQwMEU3QzFCRiAvKiBEZXZpY2VNb3Rpb25DbGllbnRJT1MubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUVBRjk3RDEyMTQz
NUE0MDBFN0MxQkYgLyogRGV2aWNlTW90aW9uQ2xpZW50SU9TLm1tICovOyB9OwogCQkzMUVDMUUy
ODE0RkY2MEVFMDBDOTQ2NjIgLyogSlNOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFFQzFFMjYx
NEZGNjBFRTAwQzk0NjYyIC8qIEpTTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcCAq
LzsgfTsKQEAgLTE2NzgsNyArMTY3Nyw2IEBACiAJCTQ0QTI4QUFGMTJERkI4QkYwMEFFOTIzQiAv
KiBNYXRoTUxOYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDRBMjhBQUUxMkRGQjhCRjAwQUU5MjNCIC8qIE1hdGhNTE5hbWVzLmggKi87IH07CiAJ
CTQ0QzM2M0YwMEZBQTdCQjMwMDk3RjhDQyAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1Mu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QzM2M0VF
MEZBQTdCQjMwMDk3RjhDQyAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NEMzNjNGMTBGQUE3
QkIzMDA5N0Y4Q0MgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRDMzYzRUYwRkFBN0JCMzAwOTdG
OENDIC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5tbSAqLzsgfTsKLQkJNDRDM0NGRTgx
NTU2QkU1RDAwMDEzNjA5IC8qIFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QzNDRkU3MTU1NkJFNUQwMDAx
MzYwOSAvKiBXZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDRDOTkxODIwRjNEMUUwRDAwNTg2NjcwIC8q
IFNjcm9sbGJhclRoZW1lSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDRDOTkxODEwRjNEMUUwRDAwNTg2NjcwIC8qIFNjcm9sbGJhclRoZW1lSU9T
Lm1tICovOyB9OwogCQk0NEM5OTE4NjBGM0QxRUJFMDA1ODY2NzAgLyogU2Nyb2xsYmFyVGhlbWVJ
T1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Qzk5
MTg1MEYzRDFFQkUwMDU4NjY3MCAvKiBTY3JvbGxiYXJUaGVtZUlPUy5oICovOyB9OwogCQk0NEM5
OTE5RjBGM0QyMTBFMDA1ODY2NzAgLyogVGhlbWVJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Qzk5MTlEMEYzRDIxMEUwMDU4NjY3MCAvKiBUaGVt
ZUlPUy5oICovOyB9OwpAQCAtNDA1NSw2ICs0MDUzLDkgQEAKIAkJQTFFMTE1NDYxMzAxNUM0RTAw
NTRBQzhDIC8qIFBvaW50TGlnaHRTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTFFMTE1NDUxMzAxNUM0RTAwNTRBQzhDIC8qIFBvaW50TGln
aHRTb3VyY2UuY3BwICovOyB9OwogCQlBMUUxMTU0ODEzMDE1QzVEMDA1NEFDOEMgLyogU3BvdExp
Z2h0U291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExRTExNTQ3MTMwMTVDNUQwMDU0QUM4QyAvKiBTcG90TGlnaHRTb3VyY2UuY3BwICovOyB9
OwogCQlBMUU1QjMxRjFBQUQxREE0MDA2RUJFRkIgLyogSlNNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExRTVCMzFEMUFBRDFEQTQwMDZFQkVGQiAvKiBKU01vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3NDdXN0b20uY3BwICovOyB9OworCQlBMUVENzc4QzFCRTMyOTQwMDBEQzE3OTEgLyogR2VzdGFs
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUVE
Nzc4QTFCRTMyOTNGMDBEQzE3OTEgLyogR2VzdGFsdC5jcHAgKi87IH07CisJCUExRUQ3NzhEMUJF
MzI5NDAwMERDMTc5MSAvKiBHZXN0YWx0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMUVENzc4QjFCRTMyOTQwMDBEQzE3OTEgLyogR2VzdGFsdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUExRUQ3NzhG
MUJFNDI5MTgwMERDMTc5MSAvKiBVSUtpdFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTFFRDc3OEUxQkU0MjkxODAwREMxNzkxIC8qIFVJS2l0U1BJ
LmggKi87IH07CiAJCUEyQjkyMTczMTZDNUNDNDIwMDQxRENEOSAvKiBJbnRSZWN0RXh0ZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMkI5MjE3MjE2
QzVDQzQyMDA0MURDRDkgLyogSW50UmVjdEV4dGVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUEzMUM0RTREMTZFMDJBQTYwMDJGNzk1NyAvKiBP
RVNUZXh0dXJlSGFsZkZsb2F0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEEzMUM0RTRDMTZFMDJBQTYwMDJGNzk1NyAvKiBPRVNUZXh0dXJlSGFsZkZs
b2F0LmNwcCAqLzsgfTsKIAkJQTMxQzRFNEYxNkUwMkFCNDAwMkY3OTU3IC8qIE9FU1RleHR1cmVI
YWxmRmxvYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEEzMUM0RTRFMTZFMDJBQjQwMDJGNzk1NyAvKiBPRVNUZXh0dXJlSGFsZkZsb2F0LmggKi87IH07
CkBAIC02MDU5LDcgKzYwNjAsNyBAQAogCQlDRTEyNTIzRDFBMTY3NkNEMDA4NjQ0ODAgLyogUXVh
cnR6Q29yZVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0UxMjUyM0MxQTE2NzZDRDAwODY0NDgwIC8qIFF1YXJ0ekNvcmVTUEkuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTEyNTI0MTFBMTZCMUI2
MDA4NjQ0ODAgLyogTWVkaWFQbGF5ZXJTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENFMTI1MjQwMUExNkIxQjYwMDg2NDQ4MCAvKiBNZWRpYVBsYXll
clNQSS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUNFMTI1MjQzMUExNkMwMUEwMDg2NDQ4MCAvKiBDb3JlVUlTUEkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMTI1MjQyMUExNkMwMUEwMDg2NDQ4MCAv
KiBDb3JlVUlTUEkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQlDRTEyNTI0NTFBMTZDMjI1MDA4NjQ0ODAgLyogRHluYW1pY0xpbmtlclNQSS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxMjUyNDQxQTE2
QzIyNTAwODY0NDgwIC8qIER5bmFtaWNMaW5rZXJTUEkuaCAqLzsgfTsKKwkJQ0UxMjUyNDUxQTE2
QzIyNTAwODY0NDgwIC8qIER5bmFtaWNMaW5rZXJTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMTI1MjQ0MUExNkMyMjUwMDg2NDQ4MCAvKiBEeW5h
bWljTGlua2VyU1BJLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQ0UxMjUyNDcxQTE2QzJDMjAwODY0NDgwIC8qIE5TUG9pbnRlckZ1bmN0aW9uc1NQ
SS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxMjUy
NDYxQTE2QzJDMjAwODY0NDgwIC8qIE5TUG9pbnRlckZ1bmN0aW9uc1NQSS5oICovOyB9OwogCQlD
RTEyNTI0OTFBMTZDM0JDMDA4NjQ0ODAgLyogTW9iaWxlR2VzdGFsdFNQSS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxMjUyNDgxQTE2QzNCQzAwODY0
NDgwIC8qIE1vYmlsZUdlc3RhbHRTUEkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlDRTEyNTI0RDFBMUE3N0RFMDA4NjQ0ODAgLyogSU9QTUxpYlNQ
SS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxMjUy
NEMxQTFBNzdERTAwODY0NDgwIC8qIElPUE1MaWJTUEkuaCAqLzsgfTsKQEAgLTg2OTYsNyArODY5
Nyw2IEBACiAJCTMxREVBNDUzMUIzOUY0RDkwMEY3NzE3OCAvKiBXZWJTeXN0ZW1CYWNrZHJvcExh
eWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViU3lzdGVt
QmFja2Ryb3BMYXllci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFERUE0NTQx
QjM5RjREOTAwRjc3MTc4IC8qIFdlYlN5c3RlbUJhY2tkcm9wTGF5ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU3lzdGVtQmFja2Ryb3BMYXllci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzMURGNjM1NjFBRjE4N0REMDA3OEZEOTEgLyogTlNDb2xvclNQ
SS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU0NvbG9yU1BJLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxREY2MzU4MUFGMTk0RjAwMDc4RkQ5MSAvKiBVSUNv
bG9yU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVJQ29sb3JTUEkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFFOEQ4QkExNjBCQzk0QjAwNENFOEY1IC8q
IFJlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMzFFOEQ4QkIxNjBCQzk0QzAwNENFOEY1IC8qIFJlbmRlclNuYXBzaG90dGVk
UGx1Z0luLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclNuYXBzaG90
dGVkUGx1Z0luLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxRUFGOTdDMTIxNDM1
QTQwMEU3QzFCRiAvKiBEZXZpY2VNb3Rpb25DbGllbnRJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRGV2aWNlTW90aW9uQ2xpZW50SU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC05MDM3LDcgKzkwMzcsNiBAQAogCQk0NEEyOEFBRTEyREZCOEJGMDBBRTky
M0IgLyogTWF0aE1MTmFtZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0
aE1MTmFtZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRDMzYzRUUwRkFBN0JC
MzAwOTdGOENDIC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRDMzYzRUYwRkFBN0JCMzAwOTdGOENDIC8qIFJ1bnRp
bWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNDRDM0NGRTcxNTU2QkU1RDAwMDEzNjA5IC8qIFdlYkNvcmVTeXN0ZW1J
bnRlcmZhY2VJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZVN5
c3RlbUludGVyZmFjZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NEM5OTE4
MTBGM0QxRTBEMDA1ODY2NzAgLyogU2Nyb2xsYmFyVGhlbWVJT1MubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTY3JvbGxiYXJUaGVtZUlPUy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRDOTkxODUwRjNEMUVCRTAwNTg2NjcwIC8qIFNjcm9sbGJh
clRoZW1lSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGJhclRo
ZW1lSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0Qzk5MTlEMEYzRDIxMEUw
MDU4NjY3MCAvKiBUaGVtZUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
aGVtZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE1ODYsNiArMTE1ODUs
OSBAQAogCQlBMUUxMTU0NTEzMDE1QzRFMDA1NEFDOEMgLyogUG9pbnRMaWdodFNvdXJjZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2ludExpZ2h0U291cmNlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFFMTE1NDcxMzAxNUM1RDAwNTRBQzhD
IC8qIFNwb3RMaWdodFNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTcG90TGlnaHRTb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
MUU1QjMxRDFBQUQxREE0MDA2RUJFRkIgLyogSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ3Vz
dG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5nc0N1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUExRUQ3NzhBMUJFMzI5M0YwMERDMTc5MSAvKiBHZXN0YWx0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlc3RhbHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBMUVENzc4QjFCRTMyOTQwMDBEQzE3OTEgLyogR2VzdGFsdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBHZXN0YWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUExRUQ3NzhFMUJFNDI5MTgwMERDMTc5MSAvKiBVSUtpdFNQSS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBVSUtpdFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBMjA4RTIyMkE1NkEwQzc1NzVGMkE3MkUgLyogUmVuZGVyTWF0aE1MTWVuY2xvc2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTWF0aE1MTWVuY2xvc2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTJCOTIxNzIxNkM1Q0M0MjAwNDFEQ0Q5
IC8qIEludFJlY3RFeHRlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50
UmVjdEV4dGVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzFDNEU0QzE2RTAy
QUE2MDAyRjc5NTcgLyogT0VTVGV4dHVyZUhhbGZGbG9hdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBPRVNUZXh0dXJlSGFsZkZsb2F0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NDgwLDcgKzE5NDgyLDcgQEAKIAkJCQlDRTEyNTI0ODFBMTZD
M0JDMDA4NjQ0ODAgLyogTW9iaWxlR2VzdGFsdFNQSS5oICovLAogCQkJCTZGQUQ0QTU2MUE5RDBG
QUUwMDlGN0QzQyAvKiBPcGVuR0xFU1NQSS5oICovLAogCQkJCUNFMTI1MjM4MUExNjZGQTAwMDg2
NDQ4MCAvKiBRdWlja0xvb2tTUEkuaCAqLywKLQkJCQkzMURGNjM1ODFBRjE5NEYwMDA3OEZEOTEg
LyogVUlDb2xvclNQSS5oICovLAorCQkJCUExRUQ3NzhFMUJFNDI5MTgwMERDMTc5MSAvKiBVSUtp
dFNQSS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBpb3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwpAQCAtMTk1MDcsNiArMTk1MDksOCBAQAogCQkJCTI2RjQwRDQ5MTQ5MDRBNjMwMENBNjdD
NCAvKiBFdmVudExvb3BJT1MubW0gKi8sCiAJCQkJMjZDMTdBM0MxNDkxRDJENDAwRDEyQkEyIC8q
IEZpbGVTeXN0ZW1JT1MuaCAqLywKIAkJCQkyNkMxN0EzRDE0OTFEMkQ0MDBEMTJCQTIgLyogRmls
ZVN5c3RlbUlPUy5tbSAqLywKKwkJCQlBMUVENzc4QTFCRTMyOTNGMDBEQzE3OTEgLyogR2VzdGFs
dC5jcHAgKi8sCisJCQkJQTFFRDc3OEIxQkUzMjk0MDAwREMxNzkxIC8qIEdlc3RhbHQuaCAqLywK
IAkJCQkyNjU1NDEzNzE0ODk4MTFDMDAwREZDNUQgLyogS2V5RXZlbnRDb2Rlc0lPUy5oICovLAog
CQkJCTI2NTU0MTM4MTQ4OTgxMUMwMDBERkM1RCAvKiBLZXlFdmVudElPUy5tbSAqLywKIAkJCQlF
NEMzQjFGOTBGMEU0MTYxMDA5NjkzRjYgLyogTGVnYWN5VGlsZUNhY2hlLmggKi8sCkBAIC0xOTU0
Nyw3ICsxOTU1MSw2IEBACiAJCQkJMUY3MkJGMDkxODdGRDQyNzAwMDlCQ0IzIC8qIFRpbGVDb250
cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5oICovLAogCQkJCTMxNDAzNzk3MTI0QkVBN0YwMEFGNDBF
NCAvKiBXZWJDb3JlTW90aW9uTWFuYWdlci5oICovLAogCQkJCTMxNDAzNzk4MTI0QkVBN0YwMEFG
NDBFNCAvKiBXZWJDb3JlTW90aW9uTWFuYWdlci5tbSAqLywKLQkJCQk0NEMzQ0ZFNzE1NTZCRTVE
MDAwMTM2MDkgLyogV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5oICovLAogCQkJCUU0NTM5MDM4
MEVBRkQ2MzcwMDM2OTVDOCAvKiBXZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLm1tICovLAogCQkJ
CUZFMEQ4NEU4MTA0ODQzNDgwMDFBMTc5RSAvKiBXZWJFdmVudC5oICovLAogCQkJCUZFMEQ4NEVB
MTA0ODQzNkUwMDFBMTc5RSAvKiBXZWJFdmVudC5tbSAqLywKQEAgLTI1MjkxLDYgKzI1Mjk0LDcg
QEAKIAkJCQk4NTUyNkNEMjBBQjBCN0Q5MDAwMzAyRUEgLyogRE9NVHJlZVdhbGtlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODUwQjQxQzMwQUQ5RTdFNzAwQTZFRDRGIC8qIERPTVRyZWVXYWxrZXJJ
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVDN0Y0OTEwQUFGNzlEQzAwNDAxNEREIC8q
IERPTVVJRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUExRUQ3NzhGMUJFNDI5MTgwMERDMTc5
MSAvKiBVSUtpdFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU5ODlERDAwQUNDOEJCRDAwQTBC
QzUxIC8qIERPTVVJRXZlbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVEMTNEMkEw
Q0VBOTFERjAwRDg5NDY2IC8qIERPTVVJS2l0RXh0ZW5zaW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMkUzN0RGREIxMkRCQUZCODAwQTZCMjMzIC8qIERPTVVSTC5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNzY4NSw2ICsyNzY4OSw3IEBACiAJCQkJQzEwNURBNjQwRjNBQTZCODAwMURENDRGIC8qIFRl
eHRFbmNvZGluZ0RldGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREE0OTBEMDA2QzFE
MDBFRjZGMjYgLyogVGV4dEVuY29kaW5nUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTkz
M0ExNDMwMEI3RDE4ODYwMEE1M0ZGRCAvKiBUZXh0RXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUExRUQ3NzhEMUJFMzI5NDAwMERDMTc5MSAvKiBHZXN0YWx0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNzdCNDFBMDEyRTY3NUE5MDA1NDM0M0QgLyogVGV4dEV2ZW50SW5wdXRUeXBlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGNTVCM0REODEyNTFGMTJEMDAzRUYyNjkgLyogVGV4dEZpZWxkSW5wdXRU
eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREE0NTBEMDA2QzFEMDBFRjZGMjYgLyogVGV4
dEZsYWdzLmggaW4gSGVhZGVycyAqLywKQEAgLTI3NzYzLDcgKzI3NzY4LDYgQEAKIAkJCQlDMzc1
RDdGRTE2NjM5NTE5MDA2MTg0QUIgLyogVHlwZUFoZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
NDZBMkIxQzE3Q0E2NUI5MDAwREJDRDggLyogVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUxQTA5OUU2NDkyMDA1NkU1ODEgLyogVHlwaW5n
Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzFERjYzNTkxQUYxOTRGMDAwNzhGRDkxIC8q
IFVJQ29sb3JTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDMxQjRFMEE0NEVGQzcwMEY5OTJF
MCAvKiBVSUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTAzMUI0RjBBNDRFRkM3MDBGOTky
RTAgLyogVUlFdmVudFdpdGhLZXlTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUE0NzM5RDIx
NzU3QUZFQzAwRTc2NzY3IC8qIFVJUmVxdWVzdEV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI3
ODczLDcgKzI3ODc3LDYgQEAKIAkJCQlFMTgwODEwRjE2RkNFQ0RGMDBCODBEMDcgLyogV2ViQ29y
ZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE1MjU1MTUx
NkZEMjM1MDAwM0Q3QURCIC8qIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVE
ZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNFQjE2OTcwOUY4ODBDMDAwOTFGOEZGIC8q
IFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ0QzNDRkU4MTU1
NkJFNUQwMDAxMzYwOSAvKiBXZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBMTQ4MzJDNzE4N0Y2NkM4MDBEQTYzQTYgLyogV2ViQ29yZVRocmVhZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTE0ODMyQzkxODdGNjc2QjAwREE2M0E2IC8qIFdlYkNvcmVUaHJlYWRJ
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE0ODMyQ0ExODdGNjc4MDAwREE2M0E2IC8q
IFdlYkNvcmVUaHJlYWRNZXNzYWdlLmggaW4gSGVhZGVycyAqLywKQEAgLTI4NjYwLDYgKzI4NjYz
LDcgQEAKIAkJCQk0MDlFQkRCMjE2QjdFRTc0MDBDQkEzRkMgLyogQ1NTRm9udEZhY2VMb2FkRXZl
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgwRTZDRTcwQTE5ODlDQTAwN0ZCOEM1IC8qIENT
U0ZvbnRGYWNlUnVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzY0QjRENzBDQjQyOThBMDA1
RjJCNjIgLyogQ1NTRm9udEZhY2VTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTFFRDc3
OEMxQkUzMjk0MDAwREMxNzkxIC8qIEdlc3RhbHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM2
NEI0RDkwQ0I0Mjk4QTAwNUYyQjYyIC8qIENTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNEE2RTlGQzMxM0MxN0QxRDAwNDZBN0Y4IC8qIENTU0ZvbnRGZWF0dXJlVmFs
dWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM2NEI0REIwQ0I0Mjk4QTAwNUYyQjYyIC8qIENT
U0ZvbnRTZWxlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2NvbmZpZy5oIGIvU291cmNlL1dlYkNvcmUvY29uZmlnLmgKaW5kZXggODg5ODU3ZDdjNjgy
ZDkyMDY3ZmQ0OTIyZjdkYmM0ODcwZTk1MWRiYS4uZTMxZjg4ZmQzNWEzZWQxNzE0N2ZlMDI5NGJj
NzBlNDMyNmE2MTVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29uZmlnLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY29uZmlnLmgKQEAgLTExNiwxMSArMTE2LDYgQEAgdHlwZWRlZiBmbG9h
dCBDR0Zsb2F0OwogI2VuZGlmCiAjZW5kaWYgLyogVVNFKENHKSAqLwogCi0jaWYgUExBVEZPUk0o
SU9TKQotI2RlZmluZSBXRUJDT1JFX05BVklHQVRPUl9QTEFURk9STSB3a0dldFBsYXRmb3JtTmFt
ZUZvck5hdmlnYXRvcigpOwotI2RlZmluZSBXRUJDT1JFX05BVklHQVRPUl9WRU5ET1Igd2tHZXRW
ZW5kb3JOYW1lRm9yTmF2aWdhdG9yKCk7Ci0jZW5kaWYKLQogLy8gRklYTUU6IE1vdmUgdGhpcyB0
byBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaCwgd2hpY2ggaXMgd2hlcmUgd2UgZGVmaW5l
IFVTRV9BVkZPVU5EQVRJT04gb24gdGhlIE1hYy4KIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NzMzNAogI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENHKSAmJiBI
QVZFKEFWQ0YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1
YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKaW5k
ZXggZDM0MWMyMTY3M2UzZDJiM2RmZGNmODdmZTMwNjNhYTQ4YjFiYmI2MC4uZjgzMjNkMzk5YjIz
MGRiNjJhOWJjYzMxYmU2NjkzMjZiMTllNmVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRp
YVF1ZXJ5RXZhbHVhdG9yLmNwcApAQCAtNTcsNyArNTcsNyBAQAogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShJT1MpCi0jaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgorI2luY2x1ZGUg
Ikdlc3RhbHQuaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02MzEsOCArNjMx
LDggQEAgc3RhdGljIGJvb2wgdmlld19tb2RlTWVkaWFGZWF0dXJlRXZhbChDU1NWYWx1ZSogdmFs
dWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2kKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1J1bm5p
bmdPbklQaG9uZU9ySVBvZCgpCiB7CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHN0YXRpYyB3a0Rl
dmljZUNsYXNzIGRldmljZUNsYXNzID0gaW9zRGV2aWNlQ2xhc3MoKTsKLSAgICByZXR1cm4gZGV2
aWNlQ2xhc3MgPT0gd2tEZXZpY2VDbGFzc2lQaG9uZSB8fCBkZXZpY2VDbGFzcyA9PSB3a0Rldmlj
ZUNsYXNzaVBvZDsKKyAgICBzdGF0aWMgTUdEZXZpY2VDbGFzcyBkZXZpY2VDbGFzcyA9IEdlc3Rh
bHQ6OmRldmljZUNsYXNzKCk7CisgICAgcmV0dXJuIGRldmljZUNsYXNzID09IE1HRGV2aWNlQ2xh
c3NpUGhvbmUgfHwgZGV2aWNlQ2xhc3MgPT0gTUdEZXZpY2VDbGFzc2lQb2Q7CiAjZWxzZQogICAg
IHJldHVybiBmYWxzZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKaW5kZXggM2Q4YzJhZDAzNDBhMTUwOWFiMTkxMWEzM2JlYmJmYWQyNGRmNDEwYy4uMGUy
NmViYWM5MTVjMjZkODIyZWFiZDJkOTY2OTVhMDZlMDk2N2FhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xMTAsNiArMTEwLDcgQEAKIAogI2lmIFBMQVRG
T1JNKElPUykKICNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaCIKKyNpbmNs
dWRlICJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oIgogI2VuZGlmCiAKICNpZiBF
TkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQpAQCAtNjQzNCw3ICs2NDM1LDcgQEAgYm9v
bCBIVE1MTWVkaWFFbGVtZW50OjpzaG91bGRPdmVycmlkZUJhY2tncm91bmRQbGF5YmFja1Jlc3Ry
aWN0aW9uKFBsYXRmb3JtTWVkaWEKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlICYgVmlk
ZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpCiAgICAgICAgIHJldHVybiB0cnVlOwog
I2lmIFBMQVRGT1JNKElPUykKLSAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlID09IFZpZGVv
RnVsbHNjcmVlbk1vZGVTdGFuZGFyZCAmJiB3a0lzT3B0aW1pemVkRnVsbHNjcmVlblN1cHBvcnRl
ZCgpICYmIGlzUGxheWluZygpKQorICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGUgPT0gVmlk
ZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkICYmIHN1cHBvcnRzUGljdHVyZUluUGljdHVyZSgpICYm
IGlzUGxheWluZygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKaW5kZXggYzI0
MTY3YzAxNGQxZDczNWQxZDBlYTFjZWMyYTU5MzU1MjdlN2JiOC4uZGQzY2EzNDM1ZmFjODIwZDBk
MTgwOWUyZmQxMjE4YmZiZGQwYjZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT2JqZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0
RWxlbWVudC5jcHAKQEAgLTU1LDggKzU1LDggQEAKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKICNp
ZiBQTEFURk9STShJT1MpCisjaW5jbHVkZSAiRHluYW1pY0xpbmtlclNQSS5oIgogI2luY2x1ZGUg
IlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5oIgotI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1J
bnRlcmZhY2UuaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNTksNyArMTU5
LDcgQEAgc3RhdGljIHZvaWQgbWFwRGF0YVBhcmFtVG9TcmMoVmVjdG9yPFN0cmluZz4qIHBhcmFt
TmFtZXMsIFZlY3RvcjxTdHJpbmc+KiBwYXJhbVYKICNpZiBQTEFURk9STShJT1MpCiBzdGF0aWMg
Ym9vbCBzaG91bGROb3RQZXJmb3JtVVJMQWRqdXN0bWVudCgpCiB7Ci0gICAgc3RhdGljIGJvb2wg
c2hvdWxkTm90UGVyZm9ybVVSTEFkanVzdG1lbnQgPSBhcHBsaWNhdGlvbklzTkFTQUhEKCkgJiYg
IWlvc0V4ZWN1dGFibGVXYXNMaW5rZWRPbk9yQWZ0ZXJWZXJzaW9uKHdrSU9TU3lzdGVtVmVyc2lv
bl81XzApOworICAgIHN0YXRpYyBib29sIHNob3VsZE5vdFBlcmZvcm1VUkxBZGp1c3RtZW50ID0g
YXBwbGljYXRpb25Jc05BU0FIRCgpICYmIGR5bGRfZ2V0X3Byb2dyYW1fc2RrX3ZlcnNpb24oKSA8
IERZTERfSU9TX1ZFUlNJT05fNV8wOwogICAgIHJldHVybiBzaG91bGROb3RQZXJmb3JtVVJMQWRq
dXN0bWVudDsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5j
cHAKaW5kZXggYmQzMDY3NWNiMWFjZWE4YTE1ZTc3OWQ3NjNiYmRlYTY2OTc5M2FmNC4uZTY4MTJk
YjE3YjY0NGJiMDg4MmRhZDMzZTgyNDVjNWMzNzM0YTA3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC00Myw2ICs0MywxMCBAQAogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKKyNpZiBFTkFCTEUoVklE
RU9fUFJFU0VOVEFUSU9OX01PREUpCisjaW5jbHVkZSAiV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CkBAIC0zNjksNyArMzczLDcgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50
Ojp3ZWJraXRTdXBwb3J0c1ByZXNlbnRhdGlvbk1vZGUoY29uc3QgU3RyaW5nJiBtb2RlKSBjb25z
dAogICAgICAgICByZXR1cm4gbWVkaWFTZXNzaW9uKCkuZnVsbHNjcmVlblBlcm1pdHRlZCgqdGhp
cykgJiYgc3VwcG9ydHNGdWxsc2NyZWVuKCk7CiAKICAgICBpZiAobW9kZSA9PSBwcmVzZW50YXRp
b25Nb2RlUGljdHVyZUluUGljdHVyZSgpKQotICAgICAgICByZXR1cm4gd2tJc09wdGltaXplZEZ1
bGxzY3JlZW5TdXBwb3J0ZWQoKSAmJiBtZWRpYVNlc3Npb24oKS5hbGxvd3NQaWN0dXJlSW5QaWN0
dXJlKCp0aGlzKSAmJiBzdXBwb3J0c0Z1bGxzY3JlZW4oKTsKKyAgICAgICAgcmV0dXJuIHN1cHBv
cnRzUGljdHVyZUluUGljdHVyZSgpICYmIG1lZGlhU2Vzc2lvbigpLmFsbG93c1BpY3R1cmVJblBp
Y3R1cmUoKnRoaXMpICYmIHN1cHBvcnRzRnVsbHNjcmVlbigpOwogCiAgICAgaWYgKG1vZGUgPT0g
cHJlc2VudGF0aW9uTW9kZUlubGluZSgpKQogICAgICAgICByZXR1cm4gIW1lZGlhU2Vzc2lvbigp
LnJlcXVpcmVzRnVsbHNjcmVlbkZvclZpZGVvUGxheWJhY2soKnRoaXMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTmF2aWdhdG9yQmFzZS5jcHAKaW5kZXggZWQ5OWNmZjdmMDY4YTM0NDMzMGQ3OGY2MDhiYWQw
Mzk0NTgxOWMxMC4uNGQwYzM5ZjM0ZGVkYWYyN2IyNzI1MThlOTlkZDJlNTY2YmIwNzYyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwCkBAIC0zNiwxMiArMzYsMTIgQEAKICNl
bmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQotI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2UuaCIKKyNpbmNsdWRlICJHZXN0YWx0LmgiCiAjZW5kaWYKIAogI2lmbmRlZiBXRUJDT1JFX05B
VklHQVRPUl9QTEFURk9STQogI2lmIFBMQVRGT1JNKElPUykKLSNkZWZpbmUgV0VCQ09SRV9OQVZJ
R0FUT1JfUExBVEZPUk0gIiIKKyNkZWZpbmUgV0VCQ09SRV9OQVZJR0FUT1JfUExBVEZPUk0gcGxh
dGZvcm1OYW1lRm9yTmF2aWdhdG9yKCkKICNlbGlmIE9TKE1BQ19PU19YKSAmJiAoQ1BVKFBQQykg
fHwgQ1BVKFBQQzY0KSkKICNkZWZpbmUgV0VCQ09SRV9OQVZJR0FUT1JfUExBVEZPUk0gIk1hY1BQ
QyIKICNlbGlmIE9TKE1BQ19PU19YKSAmJiAoQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkpCkBAIC02
OSw5ICs2OSwxNiBAQAogI2RlZmluZSBXRUJDT1JFX05BVklHQVRPUl9WRU5ET1JfU1VCICIiCiAj
ZW5kaWYgLy8gaWZuZGVmIFdFQkNPUkVfTkFWSUdBVE9SX1ZFTkRPUl9TVUIKIAotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKKyNpZiBQTEFURk9STShJT1MpCitzdGF0aWMgQ0ZTdHJpbmdSZWYgcGxh
dGZvcm1OYW1lRm9yTmF2aWdhdG9yKCkKK3sKKyAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgZGV2aWNl
TmFtZSA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRlJldGFpbihHZXN0YWx0OjpkZXZpY2VO
YW1lKCkpKTsKKyAgICByZXR1cm4gZGV2aWNlTmFtZTsKK30KKyNlbmRpZgorCiBOYXZpZ2F0b3JC
YXNlOjp+TmF2aWdhdG9yQmFzZSgpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5kZXggY2Y3
YjA0ZmY3YWE5MDkzY2Q3NDQ0MDcyMWM4NTE0YmM0N2ZhNGQyOS4uM2IwNDc2YTMxNmQ1MWRjZjcz
Y2U1NWQ4YzVhODcwZDUxYmMyMWFmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAtMjc3LDYg
KzI3NywxMCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZvcmNlUGVu
ZGluZ1dlYkdMUG9saWN5KGJvb2wpOwogICAgIGJvb2wgaXNGb3JjZVBlbmRpbmdXZWJHTFBvbGlj
eSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9yY2VQZW5kaW5nV2ViR0xQb2xpY3k7IH0KKyAgICAKKyNp
ZiBQTEFURk9STShJT1MpCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGZsb2F0IGRlZmF1bHRN
aW5pbXVtWm9vbUZvbnRTaXplKCk7CisjZW5kaWYKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBT
ZXR0aW5ncyhQYWdlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0
Q29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJh
dGlvbi5jcHAKaW5kZXggOTI0NzkwZDkzYTZjNDQxNTBjNjBiNmFlZmI0NDE5ZjIzMzgxYTk5ZS4u
NWE4NjhmNGFkOWJlYjkwOGFlNGE0ZDZkZWQ2Y2JhOWE2ZTc4MjhlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmNwcApAQCAtMzIsNyArMzIsNyBAQAog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKLSNpbmNs
dWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4u
aCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yMTMsNyArMjEzLDcgQEAgVmll
d3BvcnRDb25maWd1cmF0aW9uOjpQYXJhbWV0ZXJzIFZpZXdwb3J0Q29uZmlndXJhdGlvbjo6dGV4
dERvY3VtZW50UGFyYW1ldGVycygKICAgICBQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAKICNpZiBQ
TEFURk9STShJT1MpCi0gICAgcGFyYW1ldGVycy53aWR0aCA9IHN0YXRpY19jYXN0PGludD4od2tH
ZXRTY3JlZW5TaXplKCkud2lkdGgpOworICAgIHBhcmFtZXRlcnMud2lkdGggPSBzdGF0aWNfY2Fz
dDxpbnQ+KHNjcmVlblNpemUoKS53aWR0aCgpKTsKICNlbHNlCiAgICAgLy8gRklYTUU6IHRoaXMg
bmVlZHMgdG8gYmUgdW5pZmllZCB3aXRoIFZpZXdwb3J0QXJndW1lbnRzIG9uIGFsbCBwb3J0cy4K
ICAgICBwYXJhbWV0ZXJzLndpZHRoID0gMzIwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9pb3MvVXNlckFnZW50SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvVXNlckFn
ZW50SU9TLm1tCmluZGV4IDY4ZmJkZjJhNzIzNGM4MTM2YmI1Zjk0NzA5OTc5OGIxY2YzYTBkZmEu
LmVhNmEwZDFlZmQyYzhkNmU2ZWY3YjNjZDZmNjUzOTc2Y2I0N2UxMWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvaW9zL1VzZXJBZ2VudElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2lvcy9Vc2VyQWdlbnRJT1MubW0KQEAgLTI2LDE2ICsyNiw0OCBAQAogI2ltcG9ydCAi
Y29uZmlnLmgiCiAjaW1wb3J0ICJVc2VyQWdlbnQuaCIKIAorI2ltcG9ydCAiR2VzdGFsdC5oIgor
I2ltcG9ydCAiTW9iaWxlR2VzdGFsdFNQSS5oIgorI2ltcG9ydCAiU29mdExpbmtpbmcuaCIKICNp
bXBvcnQgIlN5c3RlbVZlcnNpb24uaCIKKyNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0ICJX
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK1NP
RlRfTElOS19GUkFNRVdPUksoVUlLaXQpOworU09GVF9MSU5LX0NMQVNTKFVJS2l0LCBVSUFwcGxp
Y2F0aW9uKTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TdHJpbmcgc3RhbmRhcmRVc2VyQWdl
bnRXaXRoQXBwbGljYXRpb25OYW1lKGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25OYW1lLCBjb25z
dCBTdHJpbmcmIGZ1bGxXZWJLaXRWZXJzaW9uU3RyaW5nKQorc3RhdGljIGlubGluZSBib29sIGlz
Q2xhc3NpYyh2b2lkKQoreworICAgIHJldHVybiBbW2dldFVJQXBwbGljYXRpb25DbGFzcygpIHNo
YXJlZEFwcGxpY2F0aW9uXSBfaXNDbGFzc2ljXTsKK30KKworc3RhdGljIGlubGluZSBOU1N0cmlu
ZyAqb3NOYW1lRm9yVXNlckFnZW50KHZvaWQpCiB7Ci0gICAgaWYgKENGU3RyaW5nUmVmIG92ZXJy
aWRlVXNlckFnZW50ID0gd2tHZXRVc2VyQWdlbnQoKSkKLSAgICAgICAgcmV0dXJuIG92ZXJyaWRl
VXNlckFnZW50OworICAgIGlmIChHZXN0YWx0OjpoYXNJUGFkQ2FwYWJpbGl0eSgpICYmICFpc0Ns
YXNzaWMoKSkKKyAgICAgICAgcmV0dXJuIEAiT1MiOworICAgIHJldHVybiBAImlQaG9uZSBPUyI7
Cit9CiAKK3N0YXRpYyBpbmxpbmUgTlNTdHJpbmcgKmRldmljZU5hbWUodm9pZCkKK3sKKyAgICBp
ZiAoaXNDbGFzc2ljKCkpCisgICAgICAgIHJldHVybiBAImlQaG9uZSI7CisgICAgCisgICAgYXV0
byBkZXZpY2VOYW1lID0gcmV0YWluUHRyKChOU1N0cmluZyAqKUdlc3RhbHQ6OmRldmljZU5hbWUo
KSk7CisjaWYgUExBVEZPUk0oSU9TX1NJTVVMQVRPUikKKyAgICBOU1JhbmdlIHNpbXVsYXRvclN0
cmluZ1JhbmdlID0gW2RldmljZU5hbWUgcmFuZ2VPZlN0cmluZzpAIiBTaW11bGF0b3IiIG9wdGlv
bnM6TlNCYWNrd2FyZHNTZWFyY2hdOworICAgIE5TVUludGVnZXIgbG9jYXRpb24gPSBzaW11bGF0
b3JTdHJpbmdSYW5nZS5sb2NhdGlvbjsKKyAgICBpZiAobG9jYXRpb24gIT0gTlNOb3RGb3VuZCAm
JiBsb2NhdGlvbiA+IDApCisgICAgICAgIHJldHVybiBbZGV2aWNlTmFtZSBzdWJzdHJpbmdUb0lu
ZGV4OmxvY2F0aW9uXTsKKyNlbmRpZgorICAgIHJldHVybiBkZXZpY2VOYW1lLmF1dG9yZWxlYXNl
KCk7Cit9CisKK1N0cmluZyBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoY29u
c3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgZnVsbFdlYktpdFZlcnNp
b25TdHJpbmcpCit7CiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZXJlIGlzIGEgdXNlciBhZ2Vu
dCBvdmVycmlkZSBmb3IgYWxsIFdlYktpdCBjbGllbnRzLgogICAgIENGUHJvcGVydHlMaXN0UmVm
IG92ZXJyaWRlID0gQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZShDRlNUUigiVXNlckFnZW50Iiks
IENGU1RSKCJjb20uYXBwbGUuV2ViRm91bmRhdGlvbiIpKTsKICAgICBpZiAob3ZlcnJpZGUpIHsK
QEAgLTQ1LDEyICs3NywxMCBAQCBTdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRp
b25OYW1lKGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25OYW1lLCBjb25zdAogICAgIH0KIAogICAg
IE5TU3RyaW5nICp3ZWJLaXRWZXJzaW9uID0gdXNlckFnZW50QnVuZGxlVmVyc2lvbkZyb21GdWxs
VmVyc2lvblN0cmluZyhmdWxsV2ViS2l0VmVyc2lvblN0cmluZyk7Ci0gICAgQ0ZTdHJpbmdSZWYg
ZGV2aWNlTmFtZSA9IHdrR2V0RGV2aWNlTmFtZSgpOwotICAgIENGU3RyaW5nUmVmIG9zTmFtZUZv
clVzZXJBZ2VudCA9IHdrR2V0T1NOYW1lRm9yVXNlckFnZW50KCk7CiAgICAgTlNTdHJpbmcgKm9z
TWFya2V0aW5nVmVyc2lvblN0cmluZyA9IHN5c3RlbU1hcmtldGluZ1ZlcnNpb25Gb3JVc2VyQWdl
bnRTdHJpbmcoKTsKICAgICBpZiAoYXBwbGljYXRpb25OYW1lLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiTW96aWxsYS81LjAgKCVAOyBDUFUg
JUAgJUAgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvJUAgKEtIVE1MLCBsaWtlIEdlY2tvKSIs
IGRldmljZU5hbWUsIG9zTmFtZUZvclVzZXJBZ2VudCwgb3NNYXJrZXRpbmdWZXJzaW9uU3RyaW5n
LCB3ZWJLaXRWZXJzaW9uXTsKLSAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCJNb3ppbGxhLzUuMCAoJUA7IENQVSAlQCAlQCBsaWtlIE1hYyBPUyBYKSBBcHBsZVdlYktpdC8l
QCAoS0hUTUwsIGxpa2UgR2Vja28pICVAIiwgZGV2aWNlTmFtZSwgb3NOYW1lRm9yVXNlckFnZW50
LCBvc01hcmtldGluZ1ZlcnNpb25TdHJpbmcsIHdlYktpdFZlcnNpb24sIHN0YXRpY19jYXN0PE5T
U3RyaW5nICo+KGFwcGxpY2F0aW9uTmFtZSldOworICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCJNb3ppbGxhLzUuMCAoJUA7IENQVSAlQCAlQCBsaWtlIE1hYyBPUyBY
KSBBcHBsZVdlYktpdC8lQCAoS0hUTUwsIGxpa2UgR2Vja28pIiwgZGV2aWNlTmFtZSgpLCBvc05h
bWVGb3JVc2VyQWdlbnQoKSwgb3NNYXJrZXRpbmdWZXJzaW9uU3RyaW5nLCB3ZWJLaXRWZXJzaW9u
XTsKKyAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJNb3ppbGxhLzUuMCAo
JUA7IENQVSAlQCAlQCBsaWtlIE1hYyBPUyBYKSBBcHBsZVdlYktpdC8lQCAoS0hUTUwsIGxpa2Ug
R2Vja28pICVAIiwgZGV2aWNlTmFtZSgpLCBvc05hbWVGb3JVc2VyQWdlbnQoKSwgb3NNYXJrZXRp
bmdWZXJzaW9uU3RyaW5nLCB3ZWJLaXRWZXJzaW9uLCBzdGF0aWNfY2FzdDxOU1N0cmluZyAqPihh
cHBsaWNhdGlvbk5hbWUpXTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NldHRpbmdzTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9tYWMvU2V0dGluZ3NNYWMubW0KaW5kZXggYWUwNjEzMmMwZWQ4NTQ2ODE3ZWQ1Mzll
ZGNkZmIwZWYyMTExMTU2NC4uZjBiZDhhYjgyMTAwOTI0NDg4NDFlZjhlN2FiMTQ3YjQyNTQ2MWM2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2V0dGluZ3NNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2V0dGluZ3NNYWMubW0KQEAgLTI2LDYgKzI2LDE1
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKIAorI2lmIFBM
QVRGT1JNKElPUykKKyNpbmNsdWRlICJHZXN0YWx0LmgiCisjaW5jbHVkZSAiU29mdExpbmtpbmcu
aCIKKyNpbmNsdWRlICJVSUtpdFNQSS5oIgorCitTT0ZUX0xJTktfRlJBTUVXT1JLKFVJS2l0KQor
U09GVF9MSU5LX0NMQVNTKFVJS2l0LCBVSUFwcGxpY2F0aW9uKQorI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RhdGljIGlubGluZSBjb25zdCBjaGFyKiBzYW5zU2VyaWZUcmFkaXRp
b25hbEhhbkZvbnRGYW1pbHkoKQpAQCAtMTA3LDYgKzExNiwxMyBAQCB2b2lkIFNldHRpbmdzOjpp
bml0aWFsaXplRGVmYXVsdEZvbnRGYW1pbGllcygpCiAgICAgc2V0U2VyaWZGb250RmFtaWx5KCJU
aW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKICAgICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2
ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7CiB9CisgICAgCitmbG9hdCBTZXR0aW5nczo6ZGVmYXVs
dE1pbmltdW1ab29tRm9udFNpemUoKQoreworICAgIGlmIChHZXN0YWx0OjpoYXNJUGFkQ2FwYWJp
bGl0eSgpICYmICFbW2dldFVJQXBwbGljYXRpb25DbGFzcygpIHNoYXJlZEFwcGxpY2F0aW9uXSBf
aXNDbGFzc2ljXSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIDE1OworfQogI2VuZGlm
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtU2NyZWVuLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVNjcmVlbi5oCmluZGV4IGU0Y2FlMTBmZDliMTk0NzUzMGMxOWJiOWRkMDJlOGMzZWExYTlkY2Mu
LjQ3MzVjOTJlYmVmYmU4ZWVkMDE0Mzg0OTA3NTE4N2EwMzZjOTJiMjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1TY3JlZW4uaApAQCAtNDAsNiArNDAsMTAgQEAgdHlwZWRlZiBz
dHJ1Y3QgX05TUG9pbnQgTlNQb2ludDsKICNlbmRpZgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJ
T1MpCitPQkpDX0NMQVNTIFVJU2NyZWVuOworI2VuZGlmCisKIHR5cGVkZWYgdWludDMyX3QgUGxh
dGZvcm1EaXNwbGF5SUQ7CiAKIHR5cGVkZWYgV1RGOjpWZWN0b3I8Y2hhcj4gQ29sb3JQcm9maWxl
OwpAQCAtNjgsNyArNzIsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShJT1MpCisgICAgY2xhc3MgRmxvYXRTaXplOworCiAgICAgZmxvYXQgc2NyZWVuUFBJ
RmFjdG9yKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRTaXplIHNjcmVlblNpemUoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBGbG9hdFNpemUgYXZhaWxhYmxlU2NyZWVuU2l6ZSgpOworICAgIFdF
QkNPUkVfRVhQT1JUIGZsb2F0IHNjcmVlblNjYWxlRmFjdG9yKFVJU2NyZWVuICogPSBuaWwpOwog
I2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9HZXN0YWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9HZXN0YWx0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNmFjM2ViMmY2NzMzZGM2ZWY1NGJiZjc3NzNkYzUy
MjY5MWM1MTYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L0dlc3RhbHQuY3BwCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiR2VzdGFsdC5oIgorCisjaWYgUExBVEZPUk0oSU9TKQorCisjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01HRGV2aWNl
Q2xhc3MgR2VzdGFsdDo6ZGV2aWNlQ2xhc3MoKQoreworICAgIGludCBkZXZpY2VDbGFzcyA9IE1H
R2V0U0ludDMyQW5zd2VyKGtNR1FEZXZpY2VDbGFzc051bWJlciwgTUdEZXZpY2VDbGFzc0ludmFs
aWQpOworICAgIHN3aXRjaCAoZGV2aWNlQ2xhc3MpIHsKKyAgICBjYXNlIE1HRGV2aWNlQ2xhc3NJ
bnZhbGlkOgorICAgIGNhc2UgTUdEZXZpY2VDbGFzc2lQaG9uZToKKyAgICBjYXNlIE1HRGV2aWNl
Q2xhc3NpUG9kOgorICAgIGNhc2UgTUdEZXZpY2VDbGFzc2lQYWQ6CisgICAgY2FzZSBNR0Rldmlj
ZUNsYXNzQXBwbGVUVjoKKyAgICBjYXNlIE1HRGV2aWNlQ2xhc3NXYXRjaDoKKyAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PE1HRGV2aWNlQ2xhc3M+KGRldmljZUNsYXNzKTsKKyAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIE1HRGV2aWNl
Q2xhc3NJbnZhbGlkOworICAgIH0KK30KKworQ0ZTdHJpbmdSZWYgR2VzdGFsdDo6ZGV2aWNlTmFt
ZSgpCit7CisgICAgYXV0byBkZXZpY2VOYW1lID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRlN0cmlu
Z1JlZj4oTUdDb3B5QW5zd2VyKGtNR1FEZXZpY2VOYW1lLCBudWxscHRyKSkpOworICAgIEFTU0VS
VCghZGV2aWNlTmFtZSB8fCBDRkdldFR5cGVJRChkZXZpY2VOYW1lLmdldCgpKSA9PSBDRlN0cmlu
Z0dldFR5cGVJRCgpKTsKKyAgICByZXR1cm4gZGV2aWNlTmFtZS5hdXRvcmVsZWFzZSgpOworfQor
Citib29sIEdlc3RhbHQ6Omhhc0lQYWRDYXBhYmlsaXR5KCkKK3sKKyAgICByZXR1cm4gTUdHZXRC
b29sQW5zd2VyKGtNR1FpUGFkQ2FwYWJpbGl0eSk7Cit9CisgICAgCitib29sIEdlc3RhbHQ6Omlz
QXBwbGVJbnRlcm5hbEluc3RhbGwoKQoreworICAgIHJldHVybiBNR0dldEJvb2xBbnN3ZXIoa01H
UUFwcGxlSW50ZXJuYWxJbnN0YWxsQ2FwYWJpbGl0eSk7Cit9CisKK2ludCBHZXN0YWx0OjptYWlu
U2NyZWVuUGl0Y2goKQoreworICAgIHJldHVybiBNR0dldFNJbnQzMkFuc3dlcihrTUdRTWFpblNj
cmVlblBpdGNoLCAwKTsKK30KKworZmxvYXQgR2VzdGFsdDo6bWFpblNjcmVlblNjYWxlKCkKK3sK
KyAgICByZXR1cm4gTUdHZXRGbG9hdDMyQW5zd2VyKGtNR1FNYWluU2NyZWVuU2NhbGUsIDApOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvR2VzdGFsdC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL0dlc3RhbHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMzY3ZGUzMWE2YTM2
NWE4ZWU3ZDc2MDJlMTFhZTc5NjQyOTQwZDI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL0dlc3RhbHQuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBHZXN0YWx0X2gKKyNkZWZpbmUgR2VzdGFsdF9oCisKKyNpZiBQTEFURk9STShJ
T1MpCisKKyNpbmNsdWRlICJNb2JpbGVHZXN0YWx0U1BJLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK25hbWVzcGFjZSBHZXN0YWx0IHsKKworV0VCQ09SRV9FWFBPUlQgTUdEZXZpY2VDbGFzcyBk
ZXZpY2VDbGFzcygpOworQ0ZTdHJpbmdSZWYgZGV2aWNlTmFtZSgpOworYm9vbCBoYXNJUGFkQ2Fw
YWJpbGl0eSgpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0FwcGxlSW50ZXJuYWxJbnN0YWxsKCk7
CitpbnQgbWFpblNjcmVlblBpdGNoKCk7CitmbG9hdCBtYWluU2NyZWVuU2NhbGUoKTsKKworfQor
fQorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorCisjZW5kaWYgLy8gR2VzdGFsdF9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5JT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5JT1MubW0KaW5kZXgg
YTIwOGZlOWU2OTYwNDJiYjhkNzNjMTVjNjJmMmY2Zjg1M2U3ODEzZS4uZmNjYzBlYWM2NmQ4NDNh
MTRmNjJiY2I4NWMwYTVjZDQ5ZDkwMzQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXRmb3JtU2NyZWVuSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QbGF0Zm9ybVNjcmVlbklPUy5tbQpAQCAtMjcsMTYgKzI3LDIwIEBACiAjaW1wb3J0
ICJQbGF0Zm9ybVNjcmVlbi5oIgogCiAjaW1wb3J0ICJGbG9hdFJlY3QuaCIKKyNpbXBvcnQgIkZs
b2F0U2l6ZS5oIgogI2ltcG9ydCAiRnJhbWVWaWV3LmgiCisjaW1wb3J0ICJHZXN0YWx0LmgiCiAj
aW1wb3J0ICJIb3N0V2luZG93LmgiCiAjaW1wb3J0ICJJbnRSZWN0LmgiCi0jaW1wb3J0ICJNb2Jp
bGVHZXN0YWx0U1BJLmgiCiAjaW1wb3J0ICJTb2Z0TGlua2luZy5oIgorI2ltcG9ydCAiVUlLaXRT
UEkuaCIKICNpbXBvcnQgIldBS1dpbmRvdy5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVy
ZmFjZS5oIgogI2ltcG9ydCAiV2lkZ2V0LmgiCiAKIFNPRlRfTElOS19GUkFNRVdPUksoVUlLaXQp
CitTT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJQXBwbGljYXRpb24pCitTT0ZUX0xJTktfQ0xBU1Mo
VUlLaXQsIFVJU2NyZWVuKQogU09GVF9MSU5LKFVJS2l0LCBVSUFjY2Vzc2liaWxpdHlJc0dyYXlz
Y2FsZUVuYWJsZWQsIGJvb2wsICh2b2lkKSwgKCkpCiBTT0ZUX0xJTksoVUlLaXQsIFVJQWNjZXNz
aWJpbGl0eUlzSW52ZXJ0Q29sb3JzRW5hYmxlZCwgYm9vbCwgKHZvaWQpLCAoKSkKIApAQCAtOTgs
MjUgKzEwMiwxNCBAQCBGbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxlUmVjdChXaWRnZXQqIHdpZGdl
dCkKICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCB3
aWRnZXQtPnJvb3QoKS0+aG9zdFdpbmRvdygpLT5hdmFpbGFibGVTY3JlZW5TaXplKCkpKTsKIH0K
IAotc3RhdGljIGZsb2F0IG1vYmlsZUdlc3RhbHRGbG9hdFZhbHVlKENGU3RyaW5nUmVmIHF1ZXN0
aW9uKQotewotICAgIGZsb2F0IHJlc3VsdCA9IDA7Ci0gICAgaWYgKENGVHlwZVJlZiB2YWx1ZSA9
IE1HQ29weUFuc3dlcihxdWVzdGlvbiwgMCkpIHsKLSAgICAgICAgaWYgKENGR2V0VHlwZUlEKHZh
bHVlKSA9PSBDRk51bWJlckdldFR5cGVJRCgpKQotICAgICAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1
ZShzdGF0aWNfY2FzdDxDRk51bWJlclJlZj4odmFsdWUpLCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZy
ZXN1bHQpOwotICAgICAgICBDRlJlbGVhc2UodmFsdWUpOwotICAgIH0KLSAgICByZXR1cm4gcmVz
dWx0OwotfQotCiBmbG9hdCBzY3JlZW5QUElGYWN0b3IoKQogewogICAgIHN0YXRpYyBmbG9hdCBw
cGlGYWN0b3I7CiAKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKICAgICBk
aXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIGZsb2F0IHBpdGNoID0gbW9iaWxl
R2VzdGFsdEZsb2F0VmFsdWUoa01HUU1haW5TY3JlZW5QaXRjaCk7Ci0gICAgICAgIGZsb2F0IHNj
YWxlID0gbW9iaWxlR2VzdGFsdEZsb2F0VmFsdWUoa01HUU1haW5TY3JlZW5TY2FsZSk7CisgICAg
ICAgIGZsb2F0IHBpdGNoID0gR2VzdGFsdDo6bWFpblNjcmVlblBpdGNoKCk7CisgICAgICAgIGZs
b2F0IHNjYWxlID0gR2VzdGFsdDo6bWFpblNjcmVlblNjYWxlKCk7CiAKICAgICAgICAgc3RhdGlj
IGNvbnN0IGZsb2F0IG9yaWdpbmFsSVBob25lUFBJID0gMTYzOwogICAgICAgICBmbG9hdCBtYWlu
U2NyZWVuUFBJID0gKHBpdGNoICYmIHNjYWxlKSA/IHBpdGNoIC8gc2NhbGUgOiBvcmlnaW5hbElQ
aG9uZVBQSTsKQEAgLTEyNiw0ICsxMTksMzYgQEAgZmxvYXQgc2NyZWVuUFBJRmFjdG9yKCkKICAg
ICByZXR1cm4gcHBpRmFjdG9yOwogfQogCitGbG9hdFNpemUgc2NyZWVuU2l6ZSgpCit7CisgICAg
aWYgKFdlYkNvcmU6Okdlc3RhbHQ6Omhhc0lQYWRDYXBhYmlsaXR5KCkgJiYgW1tnZXRVSUFwcGxp
Y2F0aW9uQ2xhc3MoKSBzaGFyZWRBcHBsaWNhdGlvbl0gX2lzQ2xhc3NpY10pCisgICAgICAgIHJl
dHVybiBGbG9hdFNpemUoQ0dTaXplTWFrZSgzMjAsIDQ4MCkpOworICAgIHJldHVybiBGbG9hdFNp
emUoW1tnZXRVSVNjcmVlbkNsYXNzKCkgbWFpblNjcmVlbl0gX3JlZmVyZW5jZUJvdW5kc10uc2l6
ZSk7Cit9CisKK0Zsb2F0U2l6ZSBhdmFpbGFibGVTY3JlZW5TaXplKCkKK3sKKyAgICBpZiAoV2Vi
Q29yZTo6R2VzdGFsdDo6aGFzSVBhZENhcGFiaWxpdHkoKSAmJiBbW2dldFVJQXBwbGljYXRpb25D
bGFzcygpIHNoYXJlZEFwcGxpY2F0aW9uXSBfaXNDbGFzc2ljXSkKKyAgICAgICAgcmV0dXJuIEZs
b2F0U2l6ZShDR1NpemVNYWtlKDMyMCwgNDgwKSk7CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
cHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNs
YXJhdGlvbnMiCisgICAgcmV0dXJuIEZsb2F0U2l6ZShbZ2V0VUlTY3JlZW5DbGFzcygpIG1haW5T
Y3JlZW5dLmFwcGxpY2F0aW9uRnJhbWUuc2l6ZSk7CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
cG9wCit9CisKK2Zsb2F0IHNjcmVlblNjYWxlRmFjdG9yKFVJU2NyZWVuICpzY3JlZW4pCit7Cisg
ICAgaWYgKCFzY3JlZW4pCisgICAgICAgIHNjcmVlbiA9IFtnZXRVSVNjcmVlbkNsYXNzKCkgbWFp
blNjcmVlbl07CisKKyAgICBDR0Zsb2F0IHNjYWxlID0gc2NyZWVuLnNjYWxlOworCisgICAgLy8g
V2UgY2FuIHJlbW92ZSB0aGlzIGNsYW1waW5nIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzE2Mzk1NDc1
PiBpcyBmaXhlZC4KKyAgICBjb25zdCBDR0Zsb2F0IG1heGltdW1DbGFzc2ljU2NyZWVuU2NhbGVG
YWN0b3IgPSAyOworICAgIGlmIChbW2dldFVJQXBwbGljYXRpb25DbGFzcygpIHNoYXJlZEFwcGxp
Y2F0aW9uXSBfaXNDbGFzc2ljXSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWluKHNjYWxlLCBtYXhp
bXVtQ2xhc3NpY1NjcmVlblNjYWxlRmFjdG9yKTsKKworICAgIHJldHVybiBzY2FsZTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDk4ZjAxMWFkYjU5YjI1MWQ4NzU0NDQyM2U1OGI3ZTQxZjI5OWIwMDguLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MuaAorKysgL2Rldi9udWxsCkBA
IC0xLDc5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwot
Ci0jaWZuZGVmIFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1NfaAotI2RlZmluZSBXZWJDb3JlU3lz
dGVtSW50ZXJmYWNlSU9TX2gKLQotI2luY2x1ZGUgPEF2YWlsYWJpbGl0eS5oPgotCi10eXBlZGVm
IGVudW0gewotICAgIHdrSU9TU3lzdGVtVmVyc2lvbl8zXzAgPSBfX0lQSE9ORV8zXzAsCi0gICAg
d2tJT1NTeXN0ZW1WZXJzaW9uXzRfMiA9IF9fSVBIT05FXzRfMiwKLSAgICB3a0lPU1N5c3RlbVZl
cnNpb25fNV8wID0gX19JUEhPTkVfNV8wLAotICAgIHdrSU9TU3lzdGVtVmVyc2lvbl82XzAgPSBf
X0lQSE9ORV82XzAsCi0gICAgd2tJT1NTeXN0ZW1WZXJzaW9uXzlfMCA9IF9fSVBIT05FXzlfMCwK
LX0gd2tJT1NTeXN0ZW1WZXJzaW9uOwotCi1ib29sIGlvc0V4ZWN1dGFibGVXYXNMaW5rZWRPbk9y
QWZ0ZXJWZXJzaW9uKHdrSU9TU3lzdGVtVmVyc2lvbik7Ci0KLWV4dGVybiBib29sICgqd2tFeGVj
dXRhYmxlV2FzTGlua2VkT25PckFmdGVySU9TVmVyc2lvbikoaW50KTsKLQotZXh0ZXJuIGJvb2wg
KCp3a0lzR0IxODAzMENvbXBsaWFuY2VSZXF1aXJlZCkodm9pZCk7Ci0KLWlubGluZSBib29sIGlv
c0V4ZWN1dGFibGVXYXNMaW5rZWRPbk9yQWZ0ZXJWZXJzaW9uKHdrSU9TU3lzdGVtVmVyc2lvbiB2
ZXJzaW9uKQotewotICAgIHJldHVybiB3a0V4ZWN1dGFibGVXYXNMaW5rZWRPbk9yQWZ0ZXJJT1NW
ZXJzaW9uKHZlcnNpb24pOwotfQotCi10eXBlZGVmIGVudW0gewotICAgIHdrRGV2aWNlQ2xhc3NJ
bnZhbGlkID0gLTEsCi0gICAgd2tEZXZpY2VDbGFzc2lQYWQsCi0gICAgd2tEZXZpY2VDbGFzc2lQ
aG9uZSwKLSAgICB3a0RldmljZUNsYXNzaVBvZCwKLX0gd2tEZXZpY2VDbGFzczsKLWV4dGVybiBp
bnQgKCp3a0dldERldmljZUNsYXNzKSh2b2lkKTsKLWlubGluZSB3a0RldmljZUNsYXNzIGlvc0Rl
dmljZUNsYXNzKHZvaWQpCi17Ci0gICAgaW50IGRldmljZUNsYXNzID0gd2tHZXREZXZpY2VDbGFz
cygpOwotICAgIHN3aXRjaCAoZGV2aWNlQ2xhc3MpIHsKLSAgICBjYXNlIHdrRGV2aWNlQ2xhc3NJ
bnZhbGlkOgotICAgIGNhc2Ugd2tEZXZpY2VDbGFzc2lQYWQ6Ci0gICAgY2FzZSB3a0RldmljZUNs
YXNzaVBob25lOgotICAgIGNhc2Ugd2tEZXZpY2VDbGFzc2lQb2Q6Ci0gICAgICAgIHJldHVybiAo
d2tEZXZpY2VDbGFzcylkZXZpY2VDbGFzczsKLSAgICB9Ci0gICAgYXNzZXJ0KGZhbHNlKTsKLSAg
ICByZXR1cm4gd2tEZXZpY2VDbGFzc0ludmFsaWQ7Ci19Ci0KLWV4dGVybiBDRlN0cmluZ1JlZiAo
KndrR2V0VXNlckFnZW50KSh2b2lkKTsKLWV4dGVybiBDRlN0cmluZ1JlZiAoKndrR2V0RGV2aWNl
TmFtZSkodm9pZCk7Ci1leHRlcm4gQ0ZTdHJpbmdSZWYgKCp3a0dldE9TTmFtZUZvclVzZXJBZ2Vu
dCkodm9pZCk7Ci1leHRlcm4gQ0ZTdHJpbmdSZWYgKCp3a0dldFBsYXRmb3JtTmFtZUZvck5hdmln
YXRvcikodm9pZCk7Ci1leHRlcm4gQ0ZTdHJpbmdSZWYgKCp3a0dldFZlbmRvck5hbWVGb3JOYXZp
Z2F0b3IpKHZvaWQpOwotCi1leHRlcm4gYm9vbCAoKndrSXNPcHRpbWl6ZWRGdWxsc2NyZWVuU3Vw
cG9ydGVkKSh2b2lkKTsKLQotI2VuZGlmIC8vIFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1NfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRl
cmZhY2VJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUlu
dGVyZmFjZUlPUy5tbQppbmRleCBjNmU0YzE2OTczZmM3NmZlZDUzMzVjNWI4YzkzZWJhYmVjZjNk
ZDhkLi40ZTMwMzY2ZDRlYjdmYWIxODhkZTRjYWU5MGY5ZDU1MTFmOTA2ZGFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFj
ZUlPUy5tbQpAQCAtNDYsMTMgKzQ2LDcgQEAgV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0Q09O
TkVDVFByb3h5Rm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHAKIFdFQkNP
UkVfRVhQT1JUIHZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0p
KENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJveHlBdXRob3JpemF0aW9uU3RyaW5nKTsK
IFdFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a1NldENvb2tpZVN0b3JhZ2VQcml2YXRlQnJvd3NpbmdF
bmFibGVkKShCT09MKTsKIFdFQkNPUkVfRVhQT1JUIENGSFRUUE1lc3NhZ2VSZWYgKCp3a0NvcHlD
T05ORUNUUHJveHlSZXNwb25zZSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlVSTFJlZiByZXNwb25zZVVS
TCwgQ0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpOwotV0VCQ09S
RV9FWFBPUlQgYm9vbCAoKndrRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JBZnRlcklPU1ZlcnNpb24p
KGludCk7Ci1XRUJDT1JFX0VYUE9SVCBpbnQgKCp3a0dldERldmljZUNsYXNzKSh2b2lkKTsKLVdF
QkNPUkVfRVhQT1JUIENHU2l6ZSAoKndrR2V0U2NyZWVuU2l6ZSkodm9pZCk7Ci1XRUJDT1JFX0VY
UE9SVCBDR1NpemUgKCp3a0dldEF2YWlsYWJsZVNjcmVlblNpemUpKHZvaWQpOwogV0VCQ09SRV9F
WFBPUlQgdm9pZCAoKndrU2V0TGF5ZXJDb250ZW50c1NjYWxlKShDQUxheWVyICopOwotV0VCQ09S
RV9FWFBPUlQgZmxvYXQgKCp3a0dldFNjcmVlblNjYWxlRmFjdG9yKSh2b2lkKTsKLVdFQkNPUkVf
RVhQT1JUIGJvb2wgKCp3a0lzR0IxODAzMENvbXBsaWFuY2VSZXF1aXJlZCkodm9pZCk7CiBXRUJD
T1JFX0VYUE9SVCB2b2lkICgqd2tDRlVSTFJlcXVlc3RBbGxvd0FsbFBvc3RDYWNoaW5nKShDRlVS
TFJlcXVlc3RSZWYpOwogV0VCQ09SRV9FWFBPUlQgQ0ZBcnJheVJlZiAoKndrQ29weU5TVVJMUmVz
cG9uc2VDZXJ0aWZpY2F0ZUNoYWluKShOU1VSTFJlc3BvbnNlKik7CiBXRUJDT1JFX0VYUE9SVCBD
RlN0cmluZ0VuY29kaW5nICgqd2tHZXRXZWJEZWZhdWx0Q0ZTdHJpbmdFbmNvZGluZykodm9pZCk7
CkBAIC0xMDQsMTQgKzk4LDYgQEAgV0VCQ09SRV9FWFBPUlQgYm9vbCAoKndrSXNQdWJsaWNTdWZm
aXgpKE5TU3RyaW5nICpob3N0KTsKIFdFQkNPUkVfRVhQT1JUIENGU3RyaW5nUmVmICgqd2tDYWNo
ZVBhcnRpdGlvbktleSkodm9pZCk7CiAjZW5kaWYKIAotV0VCQ09SRV9FWFBPUlQgQ0ZTdHJpbmdS
ZWYgKCp3a0dldFVzZXJBZ2VudCkodm9pZCk7Ci1XRUJDT1JFX0VYUE9SVCBDRlN0cmluZ1JlZiAo
KndrR2V0RGV2aWNlTmFtZSkodm9pZCk7Ci1XRUJDT1JFX0VYUE9SVCBDRlN0cmluZ1JlZiAoKndr
R2V0T1NOYW1lRm9yVXNlckFnZW50KSh2b2lkKTsKLVdFQkNPUkVfRVhQT1JUIENGU3RyaW5nUmVm
ICgqd2tHZXRQbGF0Zm9ybU5hbWVGb3JOYXZpZ2F0b3IpKHZvaWQpOwotV0VCQ09SRV9FWFBPUlQg
Q0ZTdHJpbmdSZWYgKCp3a0dldFZlbmRvck5hbWVGb3JOYXZpZ2F0b3IpKHZvaWQpOwotCi1XRUJD
T1JFX0VYUE9SVCBib29sICgqd2tJc09wdGltaXplZEZ1bGxzY3JlZW5TdXBwb3J0ZWQpKHZvaWQp
OwotCiBXRUJDT1JFX0VYUE9SVCBpbnQgKCp3a0V4ZXJuYWxEZXZpY2VUeXBlRm9yUGxheWVyKShB
VlBsYXllciAqKTsKIFdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICooKndrRXhlcm5hbERldmljZURp
c3BsYXlOYW1lRm9yUGxheWVyKShBVlBsYXllciAqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQuaAppbmRleCA4ZDJkOGM4MDM4YTUxMmRiZjdlNGFlNWY4MTYxMjM5OTBhNTMyZTAyLi5kNTYx
MmVjM2I5OWI2MTFjMTM3ZmZkYzAwNjBiMDM4ZDBmMTcyNThlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQuaApAQCAtMTU4LDYgKzE1OCw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGRvRW50
ZXJGdWxsc2NyZWVuKCk7CiB9OwogCitib29sIHN1cHBvcnRzUGljdHVyZUluUGljdHVyZSgpOwor
CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCmluZGV4IDgyNmFmMTNh
NjUzMTgxYjA3MTI5YjlmYWNiODkyMmVlMzQyZjNkMmIuLjkzNTU4ZTA1YWMxYmNjOWI1Y2U3ODA5
YjAyMjE3MjI5YTkzMjk1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KQEAgLTI2
LDcgKzI2LDkgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAKLSNpZiBQTEFURk9STShJT1MpICYm
IEhBVkUoQVZLSVQpCisjaWYgUExBVEZPUk0oSU9TKQorCisjaWYgSEFWRShBVktJVCkKIAogI2lt
cG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaCIKIApAQCAtNTcsNiArNTks
NyBAQCBTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVkxheWVyVmlkZW9HcmF2aXR5
UmVzaXplQXNwZWN0LCBOU1N0cmluZyAqKQogU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlv
biwgQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGwsIE5TU3RyaW5nICopCiAKIFNP
RlRfTElOS19GUkFNRVdPUksoQVZLaXQpCitTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFWUGljdHVy
ZUluUGljdHVyZUNvbnRyb2xsZXIpCiBTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFWUGxheWVyQ29u
dHJvbGxlcikKIFNPRlRfTElOS19DTEFTUyhBVktpdCwgQVZQbGF5ZXJWaWV3Q29udHJvbGxlcikK
IFNPRlRfTElOS19DTEFTUyhBVktpdCwgQVZWYWx1ZVRpbWluZykKQEAgLTEzMDIsNyArMTMwNSw3
IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnByZXBhcmVkVG9SZXR1
cm5Ub0lubGluZShib29sIHZpc2libGUsIGNvCiAKIGJvb2wgV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6Om1heUF1dG9tYXRpY2FsbHlTaG93VmlkZW9QaWN0dXJlSW5QaWN0dXJlKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gW21fcGxheWVyQ29udHJvbGxlciBpc1BsYXlpbmddICYmIG1f
bW9kZSA9PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFy
ZCAmJiB3a0lzT3B0aW1pemVkRnVsbHNjcmVlblN1cHBvcnRlZCgpOworICAgIHJldHVybiBbbV9w
bGF5ZXJDb250cm9sbGVyIGlzUGxheWluZ10gJiYgbV9tb2RlID09IEhUTUxNZWRpYUVsZW1lbnRF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkICYmIHN1cHBvcnRzUGljdHVyZUluUGlj
dHVyZSgpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpmdWxs
c2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBjYWxsYmFj
aykKQEAgLTE0MzgsNCArMTQ0MSwxNSBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0OjpjbGVhck1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bAogICAgICAg
ICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5mdWxsc2NyZWVuTW9kZUNoYW5nZWQobV9tb2RlKTsK
IH0KIAorI2VuZGlmIC8vIEhBVkUoQVZLSVQpCisKK2Jvb2wgV2ViQ29yZTo6c3VwcG9ydHNQaWN0
dXJlSW5QaWN0dXJlKCkKK3sKKyNpZiBIQVZFKEFWS0lUKSAmJiBUQVJHRVRfT1NfSU9TCisgICAg
cmV0dXJuIFtnZXRBVlBpY3R1cmVJblBpY3R1cmVDb250cm9sbGVyQ2xhc3MoKSBpc1BpY3R1cmVJ
blBpY3R1cmVTdXBwb3J0ZWRdOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKK30K
KworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L3dhay9XQUtXaW5kb3cubW0KaW5kZXggOWQ4M2M1ZDBjNmI2MWIxZDQzNmIzYmY2Y2I1ZGM3MjAx
ZDg2Mzg1ZC4uOTg5Y2Q3N2ZkYWMyNGViZTZjNzQwNzM5MmY5MjBlMjYzODFmOTBiOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtXaW5kb3cubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtXaW5kb3cubW0KQEAgLTI5LDYgKzI5
LDcgQEAKICNpZiBQTEFURk9STShJT1MpCiAKICNpbXBvcnQgIkxlZ2FjeVRpbGVDYWNoZS5oIgor
I2ltcG9ydCAiUGxhdGZvcm1TY3JlZW4uaCIKICNpbXBvcnQgIldBS1ZpZXdJbnRlcm5hbC5oIgog
I2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCAiV2ViQ29yZVRocmVh
ZFJ1bi5oIgpAQCAtNjcsNyArNjgsNyBAQCAtIChpZClpbml0V2l0aExheWVyOihDQUxheWVyICop
bGF5ZXIKICAgICBfaG9zdExheWVyID0gW2xheWVyIHJldGFpbl07CiAKICAgICBfZnJhbWUgPSBb
X2hvc3RMYXllciBmcmFtZV07Ci0gICAgX3NjcmVlblNjYWxlID0gd2tHZXRTY3JlZW5TY2FsZUZh
Y3RvcigpOworICAgIF9zY3JlZW5TY2FsZSA9IHNjcmVlblNjYWxlRmFjdG9yKCk7CiAgICAgCiAg
ICAgX3RpbGVDYWNoZSA9IG5ldyBMZWdhY3lUaWxlQ2FjaGUoc2VsZik7CiAKQEAgLTg2LDcgKzg3
LDcgQEAgLSAoaWQpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lCiAgICAgICAgIHJldHVybiBu
aWw7CiAKICAgICBfZnJhbWUgPSBmcmFtZTsKLSAgICBfc2NyZWVuU2NhbGUgPSB3a0dldFNjcmVl
blNjYWxlRmFjdG9yKCk7CisgICAgX3NjcmVlblNjYWxlID0gc2NyZWVuU2NhbGVGYWN0b3IoKTsK
IAogICAgIF9leHBvc2VkU2Nyb2xsVmlld1JlY3QgPSBDR1JlY3ROdWxsOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dLR3JhcGhpY3MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dLR3JhcGhpY3MubW0KaW5kZXggOTljNDE2MTk1YzJi
YTQ1ODU4MDQ5MGM1NTBlMmU5NWI1MWYwNWQ2Zi4uMmRlNDNkZjNmMmY4NmZiNWEwZDU2YmJlY2Uy
NmVjZTg0ZDJkNzk0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dh
ay9XS0dyYXBoaWNzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0tH
cmFwaGljcy5tbQpAQCAtMzAsNyArMzAsNyBAQAogCiAjaW1wb3J0ICJDb3JlR3JhcGhpY3NTUEku
aCIKICNpbXBvcnQgIkZvbnRDYXNjYWRlLmgiCi0jaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJm
YWNlLmgiCisjaW1wb3J0ICJQbGF0Zm9ybVNjcmVlbi5oIgogI2ltcG9ydCAiV2ViQ29yZVRocmVh
ZC5oIgogI2ltcG9ydCA8SW1hZ2VJTy9JbWFnZUlPLmg+CiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0
cmFzLmg+CkBAIC0xMTMsOSArMTEzLDkgQEAgQ0dJbWFnZVJlZiBXS0dyYXBoaWNzQ3JlYXRlSW1h
Z2VGcm9tQnVuZGxlV2l0aE5hbWUoY29uc3QgY2hhciAqaW1hZ2VfZmlsZSkKIAogICAgIENHSW1h
Z2VSZWYgaW1hZ2UgPSBudWxscHRyOwogICAgIE5TRGF0YSAqaW1hZ2VEYXRhID0gbnVsbHB0cjsK
LSAgICBmb3IgKHVuc2lnbmVkIHNjYWxlRmFjdG9yID0gd2tHZXRTY3JlZW5TY2FsZUZhY3Rvcigp
OyBzY2FsZUZhY3RvciA+IDA7IC0tc2NhbGVGYWN0b3IpIHsKKyAgICBmb3IgKHVuc2lnbmVkIHNj
YWxlRmFjdG9yID0gc2NyZWVuU2NhbGVGYWN0b3IoKTsgc2NhbGVGYWN0b3IgPiAwOyAtLXNjYWxl
RmFjdG9yKSB7CiAgICAgICAgIGltYWdlRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09m
RmlsZTppbWFnZVJlc291cmNlUGF0aChpbWFnZV9maWxlLCBzY2FsZUZhY3RvcildOwotICAgICAg
ICBBU1NFUlQoc2NhbGVGYWN0b3IgIT0gd2tHZXRTY3JlZW5TY2FsZUZhY3RvcigpIHx8IGltYWdl
RGF0YSk7CisgICAgICAgIEFTU0VSVChzY2FsZUZhY3RvciAhPSBzY3JlZW5TY2FsZUZhY3Rvcigp
IHx8IGltYWdlRGF0YSk7CiAgICAgICAgIGlmIChpbWFnZURhdGEpCiAgICAgICAgICAgICBicmVh
azsKICAgICB9CkBAIC0xMzEsNyArMTMxLDcgQEAgQ0dJbWFnZVJlZiBXS0dyYXBoaWNzQ3JlYXRl
SW1hZ2VGcm9tQnVuZGxlV2l0aE5hbWUoY29uc3QgY2hhciAqaW1hZ2VfZmlsZSkKIHN0YXRpYyB2
b2lkIFdLRHJhd1BhdHRlcm5CaXRtYXAodm9pZCAqaW5mbywgQ0dDb250ZXh0UmVmIGMpIAogewog
ICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSAoQ0dJbWFnZVJlZilpbmZvOwotICAgIENHRmxvYXQgc2Nh
bGUgPSB3a0dldFNjcmVlblNjYWxlRmFjdG9yKCk7CisgICAgQ0dGbG9hdCBzY2FsZSA9IHNjcmVl
blNjYWxlRmFjdG9yKCk7CiAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGMsIENHUmVjdE1ha2UoMCwg
MCwgQ0dJbWFnZUdldFdpZHRoKGltYWdlKSAvIHNjYWxlLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdl
KSAvIHNjYWxlKSwgaW1hZ2UpOyAgICAKIH0KIApAQCAtMTUwLDcgKzE1MCw3IEBAIENHUGF0dGVy
blJlZiBXS0NyZWF0ZVBhdHRlcm5Gcm9tQ0dJbWFnZShDR0ltYWdlUmVmIGltYWdlUmVmKQogICAg
IC8vIHJldGFpbiBpbWFnZSBzaW5jZSBpdCdzIGZyZWVkIGJ5IG91ciBjYWxsYmFjawogICAgIENH
SW1hZ2VSZXRhaW4oaW1hZ2VSZWYpOwogCi0gICAgQ0dGbG9hdCBzY2FsZSA9IHdrR2V0U2NyZWVu
U2NhbGVGYWN0b3IoKTsKKyAgICBDR0Zsb2F0IHNjYWxlID0gc2NyZWVuU2NhbGVGYWN0b3IoKTsK
ICAgICByZXR1cm4gQ0dQYXR0ZXJuQ3JlYXRlKCh2b2lkKilpbWFnZVJlZiwgQ0dSZWN0TWFrZSgw
LCAwLCBDR0ltYWdlR2V0V2lkdGgoaW1hZ2VSZWYpIC8gc2NhbGUsIENHSW1hZ2VHZXRIZWlnaHQo
aW1hZ2VSZWYpIC8gc2NhbGUpLCBDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5LCBDR0ltYWdlR2V0
V2lkdGgoaW1hZ2VSZWYpIC8gc2NhbGUsIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2VSZWYpIC8gc2Nh
bGUsIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcsIDEgLyppc0NvbG9yZWQqLywgJldL
UGF0dGVybkJpdG1hcENhbGxiYWNrcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCmluZGV4IDA0NmRkNmI3NzQxMTQw
ZDgwZjdhMWZmMDI2MWU0NDFlYWZlMDYxMjUuLjYwYjQ4OTA1NzNhZDZhODVkM2IwYTM3M2NjOGNh
MjVmZjM5ZjAyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJD
b3JlU3lzdGVtSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UuaApAQCAtMjgsMTAgKzI4LDYgQEAKIAogI2luY2x1ZGUgPG9i
amMvb2JqYy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQotI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1J
bnRlcmZhY2VJT1MuaCIKLSNlbmRpZgotCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGU3RyaW5n
ICogQ0ZTdHJpbmdSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGTnVtYmVyICogQ0ZOdW1i
ZXJSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGRGljdGlvbmFyeSAqIENGRGljdGlvbmFy
eVJlZjsKQEAgLTIzNywxMCArMjMzLDcgQEAgZXh0ZXJuIEFYVUlFbGVtZW50UmVmICgqd2tDcmVh
dGVBWFVJRWxlbWVudFJlZikoaWQgZWxlbWVudCk7CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykK
IAogI2lmIFBMQVRGT1JNKElPUykKLWV4dGVybiBDR1NpemUgKCp3a0dldFNjcmVlblNpemUpKHZv
aWQpOwotZXh0ZXJuIENHU2l6ZSAoKndrR2V0QXZhaWxhYmxlU2NyZWVuU2l6ZSkodm9pZCk7CiBl
eHRlcm4gdm9pZCAoKndrU2V0TGF5ZXJDb250ZW50c1NjYWxlKShDQUxheWVyICopOwotZXh0ZXJu
IGZsb2F0ICgqd2tHZXRTY3JlZW5TY2FsZUZhY3Rvcikodm9pZCk7CiAjZW5kaWYKIAogdHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgX19DRlVSTFN0b3JhZ2VTZXNzaW9uKiBDRlVSTFN0b3JhZ2VTZXNzaW9u
UmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL0R5bmFt
aWNMaW5rZXJTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9EeW5hbWlj
TGlua2VyU1BJLmgKaW5kZXggNDYwZGE5MTlhNGU5YTZjYzgwOGZjYjIzMWE0NTMyMTk2ZTUzMjBk
Zi4uZGU2MjZiMTE2ZjA1MjhiN2UxZjdkNTJiZjZiMmRjYzM0YWMxNmFjMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL0R5bmFtaWNMaW5rZXJTUEkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvRHluYW1pY0xpbmtlclNQSS5oCkBA
IC0zNSw4ICszNSwxMSBAQAogI2Vsc2UKIAogI2RlZmluZSBEWUxEX0lPU19WRVJTSU9OXzNfMCAw
eDAwMDMwMDAwCi0jZGVmaW5lIERZTERfSU9TX1ZFUlNJT05fNl8wIDB4MDAwNjAwMDA7Ci0jZGVm
aW5lIERZTERfSU9TX1ZFUlNJT05fN18wIDB4MDAwNzAwMDA7CisjZGVmaW5lIERZTERfSU9TX1ZF
UlNJT05fNF8yIDB4MDAwNDAyMDAKKyNkZWZpbmUgRFlMRF9JT1NfVkVSU0lPTl81XzAgMHgwMDA1
MDAwMAorI2RlZmluZSBEWUxEX0lPU19WRVJTSU9OXzZfMCAweDAwMDYwMDAwCisjZGVmaW5lIERZ
TERfSU9TX1ZFUlNJT05fN18wIDB4MDAwNzAwMDAKKyNkZWZpbmUgRFlMRF9JT1NfVkVSU0lPTl85
XzAgMHgwMDA5MDAwMAogCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3BpL2lvcy9Nb2JpbGVHZXN0YWx0U1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcGkvaW9zL01vYmlsZUdlc3RhbHRTUEkuaAppbmRleCAwMzZhNDQ3MTM0NzY2NWMxYTBkNDc5
YWE3M2IxMjk4NmY0ZGE4NjhjLi40NzEzODZmZjYxOTFhMzA5MjQ4ZTJjOThmY2I1ZDMwMmUxZDMw
YjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvaW9zL01vYmlsZUdl
c3RhbHRTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvaW9zL01vYmlsZUdl
c3RhbHRTUEkuaApAQCAtNDEsNiArNDEsMTkgQEAKIEVYVEVSTl9DIGNvbnN0IENGU3RyaW5nUmVm
IGtNR1FBcHBsZUludGVybmFsSW5zdGFsbENhcGFiaWxpdHkgPSBDRlNUUigiYXBwbGUtaW50ZXJu
YWwtaW5zdGFsbCIpOwogRVhURVJOX0MgY29uc3QgQ0ZTdHJpbmdSZWYga01HUU1haW5TY3JlZW5Q
aXRjaCA9IENGU1RSKCJtYWluLXNjcmVlbi1waXRjaCIpOwogRVhURVJOX0MgY29uc3QgQ0ZTdHJp
bmdSZWYga01HUU1haW5TY3JlZW5TY2FsZSA9IENGU1RSKCJtYWluLXNjcmVlbi1zY2FsZSIpOwor
RVhURVJOX0MgY29uc3QgQ0ZTdHJpbmdSZWYga01HUWlQYWRDYXBhYmlsaXR5ID0gQ0ZTVFIoImlw
YWQiKTsKK0VYVEVSTl9DIGNvbnN0IENGU3RyaW5nUmVmIGtNR1FEZXZpY2VOYW1lID0gQ0ZTVFIo
IkRldmljZU5hbWUiKTsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBNR0RldmljZUNsYXNzSW52YWxp
ZCA9IC0xLAorICAgIC8qIDAgaXMgaW50ZW50aW9uYWxseSBub3QgaW4gdGhpcyBlbnVtICovCisg
ICAgTUdEZXZpY2VDbGFzc2lQaG9uZSAgPSAxLAorICAgIE1HRGV2aWNlQ2xhc3NpUG9kICAgID0g
MiwKKyAgICBNR0RldmljZUNsYXNzaVBhZCAgICA9IDMsCisgICAgTUdEZXZpY2VDbGFzc0FwcGxl
VFYgPSA0LAorICAgIC8qIDUgaXMgaW50ZW50aW9uYWxseSBub3QgaW4gdGhpcyBlbnVtICovCisg
ICAgTUdEZXZpY2VDbGFzc1dhdGNoICAgPSA2LAorfSBNR0RldmljZUNsYXNzOwogCiAjZW5kaWYK
IApAQCAtNTAsNiArNjMsMTQgQEAgRVhURVJOX0MgQ0ZUeXBlUmVmIE1HQ29weUFuc3dlcihDRlN0
cmluZ1JlZiBxdWVzdGlvbiwgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpOwogRVhURVJOX0MgYm9v
bCBNR0dldEJvb2xBbnN3ZXIoQ0ZTdHJpbmdSZWYgcXVlc3Rpb24pOwogI2VuZGlmCiAKKyNpZm5k
ZWYgTUdHZXRTSW50MzJBbnN3ZXIKK0VYVEVSTl9DIFNJbnQzMiBNR0dldFNJbnQzMkFuc3dlcihD
RlN0cmluZ1JlZiBxdWVzdGlvbiwgU0ludDMyIGRlZmF1bHRWYWx1ZSk7CisjZW5kaWYKKworI2lm
bmRlZiBNR0dldEZsb2F0MzJBbnN3ZXIKK0VYVEVSTl9DIEZsb2F0MzIgTUdHZXRGbG9hdDMyQW5z
d2VyKENGU3RyaW5nUmVmIHF1ZXN0aW9uLCBGbG9hdDMyIGRlZmF1bHRWYWx1ZSk7CisjZW5kaWYK
KwogI2VuZGlmCiAKICNlbmRpZiAvLyBNb2JpbGVHZXN0YWx0U1BJX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9pb3MvVUlDb2xvclNQSS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3BpL2lvcy9VSUNvbG9yU1BJLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGI5ODE0YTU2OGUwMmZkNmMwZWUxOTdiOGY5ZWNkYThhNjg0YjViNjcuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3BpL2lvcy9VSUNvbG9yU1BJLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0KLSNpbXBvcnQgPFVJ
S2l0L1VJSW50ZXJmYWNlX1ByaXZhdGUuaD4KLQotI2Vsc2UKLQotI2ltcG9ydCA8VUlLaXQvVUlD
b2xvci5oPgotCi1AaW50ZXJmYWNlIFVJQ29sb3IgKCkKLQotKyAoVUlDb2xvciAqKXN5c3RlbUJs
dWVDb2xvcjsKLSsgKFVJQ29sb3IgKilzeXN0ZW1HcmF5Q29sb3I7Ci0rIChVSUNvbG9yICopc3lz
dGVtR3JlZW5Db2xvcjsKLSsgKFVJQ29sb3IgKilzeXN0ZW1PcmFuZ2VDb2xvcjsKLSsgKFVJQ29s
b3IgKilzeXN0ZW1QaW5rQ29sb3I7Ci0rIChVSUNvbG9yICopc3lzdGVtUmVkQ29sb3I7Ci0rIChV
SUNvbG9yICopc3lzdGVtWWVsbG93Q29sb3I7Ci0KLUBlbmQKLQotI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2NmMjBmOTg3OTcw
NzNkNmYxYmJkYjcwOTk1MzVlNTFjZDZkYjJhMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaApAQCAtMCwwICsxLDYwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisKKyNpbXBvcnQgPFVJS2l0L1VJ
QXBwbGljYXRpb25fUHJpdmF0ZS5oPgorI2ltcG9ydCA8VUlLaXQvVUlJbnRlcmZhY2VfUHJpdmF0
ZS5oPgorI2ltcG9ydCA8VUlLaXQvVUlTY3JlZW5fUHJpdmF0ZS5oPgorCisjZWxzZQorCisjaW1w
b3J0IDxVSUtpdC9VSUtpdC5oPgorCitAaW50ZXJmYWNlIFVJQXBwbGljYXRpb24gKCkKKworLSAo
Qk9PTClfaXNDbGFzc2ljOworCitAZW5kCisKK0BpbnRlcmZhY2UgVUlDb2xvciAoKQorCisrIChV
SUNvbG9yICopc3lzdGVtQmx1ZUNvbG9yOworKyAoVUlDb2xvciAqKXN5c3RlbUdyYXlDb2xvcjsK
KysgKFVJQ29sb3IgKilzeXN0ZW1HcmVlbkNvbG9yOworKyAoVUlDb2xvciAqKXN5c3RlbU9yYW5n
ZUNvbG9yOworKyAoVUlDb2xvciAqKXN5c3RlbVBpbmtDb2xvcjsKKysgKFVJQ29sb3IgKilzeXN0
ZW1SZWRDb2xvcjsKKysgKFVJQ29sb3IgKilzeXN0ZW1ZZWxsb3dDb2xvcjsKKworQGVuZAorCitA
aW50ZXJmYWNlIFVJU2NyZWVuICgpCisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkg
Q0dSZWN0IF9yZWZlcmVuY2VCb3VuZHM7CisKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggOTk2NzljOGEyZDNiYTNkM2NiMjQz
NjFjZDIyNWJmMDg0ZTM1ODVjNi4uNWVjZjgxZGNhMTg4ZjJhMmExNmY0ZDhmZDNhMDI1ZTFlOTYz
Yjk2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAt
NTYsNyArNTYsNyBAQAogI2ltcG9ydCAiUmVuZGVyVGhlbWVJT1MuaCIKICNpbXBvcnQgIlJlbmRl
clZpZXcuaCIKICNpbXBvcnQgIlNvZnRMaW5raW5nLmgiCi0jaW1wb3J0ICJVSUNvbG9yU1BJLmgi
CisjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2ltcG9ydCAiVXNlckFnZW50U2NyaXB0cy5oIgogI2lt
cG9ydCAiVXNlckFnZW50U3R5bGVTaGVldHMuaCIKICNpbXBvcnQgIldlYkNvcmVUaHJlYWRSdW4u
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1t
IGIvU291cmNlL1dlYktpdC9pb3MvTWlzYy9XZWJVSUtpdFN1cHBvcnQubW0KaW5kZXggMDJjOTdh
NjNkYWNiMTE3MjRiM2FkMmMxZjU2MzZlYzU1YmE0MzlkYy4uNzM5MzlmMzVkMWIyNGE4YzRjOTlm
ZWFiZTkyZDhjZWEyMjQ2MDRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvTWlzYy9X
ZWJVSUtpdFN1cHBvcnQubW0KKysrIGIvU291cmNlL1dlYktpdC9pb3MvTWlzYy9XZWJVSUtpdFN1
cHBvcnQubW0KQEAgLTMzLDggKzMzLDEwIEBACiAjaW1wb3J0ICJXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaCIKICNpbXBvcnQgIldlYlN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCAiV2ViVmlld1By
aXZhdGUuaCIKKyNpbXBvcnQgPFdlYkNvcmUvRHluYW1pY0xpbmtlclNQSS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9QYXRoVXRpbGl0aWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVz
dC5oPgorI2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0
QnJlYWtJdGVyYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlU3lzdGVtSW50ZXJmYWNl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWRTeXN0ZW1JbnRlcmZhY2UuaD4KQEAg
LTQ2LDcgKzQ4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0YXRpYyBpbmxpbmUg
Ym9vbCBsaW5rZWRPbk9yQWZ0ZXJJT1M1KCkKIHsKLSAgICBzdGF0aWMgYm9vbCBzX2xpbmtlZE9u
T3JBZnRlcklPUzUgPSBpb3NFeGVjdXRhYmxlV2FzTGlua2VkT25PckFmdGVyVmVyc2lvbih3a0lP
U1N5c3RlbVZlcnNpb25fNV8wKTsKKyAgICBzdGF0aWMgYm9vbCBzX2xpbmtlZE9uT3JBZnRlcklP
UzUgPSBkeWxkX2dldF9wcm9ncmFtX3Nka192ZXJzaW9uKCkgPj0gRFlMRF9JT1NfVkVSU0lPTl81
XzA7CiAgICAgcmV0dXJuIHNfbGlua2VkT25PckFmdGVySU9TNTsKIH0KIApAQCAtODMsNyArODUs
NyBAQCB2b2lkIFdlYktpdFNldElzQ2xhc3NpYyhCT09MIGZsYWcpCiAKIGZsb2F0IFdlYktpdEdl
dE1pbmltdW1ab29tRm9udFNpemUodm9pZCkKIHsKLSAgICByZXR1cm4gV0tHZXRNaW5pbXVtWm9v
bUZvbnRTaXplKCk7CisgICAgcmV0dXJuIFNldHRpbmdzOjpkZWZhdWx0TWluaW11bVpvb21Gb250
U2l6ZSgpOwogfQogCiBpbnQgV2ViS2l0R2V0TGFzdExpbmVCcmVha0luQnVmZmVyKFVDaGFyICpj
aGFyYWN0ZXJzLCBpbnQgcG9zaXRpb24sIGludCBsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW0KaW5kZXggYjlj
ZjEzOTc4NGU2ZjUyMGU0ZWNhODY5ZDRiMmI0OWYzZmRjM2Q4Ny4uNGU0MGFiNTI0YzViZmZlZGRl
NjY1YzExODA0ZjE1NjlhNzYzOTQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9z
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5tbQpAQCAtNTQsNiArNTQsNyBAQAog
I2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSW50UmVjdC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtU2Ny
ZWVuLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlckJveC5oPgogI2ltcG9ydCA8V2ViQ29yZS9S
ZW5kZXJPYmplY3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tz
SU9TLmg+CkBAIC02MSwxMCArNjIsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9XQUtXaW5kb3cuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRocmVhZE1lc3NhZ2UuaD4KIAotI2lmIFBMQVRGT1JN
KElPUykKLSNpbmNsdWRlICJXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaCIKLSNlbmRpZgotCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogdm9pZCBXZWJDaHJvbWVDbGllbnRJT1M6OnNldFdpbmRv
d1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiByKQpAQCAtMTc0LDcgKzE3MSw3IEBAIHN0
YXRpYyBpbmxpbmUgTlNEaWN0aW9uYXJ5KiBkaWN0aW9uYXJ5Rm9yVmlld3BvcnRBcmd1bWVudHMo
Y29uc3QgV2ViQ29yZTo6Vmlld3BvCiAKIEZsb2F0U2l6ZSBXZWJDaHJvbWVDbGllbnRJT1M6OnNj
cmVlblNpemUoKSBjb25zdAogewotICAgIHJldHVybiBGbG9hdFNpemUoV0tHZXRTY3JlZW5TaXpl
KCkpOworICAgIHJldHVybiBGbG9hdFNpemUoc2NyZWVuU2l6ZSgpKTsKIH0KIAogRmxvYXRTaXpl
IFdlYkNocm9tZUNsaWVudElPUzo6YXZhaWxhYmxlU2NyZWVuU2l6ZSgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2Uu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2Uu
bW0KaW5kZXggOGMyMDViNDZiM2YyOTkxNWQ3MGUwYTJiYjlhM2EwZmQyZjU1ZTNkMC4uMTRjMWJj
NmM2YjYxZWU1YzZjYzg0NjYxNWM0ODlkM2FkNGU0YzEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQpAQCAtMTEx
LDE2ICsxMTEsNiBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAg
SU5JVChRVENsZWFyTWVkaWFEb3dubG9hZENhY2hlKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0o
SU9TKQotICAgIElOSVQoRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JBZnRlcklPU1ZlcnNpb24pOwot
ICAgIElOSVQoR2V0RGV2aWNlQ2xhc3MpOwotICAgIElOSVQoR2V0U2NyZWVuU2l6ZSk7Ci0gICAg
SU5JVChHZXRBdmFpbGFibGVTY3JlZW5TaXplKTsKLSAgICBJTklUKEdldFNjcmVlblNjYWxlRmFj
dG9yKTsKLSAgICBJTklUKElzR0IxODAzMENvbXBsaWFuY2VSZXF1aXJlZCk7Ci0gICAgSU5JVChJ
c09wdGltaXplZEZ1bGxzY3JlZW5TdXBwb3J0ZWQpOwotI2VuZGlmCi0KICNpZiAhUExBVEZPUk0o
SU9TKQogICAgIElOSVQoRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JCZWZvcmVTbm93TGVvcGFyZCk7
CiAgICAgSU5JVChDb3B5RGVmYXVsdFNlYXJjaFByb3ZpZGVyRGlzcGxheU5hbWUpOwpAQCAtMTcw
LDE0ICsxNjAsNiBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAKICAg
ICBJTklUKENGVVJMUmVxdWVzdEFsbG93QWxsUG9zdENhY2hpbmcpOwogCi0jaWYgUExBVEZPUk0o
SU9TKQotICAgIElOSVQoR2V0VXNlckFnZW50KTsKLSAgICBJTklUKEdldERldmljZU5hbWUpOwot
ICAgIElOSVQoR2V0T1NOYW1lRm9yVXNlckFnZW50KTsKLSAgICBJTklUKEdldFBsYXRmb3JtTmFt
ZUZvck5hdmlnYXRvcik7Ci0gICAgSU5JVChHZXRWZW5kb3JOYW1lRm9yTmF2aWdhdG9yKTsKLSNl
bmRpZgotCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBJTklUKE5TRWxhc3RpY0RlbHRhRm9yVGlt
ZURlbHRhKTsKICAgICBJTklUKE5TRWxhc3RpY0RlbHRhRm9yUmVib3VuZERlbHRhKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCmluZGV4IGUwMmE5MThkZTIz
M2E3Yzk1MTlmZDRhMjBjODUyMDZjZjdkYzExOWYuLjViZmI3ZmUyYmIyYTM4YzdiODQxZTg3MThh
ZjJiMWIwMDVlZWYzMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
UHJlZmVyZW5jZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJl
bmNlcy5tbQpAQCAtNTksNiArNTksNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogI2lm
IFBMQVRGT1JNKElPUykKICNpbXBvcnQgPEF1ZGlvVG9vbGJveC9BdWRpb1Nlc3Npb24uaD4KKyNp
bXBvcnQgPFdlYkNvcmUvR2VzdGFsdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRl
eHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSW1hZ2VTb3VyY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2ViQ29yZVRocmVhZE1lc3NhZ2UuaD4KQEAgLTM5Niw3ICszOTcsNyBAQCArICh2b2lkKWluaXRp
YWxpemUKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkVG9Qcm9jZXNzTWFpblRocmVhZCgp
OwogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwogI2Vsc2UKLSAgICBib29s
IGFsbG93c0lubGluZU1lZGlhUGxheWJhY2sgPSBXS0dldERldmljZUNsYXNzKCkgPT0gV0tEZXZp
Y2VDbGFzc2lQYWQ7CisgICAgYm9vbCBhbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrID0gR2VzdGFs
dDo6ZGV2aWNlQ2xhc3MoKSA9PSBNR0RldmljZUNsYXNzaVBhZDsKICAgICBib29sIHJlcXVpcmVz
UGxheXNJbmxpbmVBdHRyaWJ1dGUgPSAhYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjazsKICNlbmRp
ZgogICAgIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKCk7CkBAIC01NzYsNyArNTc3LDcgQEAg
KyAodm9pZClpbml0aWFsaXplCiAgICAgICAgIEAiIiwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJLaXROZXR3b3JrSW50ZXJmYWNlTmFtZVByZWZlcmVuY2VLZXksCiAjZW5kaWYKICNp
ZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldp
dGhGbG9hdDpXS0dldE1pbmltdW1ab29tRm9udFNpemUoKV0sIFdlYktpdE1pbmltdW1ab29tRm9u
dFNpemVQcmVmZXJlbmNlS2V5LAorICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OlNl
dHRpbmdzOjpkZWZhdWx0TWluaW11bVpvb21Gb250U2l6ZSgpXSwgV2ViS2l0TWluaW11bVpvb21G
b250U2l6ZVByZWZlcmVuY2VLZXksCiAjZW5kaWYKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldp
dGhMb25nTG9uZzpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bm9RdW90YSgpXSwgV2ViS2l0QXBw
bGljYXRpb25DYWNoZVRvdGFsUXVvdGEsCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoTG9u
Z0xvbmc6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om5vUXVvdGEoKV0sIFdlYktpdEFwcGxpY2F0
aW9uQ2FjaGVEZWZhdWx0T3JpZ2luUXVvdGEsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KaW5kZXggOTFkOGJjNDcxNzJhMWYxYzNmNDlhNjEzZTBiYTMyNDcxYzcyYjkyNi4uMTQ2YTRl
NjY3ZmNlZjMwY2RlNmIzMTE5NTMxZjQ5ZWFhN2MzY2E4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQpAQCAtMjQzLDEzICsyNDMsMTUgQEAKICNpbXBvcnQgIldlYlN0b3JhZ2VN
YW5hZ2VyUHJpdmF0ZS5oIgogI2ltcG9ydCAiV2ViVUlLaXRTdXBwb3J0LmgiCiAjaW1wb3J0ICJX
ZWJWaXNpYmxlUG9zaXRpb24uaCIKKyNpbXBvcnQgPFdlYkNvcmUvRHluYW1pY0xpbmtlclNQSS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9FdmVudE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnRD
YWNoZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9HZXN0YWx0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dy
YXBoaWNzTGF5ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvSWNvbkNvbnRyb2xsZXIuaD4KICNpbXBv
cnQgPFdlYkNvcmUvTGVnYWN5VGlsZUNhY2hlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL01vYmlsZUdl
c3RhbHRTUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvTmV0d29ya1N0YXRlTm90aWZpZXIuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNl
VHJhY2tlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TbWFydFJlcGxhY2UuaD4KQEAgLTgyMyw3ICs4
MjUsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGREaXNwYXRjaEphdmFTY3JpcHRXaW5kb3dPbkVycm9y
RXZlbnRzKCkKIAogc3RhdGljIGJvb2wgaXNJbnRlcm5hbEluc3RhbGwoKQogewotICAgIHN0YXRp
YyBib29sIGlzSW50ZXJuYWwgPSBNR0dldEJvb2xBbnN3ZXIoa01HUUFwcGxlSW50ZXJuYWxJbnN0
YWxsQ2FwYWJpbGl0eSk7CisgICAgc3RhdGljIGJvb2wgaXNJbnRlcm5hbCA9IEdlc3RhbHQ6Omlz
QXBwbGVJbnRlcm5hbEluc3RhbGwoKTsKICAgICByZXR1cm4gaXNJbnRlcm5hbDsKIH0KIApAQCAt
ODUwLDcgKzg1Miw3IEBAIHN0YXRpYyBib29sIHNob3VsZEFsbG93RGlzcGxheUFuZFJ1bm5pbmdP
Zkluc2VjdXJlQ29udGVudCgpCiBzdGF0aWMgYm9vbCBzaG91bGRBbGxvd1BpY3R1cmVJblBpY3R1
cmVNZWRpYVBsYXliYWNrKCkKIHsKICNpZiBQTEFURk9STShJT1MpCi0gICAgc3RhdGljIGJvb2wg
c2hvdWxkQWxsb3dQaWN0dXJlSW5QaWN0dXJlTWVkaWFQbGF5YmFjayA9IGlvc0V4ZWN1dGFibGVX
YXNMaW5rZWRPbk9yQWZ0ZXJWZXJzaW9uKHdrSU9TU3lzdGVtVmVyc2lvbl85XzApOworICAgIHN0
YXRpYyBib29sIHNob3VsZEFsbG93UGljdHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2sgPSBkeWxk
X2dldF9wcm9ncmFtX3Nka192ZXJzaW9uKCkgPj0gRFlMRF9JT1NfVkVSU0lPTl85XzA7CiAgICAg
cmV0dXJuIHNob3VsZEFsbG93UGljdHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2s7CiAjZWxzZQog
ICAgIHJldHVybiBmYWxzZTsKQEAgLTUzOTgsNyArNTQwMCw3IEBAIC0gKHZvaWQpX3VwZGF0ZVNj
cmVlblNjYWxlRnJvbVdpbmRvdwogICAgIGlmIChXQUtXaW5kb3cgKndpbmRvdyA9IFtzZWxmIHdp
bmRvd10pCiAgICAgICAgIHNjYWxlRmFjdG9yID0gW3dpbmRvdyBzY3JlZW5TY2FsZV07CiAgICAg
ZWxzZQotICAgICAgICBzY2FsZUZhY3RvciA9IFdLR2V0U2NyZWVuU2NhbGVGYWN0b3IoKTsKKyAg
ICAgICAgc2NhbGVGYWN0b3IgPSBzY3JlZW5TY2FsZUZhY3RvcigpOwogCiAgICAgX3ByaXZhdGUt
PnBhZ2UtPnNldERldmljZVNjYWxlRmFjdG9yKHNjYWxlRmFjdG9yKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BY2Nlc3NpYmlsaXR5SU9TLmggYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQWNjZXNzaWJpbGl0eUlPUy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0ZDRkZDc4NDJkZjUxNGUy
OTliNzI3NGE1MmRhMWVhZDhlYmIyMTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQWNjZXNzaWJpbGl0eUlPUy5oCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworTlNEYXRhICpBWFJlbW90ZVRva2VuKENGVVVJRFJlZik7
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FjY2Vzc2liaWxpdHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQWNjZXNzaWJp
bGl0eUlPUy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNjlkYTQxYmMwZDU1M2MyMWE4NDg3ZjQ3MTRlZjc3Mjcz
Y2NhODdjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FjY2Vzc2li
aWxpdHlJT1MubW0KQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZp
Zy5oIgorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUlPUy5oIgorCisjaWYgUExBVEZPUk0oSU9TKQor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworTlNEYXRhICpBWFJlbW90ZVRva2VuKENGVVVJRFJlZiB1
dWlkUmVmKQoreworICAgIGlmICghdXVpZFJlZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAK
KyAgICAvLyBUaGUgdG9rZW4gdGhhdCBpcyB0cmFuc21pdHRlZCBhbGxvd3MgdGhlIG90aGVyIHNp
ZGUgdG8gcmVmZXIgYmFjayB0byB0aGlzIHByb2Nlc3MuCisgICAgTlNTdHJpbmcgKnV1aWRTdHJp
bmcgPSBbKE5TU3RyaW5nICopQ0ZVVUlEQ3JlYXRlU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQs
IHV1aWRSZWYpIGF1dG9yZWxlYXNlXTsKKyAgICBOU0RpY3Rpb25hcnkgKnZhbHVlID0gQHsgQCJh
eC1waWQiIDogQChnZXRwaWQoKSksIEAiYXgtdXVpZCIgOiB1dWlkU3RyaW5nLCBAImF4LXJlZ2lz
dGVyIiA6IEBZRVMgfTsKKyAgICByZXR1cm4gW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFX
aXRoUm9vdE9iamVjdDp2YWx1ZV07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVm
ZXJlbmNlc0RlZmluaXRpb25zLmgKaW5kZXggZmVkMDBlMTg0MTg3NGU0NDgxMGViYzdmNmQ0NGFm
Y2ZjYmY5N2IxYS4uZmI1MjkzOTBhM2MyZjVjODkyYzY1OWIwM2VjMzgwY2Y1MDcxOTM4NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5o
CkBAIC01NSw3ICs1NSw3IEBACiAjZGVmaW5lIERFRkFVTFRfVEVYVF9BUkVBU19BUkVfUkVTSVpB
QkxFIGZhbHNlCiAjZGVmaW5lIERFRkFVTFRfSkFWQVNDUklQVF9DQU5fT1BFTl9XSU5ET1dTX0FV
VE9NQVRJQ0FMTFkgZmFsc2UKICNkZWZpbmUgREVGQVVMVF9TSE9VTERfUkVTUEVDVF9JTUFHRV9P
UklFTlRBVElPTiB0cnVlCi0jZGVmaW5lIERFRkFVTFRfTUlOSU1VTV9GT05UX1pPT01fU0laRSBX
S0dldE1pbmltdW1ab29tRm9udFNpemUoKQorI2RlZmluZSBERUZBVUxUX01JTklNVU1fRk9OVF9a
T09NX1NJWkUgV2ViQ29yZTo6U2V0dGluZ3M6OmRlZmF1bHRNaW5pbXVtWm9vbUZvbnRTaXplKCkK
ICNkZWZpbmUgREVGQVVMVF9QQVNTV09SRF9FQ0hPX0VOQUJMRUQgdHJ1ZQogI2RlZmluZSBERUZB
VUxUX0FMTE9XU19JTkxJTkVfTUVESUFfUExBWUJBQ0sgZmFsc2UKICNkZWZpbmUgREVGQVVMVF9J
TkxJTkVfTUVESUFfUExBWUJBQ0tfUkVRVUlSRVNfUExBWVNfSU5MSU5FX0FUVFJJQlVURSB0cnVl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHAKaW5kZXgg
YjFkNGUzZTBiYWFhYzQ5NWFiMGJmMWVjODlkNTM5NDk2MjE3YjA4NS4uY2MyNGRkODY3OTAyZWY4
MzUwZGViNWQzNTIxZjQ2YmVlYWVlMWYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJQcmVmZXJlbmNlc1N0b3JlLmNwcApAQCAtMzMsMTAgKzMzLDYgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL1RleHRFbmNvZGluZ1JlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAKLSNpZiBQTEFURk9STShJT1MpCi0jaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2VJ
T1MuaD4KLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCmluZGV4IDg4NTJjYzQyY2RlNmNkMWQ1NTY0YTNkMWRjZGFkN2JmN2FhNThmNjcuLjVlYjcz
MmI2NTZiZGVhMTNjMjFiNjg4YWI4OWM5NGQ5NGMwMGQzMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xMDMsNiArMTAzLDcgQEAK
ICNpbXBvcnQgIldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIgogI2ltcG9ydCA8VUlL
aXQvVUlBcHBsaWNhdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db3JlR3JhcGhpY3NTUEkuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvRHluYW1pY0xpbmtlclNQSS5oPgogI2ltcG9ydCA8V2ViQ29yZS9G
cmFtZUxvYWRlclR5cGVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0luc3BlY3Rvck92ZXJsYXkuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUXVhcnR6Q29yZVNQSS5oPgpAQCAtMjczLDcgKzI3NCw3IEBAIC0g
KEJPT0wpX21heUF1dG9tYXRpY2FsbHlTaG93VmlkZW9QaWN0dXJlSW5QaWN0dXJlCiAKIHN0YXRp
YyBib29sIHNob3VsZEFsbG93UGljdHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2soKQogewotICAg
IHN0YXRpYyBib29sIHNob3VsZEFsbG93UGljdHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2sgPSBp
b3NFeGVjdXRhYmxlV2FzTGlua2VkT25PckFmdGVyVmVyc2lvbih3a0lPU1N5c3RlbVZlcnNpb25f
OV8wKTsKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRBbGxvd1BpY3R1cmVJblBpY3R1cmVNZWRpYVBs
YXliYWNrID0gZHlsZF9nZXRfcHJvZ3JhbV9zZGtfdmVyc2lvbigpID49IERZTERfSU9TX1ZFUlNJ
T05fOV8wOwogICAgIHJldHVybiBzaG91bGRBbGxvd1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXli
YWNrOwogfQogCkBAIC0xMTI5LDcgKzExMzAsNyBAQCAtICh2b2lkKV9yZXN0b3JlUGFnZVN0YXRl
VG9Vbm9ic2N1cmVkQ2VudGVyOihXZWJDb3JlOjpGbG9hdFBvaW50KWNlbnRlciBzY2FsZTooZAog
CiAtIChQYXNzUmVmUHRyPFdlYktpdDo6Vmlld1NuYXBzaG90PilfdGFrZVZpZXdTbmFwc2hvdAog
ewotICAgIGZsb2F0IGRldmljZVNjYWxlID0gV0tHZXRTY3JlZW5TY2FsZUZhY3RvcigpOworICAg
IGZsb2F0IGRldmljZVNjYWxlID0gV2ViQ29yZTo6c2NyZWVuU2NhbGVGYWN0b3IoKTsKICAgICBX
ZWJDb3JlOjpGbG9hdFNpemUgc25hcHNob3RTaXplKHNlbGYuYm91bmRzLnNpemUpOwogICAgIHNu
YXBzaG90U2l6ZS5zY2FsZShkZXZpY2VTY2FsZSwgZGV2aWNlU2NhbGUpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24ubW0KaW5kZXggZjY1N2UyNDI3NGY1YjAyZDQ0YWMxYjUyYjVhMGU4NzExOGY0MzU2
Yi4uYTk5OTI0Y2E3ZTQzZTQyMjU0NTgyOTE1NzYwODlhZThmNDYwNGJiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbi5tbQpAQCAtNDAsNyArNDAsNyBAQAogCiAjaWYgUExBVEZPUk0oSU9TKQogI2lt
cG9ydCAiVUlLaXRTUEkuaCIKLSNpbXBvcnQgIldlYktpdFN5c3RlbUludGVyZmFjZUlPUy5oIgor
I2ltcG9ydCA8V2ViQ29yZS9HZXN0YWx0Lmg+CiAjZW5kaWYKIAogdGVtcGxhdGU8dHlwZW5hbWUg
VD4gY2xhc3MgTGF6eUluaXRpYWxpemVkIHsKQEAgLTEwOSw3ICsxMDksNyBAQCAtIChpbnN0YW5j
ZXR5cGUpaW5pdAogI2lmIFBMQVRGT1JNKElPUykKICAgICBfcmVxdWlyZXNVc2VyQWN0aW9uRm9y
TWVkaWFQbGF5YmFjayA9IFlFUzsKICAgICBfYWxsb3dzUGljdHVyZUluUGljdHVyZU1lZGlhUGxh
eWJhY2sgPSBZRVM7Ci0gICAgX2FsbG93c0lubGluZU1lZGlhUGxheWJhY2sgPSBXS0dldERldmlj
ZUNsYXNzKCkgPT0gV0tEZXZpY2VDbGFzc2lQYWQ7CisgICAgX2FsbG93c0lubGluZU1lZGlhUGxh
eWJhY2sgPSBXZWJDb3JlOjpHZXN0YWx0OjpkZXZpY2VDbGFzcygpID09IE1HRGV2aWNlQ2xhc3Np
UGFkOwogICAgIF9pbmxpbmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQbGF5c0lubGluZUF0dHJpYnV0
ZSA9ICFfYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjazsKICAgICBfbWVkaWFEYXRhTG9hZHNBdXRv
bWF0aWNhbGx5ID0gTk87CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlldy5tbQppbmRleCBiZDM0ZDQ1NjQ1NWIwMTQ3ODEwMmNlNmY4YTMxODE2YTdj
MzcyMGFiLi42NDVhYjk3ZjkzYjgwYTFlNWQzMTYzMWY5NzI4ZmVjZGVhYTQ2MzE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCkBAIC0yOSw2ICsy
OSw3IEBACiAjaWYgUExBVEZPUk0oSU9TKQogCiAjaW1wb3J0ICJBUElQYWdlQ29uZmlndXJhdGlv
bi5oIgorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUlPUy5oIgogI2ltcG9ydCAiQXBwbGljYXRpb25T
dGF0ZVRyYWNrZXIuaCIKICNpbXBvcnQgIlBhZ2VDbGllbnRJbXBsSU9TLmgiCiAjaW1wb3J0ICJS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5LmgiCkBAIC00NCw3ICs0NSw2IEBACiAjaW1w
b3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViRnJhbWVQcm94eS5oIgogI2lt
cG9ydCAiV2ViS2l0MkluaXRpYWxpemUuaCIKLSNpbXBvcnQgIldlYktpdFN5c3RlbUludGVyZmFj
ZUlPUy5oIgogI2ltcG9ydCAiV2ViUGFnZUdyb3VwLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUG9v
bC5oIgogI2ltcG9ydCAiV2ViU3lzdGVtSW50ZXJmYWNlLmgiCkBAIC01Myw2ICs1Myw3IEBACiAj
aW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9JbnNwZWN0b3JP
dmVybGF5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1F1YXJ0ekNvcmVTUEku
aD4KICNpbXBvcnQgPHd0Zi9DdXJyZW50VGltZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgpAQCAtMTg4LDcgKzE4OSw3IEBAIC0gKGluc3RhbmNldHlwZSlfY29tbW9uSW5pdGlhbGl6YXRp
b25XaXRoUHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByCiAKICAgICBfcGFn
ZSA9IHByb2Nlc3NQb29sLmNyZWF0ZVdlYlBhZ2UoKl9wYWdlQ2xpZW50LCBXVEY6Om1vdmUoY29u
ZmlndXJhdGlvbikpOwogICAgIF9wYWdlLT5pbml0aWFsaXplV2ViUGFnZSgpOwotICAgIF9wYWdl
LT5zZXRJbnRyaW5zaWNEZXZpY2VTY2FsZUZhY3RvcihXS0dldFNjYWxlRmFjdG9yRm9yU2NyZWVu
KFtVSVNjcmVlbiBtYWluU2NyZWVuXSkpOworICAgIF9wYWdlLT5zZXRJbnRyaW5zaWNEZXZpY2VT
Y2FsZUZhY3RvcihzY3JlZW5TY2FsZUZhY3RvcihbVUlTY3JlZW4gbWFpblNjcmVlbl0pKTsKICAg
ICBfcGFnZS0+c2V0VXNlRml4ZWRMYXlvdXQodHJ1ZSk7CiAgICAgX3BhZ2UtPnNldERlbGVnYXRl
c1Njcm9sbGluZyh0cnVlKTsKIApAQCAtNDE5LDcgKzQyMCw3IEBAIC0gKHZvaWQpX3dpbmRvd0Rp
ZE1vdmVUb1NjcmVlbk5vdGlmaWNhdGlvbjooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24K
IC0gKHZvaWQpX3VwZGF0ZUZvclNjcmVlbjooVUlTY3JlZW4gKilzY3JlZW4KIHsKICAgICBBU1NF
UlQoc2NyZWVuKTsKLSAgICBfcGFnZS0+c2V0SW50cmluc2ljRGV2aWNlU2NhbGVGYWN0b3IoV0tH
ZXRTY2FsZUZhY3RvckZvclNjcmVlbihzY3JlZW4pKTsKKyAgICBfcGFnZS0+c2V0SW50cmluc2lj
RGV2aWNlU2NhbGVGYWN0b3Ioc2NyZWVuU2NhbGVGYWN0b3Ioc2NyZWVuKSk7CiAgICAgW3NlbGYg
X2FjY2Vzc2liaWxpdHlSZWdpc3RlclVJUHJvY2Vzc1Rva2Vuc107CiB9CiAKQEAgLTQyOSwxNSAr
NDMwLDIzIEBAIC0gKHZvaWQpX3NldEFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW46KE5TRGF0
YSAqKWRhdGEKICAgICBbc2VsZiBfYWNjZXNzaWJpbGl0eVJlZ2lzdGVyVUlQcm9jZXNzVG9rZW5z
XTsKIH0KIAorc3RhdGljIHZvaWQgQVhTdG9yZVJlbW90ZUNvbm5lY3Rpb25JbmZvcm1hdGlvbihp
ZCBlbGVtZW50LCBwaWRfdCBwaWQsIG1hY2hfcG9ydF90IHNlbmRQb3J0LCBDRlVVSURSZWYgdXVp
ZFJlZikKK3sKKyAgICAvLyBUaGUgYWNjZXNzaWJpbGl0eSBidW5kbGUgbmVlZHMgdG8ga25vdyB0
aGUgdXVpZCwgcGlkIGFuZCBtYWNoX3BvcnQgdGhhdCB0aGlzIG9iamVjdCB3aWxsIHJlZmVyIHRv
LgorICAgIG9iamNfc2V0QXNzb2NpYXRlZE9iamVjdChlbGVtZW50LCAodm9pZCopW0AiYXgtdXVp
ZCIgaGFzaF0sIChpZCl1dWlkUmVmLCBPQkpDX0FTU09DSUFUSU9OX1JFVEFJTl9OT05BVE9NSUMp
OworICAgIG9iamNfc2V0QXNzb2NpYXRlZE9iamVjdChlbGVtZW50LCAodm9pZCopW0AiYXgtcGlk
IiBoYXNoXSwgQChwaWQpLCBPQkpDX0FTU09DSUFUSU9OX1JFVEFJTl9OT05BVE9NSUMpOworICAg
IG9iamNfc2V0QXNzb2NpYXRlZE9iamVjdChlbGVtZW50LCAodm9pZCopW0AiYXgtbWFjaHBvcnQi
IGhhc2hdLCBAKHNlbmRQb3J0KSwgT0JKQ19BU1NPQ0lBVElPTl9SRVRBSU5fTk9OQVRPTUlDKTsK
K30KKwogLSAodm9pZClfYWNjZXNzaWJpbGl0eVJlZ2lzdGVyVUlQcm9jZXNzVG9rZW5zCiB7CiAg
ICAgUmV0YWluUHRyPENGVVVJRFJlZj4gdXVpZCA9IGFkb3B0Q0YoQ0ZVVUlEQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQpKTsKLSAgICBOU0RhdGEgKnJlbW90ZUVsZW1lbnRUb2tlbiA9IFdLQVhS
ZW1vdGVUb2tlbih1dWlkLmdldCgpKTsKKyAgICBOU0RhdGEgKnJlbW90ZUVsZW1lbnRUb2tlbiA9
IEFYUmVtb3RlVG9rZW4odXVpZC5nZXQoKSk7CiAKICAgICAvLyBTdG9yZSBpbmZvcm1hdGlvbiBh
Ym91dCB0aGUgV2ViUHJvY2VzcyB0aGF0IGNhbiBsYXRlciBiZSByZXRyaWV2ZWQgYnkgdGhlIGlP
UyBBY2Nlc3NpYmlsaXR5IHJ1bnRpbWUuCiAgICAgaWYgKF9wYWdlLT5wcm9jZXNzKCkuc3RhdGUo
KSA9PSBXZWJQcm9jZXNzUHJveHk6OlN0YXRlOjpSdW5uaW5nKSB7CiAgICAgICAgIElQQzo6Q29u
bmVjdGlvbiogY29ubmVjdGlvbiA9IF9wYWdlLT5wcm9jZXNzKCkuY29ubmVjdGlvbigpOwotICAg
ICAgICBXS0FYU3RvcmVSZW1vdGVDb25uZWN0aW9uSW5mb3JtYXRpb24oc2VsZiwgX3BhZ2UtPnBy
b2Nlc3MoKS5wcm9jZXNzSWRlbnRpZmllcigpLCBjb25uZWN0aW9uLT5pZGVudGlmaWVyKCkucG9y
dCwgdXVpZC5nZXQoKSk7CisgICAgICAgIEFYU3RvcmVSZW1vdGVDb25uZWN0aW9uSW5mb3JtYXRp
b24oc2VsZiwgX3BhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzSWRlbnRpZmllcigpLCBjb25uZWN0aW9u
LT5pZGVudGlmaWVyKCkucG9ydCwgdXVpZC5nZXQoKSk7CiAKICAgICAgICAgSVBDOjpEYXRhUmVm
ZXJlbmNlIGVsZW1lbnRUb2tlbiA9IElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihbcmVtb3RlRWxlbWVudFRva2VuIGJ5dGVzXSksIFtyZW1vdGVFbGVt
ZW50VG9rZW4gbGVuZ3RoXSk7CiAgICAgICAgIF9wYWdlLT5yZWdpc3RlclVJUHJvY2Vzc0FjY2Vz
c2liaWxpdHlUb2tlbnMoZWxlbWVudFRva2VuLCBlbGVtZW50VG9rZW4pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bQppbmRleCAwZmY2OWQ3ZjE0YWJlOWRkZjdjYjAyMTkyNTMyZWEyZWM5ZTBlYmNhLi4wYjI0NDU1
OGU1ZmJlZWMwNjU1Zjk5YzI1MWUwOGRmNmVkM2Q4YTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAt
NzEsNyArNzEsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dlYkV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViU2VsZWN0aW9uUmVjdC5o
PiAvLyBGSVhNRTogV0syIHNob3VsZCBub3QgaW5jbHVkZSBXZWJLaXQgaGVhZGVycyEKLSNpbXBv
cnQgPFdlYktpdFN5c3RlbUludGVyZmFjZUlPUy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgogCiBAaW50ZXJmYWNlIFVJRXZlbnQoVUlFdmVudEludGVybmFsKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCAyMWQzYzg3OTIxNDQz
ODRhZWM1ZTJkY2RmNjc2M2RjMDIxZTRkNDhiLi43NjY3NTE0ZTY1MzM0ODJkM2UzYWU4OGE4OWNl
OTg2ZDY1OTg0NWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dl
YlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbQpAQCAtNDAsMTIgKzQwLDEyIEBACiAjaW1wb3J0ICJVc2VyRGF0YS5oIgog
I2ltcG9ydCAiVmlld1VwZGF0ZURpc3BhdGNoZXJNZXNzYWdlcy5oIgogI2ltcG9ydCAiV0tCcm93
c2luZ0NvbnRleHRDb250cm9sbGVySW50ZXJuYWwuaCIKLSNpbXBvcnQgIldlYktpdFN5c3RlbUlu
dGVyZmFjZUlPUy5oIgogI2ltcG9ydCAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQ
cm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5o
IgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm90SW1w
bGVtZW50ZWQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbXBvcnQg
PFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VzZXJBZ2VudC5oPgog
CkBAIC03NjUsMTcgKzc2NSwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Ymx1ckFzc2lzdGVkTm9k
ZSgpCiAKIEZsb2F0U2l6ZSBXZWJQYWdlUHJveHk6OnNjcmVlblNpemUoKQogewotICAgIHJldHVy
biBGbG9hdFNpemUoV0tHZXRTY3JlZW5TaXplKCkpOworICAgIHJldHVybiBXZWJDb3JlOjpzY3Jl
ZW5TaXplKCk7CiB9CiAKIEZsb2F0U2l6ZSBXZWJQYWdlUHJveHk6OmF2YWlsYWJsZVNjcmVlblNp
emUoKQogewotICAgIHJldHVybiBGbG9hdFNpemUoV0tHZXRBdmFpbGFibGVTY3JlZW5TaXplKCkp
OworICAgIHJldHVybiBXZWJDb3JlOjphdmFpbGFibGVTY3JlZW5TaXplKCk7CiB9CiAgICAgCiBm
bG9hdCBXZWJQYWdlUHJveHk6OnRleHRBdXRvc2l6aW5nV2lkdGgoKQogewotICAgIHJldHVybiBX
S0dldFNjcmVlblNpemUoKS53aWR0aDsKKyAgICByZXR1cm4gV2ViQ29yZTo6c2NyZWVuU2l6ZSgp
LndpZHRoKCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkeW5hbWljVmlld3BvcnRVcGRhdGVD
aGFuZ2VkVGFyZ2V0KGRvdWJsZSBuZXdTY2FsZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYg
bmV3U2Nyb2xsUG9zaXRpb24sIHVpbnQ2NF90IGR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGVJRCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA3MGY3OGRjNmRmZDk3NjRhMjliNjQyYWMwZDEzOGI1ZDE3Zjg1NzdmLi5lMzZhMjA0MGI2
MDU0YmMzOGI5ZWRmNDNjYjY4MDI2MzgxZmZlZTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjM0LDYgKzEyMzQsOCBAQAog
CQlBMTE4QTlFRjE5MDdBRDZGMDBGN0M5MkIgLyogUXVpY2tMb29rRG9jdW1lbnREYXRhLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE4QTlFRDE5MDdB
RDZGMDBGN0M5MkIgLyogUXVpY2tMb29rRG9jdW1lbnREYXRhLmggKi87IH07CiAJCUExMThBOUYy
MTkwOEI4RUEwMEY3QzkyQiAvKiBfV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTExOEE5RjAxOTA4QjhFQTAwRjdD
OTJCIC8qIF9XS05TRmlsZU1hbmFnZXJFeHRyYXMubW0gKi87IH07CiAJCUExMThBOUYzMTkwOEI4
RUEwMEY3QzkyQiAvKiBfV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE4QTlGMTE5MDhCOEVBMDBGN0M5MkIgLyog
X1dLTlNGaWxlTWFuYWdlckV4dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUExN0ZFOENDMUJFNTdGNDgwMDIxRTM1QyAvKiBBY2Nlc3NpYmls
aXR5SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTE3RkU4Q0ExQkU1N0Y0ODAwMjFFMzVDIC8qIEFjY2Vzc2liaWxpdHlJT1MubW0gKi87IH07CisJ
CUExN0ZFOENEMUJFNTdGNDgwMDIxRTM1QyAvKiBBY2Nlc3NpYmlsaXR5SU9TLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTdGRThDQjFCRTU3RjQ4MDAy
MUUzNUMgLyogQWNjZXNzaWJpbGl0eUlPUy5oICovOyB9OwogCQlBMUE0RkU1QTE4RENFOUZBMDBC
NUVBOEEgLyogX1dLRG93bmxvYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEExQTRGRTU3MThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9hZC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQTRGRTVC
MThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9hZC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQTRGRTU4MThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tE
b3dubG9hZC5tbSAqLzsgfTsKIAkJQTFBNEZFNUMxOERDRTlGQTAwQjVFQThBIC8qIF9XS0Rvd25s
b2FkSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExQTRGRTU5MThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9hZEludGVybmFsLmggKi87
IH07CkBAIC0zNDU2LDYgKzM0NTgsOCBAQAogCQlBMTE4QTlFRDE5MDdBRDZGMDBGN0M5MkIgLyog
UXVpY2tMb29rRG9jdW1lbnREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IFF1aWNrTG9va0RvY3VtZW50RGF0YS5oOyBwYXRoID0gaW9zL1F1aWNrTG9va0RvY3VtZW50RGF0
YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTE4QTlGMDE5MDhCOEVBMDBGN0M5
MkIgLyogX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IF9XS05TRmlsZU1hbmFnZXJFeHRyYXMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUExMThBOUYxMTkwOEI4RUEwMEY3QzkyQiAvKiBfV0tOU0ZpbGVNYW5h
Z2VyRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS05TRmlsZU1h
bmFnZXJFeHRyYXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE3RkU4Q0ExQkU1
N0Y0ODAwMjFFMzVDIC8qIEFjY2Vzc2liaWxpdHlJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBMTdGRThDQjFCRTU3RjQ4MDAyMUUzNUMgLyogQWNjZXNzaWJpbGl0eUlP
Uy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5SU9TLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExQTRGRTU3MThEQ0U5RkEwMEI1RUE4QSAv
KiBfV0tEb3dubG9hZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tEb3du
bG9hZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUE0RkU1ODE4RENFOUZBMDBC
NUVBOEEgLyogX1dLRG93bmxvYWQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBfV0tEb3dubG9hZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFB
NEZFNTkxOERDRTlGQTAwQjVFQThBIC8qIF9XS0Rvd25sb2FkSW50ZXJuYWwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLRG93bmxvYWRJbnRlcm5hbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNTEzNyw2ICs1MTQxLDggQEAKIAkJMkRBOTQ0OTYxODg0RTRE
QTAwRUQ4NkRCIC8qIGlvcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJQTE3RkU4Q0IxQkU1N0Y0ODAwMjFFMzVDIC8qIEFjY2Vzc2liaWxpdHlJT1MuaCAq
LywKKwkJCQlBMTdGRThDQTFCRTU3RjQ4MDAyMUUzNUMgLyogQWNjZXNzaWJpbGl0eUlPUy5tbSAq
LywKIAkJCQlBN0U5M0NFQjE5MjUzMUFBMDBBMURDNDggLyogQ2hpbGRQcm9jZXNzSU9TLm1tICov
LAogCQkJCTJEQTk0NDlEMTg4NEU0RjAwMEVEODZEQiAvKiBHZXN0dXJlVHlwZXMuaCAqLywKIAkJ
CQkyREE5NDQ5NzE4ODRFNEYwMDBFRDg2REIgLyogTmF0aXZlV2ViS2V5Ym9hcmRFdmVudElPUy5t
bSAqLywKQEAgLTc3MDUsNiArNzcxMSw3IEBACiAJCQkJMUEyRDk1NkYxMjg0ODU2NDAwMUVCOTYy
IC8qIENoaWxkUHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4MjgzN0ExNkIzNkE0RjAw
QTI3OEZFIC8qIENoaWxkUHJvY2Vzc0VudHJ5UG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
RkFFQzNBMUIwNjU3NjMwMDA5QzRFNyAvKiBDaGlsZFByb2Nlc3NNZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQTE3RkU4Q0QxQkU1N0Y0ODAwMjFFMzVDIC8qIEFjY2Vzc2liaWxpdHlJT1Mu
aCBpbiBIZWFkZXJzICovLAogCQkJCUUxNTEzQzY3MTY2RUFCQjIwMDE0OUZDQiAvKiBDaGlsZFBy
b2Nlc3NQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjkwRjQyNzIxNzJBMEM3NDAwOTM5RkYw
IC8qIENoaWxkUHJvY2Vzc1N1cHBsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNkY5Rjkw
MTFFMTNFRkMwMERCMTM3MSAvKiBDb21tYW5kTGluZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05ODE0
LDYgKzk4MjEsNyBAQAogCQkJCTJENkNEMTFBMTg5MDU4QTUwMEU1QTRBMCAvKiBWaWV3U25hcHNo
b3RTdG9yZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTI2ODQwNTRGMThCODZDOEUwMDIyQzM4QiAv
KiBWaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNjg0MDU1MjE4
Qjg2RUQ2MDAyMkMzOEIgLyogVmlld1VwZGF0ZURpc3BhdGNoZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJQTE3RkU4Q0MxQkU1N0Y0ODAwMjFFMzVDIC8qIEFjY2Vzc2li
aWxpdHlJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQkyNjg0MDU0QzE4Qjg2QzM1MDAyMkMzOEIg
LyogVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
QTBGMjlFMzEyMEI0NDQyMDA1M0QxQjkgLyogVmlzaXRlZExpbmtTdG9yZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQTYwMjI0QzE4QzE2QjlGMDBDM0U4QzkgLyogVmlzaXRlZExpbmtTdG9yZU1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbSBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUlu
dGVyZmFjZS5tbQppbmRleCBkY2UyNTc0ZGIzNWQxNzE0NjNmODcyY2QwOGY0NTA4Mjk2MjcyYzIx
Li4wM2YyODgyMzAyMTEzNmZlMDhkZDJmNzNjNTRhYmIzNWYzM2I4ZThmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRl
cmZhY2UubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCkBAIC0xNTEsMjggKzE1MSwxMSBAQCB2b2lkIEluaXRX
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAKICAgICAgICAgSU5JVChDRlVSTFJlcXVlc3RB
bGxvd0FsbFBvc3RDYWNoaW5nKTsKIAotI2lmIFBMQVRGT1JNKElPUykKLSAgICAgICAgSU5JVChH
ZXRVc2VyQWdlbnQpOwotICAgICAgICBJTklUKEdldERldmljZU5hbWUpOwotICAgICAgICBJTklU
KEdldE9TTmFtZUZvclVzZXJBZ2VudCk7Ci0gICAgICAgIElOSVQoR2V0UGxhdGZvcm1OYW1lRm9y
TmF2aWdhdG9yKTsKLSAgICAgICAgSU5JVChHZXRWZW5kb3JOYW1lRm9yTmF2aWdhdG9yKTsKLSNl
bmRpZgotCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICAgICAgSU5JVChOU0VsYXN0aWNEZWx0YUZv
clRpbWVEZWx0YSk7CiAgICAgICAgIElOSVQoTlNFbGFzdGljRGVsdGFGb3JSZWJvdW5kRGVsdGEp
OwogICAgICAgICBJTklUKE5TUmVib3VuZERlbHRhRm9yRWxhc3RpY0RlbHRhKTsKICNlbmRpZgot
I2lmIFBMQVRGT1JNKElPUykKLSAgICAgICAgSU5JVChFeGVjdXRhYmxlV2FzTGlua2VkT25PckFm
dGVySU9TVmVyc2lvbik7Ci0gICAgICAgIElOSVQoR2V0RGV2aWNlQ2xhc3MpOwotICAgICAgICBJ
TklUKEdldFNjcmVlblNpemUpOwotICAgICAgICBJTklUKEdldEF2YWlsYWJsZVNjcmVlblNpemUp
OwotICAgICAgICBJTklUKEdldFNjcmVlblNjYWxlRmFjdG9yKTsKLSAgICAgICAgSU5JVChJc0dC
MTgwMzBDb21wbGlhbmNlUmVxdWlyZWQpOwotICAgICAgICBJTklUKElzT3B0aW1pemVkRnVsbHNj
cmVlblN1cHBvcnRlZCk7Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShQVUJMSUNfU1VGRklYX0xJU1Qp
CiAgICAgICAgIElOSVQoSXNQdWJsaWNTdWZmaXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDVjOThiNjJhNzJmOWEw
NzdiNzU4NWM4NzRjZDYwZDYwN2JjNjIwMzAuLjc1YmNiNTU1YjdmOTA2OTY0YTU2MmNiMmIwYjQx
OTJjNGY4ZDQ5NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFBMQVRGT1JNKElP
UykKIAorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUlPUy5oIgogI2ltcG9ydCAiQXNzaXN0ZWROb2Rl
SW5mb3JtYXRpb24uaCIKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIkRyYXdp
bmdBcmVhLmgiCkBAIC00NSw3ICs0Niw2IEBACiAjaW1wb3J0ICJXZWJGcmFtZS5oIgogI2ltcG9y
dCAiV2ViSW1hZ2UuaCIKICNpbXBvcnQgIldlYktpdFN5c3RlbUludGVyZmFjZS5oIgotI2ltcG9y
dCAiV2ViS2l0U3lzdGVtSW50ZXJmYWNlSU9TLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHlNZXNz
YWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgogI2ltcG9ydCA8Q29yZVRleHQvQ1RGb250
Lmg+CkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemVB
Y2Nlc3NpYmlsaXR5KCkKICAgICBbbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgc2V0V2ViUGFn
ZTp0aGlzXTsKICAgICAKICAgICBSZXRhaW5QdHI8Q0ZVVUlEUmVmPiB1dWlkID0gYWRvcHRDRihD
RlVVSURDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCkpOwotICAgIE5TRGF0YSAqcmVtb3RlVG9r
ZW4gPSBXS0FYUmVtb3RlVG9rZW4odXVpZC5nZXQoKSk7CisgICAgTlNEYXRhICpyZW1vdGVUb2tl
biA9IEFYUmVtb3RlVG9rZW4odXVpZC5nZXQoKSk7CiAgICAgCiAgICAgSVBDOjpEYXRhUmVmZXJl
bmNlIGRhdGFUb2tlbiA9IElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihbcmVtb3RlVG9rZW4gYnl0ZXNdKSwgW3JlbW90ZVRva2VuIGxlbmd0aF0pOwog
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNz
aWJpbGl0eVRva2VuKGRhdGFUb2tlbikpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264556</attachid>
            <date>2015-11-01 22:26:59 -0800</date>
            <delta_ts>2015-11-01 22:34:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150763-20151101222604.patch</filename>
            <type>text/plain</type>
            <size>107699</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxNzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjZmZDdkY2Q4MDEzMjRj
MGZhNWNiZmFkYWRjM2M3MzI0ZTMwZmNkZS4uNzBiMTZkYjllZjBhMjYwZTIwMzE3ZmJlYWE2MGM2
OTc0NWFiMDJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE1LTEwLTMxICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIGlPUy1vbmx5IFdl
YktpdFN5c3RlbUludGVyZmFjZSBjYWxscyB3aXRoIFNQSQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogY29uZmlnLmg6IFJlbW92ZWQgV0VCQ09SRV9OQVZJR0FUT1JfUExB
VEZPUk0gYW5kIFdFQkNPUkVfTkFWSUdBVE9SX1ZFTkRPUi4KKyAgICAgICAgKiBjc3MvTWVkaWFR
dWVyeUV2YWx1YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1J1bm5pbmdPbklQaG9uZU9y
SVBvZCk6IFVzZWQgZGV2aWNlQ2xhc3MoKSBpbnN0ZWFkIG9mIGlvc0RldmljZUNsYXNzKCkuCisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnNob3VsZE92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rp
b24pOiBVc2VkIHN1cHBvcnRzUGljdHVyZUluUGljdHVyZSgpIGluc3RlYWQgb2Ygd2tJc09wdGlt
aXplZEZ1bGxzY3JlZW5TdXBwb3J0ZWQoKS4KKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZE5vdFBlcmZvcm1VUkxBZGp1c3RtZW50
KTogVXNlZCBkeWxkX2dldF9wcm9ncmFtX3Nka192ZXJzaW9uKCkgaW5zdGVhZCBvZiBpb3NFeGVj
dXRhYmxlV2FzTGlua2VkT25PckFmdGVyVmVyc2lvbigpLgorICAgICAgICAqIGh0bWwvSFRNTFZp
ZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Ojp3ZWJr
aXRTdXBwb3J0c1ByZXNlbnRhdGlvbk1vZGUpOiBVc2VkIHN1cHBvcnRzUGljdHVyZUluUGljdHVy
ZSgpIGluc3RlYWQgb2Ygd2tJc09wdGltaXplZEZ1bGxzY3JlZW5TdXBwb3J0ZWQoKS4KKyAgICAg
ICAgKiBwYWdlL05hdmlnYXRvckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1O
YW1lRm9yTmF2aWdhdG9yKTogQWRkZWQgdG8gcmV0dXJuIGRldmljZU5hbWUoKS4KKyAgICAgICAg
KiBwYWdlL1NldHRpbmdzLmg6CisgICAgICAgICogcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0aW9uOjp0ZXh0RG9jdW1l
bnRQYXJhbWV0ZXJzKTogVXNlZCBzY3JlZW5TaXplKCkgaW5zdGVhZCBvZiB3a0dldFNjcmVlblNp
emUoKS4KKyAgICAgICAgKiBwYWdlL2lvcy9Vc2VyQWdlbnRJT1MubW06CisgICAgICAgIChXZWJD
b3JlOjppc0NsYXNzaWMpOiBBZGRlZCB0byByZXR1cm4gLVtVSUFwcGxpY2F0aW9uIF9pc0NsYXNz
aWNdLgorICAgICAgICAoV2ViQ29yZTo6b3NOYW1lRm9yVXNlckFnZW50KTogVXBzdHJlYW1lZCB0
aGUgaW1wbGVtZW50YXRpb24gb2YgV0tHZXRPU05hbWVGb3JVc2VyQWdlbnQoKSBmcm9tIFdlYktp
dFN5c3RlbUludGVyZmFjZS4KKyAgICAgICAgKFdlYkNvcmU6OmRldmljZU5hbWUpOiBEaXR0byBm
b3Igd2tHZXREZXZpY2VOYW1lKCkuCisgICAgICAgIChXZWJDb3JlOjpzdGFuZGFyZFVzZXJBZ2Vu
dFdpdGhBcHBsaWNhdGlvbk5hbWUpOiBDYWxsZWQgZGV2aWNlTmFtZSgpIGFuZCBvc05hbWVGb3JV
c2VyQWdlbnQoKS4KKyAgICAgICAgKiBwYWdlL21hYy9TZXR0aW5nc0NvY29hLm1tOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2V0dGluZ3NNYWMubW0uCisgICAgICAgIChX
ZWJDb3JlOjpTZXR0aW5nczo6ZGVmYXVsdE1pbmltdW1ab29tRm9udFNpemUpOiBVcHN0cmVhbWVk
IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBXS0dldE1pbmltdW1ab29tRm9udFNpemUoKSBmcm9tIFdl
YktpdFN5c3RlbUludGVyZmFjZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5o
OgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9EZXZpY2UuY3BwOiBBZGRlZCBmdW5jdGlvbnMgdGhh
dCBhbnN3ZXIgcXVlcmllcyBhYm91dCB0aGUgaU9TIGRldmljZSBmcm9tIE1vYmlsZUdlc3RhbHQu
CisgICAgICAgIChXZWJDb3JlOjpkZXZpY2VDbGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpkZXZp
Y2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmRldmljZUhhc0lQYWRDYXBhYmlsaXR5KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pb3MvRGV2aWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bs
YXRmb3JtU2NyZWVuSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuUFBJRmFjdG9yKTog
VXNlZCBNR0dldFNJbnQzMkFuc3dlcigpIGFuZCBNR0dldEZsb2F0MzJBbnN3ZXIoKSBpbnN0ZWFk
IG9mIG1vYmlsZUdlc3RhbHRGbG9hdFZhbHVlKCkuCisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5T
aXplKTogVXBzdHJlYW1lZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgV0tHZXRTY3JlZW5TaXplKCkg
ZnJvbSBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuCisgICAgICAgIChXZWJDb3JlOjphdmFpbGFibGVT
Y3JlZW5TaXplKTogRGl0dG8gZm9yIFdLR2V0QXZhaWxhYmxlU2NyZWVuU2l6ZSgpLgorICAgICAg
ICAoV2ViQ29yZTo6c2NyZWVuU2NhbGVGYWN0b3IpOiBEaXR0byBmb3IgV0tHZXRTY3JlZW5TY2Fs
ZUZhY3RvcigpIGFuZCBXS0dldFNjYWxlRmFjdG9yRm9yU2NyZWVuKCkuCisgICAgICAgIChXZWJD
b3JlOjptb2JpbGVHZXN0YWx0RmxvYXRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MuaDogUmVtb3ZlZC4KKyAgICAgICAgKGlv
c0V4ZWN1dGFibGVXYXNMaW5rZWRPbk9yQWZ0ZXJWZXJzaW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KGlvc0RldmljZUNsYXNzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViQ29y
ZVN5c3RlbUludGVyZmFjZUlPUy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDo6bWF5QXV0b21hdGljYWxseVNob3dWaWRlb1BpY3R1cmVJblBpY3R1
cmUpOiBVc2VkIHN1cHBvcnRzUGljdHVyZUluUGljdHVyZSgpIGluc3RlYWQgb2Ygd2tJc09wdGlt
aXplZEZ1bGxzY3JlZW5TdXBwb3J0ZWQoKS4KKyAgICAgICAgKFdlYkNvcmU6OnN1cHBvcnRzUGlj
dHVyZUluUGljdHVyZSk6IFVwc3RyZWFtZWQgdGhlIGltcGxlbWVudGF0aW9uIG9mIFdLSXNPcHRp
bWl6ZWRGdWxsc2NyZWVuU3VwcG9ydGVkKCkgZnJvbSBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuCisg
ICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XQUtXaW5kb3cubW06CisgICAgICAgICgtW1dBS1dp
bmRvdyBpbml0V2l0aExheWVyOl0pOiBVc2VkIHNjcmVlblNjYWxlRmFjdG9yKCkgaW5zdGVhZCBv
ZiBXS0dldFNjcmVlblNjYWxlRmFjdG9yKCkuCisgICAgICAgICgtW1dBS1dpbmRvdyBpbml0V2l0
aEZyYW1lOl0pOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2FrL1dLR3JhcGhpY3Mu
bW06CisgICAgICAgIChXS0dyYXBoaWNzQ3JlYXRlSW1hZ2VGcm9tQnVuZGxlV2l0aE5hbWUpOiBE
aXR0by4KKyAgICAgICAgKFdLRHJhd1BhdHRlcm5CaXRtYXApOiBEaXR0by4KKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L3NwaS9jb2NvYS9EeW5hbWljTGlua2VyU1BJLmg6IERlZmluZWQgYWRkaXRpb25hbCBEWUxEX0lP
U19WRVJTSU9OIG1hY3Jvcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9zcGkvaW9zL01vYmlsZUdlc3Rh
bHRTUEkuaDogRGVmaW5lZCBhZGRpdGlvbmFsIE1vYmlsZUdlc3RhbHQgcXVlcmllcywgZW51bSBN
R0RldmljZUNsYXNzLCBNR0dldFNJbnQzMkFuc3dlciwgYW5kIE1HR2V0RmxvYXQzMkFuc3dlci4K
KyAgICAgICAgKiBwbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9pb3MvVUlDb2xvclNQSS5oLCBhbmQgYWRkZWQgU1BJIGRl
Y2xhcmF0aW9ucyBmb3IgVUlBcHBsaWNhdGlvbiBhbmQgVUlTY3JlZW4uCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorCiAyMDE1LTEwLTI4ICBFcmljIENhcmxzb24gIDxl
cmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFtNZWRpYVN0cmVhbV0gUGxheSBNZWRp
YVN0cmVhbSB0aHJvdWdoIG1lZGlhIGVsZW1lbnQgYW5kIHJlbmRlcmVkIHRvIGNhbnZhcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9pb3Mv
Q2hhbmdlTG9nCmluZGV4IDRmYTViYWVmODE4ZDk2MTM0NTNmMDQ3ZjZjYzRlMGIxOGZkMTUwZWMu
LjAzOTAyZTI4NmE5NmJlNmI3ZTcxMGUzM2NjYTQ5MmUxMjNiOGIxNmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNS0xMC0zMSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBpT1Mtb25seSBXZWJLaXRTeXN0ZW1JbnRlcmZhY2Ug
Y2FsbHMgd2l0aCBTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1MDc2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogTWlzYy9XZWJVSUtpdFN1cHBvcnQubW06CisgICAgICAgIChsaW5rZWRPbk9yQWZ0
ZXJJT1M1KTogVXNlZCBkeWxkX2dldF9wcm9ncmFtX3Nka192ZXJzaW9uKCkgaW5zdGVhZCBvZiBp
b3NFeGVjdXRhYmxlV2FzTGlua2VkT25PckFmdGVyVmVyc2lvbigpLgorICAgICAgICAoV2ViS2l0
R2V0TWluaW11bVpvb21Gb250U2l6ZSk6IFVzZWQgU2V0dGluZ3M6OmRlZmF1bHRNaW5pbXVtWm9v
bUZvbnRTaXplKCkgaW5zdGVhZCBvZiBXS0dldE1pbmltdW1ab29tRm9udFNpemUoKS4KKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW06CisgICAgICAgIChXZWJD
aHJvbWVDbGllbnRJT1M6OnNjcmVlblNpemUpOiBVc2VkIHNjcmVlblNpemUoKSBpbnN0ZWFkIG9m
IFdLR2V0U2NyZWVuU2l6ZSgpLgorCiAyMDE1LTEwLTE0ICBaaHVvIExpICA8emFjaGxpQGFwcGxl
LmNvbT4KIAogICAgICAgICBBdWdtZW50IDxpbnB1dCB0eXBlPXNlYXJjaD7igJlzIHJlY2VudCBz
ZWFyY2ggaGlzdG9yeSB3aXRoIHRoZSB0aW1lIGVhY2ggZW50cnkgd2FzIGFkZGVkLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCmluZGV4IDRmOWM1NWU0YTQxNzIyNWY2OTE4OTJiNDA2Njk1NWYyNzA5ZDA0M2EuLjFk
YzMxODkyMjg4NzVjNTRkNjRjZTM0MDY0Mjg4NTE4MTAwODIxMzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOCBAQAorMjAxNS0xMC0zMSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5j
b20+CisKKyAgICAgICAgUmVwbGFjZSBpT1Mtb25seSBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgY2Fs
bHMgd2l0aCBTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MDc2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tOgorICAgICAgICAoSW5p
dFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlZpZXcvV2Vi
UHJlZmVyZW5jZXMubW06CisgICAgICAgICgrW1dlYlByZWZlcmVuY2VzIGluaXRpYWxpemVdKTog
VXNlZCBkZXZpY2VDbGFzcygpIGFuZCBTZXR0aW5nczo6ZGVmYXVsdE1pbmltdW1ab29tRm9udFNp
emUoKSBpbnN0ZWFkIG9mIFdLR2V0RGV2aWNlQ2xhc3MoKSBhbmQgV0tHZXRNaW5pbXVtWm9vbUZv
bnRTaXplKCkuCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoc2hvdWxk
QWxsb3dQaWN0dXJlSW5QaWN0dXJlTWVkaWFQbGF5YmFjayk6IFVzZWQgZHlsZF9nZXRfcHJvZ3Jh
bV9zZGtfdmVyc2lvbigpIGluc3RlYWQgb2YgaW9zRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JBZnRl
clZlcnNpb24oKS4KKyAgICAgICAgKC1bV2ViVmlldyBfdXBkYXRlU2NyZWVuU2NhbGVGcm9tV2lu
ZG93XSk6IFVzZWQgc2NyZWVuU2NhbGVGYWN0b3IoKSBpbnN0ZWFkIG9mIFdLR2V0U2NyZWVuU2Nh
bGVGYWN0b3IoKS4KKwogMjAxNS0xMC0yOCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBw
bGUuY29tPgogCiAgICAgICAgIFdlYktpdCwgbm90IFdlYkNvcmUsIHNob3VsZCBkbyBjb250ZXh0
IG1lbnUgY29udmVyc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDM5MTJiNDM3YmRlNGRjY2M3MzU0OGZiYzRk
OGZkY2FkNTY0OWIzNWEuLjM5ZmU5NjE0NmZjYTAxYWYxMjZhY2I0ZWM5NjcxNWNkNmZkNmMyNzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxNS0xMC0zMSAgQW5keSBFc3RlcyAgPGFl
c3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBpT1Mtb25seSBXZWJLaXRTeXN0ZW1J
bnRlcmZhY2UgY2FsbHMgd2l0aCBTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1MDc2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogUGxhdGZvcm0vaW9zL0FjY2Vzc2liaWxpdHlJT1MuaDogQWRkZWQu
CisgICAgICAgICogUGxhdGZvcm0vaW9zL0FjY2Vzc2liaWxpdHlJT1MubW06IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpjcmVhdGVBY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW4pOiBVcHN0cmVhbWVk
IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBXS0FYUmVtb3RlVG9rZW4oKSBmcm9tIFdlYktpdFN5c3Rl
bUludGVyZmFjZS4KKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5o
OiBVc2VkIFNldHRpbmdzOjpkZWZhdWx0TWluaW11bVpvb21Gb250U2l6ZSgpIGluc3RlYWQgb2Yg
V0tHZXRNaW5pbXVtWm9vbUZvbnRTaXplKCkuCisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVu
Y2VzU3RvcmUuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
OgorICAgICAgICAoc2hvdWxkQWxsb3dQaWN0dXJlSW5QaWN0dXJlTWVkaWFQbGF5YmFjayk6IFVz
ZWQgZHlsZF9nZXRfcHJvZ3JhbV9zZGtfdmVyc2lvbigpIGluc3RlYWQgb2YgaW9zRXhlY3V0YWJs
ZVdhc0xpbmtlZE9uT3JBZnRlclZlcnNpb24oKS4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF90YWtl
Vmlld1NuYXBzaG90XSk6IFVzZWQgc2NyZWVuU2NhbGVGYWN0b3IoKSBpbnN0ZWFkIG9mIFdLR2V0
U2NyZWVuU2NhbGVGYWN0b3IoKS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
aW5pdF0pOiBVc2VkIGRldmljZUNsYXNzKCkgaW5zdGVhZCBvZiBXS0dldERldmljZUNsYXNzKCku
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tOgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhQcm9jZXNzUG9vbDpjb25maWd1
cmF0aW9uOl0pOiBVc2VkIHNjcmVlblNjYWxlRmFjdG9yKCkgaW5zdGVhZCBvZiBXS0dldFNjYWxl
RmFjdG9yRm9yU2NyZWVuKCkuCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3VwZGF0ZUZvclNj
cmVlbjpdKTogRGl0dG8uCisgICAgICAgIChzdG9yZUFjY2Vzc2liaWxpdHlSZW1vdGVDb25uZWN0
aW9uSW5mb3JtYXRpb24pOiBVcHN0cmVhbWVkIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBXS0FYU3Rv
cmVSZW1vdGVDb25uZWN0aW9uSW5mb3JtYXRpb24oKSBmcm9tIFdlYktpdFN5c3RlbUludGVyZmFj
ZS4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfYWNjZXNzaWJpbGl0eVJlZ2lzdGVyVUlQcm9j
ZXNzVG9rZW5zXSk6IFVzZWQgY3JlYXRlQWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuKCkgYW5kIHN0
b3JlQWNjZXNzaWJpbGl0eVJlbW90ZUNvbm5lY3Rpb25JbmZvcm1hdGlvbigpIGluc3RlYWQgb2Yg
V0tBWFJlbW90ZVRva2VuKCkgYW5kIFdLQVhTdG9yZVJlbW90ZUNvbm5lY3Rpb25JbmZvcm1hdGlv
bigpLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
OgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnNjcmVlblNpemUpOiBVc2VkIHNjcmVlblNpemUoKSBpbnN0
ZWFkIG9mIFdLR2V0U2NyZWVuU2l6ZSgpLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmF2YWlsYWJsZVNjcmVlblNpemUpOiBVc2VkIGF2YWlsYWJsZVNjcmVlblNpemUoKSBpbnN0ZWFk
IG9mIFdLR2V0QXZhaWxhYmxlU2NyZWVuU2l6ZSgpLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnRleHRBdXRvc2l6aW5nV2lkdGgpOiBVc2VkIHNjcmVlblNpemUoKSBpbnN0ZWFkIG9m
IFdLR2V0U2NyZWVuU2l6ZSgpLgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0
ZW1JbnRlcmZhY2UubW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemVBY2Nlc3NpYmlsaXR5
KTogVXNlZCBjcmVhdGVBY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW4oKSBpbnN0ZWFkIG9mIFdLQVhS
ZW1vdGVUb2tlbigpLgorCiAyMDE1LTEwLTI4ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25A
YXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1MWM2YTIyMjNkNjgzMjNh
NjEwNGJlNDZiM2QxZTBmZThhYmZhYjc5Li4yMmMwZjE4MDlhNzE5M2YxYmQzMTQ4YjQwMmQ2ODlh
N2YxNDdhOGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xMzU5LDcgKzEzNTksNiBAQAogCQkzMURFQTQ1NTFCMzlGNEQ5MDBG
NzcxNzggLyogV2ViU3lzdGVtQmFja2Ryb3BMYXllci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxREVBNDUzMUIzOUY0RDkwMEY3NzE3OCAvKiBXZWJT
eXN0ZW1CYWNrZHJvcExheWVyLm1tICovOyB9OwogCQkzMURFQTQ1NjFCMzlGNEQ5MDBGNzcxNzgg
LyogV2ViU3lzdGVtQmFja2Ryb3BMYXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzFERUE0NTQxQjM5RjREOTAwRjc3MTc4IC8qIFdlYlN5c3RlbUJh
Y2tkcm9wTGF5ZXIuaCAqLzsgfTsKIAkJMzFERjYzNTcxQUYxODdERDAwNzhGRDkxIC8qIE5TQ29s
b3JTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMx
REY2MzU2MUFGMTg3REQwMDc4RkQ5MSAvKiBOU0NvbG9yU1BJLmggKi87IH07Ci0JCTMxREY2MzU5
MUFGMTk0RjAwMDc4RkQ5MSAvKiBVSUNvbG9yU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMURGNjM1ODFBRjE5NEYwMDA3OEZEOTEgLyogVUlDb2xv
clNQSS5oICovOyB9OwogCQkzMUVBRjk3RTEyMTQzNUE0MDBFN0MxQkYgLyogRGV2aWNlTW90aW9u
Q2xpZW50SU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMUVBRjk3QzEyMTQzNUE0MDBFN0MxQkYgLyogRGV2aWNlTW90aW9uQ2xpZW50SU9TLmggKi87
IH07CiAJCTMxRUFGOTdGMTIxNDM1QTQwMEU3QzFCRiAvKiBEZXZpY2VNb3Rpb25DbGllbnRJT1Mu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUVBRjk3
RDEyMTQzNUE0MDBFN0MxQkYgLyogRGV2aWNlTW90aW9uQ2xpZW50SU9TLm1tICovOyB9OwogCQkz
MUVDMUUyODE0RkY2MEVFMDBDOTQ2NjIgLyogSlNOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJh
Y2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFF
QzFFMjYxNEZGNjBFRTAwQzk0NjYyIC8qIEpTTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNr
LmNwcCAqLzsgfTsKQEAgLTE2NzgsNyArMTY3Nyw2IEBACiAJCTQ0QTI4QUFGMTJERkI4QkYwMEFF
OTIzQiAvKiBNYXRoTUxOYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDRBMjhBQUUxMkRGQjhCRjAwQUU5MjNCIC8qIE1hdGhNTE5hbWVzLmggKi87
IH07CiAJCTQ0QzM2M0YwMEZBQTdCQjMwMDk3RjhDQyAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVj
a3NJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0
QzM2M0VFMEZBQTdCQjMwMDk3RjhDQyAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NEMzNjNG
MTBGQUE3QkIzMDA5N0Y4Q0MgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRDMzYzRUYwRkFBN0JC
MzAwOTdGOENDIC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5tbSAqLzsgfTsKLQkJNDRD
M0NGRTgxNTU2QkU1RDAwMDEzNjA5IC8qIFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QzNDRkU3MTU1NkJF
NUQwMDAxMzYwOSAvKiBXZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDRDOTkxODIwRjNEMUUwRDAwNTg2
NjcwIC8qIFNjcm9sbGJhclRoZW1lSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDRDOTkxODEwRjNEMUUwRDAwNTg2NjcwIC8qIFNjcm9sbGJhclRo
ZW1lSU9TLm1tICovOyB9OwogCQk0NEM5OTE4NjBGM0QxRUJFMDA1ODY2NzAgLyogU2Nyb2xsYmFy
VGhlbWVJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ0Qzk5MTg1MEYzRDFFQkUwMDU4NjY3MCAvKiBTY3JvbGxiYXJUaGVtZUlPUy5oICovOyB9Owog
CQk0NEM5OTE5RjBGM0QyMTBFMDA1ODY2NzAgLyogVGhlbWVJT1MuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Qzk5MTlEMEYzRDIxMEUwMDU4NjY3MCAv
KiBUaGVtZUlPUy5oICovOyB9OwpAQCAtNDAzMCw2ICs0MDI4LDcgQEAKIAkJQTE0OTc4NzExQUJB
RjNBNTAwQ0VGN0U0IC8qIFBsYXRmb3JtQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0OTc4NzAxQUJBRjNBNTAwQ0VGN0U0IC8q
IFBsYXRmb3JtQ29udGVudEZpbHRlci5oICovOyB9OwogCQlBMTdDODEyMjBGMkE1Q0Y3MDA1REFB
RUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExN0M4MTIwMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVu
dEZhY3RvcnkuY3BwICovOyB9OwogCQlBMTdDODEyMzBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVs
ZW1lbnRGYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMTdDODEyMTBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmggKi87
IH07CisJCUExODJENUI3MUJFNzIyNjcwMDg3QTdDQyAvKiBTZXR0aW5nc0NvY29hLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE4MkQ1QjYxQkU3MjI2
MjAwODdBN0NDIC8qIFNldHRpbmdzQ29jb2EubW0gKi87IH07CiAJCUExODg5MEFFMUFBMTNGMjUw
MDI2QzMwMSAvKiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExODg5MEFDMUFBMTNGMjUwMDI2QzMw
MSAvKiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbSAqLzsgfTsKIAkJQTE4ODkwQUYx
QUExM0YyNTAwMjZDMzAxIC8qIFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTg4OTBBRDFBQTEzRjI1
MDAyNkMzMDEgLyogUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaCAqLzsgfTsKIAkJQTE5
QUVBMjExQUFBODA4NjAwQjUyQjI1IC8qIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE5QUVBMUUxQUFB
ODA2RTAwQjUyQjI1IC8qIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oICovOyB9OwpAQCAt
NDA1NSw2ICs0MDU0LDkgQEAKIAkJQTFFMTE1NDYxMzAxNUM0RTAwNTRBQzhDIC8qIFBvaW50TGln
aHRTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTFFMTE1NDUxMzAxNUM0RTAwNTRBQzhDIC8qIFBvaW50TGlnaHRTb3VyY2UuY3BwICovOyB9
OwogCQlBMUUxMTU0ODEzMDE1QzVEMDA1NEFDOEMgLyogU3BvdExpZ2h0U291cmNlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRTExNTQ3MTMwMTVD
NUQwMDU0QUM4QyAvKiBTcG90TGlnaHRTb3VyY2UuY3BwICovOyB9OwogCQlBMUU1QjMxRjFBQUQx
REE0MDA2RUJFRkIgLyogSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRTVCMzFEMUFBRDFE
QTQwMDZFQkVGQiAvKiBKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDdXN0b20uY3BwICovOyB9
OworCQlBMUVENzc4QzFCRTMyOTQwMDBEQzE3OTEgLyogRGV2aWNlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRUQ3NzhBMUJFMzI5M0YwMERDMTc5
MSAvKiBEZXZpY2UuY3BwICovOyB9OworCQlBMUVENzc4RDFCRTMyOTQwMDBEQzE3OTEgLyogRGV2
aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUVE
Nzc4QjFCRTMyOTQwMDBEQzE3OTEgLyogRGV2aWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTFFRDc3OEYxQkU0MjkxODAwREMxNzkxIC8qIFVJ
S2l0U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
MUVENzc4RTFCRTQyOTE4MDBEQzE3OTEgLyogVUlLaXRTUEkuaCAqLzsgfTsKIAkJQTJCOTIxNzMx
NkM1Q0M0MjAwNDFEQ0Q5IC8qIEludFJlY3RFeHRlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEyQjkyMTcyMTZDNUNDNDIwMDQxRENEOSAvKiBJbnRS
ZWN0RXh0ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQTMxQzRFNEQxNkUwMkFBNjAwMkY3OTU3IC8qIE9FU1RleHR1cmVIYWxmRmxvYXQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMxQzRFNEMx
NkUwMkFBNjAwMkY3OTU3IC8qIE9FU1RleHR1cmVIYWxmRmxvYXQuY3BwICovOyB9OwogCQlBMzFD
NEU0RjE2RTAyQUI0MDAyRjc5NTcgLyogT0VTVGV4dHVyZUhhbGZGbG9hdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMxQzRFNEUxNkUwMkFCNDAwMkY3
OTU3IC8qIE9FU1RleHR1cmVIYWxmRmxvYXQuaCAqLzsgfTsKQEAgLTYwNTksNyArNjA2MSw3IEBA
CiAJCUNFMTI1MjNEMUExNjc2Q0QwMDg2NDQ4MCAvKiBRdWFydHpDb3JlU1BJLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTEyNTIzQzFBMTY3NkNEMDA4
NjQ0ODAgLyogUXVhcnR6Q29yZVNQSS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUNFMTI1MjQxMUExNkIxQjYwMDg2NDQ4MCAvKiBNZWRpYVBsYXll
clNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Ux
MjUyNDAxQTE2QjFCNjAwODY0NDgwIC8qIE1lZGlhUGxheWVyU1BJLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0UxMjUyNDMxQTE2QzAxQTAwODY0
NDgwIC8qIENvcmVVSVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0UxMjUyNDIxQTE2QzAxQTAwODY0NDgwIC8qIENvcmVVSVNQSS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUNFMTI1MjQ1MUExNkMy
MjUwMDg2NDQ4MCAvKiBEeW5hbWljTGlua2VyU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTEyNTI0NDFBMTZDMjI1MDA4NjQ0ODAgLyogRHluYW1p
Y0xpbmtlclNQSS5oICovOyB9OworCQlDRTEyNTI0NTFBMTZDMjI1MDA4NjQ0ODAgLyogRHluYW1p
Y0xpbmtlclNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0UxMjUyNDQxQTE2QzIyNTAwODY0NDgwIC8qIER5bmFtaWNMaW5rZXJTUEkuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTEyNTI0NzFBMTZD
MkMyMDA4NjQ0ODAgLyogTlNQb2ludGVyRnVuY3Rpb25zU1BJLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTEyNTI0NjFBMTZDMkMyMDA4NjQ0ODAgLyog
TlNQb2ludGVyRnVuY3Rpb25zU1BJLmggKi87IH07CiAJCUNFMTI1MjQ5MUExNkMzQkMwMDg2NDQ4
MCAvKiBNb2JpbGVHZXN0YWx0U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRTEyNTI0ODFBMTZDM0JDMDA4NjQ0ODAgLyogTW9iaWxlR2VzdGFsdFNQ
SS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNF
MTI1MjREMUExQTc3REUwMDg2NDQ4MCAvKiBJT1BNTGliU1BJLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTEyNTI0QzFBMUE3N0RFMDA4NjQ0ODAgLyog
SU9QTUxpYlNQSS5oICovOyB9OwpAQCAtNjM0OCw3ICs2MzUwLDYgQEAKIAkJRTFDMjY2REIxODMx
OTkzNTAwM0Y4QjMzIC8qIENyeXB0b0FsZ29yaXRobVJzYUtleVBhcmFtc1dpdGhIYXNoLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUMyNjZEQTE4MzE5
OTM1MDAzRjhCMzMgLyogQ3J5cHRvQWxnb3JpdGhtUnNhS2V5UGFyYW1zV2l0aEhhc2guaCAqLzsg
fTsKIAkJRTFDMjY2REUxODMxOUYzMTAwM0Y4QjMzIC8qIENyeXB0b0tleURhdGFSU0FDb21wb25l
bnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUx
QzI2NkRDMTgzMTlGMzEwMDNGOEIzMyAvKiBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cy5jcHAg
Ki87IH07CiAJCUUxQzI2NkRGMTgzMTlGMzEwMDNGOEIzMyAvKiBDcnlwdG9LZXlEYXRhUlNBQ29t
cG9uZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTFDMjY2REQxODMxOUYzMTAwM0Y4QjMzIC8qIENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzLmgg
Ki87IH07Ci0JCUUxQzJGMjRBMTUzM0EyMTIwMDgzRjk3NCAvKiBTZXR0aW5nc01hYy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQzJGMjQ4MTUzM0Ey
MTIwMDgzRjk3NCAvKiBTZXR0aW5nc01hYy5tbSAqLzsgfTsKIAkJRTFDMzYyRUYwRUFGMkFBOTAw
NzQxMEJDIC8qIEpTV29ya2VyTG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUxQzM2MkVEMEVBRjJBQTkwMDc0MTBCQyAvKiBKU1dvcmtlckxv
Y2F0aW9uLmggKi87IH07CiAJCUUxQzM2MkYwMEVBRjJBQTkwMDc0MTBCQyAvKiBKU1dvcmtlckxv
Y2F0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUxQzM2MkVFMEVBRjJBQTkwMDc0MTBCQyAvKiBKU1dvcmtlckxvY2F0aW9uLmNwcCAqLzsgfTsK
IAkJRTFDMzZDMDMwRUIwNzZENjAwNzQxMEJDIC8qIEpTRE9NR2xvYmFsT2JqZWN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUMzNkMwMjBFQjA3NkQ2
MDA3NDEwQkMgLyogSlNET01HbG9iYWxPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODY5Niw3ICs4Njk3LDYgQEAKIAkJMzFERUE0NTMx
QjM5RjREOTAwRjc3MTc4IC8qIFdlYlN5c3RlbUJhY2tkcm9wTGF5ZXIubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTeXN0ZW1CYWNrZHJvcExheWVyLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMURFQTQ1NDFCMzlGNEQ5MDBGNzcxNzggLyog
V2ViU3lzdGVtQmFja2Ryb3BMYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJTeXN0ZW1CYWNrZHJvcExheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTMxREY2MzU2MUFGMTg3REQwMDc4RkQ5MSAvKiBOU0NvbG9yU1BJLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE5TQ29sb3JTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMzFERjYzNTgxQUYxOTRGMDAwNzhGRDkxIC8qIFVJQ29sb3JTUEkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVUlDb2xvclNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzMUU4RDhCQTE2MEJDOTRCMDA0Q0U4RjUgLyogUmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyU25h
cHNob3R0ZWRQbHVnSW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUU4RDhC
QjE2MEJDOTRDMDA0Q0U4RjUgLyogUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFFQUY5N0MxMjE0MzVBNDAwRTdDMUJGIC8qIERldmlj
ZU1vdGlvbkNsaWVudElPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZXZp
Y2VNb3Rpb25DbGllbnRJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkwMzcs
NyArOTAzNyw2IEBACiAJCTQ0QTI4QUFFMTJERkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoTUxOYW1lcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NEMzNjNFRTBGQUE3QkIzMDA5N0Y4Q0MgLyogUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NEMzNjNFRjBGQUE3QkIzMDA5N0Y4Q0MgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tz
SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NEMz
Q0ZFNzE1NTZCRTVEMDAwMTM2MDkgLyogV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0Qzk5MTgxMEYzRDFFMEQwMDU4NjY3MCAv
KiBTY3JvbGxiYXJUaGVtZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFNjcm9sbGJhclRoZW1lSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NEM5OTE4NTBGM0QxRUJFMDA1ODY2NzAgLyogU2Nyb2xsYmFyVGhlbWVJT1MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsYmFyVGhlbWVJT1MuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRDOTkxOUQwRjNEMjEwRTAwNTg2NjcwIC8qIFRoZW1lSU9T
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRoZW1lSU9TLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTU2NSw2ICsxMTU2NCw3IEBACiAJCUExNDk3ODcwMUFC
QUYzQTUwMENFRjdFNCAvKiBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1Db250ZW50RmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUExN0M4MTIwMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZh
Y3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTEVsZW1l
bnRGYWN0b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3QzgxMjEwRjJB
NUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBIVE1MRWxlbWVudEZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTE4MkQ1QjYxQkU3MjI2MjAwODdBN0NDIC8qIFNldHRpbmdzQ29jb2EubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTZXR0aW5nc0NvY29hLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTg4OTBBQzFBQTEzRjI1MDAyNkMzMDEgLyog
UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE4ODkwQUQxQUExM0YyNTAwMjZDMzAxIC8qIFBhcmVu
dGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUExOUFFQTFDMUFBQTdDNDkwMEI1MkIyNSAvKiBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExNTg2LDYgKzExNTg2LDkgQEAKIAkJQTFFMTE1NDUxMzAx
NUM0RTAwNTRBQzhDIC8qIFBvaW50TGlnaHRTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUG9pbnRMaWdodFNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUExRTExNTQ3MTMwMTVDNUQwMDU0QUM4QyAvKiBTcG90TGlnaHRTb3VyY2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3BvdExpZ2h0U291cmNl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFFNUIzMUQxQUFEMURBNDAwNkVC
RUZCIC8qIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0N1c3RvbS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDdXN0
b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUVENzc4QTFCRTMyOTNGMDBE
QzE3OTEgLyogRGV2aWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IERldmljZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExRUQ3NzhCMUJFMzI5
NDAwMERDMTc5MSAvKiBEZXZpY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RGV2aWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExRUQ3NzhFMUJFNDI5MTgw
MERDMTc5MSAvKiBVSUtpdFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBV
SUtpdFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMjA4RTIyMkE1NkEwQzc1
NzVGMkE3MkUgLyogUmVuZGVyTWF0aE1MTWVuY2xvc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVuZGVyTWF0aE1MTWVuY2xvc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTJCOTIxNzIxNkM1Q0M0MjAwNDFEQ0Q5IC8qIEludFJlY3RFeHRlbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50UmVjdEV4dGVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBMzFDNEU0QzE2RTAyQUE2MDAyRjc5NTcgLyogT0VTVGV4dHVy
ZUhhbGZGbG9hdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPRVNU
ZXh0dXJlSGFsZkZsb2F0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MjE2
LDcgKzE0MjE5LDYgQEAKIAkJRTFDMjY2REExODMxOTkzNTAwM0Y4QjMzIC8qIENyeXB0b0FsZ29y
aXRobVJzYUtleVBhcmFtc1dpdGhIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENyeXB0b0FsZ29yaXRobVJzYUtleVBhcmFtc1dpdGhIYXNoLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUxQzI2NkRDMTgzMTlGMzEwMDNGOEIzMyAvKiBDcnlwdG9LZXlEYXRh
UlNBQ29tcG9uZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
cnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUxQzI2NkREMTgzMTlGMzEwMDNGOEIzMyAvKiBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9LZXlEYXRhUlNBQ29t
cG9uZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMUMyRjI0ODE1MzNBMjEy
MDA4M0Y5NzQgLyogU2V0dGluZ3NNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBTZXR0aW5nc01hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTFDMzYyRUQwRUFGMkFBOTAwNzQxMEJDIC8qIEpTV29ya2VyTG9jYXRpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXb3JrZXJMb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMUMzNjJFRTBFQUYyQUE5MDA3NDEwQkMgLyogSlNXb3JrZXJMb2Nh
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dvcmtlckxv
Y2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFDMzZDMDIwRUIwNzZE
NjAwNzQxMEJDIC8qIEpTRE9NR2xvYmFsT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTRE9NR2xvYmFsT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xNzA4NCw2ICsxNzA4Niw3IEBACiAJCTVENTk3NUI1MTk2MzYyQkUwMEQwMDg3OCAvKiBj
b2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQTE4
MkQ1QjYxQkU3MjI2MjAwODdBN0NDIC8qIFNldHRpbmdzQ29jb2EubW0gKi8sCiAJCQkJMjYyNTVG
MDExODg3OEUxMTAwMDZFMUZEIC8qIFVzZXJBZ2VudC5oICovLAogCQkJCTVENTk3NUI2MTk2MzYz
N0IwMEQwMDg3OCAvKiBVc2VyQWdlbnQubW0gKi8sCiAJCQkpOwpAQCAtMTg2MDksNyArMTg2MTIs
NiBAQAogCQkJCTgzNERENEYzMUJFMDg5ODkwMDJDOUMzRSAvKiBQYWdlTWFjLm1tICovLAogCQkJ
CTJEOTNBRUUxMTlERjU2NDEwMDJBODZDMyAvKiBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLmgg
Ki8sCiAJCQkJMkQ5M0FFRTIxOURGNTY0MTAwMkE4NkMzIC8qIFNlcnZpY2VzT3ZlcmxheUNvbnRy
b2xsZXIubW0gKi8sCi0JCQkJRTFDMkYyNDgxNTMzQTIxMjAwODNGOTc0IC8qIFNldHRpbmdzTWFj
Lm1tICovLAogCQkJCTJENEY5NkYzMUExRUNDMjQwMDk4QkY4OCAvKiBUZXh0SW5kaWNhdG9yV2lu
ZG93LmggKi8sCiAJCQkJMkQ0Rjk2RjQxQTFFQ0MyNDAwOThCRjg4IC8qIFRleHRJbmRpY2F0b3JX
aW5kb3cubW0gKi8sCiAJCQkJMjYyNTVGMDIxODg3OEUxMTAwMDZFMUZEIC8qIFVzZXJBZ2VudE1h
Yy5tbSAqLywKQEAgLTE5NDgwLDcgKzE5NDgyLDcgQEAKIAkJCQlDRTEyNTI0ODFBMTZDM0JDMDA4
NjQ0ODAgLyogTW9iaWxlR2VzdGFsdFNQSS5oICovLAogCQkJCTZGQUQ0QTU2MUE5RDBGQUUwMDlG
N0QzQyAvKiBPcGVuR0xFU1NQSS5oICovLAogCQkJCUNFMTI1MjM4MUExNjZGQTAwMDg2NDQ4MCAv
KiBRdWlja0xvb2tTUEkuaCAqLywKLQkJCQkzMURGNjM1ODFBRjE5NEYwMDA3OEZEOTEgLyogVUlD
b2xvclNQSS5oICovLAorCQkJCUExRUQ3NzhFMUJFNDI5MTgwMERDMTc5MSAvKiBVSUtpdFNQSS5o
ICovLAogCQkJKTsKIAkJCXBhdGggPSBpb3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpA
QCAtMTk0OTksNiArMTk1MDEsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQTE0ODMyOEIxODdG
NTA2ODAwREE2M0E2IC8qIHdhayAqLywKIAkJCQkyNjU1NDE0QjE0ODlBQTJCMDAwREZDNUQgLyog
Q3Vyc29ySU9TLmNwcCAqLywKKwkJCQlBMUVENzc4QTFCRTMyOTNGMDBEQzE3OTEgLyogRGV2aWNl
LmNwcCAqLywKKwkJCQlBMUVENzc4QjFCRTMyOTQwMDBEQzE3OTEgLyogRGV2aWNlLmggKi8sCiAJ
CQkJMzFFQUY5N0MxMjE0MzVBNDAwRTdDMUJGIC8qIERldmljZU1vdGlvbkNsaWVudElPUy5oICov
LAogCQkJCTMxRUFGOTdEMTIxNDM1QTQwMEU3QzFCRiAvKiBEZXZpY2VNb3Rpb25DbGllbnRJT1Mu
bW0gKi8sCiAJCQkJMzE0MDM3OTkxMjRCRUE3RjAwQUY0MEU0IC8qIERldmljZU9yaWVudGF0aW9u
Q2xpZW50SU9TLmggKi8sCkBAIC0xOTU0Nyw3ICsxOTU1MSw2IEBACiAJCQkJMUY3MkJGMDkxODdG
RDQyNzAwMDlCQ0IzIC8qIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5oICovLAogCQkJ
CTMxNDAzNzk3MTI0QkVBN0YwMEFGNDBFNCAvKiBXZWJDb3JlTW90aW9uTWFuYWdlci5oICovLAog
CQkJCTMxNDAzNzk4MTI0QkVBN0YwMEFGNDBFNCAvKiBXZWJDb3JlTW90aW9uTWFuYWdlci5tbSAq
LywKLQkJCQk0NEMzQ0ZFNzE1NTZCRTVEMDAwMTM2MDkgLyogV2ViQ29yZVN5c3RlbUludGVyZmFj
ZUlPUy5oICovLAogCQkJCUU0NTM5MDM4MEVBRkQ2MzcwMDM2OTVDOCAvKiBXZWJDb3JlU3lzdGVt
SW50ZXJmYWNlSU9TLm1tICovLAogCQkJCUZFMEQ4NEU4MTA0ODQzNDgwMDFBMTc5RSAvKiBXZWJF
dmVudC5oICovLAogCQkJCUZFMEQ4NEVBMTA0ODQzNkUwMDFBMTc5RSAvKiBXZWJFdmVudC5tbSAq
LywKQEAgLTI1MjkxLDYgKzI1Mjk0LDcgQEAKIAkJCQk4NTUyNkNEMjBBQjBCN0Q5MDAwMzAyRUEg
LyogRE9NVHJlZVdhbGtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwQjQxQzMwQUQ5RTdFNzAw
QTZFRDRGIC8qIERPTVRyZWVXYWxrZXJJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVD
N0Y0OTEwQUFGNzlEQzAwNDAxNEREIC8qIERPTVVJRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUExRUQ3NzhGMUJFNDI5MTgwMERDMTc5MSAvKiBVSUtpdFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODU5ODlERDAwQUNDOEJCRDAwQTBCQzUxIC8qIERPTVVJRXZlbnRJbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkVEMTNEMkEwQ0VBOTFERjAwRDg5NDY2IC8qIERPTVVJS2l0RXh0ZW5z
aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkUzN0RGREIxMkRCQUZCODAwQTZCMjMzIC8qIERP
TVVSTC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzY4NSw2ICsyNzY4OSw3IEBACiAJCQkJQzEwNURB
NjQwRjNBQTZCODAwMURENDRGIC8qIFRleHRFbmNvZGluZ0RldGVjdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCMkMzREE0OTBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dEVuY29kaW5nUmVnaXN0cnku
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzM0ExNDMwMEI3RDE4ODYwMEE1M0ZGRCAvKiBUZXh0RXZl
bnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUExRUQ3NzhEMUJFMzI5NDAwMERDMTc5MSAvKiBEZXZp
Y2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3N0I0MUEwMTJFNjc1QTkwMDU0MzQzRCAvKiBUZXh0
RXZlbnRJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1NUIzREQ4MTI1MUYxMkQwMDNF
RjI2OSAvKiBUZXh0RmllbGRJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTQ1
MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0RmxhZ3MuaCBpbiBIZWFkZXJzICovLApAQCAtMjc3NjMs
NyArMjc3NjgsNiBAQAogCQkJCUMzNzVEN0ZFMTY2Mzk1MTkwMDYxODRBQiAvKiBUeXBlQWhlYWQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUU0NkEyQjFDMTdDQTY1QjkwMDBEQkNEOCAvKiBUeXBlZEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTFBMDk5
RTY0OTIwMDU2RTU4MSAvKiBUeXBpbmdDb21tYW5kLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMURG
NjM1OTFBRjE5NEYwMDA3OEZEOTEgLyogVUlDb2xvclNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODUwMzFCNEUwQTQ0RUZDNzAwRjk5MkUwIC8qIFVJRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg1MDMxQjRGMEE0NEVGQzcwMEY5OTJFMCAvKiBVSUV2ZW50V2l0aEtleVN0YXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBQTQ3MzlEMjE3NTdBRkVDMDBFNzY3NjcgLyogVUlSZXF1ZXN0RXZlbnQu
aCBpbiBIZWFkZXJzICovLApAQCAtMjc4NzMsNyArMjc4NzcsNiBAQAogCQkJCUUxODA4MTBGMTZG
Q0VDREYwMEI4MEQwNyAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFMTUyNTUxNTE2RkQyMzUwMDAzRDdBREIgLyogV2ViQ29yZVJlc291cmNl
SGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0VC
MTY5NzA5Rjg4MEMwMDA5MUY4RkYgLyogV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJNDRDM0NGRTgxNTU2QkU1RDAwMDEzNjA5IC8qIFdlYkNvcmVTeXN0ZW1JbnRl
cmZhY2VJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNDgzMkM3MTg3RjY2QzgwMERBNjNBNiAv
KiBXZWJDb3JlVGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTQ4MzJDOTE4N0Y2NzZCMDBE
QTYzQTYgLyogV2ViQ29yZVRocmVhZEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTQ4
MzJDQTE4N0Y2NzgwMDBEQTYzQTYgLyogV2ViQ29yZVRocmVhZE1lc3NhZ2UuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjg2NjAsNiArMjg2NjMsNyBAQAogCQkJCTQwOUVCREIyMTZCN0VFNzQwMENCQTNG
QyAvKiBDU1NGb250RmFjZUxvYWRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBFNkNF
NzBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTRm9udEZhY2VSdWxlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDNjRCNEQ3MENCNDI5OEEwMDVGMkI2MiAvKiBDU1NGb250RmFjZVNvdXJjZS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlBMUVENzc4QzFCRTMyOTQwMDBEQzE3OTEgLyogRGV2aWNlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDNjRCNEQ5MENCNDI5OEEwMDVGMkI2MiAvKiBDU1NGb250RmFj
ZVNyY1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRBNkU5RkMzMTNDMTdEMUQwMDQ2QTdG
OCAvKiBDU1NGb250RmVhdHVyZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNjRCNERC
MENCNDI5OEEwMDVGMkI2MiAvKiBDU1NGb250U2VsZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0zMDc4NSw3ICszMDc4OSw2IEBACiAJCQkJOTMzMDlFMEYwOTlFNjQ5MjAwNTZFNTgxIC8qIFNl
dE5vZGVBdHRyaWJ1dGVDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI4REJEQjRCMTMw
QjBGOEEwMEY1Q0RCMSAvKiBTZXRTZWxlY3Rpb25Db21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE0QzlBNUVBMEIzRDEwNUYwMDVBMDIzMiAvKiBTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQlFMUMyRjI0QTE1MzNBMjEyMDA4M0Y5NzQgLyogU2V0dGluZ3NNYWMubW0gaW4gU291
cmNlcyAqLywKIAkJCQkwRjNERDQ0RjEyRjVFQTFCMDAwRDkxOTAgLyogU2hhZG93Qmx1ci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQzVFQjhDMzBFODIwMzFCMDBCMjU5NjUgLyogU2hhZG93RGF0
YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNkQxNjk2MjEzNDZCNDlCMDAwRUI3NzAgLyogU2hh
ZG93Um9vdC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwODY0LDYgKzMwODY3LDcgQEAKIAkJCQkx
QTM3NjM2QjFBMkU2OEJCMDA5QTdFRTIgLyogU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTgxMDJDNTg4MTMyNUJCMTEwMERERTY3QSAvKiBTdHJpbmdDYWxs
YmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjM1NDBGMjBEMDA3ODJFMDAyMzgyRkEgLyog
U3RyaW5nVHJ1bmNhdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUExODJENUI3MUJFNzIyNjcw
MDg3QTdDQyAvKiBTZXR0aW5nc0NvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1RUI2QTIw
RTgxREM0RjAwQjI1OTY1IC8qIFN0eWxlQmFja2dyb3VuZERhdGEuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkM1RUI2N0QwRTgxRDQyMDAwQjI1OTY1IC8qIFN0eWxlQm94RGF0YS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk4Mzg2QTk3MDE5RjYxRTRGMDBFMUVDNEEgLyogU3R5bGVCdWlsZGVyLmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29uZmlnLmggYi9T
b3VyY2UvV2ViQ29yZS9jb25maWcuaAppbmRleCA4ODk4NTdkN2M2ODJkOTIwNjdmZDQ5MjJmN2Ri
YzQ4NzBlOTUxZGJhLi5lMzFmODhmZDM1YTNlZDE3MTQ3ZmUwMjk0YmM3MGU0MzI2YTYxNWFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb25maWcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
b25maWcuaApAQCAtMTE2LDExICsxMTYsNiBAQCB0eXBlZGVmIGZsb2F0IENHRmxvYXQ7CiAjZW5k
aWYKICNlbmRpZiAvKiBVU0UoQ0cpICovCiAKLSNpZiBQTEFURk9STShJT1MpCi0jZGVmaW5lIFdF
QkNPUkVfTkFWSUdBVE9SX1BMQVRGT1JNIHdrR2V0UGxhdGZvcm1OYW1lRm9yTmF2aWdhdG9yKCk7
Ci0jZGVmaW5lIFdFQkNPUkVfTkFWSUdBVE9SX1ZFTkRPUiB3a0dldFZlbmRvck5hbWVGb3JOYXZp
Z2F0b3IoKTsKLSNlbmRpZgotCiAvLyBGSVhNRTogTW92ZSB0aGlzIHRvIEphdmFTY3JpcHRDb3Jl
L3d0Zi9QbGF0Zm9ybS5oLCB3aGljaCBpcyB3aGVyZSB3ZSBkZWZpbmUgVVNFX0FWRk9VTkRBVElP
TiBvbiB0aGUgTWFjLgogLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY3MzM0CiAjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQ0cpICYmIEhBVkUoQVZDRikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAppbmRleCBkMzQxYzIxNjczZTNk
MmIzZGZkY2Y4N2ZlMzA2M2FhNDhiMWJiYjYwLi4wYjA2NTI4NzExYTY0YjJmNzg4ZDFhZTM5MGJl
MzhkZTMxYWI4MGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2
YWx1YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3Iu
Y3BwCkBAIC01Nyw3ICs1Nyw3IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykKLSNpbmNs
dWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiRGV2aWNlLmgiCiAjZW5k
aWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjMxLDggKzYzMSw4IEBAIHN0YXRpYyBib29s
IHZpZXdfbW9kZU1lZGlhRmVhdHVyZUV2YWwoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xl
bmd0aENvbnZlcnNpCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNSdW5uaW5nT25JUGhvbmVPcklQb2Qo
KQogewogI2lmIFBMQVRGT1JNKElPUykKLSAgICBzdGF0aWMgd2tEZXZpY2VDbGFzcyBkZXZpY2VD
bGFzcyA9IGlvc0RldmljZUNsYXNzKCk7Ci0gICAgcmV0dXJuIGRldmljZUNsYXNzID09IHdrRGV2
aWNlQ2xhc3NpUGhvbmUgfHwgZGV2aWNlQ2xhc3MgPT0gd2tEZXZpY2VDbGFzc2lQb2Q7CisgICAg
c3RhdGljIE1HRGV2aWNlQ2xhc3MgdGhlQ2xhc3MgPSBkZXZpY2VDbGFzcygpOworICAgIHJldHVy
biB0aGVDbGFzcyA9PSBNR0RldmljZUNsYXNzaVBob25lIHx8IHRoZUNsYXNzID09IE1HRGV2aWNl
Q2xhc3NpUG9kOwogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDNkOGMyYWQwMzQwYTE1MDlhYjE5MTFh
MzNiZWJiZmFkMjRkZjQxMGMuLjBlMjZlYmFjOTE1YzI2ZDgyMmVhYmQyZDk2Njk1YTA2ZTA5Njdh
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTEwLDYg
KzExMCw3IEBACiAKICNpZiBQTEFURk9STShJT1MpCiAjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzSU9TLmgiCisjaW5jbHVkZSAiV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQuaCIKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKQEAg
LTY0MzQsNyArNjQzNSw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6c2hvdWxkT3ZlcnJpZGVC
YWNrZ3JvdW5kUGxheWJhY2tSZXN0cmljdGlvbihQbGF0Zm9ybU1lZGlhCiAgICAgaWYgKG1fdmlk
ZW9GdWxsc2NyZWVuTW9kZSAmIFZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICNpZiBQTEFURk9STShJT1MpCi0gICAgaWYgKG1fdmlkZW9G
dWxsc2NyZWVuTW9kZSA9PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQgJiYgd2tJc09wdGlt
aXplZEZ1bGxzY3JlZW5TdXBwb3J0ZWQoKSAmJiBpc1BsYXlpbmcoKSkKKyAgICBpZiAobV92aWRl
b0Z1bGxzY3JlZW5Nb2RlID09IFZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCAmJiBzdXBwb3J0
c1BpY3R1cmVJblBpY3R1cmUoKSAmJiBpc1BsYXlpbmcoKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAjZW5kaWYKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVj
dEVsZW1lbnQuY3BwCmluZGV4IGMyNDE2N2MwMTRkMWQ3MzVkMWQwZWExY2VjMmE1OTM1NTI3ZTdi
YjguLmRkM2NhMzQzNWZhYzgyMGQwZDE4MDllMmZkMTIxOGJmYmRkMGI2YzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCkBAIC01NSw4ICs1NSw4IEBACiAjaW5j
bHVkZSA8d3RmL1JlZi5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgIkR5bmFtaWNM
aW5rZXJTUEkuaCIKICNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaCIKLSNp
bmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMTU5LDcgKzE1OSw3IEBAIHN0YXRpYyB2b2lkIG1hcERhdGFQYXJhbVRvU3Jj
KFZlY3RvcjxTdHJpbmc+KiBwYXJhbU5hbWVzLCBWZWN0b3I8U3RyaW5nPiogcGFyYW1WCiAjaWYg
UExBVEZPUk0oSU9TKQogc3RhdGljIGJvb2wgc2hvdWxkTm90UGVyZm9ybVVSTEFkanVzdG1lbnQo
KQogewotICAgIHN0YXRpYyBib29sIHNob3VsZE5vdFBlcmZvcm1VUkxBZGp1c3RtZW50ID0gYXBw
bGljYXRpb25Jc05BU0FIRCgpICYmICFpb3NFeGVjdXRhYmxlV2FzTGlua2VkT25PckFmdGVyVmVy
c2lvbih3a0lPU1N5c3RlbVZlcnNpb25fNV8wKTsKKyAgICBzdGF0aWMgYm9vbCBzaG91bGROb3RQ
ZXJmb3JtVVJMQWRqdXN0bWVudCA9IGFwcGxpY2F0aW9uSXNOQVNBSEQoKSAmJiBkeWxkX2dldF9w
cm9ncmFtX3Nka192ZXJzaW9uKCkgPCBEWUxEX0lPU19WRVJTSU9OXzVfMDsKICAgICByZXR1cm4g
c2hvdWxkTm90UGVyZm9ybVVSTEFkanVzdG1lbnQ7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IGJkMzA2NzVjYjFhY2VhOGExNWU3NzlkNzYz
YmJkZWE2Njk3OTNhZjQuLmU2ODEyZGIxN2I2NDRiYjA4ODJkYWQzM2U4MjQ1YzVjMzczNGEwNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAtNDMsNiArNDMs
MTAgQEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogCisjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQorI2luY2x1ZGUgIldl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMzY5LDcgKzM3Myw3IEBA
IGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6d2Via2l0U3VwcG9ydHNQcmVzZW50YXRpb25Nb2RlKGNv
bnN0IFN0cmluZyYgbW9kZSkgY29uc3QKICAgICAgICAgcmV0dXJuIG1lZGlhU2Vzc2lvbigpLmZ1
bGxzY3JlZW5QZXJtaXR0ZWQoKnRoaXMpICYmIHN1cHBvcnRzRnVsbHNjcmVlbigpOwogCiAgICAg
aWYgKG1vZGUgPT0gcHJlc2VudGF0aW9uTW9kZVBpY3R1cmVJblBpY3R1cmUoKSkKLSAgICAgICAg
cmV0dXJuIHdrSXNPcHRpbWl6ZWRGdWxsc2NyZWVuU3VwcG9ydGVkKCkgJiYgbWVkaWFTZXNzaW9u
KCkuYWxsb3dzUGljdHVyZUluUGljdHVyZSgqdGhpcykgJiYgc3VwcG9ydHNGdWxsc2NyZWVuKCk7
CisgICAgICAgIHJldHVybiBzdXBwb3J0c1BpY3R1cmVJblBpY3R1cmUoKSAmJiBtZWRpYVNlc3Np
b24oKS5hbGxvd3NQaWN0dXJlSW5QaWN0dXJlKCp0aGlzKSAmJiBzdXBwb3J0c0Z1bGxzY3JlZW4o
KTsKIAogICAgIGlmIChtb2RlID09IHByZXNlbnRhdGlvbk1vZGVJbmxpbmUoKSkKICAgICAgICAg
cmV0dXJuICFtZWRpYVNlc3Npb24oKS5yZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNr
KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwCmluZGV4IGVkOTljZmY3
ZjA2OGEzNDQzMzBkNzhmNjA4YmFkMDM5NDU4MTljMTAuLjVlNDgzMTE0NTJjZDVlOTcyM2U0NDQy
NzZmMjI3MDM5NjkzOWUxZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdh
dG9yQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcApA
QCAtMzYsMTIgKzM2LDEzIEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykKLSNpbmNsdWRl
ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiRGV2aWNlLmgiCisjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjZW5kaWYKIAogI2lmbmRlZiBXRUJDT1JFX05BVklH
QVRPUl9QTEFURk9STQogI2lmIFBMQVRGT1JNKElPUykKLSNkZWZpbmUgV0VCQ09SRV9OQVZJR0FU
T1JfUExBVEZPUk0gIiIKKyNkZWZpbmUgV0VCQ09SRV9OQVZJR0FUT1JfUExBVEZPUk0gcGxhdGZv
cm1OYW1lRm9yTmF2aWdhdG9yKCkKICNlbGlmIE9TKE1BQ19PU19YKSAmJiAoQ1BVKFBQQykgfHwg
Q1BVKFBQQzY0KSkKICNkZWZpbmUgV0VCQ09SRV9OQVZJR0FUT1JfUExBVEZPUk0gIk1hY1BQQyIK
ICNlbGlmIE9TKE1BQ19PU19YKSAmJiAoQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkpCkBAIC02OSw5
ICs3MCwxNiBAQAogI2RlZmluZSBXRUJDT1JFX05BVklHQVRPUl9WRU5ET1JfU1VCICIiCiAjZW5k
aWYgLy8gaWZuZGVmIFdFQkNPUkVfTkFWSUdBVE9SX1ZFTkRPUl9TVUIKIAotCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKKyNpZiBQTEFURk9STShJT1MpCitzdGF0aWMgY29uc3QgU3RyaW5nJiBwbGF0
Zm9ybU5hbWVGb3JOYXZpZ2F0b3IoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJp
bmc+IHBsYXRmb3JtTmFtZSA9IGRldmljZU5hbWUoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1OYW1l
OworfQorI2VuZGlmCisKIE5hdmlnYXRvckJhc2U6On5OYXZpZ2F0b3JCYXNlKCkKIHsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuaAppbmRleCBjZjdiMDRmZjdhYTkwOTNjZDc0NDQwNzIxYzg1MTRiYzQ3
ZmE0ZDI5Li4zYjA0NzZhMzE2ZDUxZGNmNzNjZTU1ZDhjNWE4NzBkNTFiYzIxYWY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TZXR0aW5ncy5oCkBAIC0yNzcsNiArMjc3LDEwIEBAIHB1YmxpYzoKIAogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0Rm9yY2VQZW5kaW5nV2ViR0xQb2xpY3koYm9vbCk7CiAgICAgYm9v
bCBpc0ZvcmNlUGVuZGluZ1dlYkdMUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9mb3JjZVBlbmRp
bmdXZWJHTFBvbGljeTsgfQorICAgIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgZmxvYXQgZGVmYXVsdE1pbmltdW1ab29tRm9udFNpemUoKTsKKyNlbmRpZgog
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNldHRpbmdzKFBhZ2UqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmNwcAppbmRleCA5MjQ3OTBkOTNhNmM0NDE1
MGM2MGI2YWVmYjQ0MTlmMjMzODFhOTllLi41YTg2OGY0YWQ5YmViOTA4YWU0YTRkNmRlZDZjYmE5
YTZlNzgyOGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmln
dXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRp
b24uY3BwCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CiAjaWYgUExBVEZPUk0oSU9TKQotI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIK
KyNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTIxMyw3ICsyMTMsNyBAQCBWaWV3cG9ydENvbmZpZ3VyYXRpb246OlBhcmFtZXRlcnMg
Vmlld3BvcnRDb25maWd1cmF0aW9uOjp0ZXh0RG9jdW1lbnRQYXJhbWV0ZXJzKAogICAgIFBhcmFt
ZXRlcnMgcGFyYW1ldGVyczsKIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICBwYXJhbWV0ZXJzLndp
ZHRoID0gc3RhdGljX2Nhc3Q8aW50Pih3a0dldFNjcmVlblNpemUoKS53aWR0aCk7CisgICAgcGFy
YW1ldGVycy53aWR0aCA9IHN0YXRpY19jYXN0PGludD4oc2NyZWVuU2l6ZSgpLndpZHRoKCkpOwog
I2Vsc2UKICAgICAvLyBGSVhNRTogdGhpcyBuZWVkcyB0byBiZSB1bmlmaWVkIHdpdGggVmlld3Bv
cnRBcmd1bWVudHMgb24gYWxsIHBvcnRzLgogICAgIHBhcmFtZXRlcnMud2lkdGggPSAzMjA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDY3
MTNmZjNlNGFkYzUwZGU0M2VmODAzYTY1ZjdkZGIzYjZhMzEyOQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NDb2NvYS5tbQpAQCAtMCwwICsxLDEz
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTZXR0aW5n
cy5oIgorCisjaWYgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgIkRldmljZS5oIgorI2luY2x1ZGUg
IlNvZnRMaW5raW5nLmgiCisjaW5jbHVkZSAiVUlLaXRTUEkuaCIKKyNlbmRpZgorCisjaWYgUExB
VEZPUk0oSU9TKQorU09GVF9MSU5LX0ZSQU1FV09SSyhVSUtpdCkKK1NPRlRfTElOS19DTEFTUyhV
SUtpdCwgVUlBcHBsaWNhdGlvbikKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0
YXRpYyBpbmxpbmUgY29uc3QgY2hhciogc2Fuc1NlcmlmVHJhZGl0aW9uYWxIYW5Gb250RmFtaWx5
KCkKK3sKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTAwMCkgfHwgUExBVEZPUk0oSU9TKQorICAgIHJldHVybiAiUGluZ0ZhbmcgVEMi
OworI2Vsc2UKKyAgICByZXR1cm4gIkhlaXRpIFRDIjsKKyNlbmRpZgorfQorCitzdGF0aWMgaW5s
aW5lIGNvbnN0IGNoYXIqIHNhbnNTZXJpZlNpbXBsaWZpZWRIYW5Gb250RmFtaWx5KCkKK3sKKyNp
ZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
MTAwMCkgfHwgUExBVEZPUk0oSU9TKQorICAgIHJldHVybiAiUGluZ0ZhbmcgU0MiOworI2Vsc2UK
KyAgICByZXR1cm4gIkhlaXRpIFNDIjsKKyNlbmRpZgorfQorCisjaWYgUExBVEZPUk0oTUFDKQor
dm9pZCBTZXR0aW5nczo6aW5pdGlhbGl6ZURlZmF1bHRGb250RmFtaWxpZXMoKQoreworICAgIHNl
dFN0YW5kYXJkRm9udEZhbWlseSgiU29uZ3RpIFRDIiwgVVNDUklQVF9UUkFESVRJT05BTF9IQU4p
OworICAgIHNldFNlcmlmRm9udEZhbWlseSgiU29uZ3RpIFRDIiwgVVNDUklQVF9UUkFESVRJT05B
TF9IQU4pOworICAgIHNldEZpeGVkRm9udEZhbWlseShzYW5zU2VyaWZUcmFkaXRpb25hbEhhbkZv
bnRGYW1pbHkoKSwgVVNDUklQVF9UUkFESVRJT05BTF9IQU4pOworICAgIHNldFNhbnNTZXJpZkZv
bnRGYW1pbHkoc2Fuc1NlcmlmVHJhZGl0aW9uYWxIYW5Gb250RmFtaWx5KCksIFVTQ1JJUFRfVFJB
RElUSU9OQUxfSEFOKTsKKworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiU29uZ3RpIFNDIiwg
VVNDUklQVF9TSU1QTElGSUVEX0hBTik7CisgICAgc2V0U2VyaWZGb250RmFtaWx5KCJTb25ndGkg
U0MiLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOKTsKKyAgICBzZXRGaXhlZEZvbnRGYW1pbHkoc2Fu
c1NlcmlmU2ltcGxpZmllZEhhbkZvbnRGYW1pbHkoKSwgVVNDUklQVF9TSU1QTElGSUVEX0hBTik7
CisgICAgc2V0U2Fuc1NlcmlmRm9udEZhbWlseShzYW5zU2VyaWZTaW1wbGlmaWVkSGFuRm9udEZh
bWlseSgpLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOKTsKKworICAgIHNldFN0YW5kYXJkRm9udEZh
bWlseSgiSGlyYWdpbm8gTWluY2hvIFByb04iLCBVU0NSSVBUX0tBVEFLQU5BX09SX0hJUkFHQU5B
KTsKKyAgICBzZXRGaXhlZEZvbnRGYW1pbHkoIk9zYWthLU1vbm8iLCBVU0NSSVBUX0tBVEFLQU5B
X09SX0hJUkFHQU5BKTsKKyAgICBzZXRTZXJpZkZvbnRGYW1pbHkoIkhpcmFnaW5vIE1pbmNobyBQ
cm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7CisgICAgc2V0U2Fuc1NlcmlmRm9u
dEZhbWlseSgiSGlyYWdpbm8gS2FrdSBHb3RoaWMgUHJvTiIsIFVTQ1JJUFRfS0FUQUtBTkFfT1Jf
SElSQUdBTkEpOworCisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJBcHBsZU15dW5nam8iLCBV
U0NSSVBUX0hBTkdVTCk7CisgICAgc2V0U2VyaWZGb250RmFtaWx5KCJBcHBsZU15dW5nam8iLCBV
U0NSSVBUX0hBTkdVTCk7CisgICAgc2V0Rml4ZWRGb250RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMg
TmVvIiwgVVNDUklQVF9IQU5HVUwpOworICAgIHNldFNhbnNTZXJpZkZvbnRGYW1pbHkoIkFwcGxl
IFNEIEdvdGhpYyBOZW8iLCBVU0NSSVBUX0hBTkdVTCk7CisKKyAgICBzZXRTdGFuZGFyZEZvbnRG
YW1pbHkoIlRpbWVzIiwgVVNDUklQVF9DT01NT04pOworICAgIHNldEZpeGVkRm9udEZhbWlseSgi
Q291cmllciIsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRTZXJpZkZvbnRGYW1pbHkoIlRpbWVz
IiwgVVNDUklQVF9DT01NT04pOworICAgIHNldFNhbnNTZXJpZkZvbnRGYW1pbHkoIkhlbHZldGlj
YSIsIFVTQ1JJUFRfQ09NTU9OKTsKK30KKworI2Vsc2UKKwordm9pZCBTZXR0aW5nczo6aW5pdGlh
bGl6ZURlZmF1bHRGb250RmFtaWxpZXMoKQoreworICAgIC8vIFRoZXJlIGlzIG5vIHNlcmlmIENo
aW5lc2UgZm9udCBpbiBkZWZhdWx0IGlPUyBpbnN0YWxsYXRpb24uCisgICAgc2V0U3RhbmRhcmRG
b250RmFtaWx5KHNhbnNTZXJpZlRyYWRpdGlvbmFsSGFuRm9udEZhbWlseSgpLCBVU0NSSVBUX1RS
QURJVElPTkFMX0hBTik7CisgICAgc2V0U2VyaWZGb250RmFtaWx5KHNhbnNTZXJpZlRyYWRpdGlv
bmFsSGFuRm9udEZhbWlseSgpLCBVU0NSSVBUX1RSQURJVElPTkFMX0hBTik7CisgICAgc2V0Rml4
ZWRGb250RmFtaWx5KHNhbnNTZXJpZlRyYWRpdGlvbmFsSGFuRm9udEZhbWlseSgpLCBVU0NSSVBU
X1RSQURJVElPTkFMX0hBTik7CisgICAgc2V0U2Fuc1NlcmlmRm9udEZhbWlseShzYW5zU2VyaWZU
cmFkaXRpb25hbEhhbkZvbnRGYW1pbHkoKSwgVVNDUklQVF9UUkFESVRJT05BTF9IQU4pOworCisg
ICAgLy8gVGhlcmUgaXMgbm8gc2VyaWYgQ2hpbmVzZSBmb250IGluIGRlZmF1bHQgaU9TIGluc3Rh
bGxhdGlvbi4KKyAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoc2Fuc1NlcmlmU2ltcGxpZmllZEhh
bkZvbnRGYW1pbHkoKSwgVVNDUklQVF9TSU1QTElGSUVEX0hBTik7CisgICAgc2V0U2VyaWZGb250
RmFtaWx5KHNhbnNTZXJpZlNpbXBsaWZpZWRIYW5Gb250RmFtaWx5KCksIFVTQ1JJUFRfU0lNUExJ
RklFRF9IQU4pOworICAgIHNldEZpeGVkRm9udEZhbWlseShzYW5zU2VyaWZTaW1wbGlmaWVkSGFu
Rm9udEZhbWlseSgpLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOKTsKKyAgICBzZXRTYW5zU2VyaWZG
b250RmFtaWx5KHNhbnNTZXJpZlNpbXBsaWZpZWRIYW5Gb250RmFtaWx5KCksIFVTQ1JJUFRfU0lN
UExJRklFRF9IQU4pOworCisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJIaXJhZ2lubyBNaW5j
aG8gUHJvTiIsIFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNldEZpeGVkRm9u
dEZhbWlseSgiSGlyYWdpbm8gS2FrdSBHb3RoaWMgUHJvTiIsIFVTQ1JJUFRfS0FUQUtBTkFfT1Jf
SElSQUdBTkEpOworICAgIHNldFNlcmlmRm9udEZhbWlseSgiSGlyYWdpbm8gTWluY2hvIFByb04i
LCBVU0NSSVBUX0tBVEFLQU5BX09SX0hJUkFHQU5BKTsKKyAgICBzZXRTYW5zU2VyaWZGb250RmFt
aWx5KCJIaXJhZ2lubyBLYWt1IEdvdGhpYyBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJB
R0FOQSk7CisKKyAgICAvLyBUaGVyZSBpcyBubyBzZXJpZiBLb3JlYW4gZm9udCBpbiBkZWZhdWx0
IGlPUyBpbnN0YWxsYXRpb24uCisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJBcHBsZSBTRCBH
b3RoaWMgTmVvIiwgVVNDUklQVF9IQU5HVUwpOworICAgIHNldFNlcmlmRm9udEZhbWlseSgiQXBw
bGUgU0QgR290aGljIE5lbyIsIFVTQ1JJUFRfSEFOR1VMKTsKKyAgICBzZXRGaXhlZEZvbnRGYW1p
bHkoIkFwcGxlIFNEIEdvdGhpYyBOZW8iLCBVU0NSSVBUX0hBTkdVTCk7CisgICAgc2V0U2Fuc1Nl
cmlmRm9udEZhbWlseSgiQXBwbGUgU0QgR290aGljIE5lbyIsIFVTQ1JJUFRfSEFOR1VMKTsKKwor
ICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiVGltZXMiLCBVU0NSSVBUX0NPTU1PTik7CisgICAg
c2V0Rml4ZWRGb250RmFtaWx5KCJDb3VyaWVyIiwgVVNDUklQVF9DT01NT04pOworICAgIHNldFNl
cmlmRm9udEZhbWlseSgiVGltZXMiLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0U2Fuc1Nlcmlm
Rm9udEZhbWlseSgiSGVsdmV0aWNhIiwgVVNDUklQVF9DT01NT04pOworfQorICAgIAorZmxvYXQg
U2V0dGluZ3M6OmRlZmF1bHRNaW5pbXVtWm9vbUZvbnRTaXplKCkKK3sKKyAgICBpZiAoZGV2aWNl
SGFzSVBhZENhcGFiaWxpdHkoKSAmJiAhW1tnZXRVSUFwcGxpY2F0aW9uQ2xhc3MoKSBzaGFyZWRB
cHBsaWNhdGlvbl0gX2lzQ2xhc3NpY10pCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiAx
NTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2lvcy9Vc2VyQWdlbnRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2lvcy9Vc2VyQWdlbnRJT1MubW0KaW5kZXggNjhmYmRmMmE3MjM0YzgxMzZiYjVmOTQ3MDk5Nzk4
YjFjZjNhMGRmYS4uNzZkMzQ0MmQ4MTU4ZTA4MmZmZDY1OGE1NWJhZmI5YmYxZTZkZWI5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvVXNlckFnZW50SU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvaW9zL1VzZXJBZ2VudElPUy5tbQpAQCAtMjYsMTYgKzI2LDQ3IEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlVzZXJBZ2VudC5oIgogCisjaW1wb3J0ICJE
ZXZpY2UuaCIKKyNpbXBvcnQgIk1vYmlsZUdlc3RhbHRTUEkuaCIKKyNpbXBvcnQgIlNvZnRMaW5r
aW5nLmgiCiAjaW1wb3J0ICJTeXN0ZW1WZXJzaW9uLmgiCisjaW1wb3J0ICJVSUtpdFNQSS5oIgog
I2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgorI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLKFVJS2l0KTsKK1NPRlRfTElOS19DTEFTUyhVSUtp
dCwgVUlBcHBsaWNhdGlvbik7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU3RyaW5nIHN0YW5k
YXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZShjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9u
TmFtZSwgY29uc3QgU3RyaW5nJiBmdWxsV2ViS2l0VmVyc2lvblN0cmluZykKK3N0YXRpYyBpbmxp
bmUgYm9vbCBpc0NsYXNzaWMoKQoreworICAgIHJldHVybiBbW2dldFVJQXBwbGljYXRpb25DbGFz
cygpIHNoYXJlZEFwcGxpY2F0aW9uXSBfaXNDbGFzc2ljXTsKK30KKworc3RhdGljIGlubGluZSBO
U1N0cmluZyAqb3NOYW1lRm9yVXNlckFnZW50KCkKIHsKLSAgICBpZiAoQ0ZTdHJpbmdSZWYgb3Zl
cnJpZGVVc2VyQWdlbnQgPSB3a0dldFVzZXJBZ2VudCgpKQotICAgICAgICByZXR1cm4gb3ZlcnJp
ZGVVc2VyQWdlbnQ7CisgICAgaWYgKGRldmljZUhhc0lQYWRDYXBhYmlsaXR5KCkgJiYgIWlzQ2xh
c3NpYygpKQorICAgICAgICByZXR1cm4gQCJPUyI7CisgICAgcmV0dXJuIEAiaVBob25lIE9TIjsK
K30KIAorc3RhdGljIGlubGluZSBOU1N0cmluZyAqZGV2aWNlTmFtZUZvclVzZXJBZ2VudCgpCit7
CisgICAgaWYgKGlzQ2xhc3NpYygpKQorICAgICAgICByZXR1cm4gQCJpUGhvbmUiOworICAgIAor
ICAgIGF1dG8gbmFtZSA9IHJldGFpblB0cigoTlNTdHJpbmcgKilkZXZpY2VOYW1lKCkpOworI2lm
IFBMQVRGT1JNKElPU19TSU1VTEFUT1IpCisgICAgTlNVSW50ZWdlciBsb2NhdGlvbiA9IFtuYW1l
IHJhbmdlT2ZTdHJpbmc6QCIgU2ltdWxhdG9yIiBvcHRpb25zOk5TQmFja3dhcmRzU2VhcmNoXS5s
b2NhdGlvbjsKKyAgICBpZiAobG9jYXRpb24gIT0gTlNOb3RGb3VuZCAmJiBsb2NhdGlvbiA+IDAp
CisgICAgICAgIHJldHVybiBbbmFtZSBzdWJzdHJpbmdUb0luZGV4OmxvY2F0aW9uXTsKKyNlbmRp
ZgorICAgIHJldHVybiBuYW1lLmF1dG9yZWxlYXNlKCk7Cit9CisKK1N0cmluZyBzdGFuZGFyZFVz
ZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUs
IGNvbnN0IFN0cmluZyYgZnVsbFdlYktpdFZlcnNpb25TdHJpbmcpCit7CiAgICAgLy8gQ2hlY2sg
dG8gc2VlIGlmIHRoZXJlIGlzIGEgdXNlciBhZ2VudCBvdmVycmlkZSBmb3IgYWxsIFdlYktpdCBj
bGllbnRzLgogICAgIENGUHJvcGVydHlMaXN0UmVmIG92ZXJyaWRlID0gQ0ZQcmVmZXJlbmNlc0Nv
cHlBcHBWYWx1ZShDRlNUUigiVXNlckFnZW50IiksIENGU1RSKCJjb20uYXBwbGUuV2ViRm91bmRh
dGlvbiIpKTsKICAgICBpZiAob3ZlcnJpZGUpIHsKQEAgLTQ0LDEzICs3NSwxMiBAQCBTdHJpbmcg
c3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKGNvbnN0IFN0cmluZyYgYXBwbGlj
YXRpb25OYW1lLCBjb25zdAogICAgICAgICBDRlJlbGVhc2Uob3ZlcnJpZGUpOwogICAgIH0KIAor
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaW1wbGVtZW50IHRoaXMgd2l0aCBTdHJpbmcgYW5kL29y
IFN0cmluZ0J1aWxkZXIgaW5zdGVhZC4KICAgICBOU1N0cmluZyAqd2ViS2l0VmVyc2lvbiA9IHVz
ZXJBZ2VudEJ1bmRsZVZlcnNpb25Gcm9tRnVsbFZlcnNpb25TdHJpbmcoZnVsbFdlYktpdFZlcnNp
b25TdHJpbmcpOwotICAgIENGU3RyaW5nUmVmIGRldmljZU5hbWUgPSB3a0dldERldmljZU5hbWUo
KTsKLSAgICBDRlN0cmluZ1JlZiBvc05hbWVGb3JVc2VyQWdlbnQgPSB3a0dldE9TTmFtZUZvclVz
ZXJBZ2VudCgpOwogICAgIE5TU3RyaW5nICpvc01hcmtldGluZ1ZlcnNpb25TdHJpbmcgPSBzeXN0
ZW1NYXJrZXRpbmdWZXJzaW9uRm9yVXNlckFnZW50U3RyaW5nKCk7CiAgICAgaWYgKGFwcGxpY2F0
aW9uTmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAIk1vemlsbGEvNS4wICglQDsgQ1BVICVAICVAIGxpa2UgTWFjIE9TIFgpIEFwcGxlV2Vi
S2l0LyVAIChLSFRNTCwgbGlrZSBHZWNrbykiLCBkZXZpY2VOYW1lLCBvc05hbWVGb3JVc2VyQWdl
bnQsIG9zTWFya2V0aW5nVmVyc2lvblN0cmluZywgd2ViS2l0VmVyc2lvbl07Ci0gICAgcmV0dXJu
IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiTW96aWxsYS81LjAgKCVAOyBDUFUgJUAgJUAg
bGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvJUAgKEtIVE1MLCBsaWtlIEdlY2tvKSAlQCIsIGRl
dmljZU5hbWUsIG9zTmFtZUZvclVzZXJBZ2VudCwgb3NNYXJrZXRpbmdWZXJzaW9uU3RyaW5nLCB3
ZWJLaXRWZXJzaW9uLCBzdGF0aWNfY2FzdDxOU1N0cmluZyAqPihhcHBsaWNhdGlvbk5hbWUpXTsK
KyAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiTW96aWxsYS81LjAg
KCVAOyBDUFUgJUAgJUAgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvJUAgKEtIVE1MLCBsaWtl
IEdlY2tvKSIsIGRldmljZU5hbWVGb3JVc2VyQWdlbnQoKSwgb3NOYW1lRm9yVXNlckFnZW50KCks
IG9zTWFya2V0aW5nVmVyc2lvblN0cmluZywgd2ViS2l0VmVyc2lvbl07CisgICAgcmV0dXJuIFtO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiTW96aWxsYS81LjAgKCVAOyBDUFUgJUAgJUAgbGlr
ZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvJUAgKEtIVE1MLCBsaWtlIEdlY2tvKSAlQCIsIGRldmlj
ZU5hbWVGb3JVc2VyQWdlbnQoKSwgb3NOYW1lRm9yVXNlckFnZW50KCksIG9zTWFya2V0aW5nVmVy
c2lvblN0cmluZywgd2ViS2l0VmVyc2lvbiwgc3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4oYXBwbGlj
YXRpb25OYW1lKV07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXR0aW5nc01hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvbWFjL1NldHRpbmdzTWFjLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZTA2
MTMyYzBlZDg1NDY4MTdlZDUzOWVkY2RmYjBlZjIxMTExNTY0Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NldHRp
bmdzTWFjLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2V0dGluZ3MuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1zdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIqIHNhbnNTZXJpZlRyYWRpdGlvbmFs
SGFuRm9udEZhbWlseSgpCi17Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMDApIHx8IFBMQVRGT1JNKElPUykKLSAgICByZXR1cm4g
IlBpbmdGYW5nIFRDIjsKLSNlbHNlCi0gICAgcmV0dXJuICJIZWl0aSBUQyI7Ci0jZW5kaWYKLX0K
LQotc3RhdGljIGlubGluZSBjb25zdCBjaGFyKiBzYW5zU2VyaWZTaW1wbGlmaWVkSGFuRm9udEZh
bWlseSgpCi17Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDEwMDApIHx8IFBMQVRGT1JNKElPUykKLSAgICByZXR1cm4gIlBpbmdGYW5n
IFNDIjsKLSNlbHNlCi0gICAgcmV0dXJuICJIZWl0aSBTQyI7Ci0jZW5kaWYKLX0KLQotI2lmIFBM
QVRGT1JNKE1BQykKLXZvaWQgU2V0dGluZ3M6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVz
KCkKLXsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlNvbmd0aSBUQyIsIFVTQ1JJUFRfVFJB
RElUSU9OQUxfSEFOKTsKLSAgICBzZXRTZXJpZkZvbnRGYW1pbHkoIlNvbmd0aSBUQyIsIFVTQ1JJ
UFRfVFJBRElUSU9OQUxfSEFOKTsKLSAgICBzZXRGaXhlZEZvbnRGYW1pbHkoc2Fuc1NlcmlmVHJh
ZGl0aW9uYWxIYW5Gb250RmFtaWx5KCksIFVTQ1JJUFRfVFJBRElUSU9OQUxfSEFOKTsKLSAgICBz
ZXRTYW5zU2VyaWZGb250RmFtaWx5KHNhbnNTZXJpZlRyYWRpdGlvbmFsSGFuRm9udEZhbWlseSgp
LCBVU0NSSVBUX1RSQURJVElPTkFMX0hBTik7Ci0KLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHko
IlNvbmd0aSBTQyIsIFVTQ1JJUFRfU0lNUExJRklFRF9IQU4pOwotICAgIHNldFNlcmlmRm9udEZh
bWlseSgiU29uZ3RpIFNDIiwgVVNDUklQVF9TSU1QTElGSUVEX0hBTik7Ci0gICAgc2V0Rml4ZWRG
b250RmFtaWx5KHNhbnNTZXJpZlNpbXBsaWZpZWRIYW5Gb250RmFtaWx5KCksIFVTQ1JJUFRfU0lN
UExJRklFRF9IQU4pOwotICAgIHNldFNhbnNTZXJpZkZvbnRGYW1pbHkoc2Fuc1NlcmlmU2ltcGxp
ZmllZEhhbkZvbnRGYW1pbHkoKSwgVVNDUklQVF9TSU1QTElGSUVEX0hBTik7Ci0KLSAgICBzZXRT
dGFuZGFyZEZvbnRGYW1pbHkoIkhpcmFnaW5vIE1pbmNobyBQcm9OIiwgVVNDUklQVF9LQVRBS0FO
QV9PUl9ISVJBR0FOQSk7Ci0gICAgc2V0Rml4ZWRGb250RmFtaWx5KCJPc2FrYS1Nb25vIiwgVVND
UklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7Ci0gICAgc2V0U2VyaWZGb250RmFtaWx5KCJIaXJh
Z2lubyBNaW5jaG8gUHJvTiIsIFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOwotICAgIHNl
dFNhbnNTZXJpZkZvbnRGYW1pbHkoIkhpcmFnaW5vIEtha3UgR290aGljIFByb04iLCBVU0NSSVBU
X0tBVEFLQU5BX09SX0hJUkFHQU5BKTsKLQotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiQXBw
bGVNeXVuZ2pvIiwgVVNDUklQVF9IQU5HVUwpOwotICAgIHNldFNlcmlmRm9udEZhbWlseSgiQXBw
bGVNeXVuZ2pvIiwgVVNDUklQVF9IQU5HVUwpOwotICAgIHNldEZpeGVkRm9udEZhbWlseSgiQXBw
bGUgU0QgR290aGljIE5lbyIsIFVTQ1JJUFRfSEFOR1VMKTsKLSAgICBzZXRTYW5zU2VyaWZGb250
RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQVF9IQU5HVUwpOwotCi0gICAgc2V0
U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRGaXhl
ZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1PTik7Ci0gICAgc2V0U2VyaWZGb250
RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRTYW5zU2VyaWZGb250RmFt
aWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7Ci19Ci0KLSNlbHNlCi0KLXZvaWQgU2V0
dGluZ3M6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVzKCkKLXsKLSAgICAvLyBUaGVyZSBp
cyBubyBzZXJpZiBDaGluZXNlIGZvbnQgaW4gZGVmYXVsdCBpT1MgaW5zdGFsbGF0aW9uLgotICAg
IHNldFN0YW5kYXJkRm9udEZhbWlseShzYW5zU2VyaWZUcmFkaXRpb25hbEhhbkZvbnRGYW1pbHko
KSwgVVNDUklQVF9UUkFESVRJT05BTF9IQU4pOwotICAgIHNldFNlcmlmRm9udEZhbWlseShzYW5z
U2VyaWZUcmFkaXRpb25hbEhhbkZvbnRGYW1pbHkoKSwgVVNDUklQVF9UUkFESVRJT05BTF9IQU4p
OwotICAgIHNldEZpeGVkRm9udEZhbWlseShzYW5zU2VyaWZUcmFkaXRpb25hbEhhbkZvbnRGYW1p
bHkoKSwgVVNDUklQVF9UUkFESVRJT05BTF9IQU4pOwotICAgIHNldFNhbnNTZXJpZkZvbnRGYW1p
bHkoc2Fuc1NlcmlmVHJhZGl0aW9uYWxIYW5Gb250RmFtaWx5KCksIFVTQ1JJUFRfVFJBRElUSU9O
QUxfSEFOKTsKLQotICAgIC8vIFRoZXJlIGlzIG5vIHNlcmlmIENoaW5lc2UgZm9udCBpbiBkZWZh
dWx0IGlPUyBpbnN0YWxsYXRpb24uCi0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KHNhbnNTZXJp
ZlNpbXBsaWZpZWRIYW5Gb250RmFtaWx5KCksIFVTQ1JJUFRfU0lNUExJRklFRF9IQU4pOwotICAg
IHNldFNlcmlmRm9udEZhbWlseShzYW5zU2VyaWZTaW1wbGlmaWVkSGFuRm9udEZhbWlseSgpLCBV
U0NSSVBUX1NJTVBMSUZJRURfSEFOKTsKLSAgICBzZXRGaXhlZEZvbnRGYW1pbHkoc2Fuc1Nlcmlm
U2ltcGxpZmllZEhhbkZvbnRGYW1pbHkoKSwgVVNDUklQVF9TSU1QTElGSUVEX0hBTik7Ci0gICAg
c2V0U2Fuc1NlcmlmRm9udEZhbWlseShzYW5zU2VyaWZTaW1wbGlmaWVkSGFuRm9udEZhbWlseSgp
LCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOKTsKLQotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgi
SGlyYWdpbm8gTWluY2hvIFByb04iLCBVU0NSSVBUX0tBVEFLQU5BX09SX0hJUkFHQU5BKTsKLSAg
ICBzZXRGaXhlZEZvbnRGYW1pbHkoIkhpcmFnaW5vIEtha3UgR290aGljIFByb04iLCBVU0NSSVBU
X0tBVEFLQU5BX09SX0hJUkFHQU5BKTsKLSAgICBzZXRTZXJpZkZvbnRGYW1pbHkoIkhpcmFnaW5v
IE1pbmNobyBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7Ci0gICAgc2V0U2Fu
c1NlcmlmRm9udEZhbWlseSgiSGlyYWdpbm8gS2FrdSBHb3RoaWMgUHJvTiIsIFVTQ1JJUFRfS0FU
QUtBTkFfT1JfSElSQUdBTkEpOwotCi0gICAgLy8gVGhlcmUgaXMgbm8gc2VyaWYgS29yZWFuIGZv
bnQgaW4gZGVmYXVsdCBpT1MgaW5zdGFsbGF0aW9uLgotICAgIHNldFN0YW5kYXJkRm9udEZhbWls
eSgiQXBwbGUgU0QgR290aGljIE5lbyIsIFVTQ1JJUFRfSEFOR1VMKTsKLSAgICBzZXRTZXJpZkZv
bnRGYW1pbHkoIkFwcGxlIFNEIEdvdGhpYyBOZW8iLCBVU0NSSVBUX0hBTkdVTCk7Ci0gICAgc2V0
Rml4ZWRGb250RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQVF9IQU5HVUwpOwot
ICAgIHNldFNhbnNTZXJpZkZvbnRGYW1pbHkoIkFwcGxlIFNEIEdvdGhpYyBOZW8iLCBVU0NSSVBU
X0hBTkdVTCk7Ci0KLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlRpbWVzIiwgVVNDUklQVF9D
T01NT04pOwotICAgIHNldEZpeGVkRm9udEZhbWlseSgiQ291cmllciIsIFVTQ1JJUFRfQ09NTU9O
KTsKLSAgICBzZXRTZXJpZkZvbnRGYW1pbHkoIlRpbWVzIiwgVVNDUklQVF9DT01NT04pOwotICAg
IHNldFNhbnNTZXJpZkZvbnRGYW1pbHkoIkhlbHZldGljYSIsIFVTQ1JJUFRfQ09NTU9OKTsKLX0K
LSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1TY3JlZW4uaAppbmRleCBlNGNhZTEwZmQ5YjE5NDc1MzBjMTliYjlkZDAyZThjM2Vh
MWE5ZGNjLi41Mjc5MDBiOGFmMWJkNzMyNzY1NDcxOGRiMWExNzY2MTY3NGY3MzNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmgKQEAgLTQwLDYgKzQwLDEwIEBAIHR5
cGVkZWYgc3RydWN0IF9OU1BvaW50IE5TUG9pbnQ7CiAjZW5kaWYKICNlbmRpZgogCisjaWYgUExB
VEZPUk0oSU9TKQorT0JKQ19DTEFTUyBVSVNjcmVlbjsKKyNlbmRpZgorCiB0eXBlZGVmIHVpbnQz
Ml90IFBsYXRmb3JtRGlzcGxheUlEOwogCiB0eXBlZGVmIFdURjo6VmVjdG9yPGNoYXI+IENvbG9y
UHJvZmlsZTsKQEAgLTQ3LDYgKzUxLDcgQEAgdHlwZWRlZiBXVEY6OlZlY3RvcjxjaGFyPiBDb2xv
clByb2ZpbGU7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBGbG9hdFJlY3Q7Cisg
ICAgY2xhc3MgRmxvYXRTaXplOwogICAgIGNsYXNzIFdpZGdldDsKIAogICAgIGludCBzY3JlZW5E
ZXB0aChXaWRnZXQqKTsKQEAgLTY5LDYgKzc0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAj
aWYgUExBVEZPUk0oSU9TKQogICAgIGZsb2F0IHNjcmVlblBQSUZhY3RvcigpOworICAgIFdFQkNP
UkVfRVhQT1JUIEZsb2F0U2l6ZSBzY3JlZW5TaXplKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgRmxv
YXRTaXplIGF2YWlsYWJsZVNjcmVlblNpemUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBmbG9hdCBz
Y3JlZW5TY2FsZUZhY3RvcihVSVNjcmVlbiAqID0gbmlsKTsKICNlbmRpZgogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRGV2
aWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EZXZpY2UuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA0MWQwYzBiMzc3YTI4ZTA2YjBlNDdmZGU1ZDllZGYzM2FmODkzNDQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRGV2aWNlLmNwcApAQCAtMCwwICsx
LDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRldmlj
ZS5oIgorCisjaWYgUExBVEZPUk0oSU9TKQorCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01HRGV2aWNlQ2xhc3MgZGV2aWNlQ2xhc3MoKQorewor
ICAgIGludCBkZXZpY2VDbGFzcyA9IE1HR2V0U0ludDMyQW5zd2VyKGtNR1FEZXZpY2VDbGFzc051
bWJlciwgTUdEZXZpY2VDbGFzc0ludmFsaWQpOworICAgIHN3aXRjaCAoZGV2aWNlQ2xhc3MpIHsK
KyAgICBjYXNlIE1HRGV2aWNlQ2xhc3NJbnZhbGlkOgorICAgIGNhc2UgTUdEZXZpY2VDbGFzc2lQ
aG9uZToKKyAgICBjYXNlIE1HRGV2aWNlQ2xhc3NpUG9kOgorICAgIGNhc2UgTUdEZXZpY2VDbGFz
c2lQYWQ6CisgICAgY2FzZSBNR0RldmljZUNsYXNzQXBwbGVUVjoKKyAgICBjYXNlIE1HRGV2aWNl
Q2xhc3NXYXRjaDoKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1HRGV2aWNlQ2xhc3M+KGRl
dmljZUNsYXNzKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgcmV0dXJuIE1HRGV2aWNlQ2xhc3NJbnZhbGlkOworICAgIH0KK30KKworQ0ZTdHJp
bmdSZWYgZGV2aWNlTmFtZSgpCit7CisgICAgYXV0byBkZXZpY2VOYW1lID0gYWRvcHRDRihzdGF0
aWNfY2FzdDxDRlN0cmluZ1JlZj4oTUdDb3B5QW5zd2VyKGtNR1FEZXZpY2VOYW1lLCBudWxscHRy
KSkpOworICAgIEFTU0VSVCghZGV2aWNlTmFtZSB8fCBDRkdldFR5cGVJRChkZXZpY2VOYW1lLmdl
dCgpKSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKTsKKyAgICByZXR1cm4gZGV2aWNlTmFtZS5hdXRv
cmVsZWFzZSgpOworfQorCitib29sIGRldmljZUhhc0lQYWRDYXBhYmlsaXR5KCkKK3sKKyAgICBy
ZXR1cm4gTUdHZXRCb29sQW5zd2VyKGtNR1FpUGFkQ2FwYWJpbGl0eSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9EZXZpY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMzA3NmE1ODY1MTY2ZTQwNzgwMzExNDVhNTFk
ZmQyNDIyMTFlZWU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL0RldmljZS5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIERldmlj
ZV9oCisjZGVmaW5lIERldmljZV9oCisKKyNpZiBQTEFURk9STShJT1MpCisKKyNpbmNsdWRlICJN
b2JpbGVHZXN0YWx0U1BJLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV0VCQ09SRV9FWFBP
UlQgTUdEZXZpY2VDbGFzcyBkZXZpY2VDbGFzcygpOworQ0ZTdHJpbmdSZWYgZGV2aWNlTmFtZSgp
OworCisvLyBGSVhNRTogSXNuJ3QgdGhpcyB0aGUgc2FtZSBhcyBkZXZpY2VDbGFzcygpID09IE1H
RGV2aWNlQ2xhc3NpUGFkPworYm9vbCBkZXZpY2VIYXNJUGFkQ2FwYWJpbGl0eSgpOworCit9CisK
KyNlbmRpZiAvLyBQTEFURk9STShJT1MpCisKKyNlbmRpZiAvLyBEZXZpY2VfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtU2NyZWVuSU9TLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtU2NyZWVuSU9TLm1tCmluZGV4IGEyMDhm
ZTllNjk2MDQyYmI4ZDczYzE1YzYyZjJmNmY4NTNlNzgxM2UuLjVjOWE5NWQ4MzRjOTkwMDY4M2Ez
MGY2NmJlODAyMzhiZDlkMjllOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QbGF0Zm9ybVNjcmVlbklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUGxhdGZvcm1TY3JlZW5JT1MubW0KQEAgLTI2LDE3ICsyNiwyMiBAQAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVNjcmVlbi5oIgogCisjaW1wb3J0ICJEZXZpY2UuaCIK
ICNpbXBvcnQgIkZsb2F0UmVjdC5oIgorI2ltcG9ydCAiRmxvYXRTaXplLmgiCiAjaW1wb3J0ICJG
cmFtZVZpZXcuaCIKICNpbXBvcnQgIkhvc3RXaW5kb3cuaCIKICNpbXBvcnQgIkludFJlY3QuaCIK
ICNpbXBvcnQgIk1vYmlsZUdlc3RhbHRTUEkuaCIKICNpbXBvcnQgIlNvZnRMaW5raW5nLmgiCisj
aW1wb3J0ICJVSUtpdFNQSS5oIgogI2ltcG9ydCAiV0FLV2luZG93LmgiCiAjaW1wb3J0ICJXZWJD
b3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0ICJXaWRnZXQuaCIKIAogU09GVF9MSU5LX0ZS
QU1FV09SSyhVSUtpdCkKK1NPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlBcHBsaWNhdGlvbikKK1NP
RlRfTElOS19DTEFTUyhVSUtpdCwgVUlTY3JlZW4pCiBTT0ZUX0xJTksoVUlLaXQsIFVJQWNjZXNz
aWJpbGl0eUlzR3JheXNjYWxlRW5hYmxlZCwgYm9vbCwgKHZvaWQpLCAoKSkKIFNPRlRfTElOSyhV
SUtpdCwgVUlBY2Nlc3NpYmlsaXR5SXNJbnZlcnRDb2xvcnNFbmFibGVkLCBib29sLCAodm9pZCks
ICgpKQogCkBAIC05OCwyNSArMTAzLDE0IEBAIEZsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0
KFdpZGdldCogd2lkZ2V0KQogICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIHdpZGdldC0+cm9vdCgpLT5ob3N0V2luZG93KCktPmF2YWlsYWJsZVNjcmVl
blNpemUoKSkpOwogfQogCi1zdGF0aWMgZmxvYXQgbW9iaWxlR2VzdGFsdEZsb2F0VmFsdWUoQ0ZT
dHJpbmdSZWYgcXVlc3Rpb24pCi17Ci0gICAgZmxvYXQgcmVzdWx0ID0gMDsKLSAgICBpZiAoQ0ZU
eXBlUmVmIHZhbHVlID0gTUdDb3B5QW5zd2VyKHF1ZXN0aW9uLCAwKSkgewotICAgICAgICBpZiAo
Q0ZHZXRUeXBlSUQodmFsdWUpID09IENGTnVtYmVyR2V0VHlwZUlEKCkpCi0gICAgICAgICAgICBD
Rk51bWJlckdldFZhbHVlKHN0YXRpY19jYXN0PENGTnVtYmVyUmVmPih2YWx1ZSksIGtDRk51bWJl
ckZsb2F0VHlwZSwgJnJlc3VsdCk7Ci0gICAgICAgIENGUmVsZWFzZSh2YWx1ZSk7Ci0gICAgfQot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIGZsb2F0IHNjcmVlblBQSUZhY3RvcigpCiB7CiAgICAg
c3RhdGljIGZsb2F0IHBwaUZhY3RvcjsKIAogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25j
ZVRva2VuOwogICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKLSAgICAgICAgZmxvYXQg
cGl0Y2ggPSBtb2JpbGVHZXN0YWx0RmxvYXRWYWx1ZShrTUdRTWFpblNjcmVlblBpdGNoKTsKLSAg
ICAgICAgZmxvYXQgc2NhbGUgPSBtb2JpbGVHZXN0YWx0RmxvYXRWYWx1ZShrTUdRTWFpblNjcmVl
blNjYWxlKTsKKyAgICAgICAgaW50IHBpdGNoID0gTUdHZXRTSW50MzJBbnN3ZXIoa01HUU1haW5T
Y3JlZW5QaXRjaCwgMCk7CisgICAgICAgIGZsb2F0IHNjYWxlID0gTUdHZXRGbG9hdDMyQW5zd2Vy
KGtNR1FNYWluU2NyZWVuU2NhbGUsIDApOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBmbG9hdCBv
cmlnaW5hbElQaG9uZVBQSSA9IDE2MzsKICAgICAgICAgZmxvYXQgbWFpblNjcmVlblBQSSA9IChw
aXRjaCAmJiBzY2FsZSkgPyBwaXRjaCAvIHNjYWxlIDogb3JpZ2luYWxJUGhvbmVQUEk7CkBAIC0x
MjYsNCArMTIwLDMzIEBAIGZsb2F0IHNjcmVlblBQSUZhY3RvcigpCiAgICAgcmV0dXJuIHBwaUZh
Y3RvcjsKIH0KIAorRmxvYXRTaXplIHNjcmVlblNpemUoKQoreworICAgIGlmIChkZXZpY2VIYXNJ
UGFkQ2FwYWJpbGl0eSgpICYmIFtbZ2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkgc2hhcmVkQXBwbGlj
YXRpb25dIF9pc0NsYXNzaWNdKQorICAgICAgICByZXR1cm4geyAzMjAsIDQ4MCB9OworICAgIHJl
dHVybiBGbG9hdFNpemUoW1tnZXRVSVNjcmVlbkNsYXNzKCkgbWFpblNjcmVlbl0gX3JlZmVyZW5j
ZUJvdW5kc10uc2l6ZSk7Cit9CisKK0Zsb2F0U2l6ZSBhdmFpbGFibGVTY3JlZW5TaXplKCkKK3sK
KyAgICBpZiAoZGV2aWNlSGFzSVBhZENhcGFiaWxpdHkoKSAmJiBbW2dldFVJQXBwbGljYXRpb25D
bGFzcygpIHNoYXJlZEFwcGxpY2F0aW9uXSBfaXNDbGFzc2ljXSkKKyAgICAgICAgcmV0dXJuIHsg
MzIwLCA0ODAgfTsKKyAgICByZXR1cm4gRmxvYXRTaXplKFtnZXRVSVNjcmVlbkNsYXNzKCkgbWFp
blNjcmVlbl0uYm91bmRzLnNpemUpOworfQorCitmbG9hdCBzY3JlZW5TY2FsZUZhY3RvcihVSVNj
cmVlbiAqc2NyZWVuKQoreworICAgIGlmICghc2NyZWVuKQorICAgICAgICBzY3JlZW4gPSBbZ2V0
VUlTY3JlZW5DbGFzcygpIG1haW5TY3JlZW5dOworCisgICAgQ0dGbG9hdCBzY2FsZSA9IHNjcmVl
bi5zY2FsZTsKKworICAgIC8vIFdlIGNhbiByZW1vdmUgdGhpcyBjbGFtcGluZyBvbmNlIDxyZGFy
Oi8vcHJvYmxlbS8xNjM5NTQ3NT4gaXMgZml4ZWQuCisgICAgY29uc3QgQ0dGbG9hdCBtYXhpbXVt
Q2xhc3NpY1NjcmVlblNjYWxlRmFjdG9yID0gMjsKKyAgICBpZiAoW1tnZXRVSUFwcGxpY2F0aW9u
Q2xhc3MoKSBzaGFyZWRBcHBsaWNhdGlvbl0gX2lzQ2xhc3NpY10pCisgICAgICAgIHJldHVybiBz
dGQ6Om1pbihzY2FsZSwgbWF4aW11bUNsYXNzaWNTY3JlZW5TY2FsZUZhY3Rvcik7CisKKyAgICBy
ZXR1cm4gc2NhbGU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGYwMTFhZGI1OWIyNTFkODc1NDQ0MjNlNThi
N2U0MWYyOTliMDA4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9T
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBXZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TX2gK
LSNkZWZpbmUgV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPU19oCi0KLSNpbmNsdWRlIDxBdmFpbGFi
aWxpdHkuaD4KLQotdHlwZWRlZiBlbnVtIHsKLSAgICB3a0lPU1N5c3RlbVZlcnNpb25fM18wID0g
X19JUEhPTkVfM18wLAotICAgIHdrSU9TU3lzdGVtVmVyc2lvbl80XzIgPSBfX0lQSE9ORV80XzIs
Ci0gICAgd2tJT1NTeXN0ZW1WZXJzaW9uXzVfMCA9IF9fSVBIT05FXzVfMCwKLSAgICB3a0lPU1N5
c3RlbVZlcnNpb25fNl8wID0gX19JUEhPTkVfNl8wLAotICAgIHdrSU9TU3lzdGVtVmVyc2lvbl85
XzAgPSBfX0lQSE9ORV85XzAsCi19IHdrSU9TU3lzdGVtVmVyc2lvbjsKLQotYm9vbCBpb3NFeGVj
dXRhYmxlV2FzTGlua2VkT25PckFmdGVyVmVyc2lvbih3a0lPU1N5c3RlbVZlcnNpb24pOwotCi1l
eHRlcm4gYm9vbCAoKndrRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JBZnRlcklPU1ZlcnNpb24pKGlu
dCk7Ci0KLWV4dGVybiBib29sICgqd2tJc0dCMTgwMzBDb21wbGlhbmNlUmVxdWlyZWQpKHZvaWQp
OwotCi1pbmxpbmUgYm9vbCBpb3NFeGVjdXRhYmxlV2FzTGlua2VkT25PckFmdGVyVmVyc2lvbih3
a0lPU1N5c3RlbVZlcnNpb24gdmVyc2lvbikKLXsKLSAgICByZXR1cm4gd2tFeGVjdXRhYmxlV2Fz
TGlua2VkT25PckFmdGVySU9TVmVyc2lvbih2ZXJzaW9uKTsKLX0KLQotdHlwZWRlZiBlbnVtIHsK
LSAgICB3a0RldmljZUNsYXNzSW52YWxpZCA9IC0xLAotICAgIHdrRGV2aWNlQ2xhc3NpUGFkLAot
ICAgIHdrRGV2aWNlQ2xhc3NpUGhvbmUsCi0gICAgd2tEZXZpY2VDbGFzc2lQb2QsCi19IHdrRGV2
aWNlQ2xhc3M7Ci1leHRlcm4gaW50ICgqd2tHZXREZXZpY2VDbGFzcykodm9pZCk7Ci1pbmxpbmUg
d2tEZXZpY2VDbGFzcyBpb3NEZXZpY2VDbGFzcyh2b2lkKQotewotICAgIGludCBkZXZpY2VDbGFz
cyA9IHdrR2V0RGV2aWNlQ2xhc3MoKTsKLSAgICBzd2l0Y2ggKGRldmljZUNsYXNzKSB7Ci0gICAg
Y2FzZSB3a0RldmljZUNsYXNzSW52YWxpZDoKLSAgICBjYXNlIHdrRGV2aWNlQ2xhc3NpUGFkOgot
ICAgIGNhc2Ugd2tEZXZpY2VDbGFzc2lQaG9uZToKLSAgICBjYXNlIHdrRGV2aWNlQ2xhc3NpUG9k
OgotICAgICAgICByZXR1cm4gKHdrRGV2aWNlQ2xhc3MpZGV2aWNlQ2xhc3M7Ci0gICAgfQotICAg
IGFzc2VydChmYWxzZSk7Ci0gICAgcmV0dXJuIHdrRGV2aWNlQ2xhc3NJbnZhbGlkOwotfQotCi1l
eHRlcm4gQ0ZTdHJpbmdSZWYgKCp3a0dldFVzZXJBZ2VudCkodm9pZCk7Ci1leHRlcm4gQ0ZTdHJp
bmdSZWYgKCp3a0dldERldmljZU5hbWUpKHZvaWQpOwotZXh0ZXJuIENGU3RyaW5nUmVmICgqd2tH
ZXRPU05hbWVGb3JVc2VyQWdlbnQpKHZvaWQpOwotZXh0ZXJuIENGU3RyaW5nUmVmICgqd2tHZXRQ
bGF0Zm9ybU5hbWVGb3JOYXZpZ2F0b3IpKHZvaWQpOwotZXh0ZXJuIENGU3RyaW5nUmVmICgqd2tH
ZXRWZW5kb3JOYW1lRm9yTmF2aWdhdG9yKSh2b2lkKTsKLQotZXh0ZXJuIGJvb2wgKCp3a0lzT3B0
aW1pemVkRnVsbHNjcmVlblN1cHBvcnRlZCkodm9pZCk7Ci0KLSNlbmRpZiAvLyBXZWJDb3JlU3lz
dGVtSW50ZXJmYWNlSU9TX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW0KaW5kZXggYzZlNGMxNjk3M2ZjNzZmZWQ1
MzM1YzViOGM5M2ViYWJlY2YzZGQ4ZC4uNGUzMDM2NmQ0ZWI3ZmFiMTg4ZGU0Y2FlOTBmOWQ1NTEx
ZjkwNmRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVT
eXN0ZW1JbnRlcmZhY2VJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW0KQEAgLTQ2LDEzICs0Niw3IEBAIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBD
RlN0cmluZ1JlZiBwCiBXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlBdXRo
b3JpemF0aW9uRm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5QXV0
aG9yaXphdGlvblN0cmluZyk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTZXRDb29raWVTdG9y
YWdlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkoQk9PTCk7CiBXRUJDT1JFX0VYUE9SVCBDRkhUVFBN
ZXNzYWdlUmVmICgqd2tDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpKENGUmVhZFN0cmVhbVJlZiwg
Q0ZVUkxSZWYgcmVzcG9uc2VVUkwsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYg
cHJveHlQb3J0KTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgKCp3a0V4ZWN1dGFibGVXYXNMaW5rZWRP
bk9yQWZ0ZXJJT1NWZXJzaW9uKShpbnQpOwotV0VCQ09SRV9FWFBPUlQgaW50ICgqd2tHZXREZXZp
Y2VDbGFzcykodm9pZCk7Ci1XRUJDT1JFX0VYUE9SVCBDR1NpemUgKCp3a0dldFNjcmVlblNpemUp
KHZvaWQpOwotV0VCQ09SRV9FWFBPUlQgQ0dTaXplICgqd2tHZXRBdmFpbGFibGVTY3JlZW5TaXpl
KSh2b2lkKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a1NldExheWVyQ29udGVudHNTY2FsZSko
Q0FMYXllciAqKTsKLVdFQkNPUkVfRVhQT1JUIGZsb2F0ICgqd2tHZXRTY3JlZW5TY2FsZUZhY3Rv
cikodm9pZCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sICgqd2tJc0dCMTgwMzBDb21wbGlhbmNlUmVx
dWlyZWQpKHZvaWQpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrQ0ZVUkxSZXF1ZXN0QWxsb3dB
bGxQb3N0Q2FjaGluZykoQ0ZVUkxSZXF1ZXN0UmVmKTsKIFdFQkNPUkVfRVhQT1JUIENGQXJyYXlS
ZWYgKCp3a0NvcHlOU1VSTFJlc3BvbnNlQ2VydGlmaWNhdGVDaGFpbikoTlNVUkxSZXNwb25zZSop
OwogV0VCQ09SRV9FWFBPUlQgQ0ZTdHJpbmdFbmNvZGluZyAoKndrR2V0V2ViRGVmYXVsdENGU3Ry
aW5nRW5jb2RpbmcpKHZvaWQpOwpAQCAtMTA0LDE0ICs5OCw2IEBAIFdFQkNPUkVfRVhQT1JUIGJv
b2wgKCp3a0lzUHVibGljU3VmZml4KShOU1N0cmluZyAqaG9zdCk7CiBXRUJDT1JFX0VYUE9SVCBD
RlN0cmluZ1JlZiAoKndrQ2FjaGVQYXJ0aXRpb25LZXkpKHZvaWQpOwogI2VuZGlmCiAKLVdFQkNP
UkVfRVhQT1JUIENGU3RyaW5nUmVmICgqd2tHZXRVc2VyQWdlbnQpKHZvaWQpOwotV0VCQ09SRV9F
WFBPUlQgQ0ZTdHJpbmdSZWYgKCp3a0dldERldmljZU5hbWUpKHZvaWQpOwotV0VCQ09SRV9FWFBP
UlQgQ0ZTdHJpbmdSZWYgKCp3a0dldE9TTmFtZUZvclVzZXJBZ2VudCkodm9pZCk7Ci1XRUJDT1JF
X0VYUE9SVCBDRlN0cmluZ1JlZiAoKndrR2V0UGxhdGZvcm1OYW1lRm9yTmF2aWdhdG9yKSh2b2lk
KTsKLVdFQkNPUkVfRVhQT1JUIENGU3RyaW5nUmVmICgqd2tHZXRWZW5kb3JOYW1lRm9yTmF2aWdh
dG9yKSh2b2lkKTsKLQotV0VCQ09SRV9FWFBPUlQgYm9vbCAoKndrSXNPcHRpbWl6ZWRGdWxsc2Ny
ZWVuU3VwcG9ydGVkKSh2b2lkKTsKLQogV0VCQ09SRV9FWFBPUlQgaW50ICgqd2tFeGVybmFsRGV2
aWNlVHlwZUZvclBsYXllcikoQVZQbGF5ZXIgKik7CiBXRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAq
KCp3a0V4ZXJuYWxEZXZpY2VEaXNwbGF5TmFtZUZvclBsYXllcikoQVZQbGF5ZXIgKik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0LmgKaW5kZXggOGQyZDhjODAzOGE1MTJkYmY3ZTRhZTVmODE2
MTIzOTkwYTUzMmUwMi4uZDU2MTJlYzNiOTliNjExYzEzN2ZmZGMwMDYwYjAzOGQwZjE3MjU4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKQEAgLTE1OCw2ICsxNTgsOCBAQCBwcm90ZWN0
ZWQ6CiAgICAgdm9pZCBkb0VudGVyRnVsbHNjcmVlbigpOwogfTsKIAorYm9vbCBzdXBwb3J0c1Bp
Y3R1cmVJblBpY3R1cmUoKTsKKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dC5tbQppbmRleCA4MjZhZjEzYTY1MzE4MWIwNzEyOWI5ZmFjYjg5MjJlZTM0MmYzZDJiLi5jZGVk
NjY2NjExNTNhMjZlMThmZWZhZDUzZjhkMjQ5ZGE4YzgyZmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0Lm1tCkBAIC0yNiw3ICsyNiw5IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogCi0j
aWYgUExBVEZPUk0oSU9TKSAmJiBIQVZFKEFWS0lUKQorI2lmIFBMQVRGT1JNKElPUykKKworI2lm
IEhBVkUoQVZLSVQpCiAKICNpbXBvcnQgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
LmgiCiAKQEAgLTU3LDYgKzU5LDcgQEAgU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwg
QVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19D
T05TVEFOVChBVkZvdW5kYXRpb24sIEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxs
LCBOU1N0cmluZyAqKQogCiBTT0ZUX0xJTktfRlJBTUVXT1JLKEFWS2l0KQorU09GVF9MSU5LX0NM
QVNTKEFWS2l0LCBBVlBpY3R1cmVJblBpY3R1cmVDb250cm9sbGVyKQogU09GVF9MSU5LX0NMQVNT
KEFWS2l0LCBBVlBsYXllckNvbnRyb2xsZXIpCiBTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFWUGxh
eWVyVmlld0NvbnRyb2xsZXIpCiBTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFWVmFsdWVUaW1pbmcp
CkBAIC0xMzAyLDcgKzEzMDUsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0OjpwcmVwYXJlZFRvUmV0dXJuVG9JbmxpbmUoYm9vbCB2aXNpYmxlLCBjbwogCiBib29sIFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjptYXlBdXRvbWF0aWNhbGx5U2hvd1ZpZGVv
UGljdHVyZUluUGljdHVyZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFttX3BsYXllckNvbnRyb2xs
ZXIgaXNQbGF5aW5nXSAmJiBtX21vZGUgPT0gSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlU3RhbmRhcmQgJiYgd2tJc09wdGltaXplZEZ1bGxzY3JlZW5TdXBwb3J0ZWQo
KTsKKyAgICByZXR1cm4gW21fcGxheWVyQ29udHJvbGxlciBpc1BsYXlpbmddICYmIG1fbW9kZSA9
PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCAmJiBz
dXBwb3J0c1BpY3R1cmVJblBpY3R1cmUoKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKHN0ZDo6ZnVuY3Rpb248
dm9pZChib29sKT4gY2FsbGJhY2spCkBAIC0xNDM4LDQgKzE0NDEsMTUgQEAgdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6Y2xlYXJNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVt
czo6VmlkZW9GdWwKICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+ZnVsbHNjcmVlbk1v
ZGVDaGFuZ2VkKG1fbW9kZSk7CiB9CiAKKyNlbmRpZiAvLyBIQVZFKEFWS0lUKQorCitib29sIFdl
YkNvcmU6OnN1cHBvcnRzUGljdHVyZUluUGljdHVyZSgpCit7CisjaWYgUExBVEZPUk0oSU9TKSAm
JiBIQVZFKEFWS0lUKQorICAgIHJldHVybiBbZ2V0QVZQaWN0dXJlSW5QaWN0dXJlQ29udHJvbGxl
ckNsYXNzKCkgaXNQaWN0dXJlSW5QaWN0dXJlU3VwcG9ydGVkXTsKKyNlbHNlCisgICAgcmV0dXJu
IGZhbHNlOwogI2VuZGlmCit9CisKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1dpbmRvdy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lm1tCmluZGV4IDlkODNjNWQwYzZiNjFi
MWQ0MzZiM2JmNmNiNWRjNzIwMWQ4NjM4NWQuLjk4OWNkNzdmZGFjMjRlYmU2Yzc0MDczOTJmOTIw
ZTI2MzgxZjkwYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsv
V0FLV2luZG93Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2lu
ZG93Lm1tCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgUExBVEZPUk0oSU9TKQogCiAjaW1wb3J0ICJM
ZWdhY3lUaWxlQ2FjaGUuaCIKKyNpbXBvcnQgIlBsYXRmb3JtU2NyZWVuLmgiCiAjaW1wb3J0ICJX
QUtWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNp
bXBvcnQgIldlYkNvcmVUaHJlYWRSdW4uaCIKQEAgLTY3LDcgKzY4LDcgQEAgLSAoaWQpaW5pdFdp
dGhMYXllcjooQ0FMYXllciAqKWxheWVyCiAgICAgX2hvc3RMYXllciA9IFtsYXllciByZXRhaW5d
OwogCiAgICAgX2ZyYW1lID0gW19ob3N0TGF5ZXIgZnJhbWVdOwotICAgIF9zY3JlZW5TY2FsZSA9
IHdrR2V0U2NyZWVuU2NhbGVGYWN0b3IoKTsKKyAgICBfc2NyZWVuU2NhbGUgPSBzY3JlZW5TY2Fs
ZUZhY3RvcigpOwogICAgIAogICAgIF90aWxlQ2FjaGUgPSBuZXcgTGVnYWN5VGlsZUNhY2hlKHNl
bGYpOwogCkBAIC04Niw3ICs4Nyw3IEBAIC0gKGlkKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFt
ZQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgX2ZyYW1lID0gZnJhbWU7Ci0gICAgX3NjcmVl
blNjYWxlID0gd2tHZXRTY3JlZW5TY2FsZUZhY3RvcigpOworICAgIF9zY3JlZW5TY2FsZSA9IHNj
cmVlblNjYWxlRmFjdG9yKCk7CiAKICAgICBfZXhwb3NlZFNjcm9sbFZpZXdSZWN0ID0gQ0dSZWN0
TnVsbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XS0dy
YXBoaWNzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XS0dyYXBoaWNzLm1t
CmluZGV4IDk5YzQxNjE5NWMyYmE0NTg1ODA0OTBjNTUwZTJlOTViNTFmMDVkNmYuLjJkZTQzZGYz
ZjJmODZmYjVhMGQ1NmJiZWNlMjZlY2U4NGQyZDc5NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy93YWsvV0tHcmFwaGljcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3Mvd2FrL1dLR3JhcGhpY3MubW0KQEAgLTMwLDcgKzMwLDcgQEAKIAogI2ltcG9y
dCAiQ29yZUdyYXBoaWNzU1BJLmgiCiAjaW1wb3J0ICJGb250Q2FzY2FkZS5oIgotI2ltcG9ydCAi
V2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgorI2ltcG9ydCAiUGxhdGZvcm1TY3JlZW4uaCIKICNp
bXBvcnQgIldlYkNvcmVUaHJlYWQuaCIKICNpbXBvcnQgPEltYWdlSU8vSW1hZ2VJTy5oPgogI2lt
cG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtMTEzLDkgKzExMyw5IEBAIENHSW1hZ2VSZWYg
V0tHcmFwaGljc0NyZWF0ZUltYWdlRnJvbUJ1bmRsZVdpdGhOYW1lKGNvbnN0IGNoYXIgKmltYWdl
X2ZpbGUpCiAKICAgICBDR0ltYWdlUmVmIGltYWdlID0gbnVsbHB0cjsKICAgICBOU0RhdGEgKmlt
YWdlRGF0YSA9IG51bGxwdHI7Ci0gICAgZm9yICh1bnNpZ25lZCBzY2FsZUZhY3RvciA9IHdrR2V0
U2NyZWVuU2NhbGVGYWN0b3IoKTsgc2NhbGVGYWN0b3IgPiAwOyAtLXNjYWxlRmFjdG9yKSB7Cisg
ICAgZm9yICh1bnNpZ25lZCBzY2FsZUZhY3RvciA9IHNjcmVlblNjYWxlRmFjdG9yKCk7IHNjYWxl
RmFjdG9yID4gMDsgLS1zY2FsZUZhY3RvcikgewogICAgICAgICBpbWFnZURhdGEgPSBbTlNEYXRh
IGRhdGFXaXRoQ29udGVudHNPZkZpbGU6aW1hZ2VSZXNvdXJjZVBhdGgoaW1hZ2VfZmlsZSwgc2Nh
bGVGYWN0b3IpXTsKLSAgICAgICAgQVNTRVJUKHNjYWxlRmFjdG9yICE9IHdrR2V0U2NyZWVuU2Nh
bGVGYWN0b3IoKSB8fCBpbWFnZURhdGEpOworICAgICAgICBBU1NFUlQoc2NhbGVGYWN0b3IgIT0g
c2NyZWVuU2NhbGVGYWN0b3IoKSB8fCBpbWFnZURhdGEpOwogICAgICAgICBpZiAoaW1hZ2VEYXRh
KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTMxLDcgKzEzMSw3IEBAIENHSW1hZ2VS
ZWYgV0tHcmFwaGljc0NyZWF0ZUltYWdlRnJvbUJ1bmRsZVdpdGhOYW1lKGNvbnN0IGNoYXIgKmlt
YWdlX2ZpbGUpCiBzdGF0aWMgdm9pZCBXS0RyYXdQYXR0ZXJuQml0bWFwKHZvaWQgKmluZm8sIENH
Q29udGV4dFJlZiBjKSAKIHsKICAgICBDR0ltYWdlUmVmIGltYWdlID0gKENHSW1hZ2VSZWYpaW5m
bzsKLSAgICBDR0Zsb2F0IHNjYWxlID0gd2tHZXRTY3JlZW5TY2FsZUZhY3RvcigpOworICAgIENH
RmxvYXQgc2NhbGUgPSBzY3JlZW5TY2FsZUZhY3RvcigpOwogICAgIENHQ29udGV4dERyYXdJbWFn
ZShjLCBDR1JlY3RNYWtlKDAsIDAsIENHSW1hZ2VHZXRXaWR0aChpbWFnZSkgLyBzY2FsZSwgQ0dJ
bWFnZUdldEhlaWdodChpbWFnZSkgLyBzY2FsZSksIGltYWdlKTsgICAgCiB9CiAKQEAgLTE1MCw3
ICsxNTAsNyBAQCBDR1BhdHRlcm5SZWYgV0tDcmVhdGVQYXR0ZXJuRnJvbUNHSW1hZ2UoQ0dJbWFn
ZVJlZiBpbWFnZVJlZikKICAgICAvLyByZXRhaW4gaW1hZ2Ugc2luY2UgaXQncyBmcmVlZCBieSBv
dXIgY2FsbGJhY2sKICAgICBDR0ltYWdlUmV0YWluKGltYWdlUmVmKTsKIAotICAgIENHRmxvYXQg
c2NhbGUgPSB3a0dldFNjcmVlblNjYWxlRmFjdG9yKCk7CisgICAgQ0dGbG9hdCBzY2FsZSA9IHNj
cmVlblNjYWxlRmFjdG9yKCk7CiAgICAgcmV0dXJuIENHUGF0dGVybkNyZWF0ZSgodm9pZCopaW1h
Z2VSZWYsIENHUmVjdE1ha2UoMCwgMCwgQ0dJbWFnZUdldFdpZHRoKGltYWdlUmVmKSAvIHNjYWxl
LCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlUmVmKSAvIHNjYWxlKSwgQ0dBZmZpbmVUcmFuc2Zvcm1J
ZGVudGl0eSwgQ0dJbWFnZUdldFdpZHRoKGltYWdlUmVmKSAvIHNjYWxlLCBDR0ltYWdlR2V0SGVp
Z2h0KGltYWdlUmVmKSAvIHNjYWxlLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nLCAx
IC8qaXNDb2xvcmVkKi8sICZXS1BhdHRlcm5CaXRtYXBDYWxsYmFja3MpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaApp
bmRleCAwNDZkZDZiNzc0MTE0MGQ4MGY3YTFmZjAyNjFlNDQxZWFmZTA2MTI1Li42MGI0ODkwNTcz
YWQ2YTg1ZDNiMGEzNzNjYzhjYTI1ZmYzOWYwMjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKQEAgLTI4LDEwICsyOCw2
IEBACiAKICNpbmNsdWRlIDxvYmpjL29iamMuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKLSNpbmNs
dWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLmgiCi0jZW5kaWYKLQogdHlwZWRlZiBjb25z
dCBzdHJ1Y3QgX19DRlN0cmluZyAqIENGU3RyaW5nUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3Qg
X19DRk51bWJlciAqIENGTnVtYmVyUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRkRpY3Rp
b25hcnkgKiBDRkRpY3Rpb25hcnlSZWY7CkBAIC0yMzcsMTAgKzIzMyw3IEBAIGV4dGVybiBBWFVJ
RWxlbWVudFJlZiAoKndrQ3JlYXRlQVhVSUVsZW1lbnRSZWYpKGlkIGVsZW1lbnQpOwogI2VuZGlm
IC8vICFQTEFURk9STShJT1MpCiAKICNpZiBQTEFURk9STShJT1MpCi1leHRlcm4gQ0dTaXplICgq
d2tHZXRTY3JlZW5TaXplKSh2b2lkKTsKLWV4dGVybiBDR1NpemUgKCp3a0dldEF2YWlsYWJsZVNj
cmVlblNpemUpKHZvaWQpOwogZXh0ZXJuIHZvaWQgKCp3a1NldExheWVyQ29udGVudHNTY2FsZSko
Q0FMYXllciAqKTsKLWV4dGVybiBmbG9hdCAoKndrR2V0U2NyZWVuU2NhbGVGYWN0b3IpKHZvaWQp
OwogI2VuZGlmCiAKIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZVUkxTdG9yYWdlU2Vzc2lvbiog
Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NwaS9jb2NvYS9EeW5hbWljTGlua2VyU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcGkvY29jb2EvRHluYW1pY0xpbmtlclNQSS5oCmluZGV4IDQ2MGRhOTE5YTRlOWE2Y2M4MDhm
Y2IyMzFhNDUzMjE5NmU1MzIwZGYuLmRlNjI2YjExNmYwNTI4YjdlMWY3ZDUyYmY2YjJkY2MzNGFj
MTZhYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9EeW5h
bWljTGlua2VyU1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL0R5
bmFtaWNMaW5rZXJTUEkuaApAQCAtMzUsOCArMzUsMTEgQEAKICNlbHNlCiAKICNkZWZpbmUgRFlM
RF9JT1NfVkVSU0lPTl8zXzAgMHgwMDAzMDAwMAotI2RlZmluZSBEWUxEX0lPU19WRVJTSU9OXzZf
MCAweDAwMDYwMDAwOwotI2RlZmluZSBEWUxEX0lPU19WRVJTSU9OXzdfMCAweDAwMDcwMDAwOwor
I2RlZmluZSBEWUxEX0lPU19WRVJTSU9OXzRfMiAweDAwMDQwMjAwCisjZGVmaW5lIERZTERfSU9T
X1ZFUlNJT05fNV8wIDB4MDAwNTAwMDAKKyNkZWZpbmUgRFlMRF9JT1NfVkVSU0lPTl82XzAgMHgw
MDA2MDAwMAorI2RlZmluZSBEWUxEX0lPU19WRVJTSU9OXzdfMCAweDAwMDcwMDAwCisjZGVmaW5l
IERZTERfSU9TX1ZFUlNJT05fOV8wIDB4MDAwOTAwMDAKIAogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9pb3MvTW9iaWxlR2VzdGFsdFNQSS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2lvcy9Nb2JpbGVHZXN0YWx0U1BJLmgKaW5kZXggMDM2
YTQ0NzEzNDc2NjVjMWEwZDQ3OWFhNzNiMTI5ODZmNGRhODY4Yy4uMmQ5ZWJkZmJjNTAxMGYwMjlm
ZjYwY2Q0Mjc0ZGNmYjVmZmRmZmI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vc3BpL2lvcy9Nb2JpbGVHZXN0YWx0U1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vc3BpL2lvcy9Nb2JpbGVHZXN0YWx0U1BJLmgKQEAgLTQxLDYgKzQxLDIwIEBACiBFWFRFUk5f
QyBjb25zdCBDRlN0cmluZ1JlZiBrTUdRQXBwbGVJbnRlcm5hbEluc3RhbGxDYXBhYmlsaXR5ID0g
Q0ZTVFIoImFwcGxlLWludGVybmFsLWluc3RhbGwiKTsKIEVYVEVSTl9DIGNvbnN0IENGU3RyaW5n
UmVmIGtNR1FNYWluU2NyZWVuUGl0Y2ggPSBDRlNUUigibWFpbi1zY3JlZW4tcGl0Y2giKTsKIEVY
VEVSTl9DIGNvbnN0IENGU3RyaW5nUmVmIGtNR1FNYWluU2NyZWVuU2NhbGUgPSBDRlNUUigibWFp
bi1zY3JlZW4tc2NhbGUiKTsKK0VYVEVSTl9DIGNvbnN0IENGU3RyaW5nUmVmIGtNR1FpUGFkQ2Fw
YWJpbGl0eSA9IENGU1RSKCJpcGFkIik7CitFWFRFUk5fQyBjb25zdCBDRlN0cmluZ1JlZiBrTUdR
RGV2aWNlTmFtZSA9IENGU1RSKCJEZXZpY2VOYW1lIik7CitFWFRFUk5fQyBjb25zdCBDRlN0cmlu
Z1JlZiBrTUdRRGV2aWNlQ2xhc3NOdW1iZXIgPSBDRlNUUigiRGV2aWNlQ2xhc3NOdW1iZXIiKTsK
KwordHlwZWRlZiBlbnVtIHsKKyAgICBNR0RldmljZUNsYXNzSW52YWxpZCA9IC0xLAorICAgIC8q
IDAgaXMgaW50ZW50aW9uYWxseSBub3QgaW4gdGhpcyBlbnVtICovCisgICAgTUdEZXZpY2VDbGFz
c2lQaG9uZSAgPSAxLAorICAgIE1HRGV2aWNlQ2xhc3NpUG9kICAgID0gMiwKKyAgICBNR0Rldmlj
ZUNsYXNzaVBhZCAgICA9IDMsCisgICAgTUdEZXZpY2VDbGFzc0FwcGxlVFYgPSA0LAorICAgIC8q
IDUgaXMgaW50ZW50aW9uYWxseSBub3QgaW4gdGhpcyBlbnVtICovCisgICAgTUdEZXZpY2VDbGFz
c1dhdGNoICAgPSA2LAorfSBNR0RldmljZUNsYXNzOwogCiAjZW5kaWYKIApAQCAtNTAsNiArNjQs
MTQgQEAgRVhURVJOX0MgQ0ZUeXBlUmVmIE1HQ29weUFuc3dlcihDRlN0cmluZ1JlZiBxdWVzdGlv
biwgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpOwogRVhURVJOX0MgYm9vbCBNR0dldEJvb2xBbnN3
ZXIoQ0ZTdHJpbmdSZWYgcXVlc3Rpb24pOwogI2VuZGlmCiAKKyNpZm5kZWYgTUdHZXRTSW50MzJB
bnN3ZXIKK0VYVEVSTl9DIFNJbnQzMiBNR0dldFNJbnQzMkFuc3dlcihDRlN0cmluZ1JlZiBxdWVz
dGlvbiwgU0ludDMyIGRlZmF1bHRWYWx1ZSk7CisjZW5kaWYKKworI2lmbmRlZiBNR0dldEZsb2F0
MzJBbnN3ZXIKK0VYVEVSTl9DIEZsb2F0MzIgTUdHZXRGbG9hdDMyQW5zd2VyKENGU3RyaW5nUmVm
IHF1ZXN0aW9uLCBGbG9hdDMyIGRlZmF1bHRWYWx1ZSk7CisjZW5kaWYKKwogI2VuZGlmCiAKICNl
bmRpZiAvLyBNb2JpbGVHZXN0YWx0U1BJX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NwaS9pb3MvVUlDb2xvclNQSS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Bp
L2lvcy9VSUNvbG9yU1BJLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5ODE0YTU2
OGUwMmZkNmMwZWUxOTdiOGY5ZWNkYThhNjg0YjViNjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2lvcy9V
SUNvbG9yU1BJLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0KLSNpbXBvcnQgPFVJS2l0L1VJSW50ZXJmYWNl
X1ByaXZhdGUuaD4KLQotI2Vsc2UKLQotI2ltcG9ydCA8VUlLaXQvVUlDb2xvci5oPgotCi1AaW50
ZXJmYWNlIFVJQ29sb3IgKCkKLQotKyAoVUlDb2xvciAqKXN5c3RlbUJsdWVDb2xvcjsKLSsgKFVJ
Q29sb3IgKilzeXN0ZW1HcmF5Q29sb3I7Ci0rIChVSUNvbG9yICopc3lzdGVtR3JlZW5Db2xvcjsK
LSsgKFVJQ29sb3IgKilzeXN0ZW1PcmFuZ2VDb2xvcjsKLSsgKFVJQ29sb3IgKilzeXN0ZW1QaW5r
Q29sb3I7Ci0rIChVSUNvbG9yICopc3lzdGVtUmVkQ29sb3I7Ci0rIChVSUNvbG9yICopc3lzdGVt
WWVsbG93Q29sb3I7Ci0KLUBlbmQKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cGkvaW9zL1VJS2l0U1BJLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2NmMjBmOTg3OTcwNzNkNmYxYmJkYjcwOTk1
MzVlNTFjZDZkYjJhMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NwaS9pb3MvVUlLaXRTUEkuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIFVT
RShBUFBMRV9JTlRFUk5BTF9TREspCisKKyNpbXBvcnQgPFVJS2l0L1VJQXBwbGljYXRpb25fUHJp
dmF0ZS5oPgorI2ltcG9ydCA8VUlLaXQvVUlJbnRlcmZhY2VfUHJpdmF0ZS5oPgorI2ltcG9ydCA8
VUlLaXQvVUlTY3JlZW5fUHJpdmF0ZS5oPgorCisjZWxzZQorCisjaW1wb3J0IDxVSUtpdC9VSUtp
dC5oPgorCitAaW50ZXJmYWNlIFVJQXBwbGljYXRpb24gKCkKKworLSAoQk9PTClfaXNDbGFzc2lj
OworCitAZW5kCisKK0BpbnRlcmZhY2UgVUlDb2xvciAoKQorCisrIChVSUNvbG9yICopc3lzdGVt
Qmx1ZUNvbG9yOworKyAoVUlDb2xvciAqKXN5c3RlbUdyYXlDb2xvcjsKKysgKFVJQ29sb3IgKilz
eXN0ZW1HcmVlbkNvbG9yOworKyAoVUlDb2xvciAqKXN5c3RlbU9yYW5nZUNvbG9yOworKyAoVUlD
b2xvciAqKXN5c3RlbVBpbmtDb2xvcjsKKysgKFVJQ29sb3IgKilzeXN0ZW1SZWRDb2xvcjsKKysg
KFVJQ29sb3IgKilzeXN0ZW1ZZWxsb3dDb2xvcjsKKworQGVuZAorCitAaW50ZXJmYWNlIFVJU2Ny
ZWVuICgpCisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQ0dSZWN0IF9yZWZlcmVu
Y2VCb3VuZHM7CisKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVJT1MubW0KaW5kZXggOTk2NzljOGEyZDNiYTNkM2NiMjQzNjFjZDIyNWJmMDg0ZTM1
ODVjNi4uNWVjZjgxZGNhMTg4ZjJhMmExNmY0ZDhmZDNhMDI1ZTFlOTYzYjk2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAtNTYsNyArNTYsNyBAQAog
I2ltcG9ydCAiUmVuZGVyVGhlbWVJT1MuaCIKICNpbXBvcnQgIlJlbmRlclZpZXcuaCIKICNpbXBv
cnQgIlNvZnRMaW5raW5nLmgiCi0jaW1wb3J0ICJVSUNvbG9yU1BJLmgiCisjaW1wb3J0ICJVSUtp
dFNQSS5oIgogI2ltcG9ydCAiVXNlckFnZW50U2NyaXB0cy5oIgogI2ltcG9ydCAiVXNlckFnZW50
U3R5bGVTaGVldHMuaCIKICNpbXBvcnQgIldlYkNvcmVUaHJlYWRSdW4uaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvaW9zL01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tIGIvU291cmNlL1dlYktp
dC9pb3MvTWlzYy9XZWJVSUtpdFN1cHBvcnQubW0KaW5kZXggMDJjOTdhNjNkYWNiMTE3MjRiM2Fk
MmMxZjU2MzZlYzU1YmE0MzlkYy4uNzM5MzlmMzVkMWIyNGE4YzRjOTlmZWFiZTkyZDhjZWEyMjQ2
MDRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvTWlzYy9XZWJVSUtpdFN1cHBvcnQu
bW0KKysrIGIvU291cmNlL1dlYktpdC9pb3MvTWlzYy9XZWJVSUtpdFN1cHBvcnQubW0KQEAgLTMz
LDggKzMzLDEwIEBACiAjaW1wb3J0ICJXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbXBvcnQg
IldlYlN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCAiV2ViVmlld1ByaXZhdGUuaCIKKyNpbXBv
cnQgPFdlYkNvcmUvRHluYW1pY0xpbmtlclNQSS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYXRoVXRp
bGl0aWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgorI2ltcG9ydCA8
V2ViQ29yZS9TZXR0aW5ncy5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0QnJlYWtJdGVyYXRvci5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1dlYkNvcmVUaHJlYWRTeXN0ZW1JbnRlcmZhY2UuaD4KQEAgLTQ2LDcgKzQ4LDcgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBsaW5rZWRPbk9y
QWZ0ZXJJT1M1KCkKIHsKLSAgICBzdGF0aWMgYm9vbCBzX2xpbmtlZE9uT3JBZnRlcklPUzUgPSBp
b3NFeGVjdXRhYmxlV2FzTGlua2VkT25PckFmdGVyVmVyc2lvbih3a0lPU1N5c3RlbVZlcnNpb25f
NV8wKTsKKyAgICBzdGF0aWMgYm9vbCBzX2xpbmtlZE9uT3JBZnRlcklPUzUgPSBkeWxkX2dldF9w
cm9ncmFtX3Nka192ZXJzaW9uKCkgPj0gRFlMRF9JT1NfVkVSU0lPTl81XzA7CiAgICAgcmV0dXJu
IHNfbGlua2VkT25PckFmdGVySU9TNTsKIH0KIApAQCAtODMsNyArODUsNyBAQCB2b2lkIFdlYktp
dFNldElzQ2xhc3NpYyhCT09MIGZsYWcpCiAKIGZsb2F0IFdlYktpdEdldE1pbmltdW1ab29tRm9u
dFNpemUodm9pZCkKIHsKLSAgICByZXR1cm4gV0tHZXRNaW5pbXVtWm9vbUZvbnRTaXplKCk7Cisg
ICAgcmV0dXJuIFNldHRpbmdzOjpkZWZhdWx0TWluaW11bVpvb21Gb250U2l6ZSgpOwogfQogCiBp
bnQgV2ViS2l0R2V0TGFzdExpbmVCcmVha0luQnVmZmVyKFVDaGFyICpjaGFyYWN0ZXJzLCBpbnQg
cG9zaXRpb24sIGludCBsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW0KaW5kZXggYjljZjEzOTc4NGU2ZjUyMGU0
ZWNhODY5ZDRiMmI0OWYzZmRjM2Q4Ny4uNGU0MGFiNTI0YzViZmZlZGRlNjY1YzExODA0ZjE1Njlh
NzYzOTQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudElPUy5tbQpAQCAtNTQsNiArNTQsNyBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSW50UmVjdC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9Ob2RlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1JlbmRlckJveC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJPYmplY3QuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmg+CkBAIC02MSwx
MCArNjIsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9XQUtXaW5kb3cuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViQ29yZVRocmVhZE1lc3NhZ2UuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKLSNpbmNsdWRl
ICJXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaCIKLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogdm9pZCBXZWJDaHJvbWVDbGllbnRJT1M6OnNldFdpbmRvd1JlY3QoY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiByKQpAQCAtMTc0LDcgKzE3MSw3IEBAIHN0YXRpYyBpbmxpbmUgTlNE
aWN0aW9uYXJ5KiBkaWN0aW9uYXJ5Rm9yVmlld3BvcnRBcmd1bWVudHMoY29uc3QgV2ViQ29yZTo6
Vmlld3BvCiAKIEZsb2F0U2l6ZSBXZWJDaHJvbWVDbGllbnRJT1M6OnNjcmVlblNpemUoKSBjb25z
dAogewotICAgIHJldHVybiBGbG9hdFNpemUoV0tHZXRTY3JlZW5TaXplKCkpOworICAgIHJldHVy
biBGbG9hdFNpemUoc2NyZWVuU2l6ZSgpKTsKIH0KIAogRmxvYXRTaXplIFdlYkNocm9tZUNsaWVu
dElPUzo6YXZhaWxhYmxlU2NyZWVuU2l6ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggOGMyMDVi
NDZiM2YyOTkxNWQ3MGUwYTJiYjlhM2EwZmQyZjU1ZTNkMC4uMTRjMWJjNmM2YjYxZWU1YzZjYzg0
NjYxNWM0ODlkM2FkNGU0YzEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQpAQCAtMTExLDE2ICsxMTEsNiBAQCB2
b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgSU5JVChRVENsZWFyTWVk
aWFEb3dubG9hZENhY2hlKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIElOSVQo
RXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JBZnRlcklPU1ZlcnNpb24pOwotICAgIElOSVQoR2V0RGV2
aWNlQ2xhc3MpOwotICAgIElOSVQoR2V0U2NyZWVuU2l6ZSk7Ci0gICAgSU5JVChHZXRBdmFpbGFi
bGVTY3JlZW5TaXplKTsKLSAgICBJTklUKEdldFNjcmVlblNjYWxlRmFjdG9yKTsKLSAgICBJTklU
KElzR0IxODAzMENvbXBsaWFuY2VSZXF1aXJlZCk7Ci0gICAgSU5JVChJc09wdGltaXplZEZ1bGxz
Y3JlZW5TdXBwb3J0ZWQpOwotI2VuZGlmCi0KICNpZiAhUExBVEZPUk0oSU9TKQogICAgIElOSVQo
RXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JCZWZvcmVTbm93TGVvcGFyZCk7CiAgICAgSU5JVChDb3B5
RGVmYXVsdFNlYXJjaFByb3ZpZGVyRGlzcGxheU5hbWUpOwpAQCAtMTcwLDE0ICsxNjAsNiBAQCB2
b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAKICAgICBJTklUKENGVVJMUmVx
dWVzdEFsbG93QWxsUG9zdENhY2hpbmcpOwogCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIElOSVQo
R2V0VXNlckFnZW50KTsKLSAgICBJTklUKEdldERldmljZU5hbWUpOwotICAgIElOSVQoR2V0T1NO
YW1lRm9yVXNlckFnZW50KTsKLSAgICBJTklUKEdldFBsYXRmb3JtTmFtZUZvck5hdmlnYXRvcik7
Ci0gICAgSU5JVChHZXRWZW5kb3JOYW1lRm9yTmF2aWdhdG9yKTsKLSNlbmRpZgotCiAjaWYgIVBM
QVRGT1JNKElPUykKICAgICBJTklUKE5TRWxhc3RpY0RlbHRhRm9yVGltZURlbHRhKTsKICAgICBJ
TklUKE5TRWxhc3RpY0RlbHRhRm9yUmVib3VuZERlbHRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCmluZGV4IGUwMmE5MThkZTIzM2E3Yzk1MTlmZDRhMjBj
ODUyMDZjZjdkYzExOWYuLmVjNzE3YmMwZjVjMTU5NTc5YWZhNWVkODA0ODAxNDgwMzUwYmQ4ZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQpAQCAtNTks
NiArNTksNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogI2lmIFBMQVRGT1JNKElPUykK
ICNpbXBvcnQgPEF1ZGlvVG9vbGJveC9BdWRpb1Nlc3Npb24uaD4KKyNpbXBvcnQgPFdlYkNvcmUv
RGV2aWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9JbWFnZVNvdXJjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkTWVz
c2FnZS5oPgpAQCAtMzk2LDcgKzM5Nyw3IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogICAgIFdURjo6
aW5pdGlhbGl6ZU1haW5UaHJlYWRUb1Byb2Nlc3NNYWluVGhyZWFkKCk7CiAgICAgUnVuTG9vcDo6
aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CiAjZWxzZQotICAgIGJvb2wgYWxsb3dzSW5saW5lTWVk
aWFQbGF5YmFjayA9IFdLR2V0RGV2aWNlQ2xhc3MoKSA9PSBXS0RldmljZUNsYXNzaVBhZDsKKyAg
ICBib29sIGFsbG93c0lubGluZU1lZGlhUGxheWJhY2sgPSBXZWJDb3JlOjpkZXZpY2VDbGFzcygp
ID09IE1HRGV2aWNlQ2xhc3NpUGFkOwogICAgIGJvb2wgcmVxdWlyZXNQbGF5c0lubGluZUF0dHJp
YnV0ZSA9ICFhbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrOwogI2VuZGlmCiAgICAgSW5pdFdlYkNv
cmVTeXN0ZW1JbnRlcmZhY2UoKTsKQEAgLTU3Niw3ICs1NzcsNyBAQCArICh2b2lkKWluaXRpYWxp
emUKICAgICAgICAgQCIiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdE5ldHdv
cmtJbnRlcmZhY2VOYW1lUHJlZmVyZW5jZUtleSwKICNlbmRpZgogI2lmIEVOQUJMRShJT1NfVEVY
VF9BVVRPU0laSU5HKQotICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OldLR2V0TWlu
aW11bVpvb21Gb250U2l6ZSgpXSwgV2ViS2l0TWluaW11bVpvb21Gb250U2l6ZVByZWZlcmVuY2VL
ZXksCisgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6U2V0dGluZ3M6OmRlZmF1bHRN
aW5pbXVtWm9vbUZvbnRTaXplKCldLCBXZWJLaXRNaW5pbXVtWm9vbUZvbnRTaXplUHJlZmVyZW5j
ZUtleSwKICNlbmRpZgogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aExvbmdMb25nOkFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpub1F1b3RhKCldLCBXZWJLaXRBcHBsaWNhdGlvbkNhY2hlVG90
YWxRdW90YSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhMb25nTG9uZzpBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6bm9RdW90YSgpXSwgV2ViS2l0QXBwbGljYXRpb25DYWNoZURlZmF1bHRP
cmlnaW5RdW90YSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA5MWQ4YmM0
NzE3MmExZjFjM2Y0OWE2MTNlMGJhMzI0NzFjNzJiOTI2Li4xYTRmNzUyMTE2NTk5ODg0ZWZkMjY0
NTMxOGE0YzVjYzE0N2MxMjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBA
IC0yNDMsNiArMjQzLDcgQEAKICNpbXBvcnQgIldlYlN0b3JhZ2VNYW5hZ2VyUHJpdmF0ZS5oIgog
I2ltcG9ydCAiV2ViVUlLaXRTdXBwb3J0LmgiCiAjaW1wb3J0ICJXZWJWaXNpYmxlUG9zaXRpb24u
aCIKKyNpbXBvcnQgPFdlYkNvcmUvRHluYW1pY0xpbmtlclNQSS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9FdmVudE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnRDYWNoZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+CkBAIC0yNTAsNiArMjUxLDcgQEAKICNpbXBvcnQgPFdl
YkNvcmUvTGVnYWN5VGlsZUNhY2hlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01vYmlsZUdlc3RhbHRT
UEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvTmV0d29ya1N0YXRlTm90aWZpZXIuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxp
Y2F0aW9uQ2hlY2tzSU9TLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlVHJhY2tl
ci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TbWFydFJlcGxhY2UuaD4KQEAgLTg1MCw3ICs4NTIsNyBA
QCBzdGF0aWMgYm9vbCBzaG91bGRBbGxvd0Rpc3BsYXlBbmRSdW5uaW5nT2ZJbnNlY3VyZUNvbnRl
bnQoKQogc3RhdGljIGJvb2wgc2hvdWxkQWxsb3dQaWN0dXJlSW5QaWN0dXJlTWVkaWFQbGF5YmFj
aygpCiB7CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHN0YXRpYyBib29sIHNob3VsZEFsbG93UGlj
dHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2sgPSBpb3NFeGVjdXRhYmxlV2FzTGlua2VkT25PckFm
dGVyVmVyc2lvbih3a0lPU1N5c3RlbVZlcnNpb25fOV8wKTsKKyAgICBzdGF0aWMgYm9vbCBzaG91
bGRBbGxvd1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrID0gZHlsZF9nZXRfcHJvZ3JhbV9z
ZGtfdmVyc2lvbigpID49IERZTERfSU9TX1ZFUlNJT05fOV8wOwogICAgIHJldHVybiBzaG91bGRB
bGxvd1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrOwogI2Vsc2UKICAgICByZXR1cm4gZmFs
c2U7CkBAIC01Mzk4LDcgKzU0MDAsNyBAQCAtICh2b2lkKV91cGRhdGVTY3JlZW5TY2FsZUZyb21X
aW5kb3cKICAgICBpZiAoV0FLV2luZG93ICp3aW5kb3cgPSBbc2VsZiB3aW5kb3ddKQogICAgICAg
ICBzY2FsZUZhY3RvciA9IFt3aW5kb3cgc2NyZWVuU2NhbGVdOwogICAgIGVsc2UKLSAgICAgICAg
c2NhbGVGYWN0b3IgPSBXS0dldFNjcmVlblNjYWxlRmFjdG9yKCk7CisgICAgICAgIHNjYWxlRmFj
dG9yID0gc2NyZWVuU2NhbGVGYWN0b3IoKTsKIAogICAgIF9wcml2YXRlLT5wYWdlLT5zZXREZXZp
Y2VTY2FsZUZhY3RvcihzY2FsZUZhY3Rvcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9pb3MvQWNjZXNzaWJpbGl0eUlPUy5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vaW9zL0FjY2Vzc2liaWxpdHlJT1MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMzRiZjZjZTQwZGI4M2JhNTA1
ZWI5NmE3N2ZhMGYwOTE4ODZhZWM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vaW9zL0FjY2Vzc2liaWxpdHlJT1MuaApAQCAtMCwwICsxLDM1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIE5TRGF0YTsKK09C
SkNfQ0xBU1MgTlNVVUlEOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUmV0YWluUHRyPE5TRGF0
YT4gY3JlYXRlQWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuKE5TVVVJRCAqKTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9pb3MvQWNj
ZXNzaWJpbGl0eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2lvcy9BY2Nlc3NpYmls
aXR5SU9TLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4OGU0MjYyNjc5NmQ2NWE4Y2Q1NjZlMjY0OWJlZjk1MDc2
MWFkNzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9pb3MvQWNj
ZXNzaWJpbGl0eUlPUy5tbQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5SU9TLmgiCisKKyNpZiBQTEFURk9STShJ
T1MpCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVBY2Nl
c3NpYmlsaXR5UmVtb3RlVG9rZW4oTlNVVUlEICp1dWlkKQoreworICAgIGlmICghdXVpZCkKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERh
dGFXaXRoUm9vdE9iamVjdDpAeyBAImF4LXBpZCIgOiBAKGdldHBpZCgpKSwgQCJheC11dWlkIiA6
IFt1dWlkIFVVSURTdHJpbmddLCBAImF4LXJlZ2lzdGVyIiA6IEBZRVMgfV07Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmgKaW5kZXggZmVkMDBl
MTg0MTg3NGU0NDgxMGViYzdmNmQ0NGFmY2ZjYmY5N2IxYS4uZmI1MjkzOTBhM2MyZjVjODkyYzY1
OWIwM2VjMzgwY2Y1MDcxOTM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oCkBAIC01NSw3ICs1NSw3IEBACiAjZGVmaW5lIERFRkFV
TFRfVEVYVF9BUkVBU19BUkVfUkVTSVpBQkxFIGZhbHNlCiAjZGVmaW5lIERFRkFVTFRfSkFWQVND
UklQVF9DQU5fT1BFTl9XSU5ET1dTX0FVVE9NQVRJQ0FMTFkgZmFsc2UKICNkZWZpbmUgREVGQVVM
VF9TSE9VTERfUkVTUEVDVF9JTUFHRV9PUklFTlRBVElPTiB0cnVlCi0jZGVmaW5lIERFRkFVTFRf
TUlOSU1VTV9GT05UX1pPT01fU0laRSBXS0dldE1pbmltdW1ab29tRm9udFNpemUoKQorI2RlZmlu
ZSBERUZBVUxUX01JTklNVU1fRk9OVF9aT09NX1NJWkUgV2ViQ29yZTo6U2V0dGluZ3M6OmRlZmF1
bHRNaW5pbXVtWm9vbUZvbnRTaXplKCkKICNkZWZpbmUgREVGQVVMVF9QQVNTV09SRF9FQ0hPX0VO
QUJMRUQgdHJ1ZQogI2RlZmluZSBERUZBVUxUX0FMTE9XU19JTkxJTkVfTUVESUFfUExBWUJBQ0sg
ZmFsc2UKICNkZWZpbmUgREVGQVVMVF9JTkxJTkVfTUVESUFfUExBWUJBQ0tfUkVRVUlSRVNfUExB
WVNfSU5MSU5FX0FUVFJJQlVURSB0cnVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJl
ZmVyZW5jZXNTdG9yZS5jcHAKaW5kZXggYjFkNGUzZTBiYWFhYzQ5NWFiMGJmMWVjODlkNTM5NDk2
MjE3YjA4NS4uY2MyNGRkODY3OTAyZWY4MzUwZGViNWQzNTIxZjQ2YmVlYWVlMWYxNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmNwcApAQCAtMzMsMTAg
KzMzLDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1RleHRFbmNvZGluZ1JlZ2lzdHJ5Lmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCi0jaW1wb3J0
IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2VJT1MuaD4KLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDg4NTJjYzQyY2RlNmNkMWQ1NTY0YTNk
MWRjZGFkN2JmN2FhNThmNjcuLjVlYjczMmI2NTZiZGVhMTNjMjFiNjg4YWI4OWM5NGQ5NGMwMGQz
MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCkBAIC0xMDMsNiArMTAzLDcgQEAKICNpbXBvcnQgIldlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eS5oIgogI2ltcG9ydCA8VUlLaXQvVUlBcHBsaWNhdGlvbi5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9Db3JlR3JhcGhpY3NTUEkuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRHluYW1pY0xpbmtlclNQ
SS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0luc3BlY3Rvck92ZXJsYXkuaD4KICNpbXBvcnQgPFdlYkNvcmUvUXVhcnR6Q29yZVNQSS5o
PgpAQCAtMjczLDcgKzI3NCw3IEBAIC0gKEJPT0wpX21heUF1dG9tYXRpY2FsbHlTaG93VmlkZW9Q
aWN0dXJlSW5QaWN0dXJlCiAKIHN0YXRpYyBib29sIHNob3VsZEFsbG93UGljdHVyZUluUGljdHVy
ZU1lZGlhUGxheWJhY2soKQogewotICAgIHN0YXRpYyBib29sIHNob3VsZEFsbG93UGljdHVyZUlu
UGljdHVyZU1lZGlhUGxheWJhY2sgPSBpb3NFeGVjdXRhYmxlV2FzTGlua2VkT25PckFmdGVyVmVy
c2lvbih3a0lPU1N5c3RlbVZlcnNpb25fOV8wKTsKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRBbGxv
d1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrID0gZHlsZF9nZXRfcHJvZ3JhbV9zZGtfdmVy
c2lvbigpID49IERZTERfSU9TX1ZFUlNJT05fOV8wOwogICAgIHJldHVybiBzaG91bGRBbGxvd1Bp
Y3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrOwogfQogCkBAIC0xMTI5LDcgKzExMzAsNyBAQCAt
ICh2b2lkKV9yZXN0b3JlUGFnZVN0YXRlVG9Vbm9ic2N1cmVkQ2VudGVyOihXZWJDb3JlOjpGbG9h
dFBvaW50KWNlbnRlciBzY2FsZTooZAogCiAtIChQYXNzUmVmUHRyPFdlYktpdDo6Vmlld1NuYXBz
aG90PilfdGFrZVZpZXdTbmFwc2hvdAogewotICAgIGZsb2F0IGRldmljZVNjYWxlID0gV0tHZXRT
Y3JlZW5TY2FsZUZhY3RvcigpOworICAgIGZsb2F0IGRldmljZVNjYWxlID0gV2ViQ29yZTo6c2Ny
ZWVuU2NhbGVGYWN0b3IoKTsKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgc25hcHNob3RTaXplKHNl
bGYuYm91bmRzLnNpemUpOwogICAgIHNuYXBzaG90U2l6ZS5zY2FsZShkZXZpY2VTY2FsZSwgZGV2
aWNlU2NhbGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KaW5kZXggZjY1N2UyNDI3NGY1YjAy
ZDQ0YWMxYjUyYjVhMGU4NzExOGY0MzU2Yi4uMzM3MmQwOWY3ZjVjNDU2NGUwOTNkYWY5MDQyNGI3
ZDZkMTkwMDMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQpAQCAtNDAsNyArNDAsNyBAQAog
CiAjaWYgUExBVEZPUk0oSU9TKQogI2ltcG9ydCAiVUlLaXRTUEkuaCIKLSNpbXBvcnQgIldlYktp
dFN5c3RlbUludGVyZmFjZUlPUy5oIgorI2ltcG9ydCA8V2ViQ29yZS9EZXZpY2UuaD4KICNlbmRp
ZgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBMYXp5SW5pdGlhbGl6ZWQgewpAQCAtMTA5
LDcgKzEwOSw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0CiAjaWYgUExBVEZPUk0oSU9TKQogICAg
IF9yZXF1aXJlc1VzZXJBY3Rpb25Gb3JNZWRpYVBsYXliYWNrID0gWUVTOwogICAgIF9hbGxvd3NQ
aWN0dXJlSW5QaWN0dXJlTWVkaWFQbGF5YmFjayA9IFlFUzsKLSAgICBfYWxsb3dzSW5saW5lTWVk
aWFQbGF5YmFjayA9IFdLR2V0RGV2aWNlQ2xhc3MoKSA9PSBXS0RldmljZUNsYXNzaVBhZDsKKyAg
ICBfYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjayA9IFdlYkNvcmU6OmRldmljZUNsYXNzKCkgPT0g
TUdEZXZpY2VDbGFzc2lQYWQ7CiAgICAgX2lubGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlz
SW5saW5lQXR0cmlidXRlID0gIV9hbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrOwogICAgIF9tZWRp
YURhdGFMb2Fkc0F1dG9tYXRpY2FsbHkgPSBOTzsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCmluZGV4IGJkMzRkNDU2NDU1YjAxNDc4MTAy
Y2U2ZjhhMzE4MTZhN2MzNzIwYWIuLmQ5N2Q1MGY3YmVkMGU0MTBmZDAyMTYzNDQwMmRkNmE0NGQ3
ZDVjYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcu
bW0KQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBQTEFURk9STShJT1MpCiAKICNpbXBvcnQgIkFQSVBh
Z2VDb25maWd1cmF0aW9uLmgiCisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5SU9TLmgiCiAjaW1wb3J0
ICJBcHBsaWNhdGlvblN0YXRlVHJhY2tlci5oIgogI2ltcG9ydCAiUGFnZUNsaWVudEltcGxJT1Mu
aCIKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaCIKQEAgLTQ0LDcg
KzQ1LDYgQEAKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJGcmFt
ZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJLaXQySW5pdGlhbGl6ZS5oIgotI2ltcG9ydCAiV2ViS2l0
U3lzdGVtSW50ZXJmYWNlSU9TLmgiCiAjaW1wb3J0ICJXZWJQYWdlR3JvdXAuaCIKICNpbXBvcnQg
IldlYlByb2Nlc3NQb29sLmgiCiAjaW1wb3J0ICJXZWJTeXN0ZW1JbnRlcmZhY2UuaCIKQEAgLTUz
LDYgKzUzLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0luc3BlY3Rvck92ZXJsYXkuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbXBvcnQgPFdlYkNvcmUv
UXVhcnR6Q29yZVNQSS5oPgogI2ltcG9ydCA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+CkBAIC0xODgsNyArMTg5LDcgQEAgLSAoaW5zdGFuY2V0eXBlKV9jb21t
b25Jbml0aWFsaXphdGlvbldpdGhQcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYp
cHIKIAogICAgIF9wYWdlID0gcHJvY2Vzc1Bvb2wuY3JlYXRlV2ViUGFnZSgqX3BhZ2VDbGllbnQs
IFdURjo6bW92ZShjb25maWd1cmF0aW9uKSk7CiAgICAgX3BhZ2UtPmluaXRpYWxpemVXZWJQYWdl
KCk7Ci0gICAgX3BhZ2UtPnNldEludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yKFdLR2V0U2NhbGVG
YWN0b3JGb3JTY3JlZW4oW1VJU2NyZWVuIG1haW5TY3JlZW5dKSk7CisgICAgX3BhZ2UtPnNldElu
dHJpbnNpY0RldmljZVNjYWxlRmFjdG9yKHNjcmVlblNjYWxlRmFjdG9yKFtVSVNjcmVlbiBtYWlu
U2NyZWVuXSkpOwogICAgIF9wYWdlLT5zZXRVc2VGaXhlZExheW91dCh0cnVlKTsKICAgICBfcGFn
ZS0+c2V0RGVsZWdhdGVzU2Nyb2xsaW5nKHRydWUpOwogCkBAIC00MTksNyArNDIwLDcgQEAgLSAo
dm9pZClfd2luZG93RGlkTW92ZVRvU2NyZWVuTm90aWZpY2F0aW9uOihOU05vdGlmaWNhdGlvbiAq
KW5vdGlmaWNhdGlvbgogLSAodm9pZClfdXBkYXRlRm9yU2NyZWVuOihVSVNjcmVlbiAqKXNjcmVl
bgogewogICAgIEFTU0VSVChzY3JlZW4pOwotICAgIF9wYWdlLT5zZXRJbnRyaW5zaWNEZXZpY2VT
Y2FsZUZhY3RvcihXS0dldFNjYWxlRmFjdG9yRm9yU2NyZWVuKHNjcmVlbikpOworICAgIF9wYWdl
LT5zZXRJbnRyaW5zaWNEZXZpY2VTY2FsZUZhY3RvcihzY3JlZW5TY2FsZUZhY3RvcihzY3JlZW4p
KTsKICAgICBbc2VsZiBfYWNjZXNzaWJpbGl0eVJlZ2lzdGVyVUlQcm9jZXNzVG9rZW5zXTsKIH0K
IApAQCAtNDI5LDE1ICs0MzAsMjMgQEAgLSAodm9pZClfc2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nl
c3NUb2tlbjooTlNEYXRhICopZGF0YQogICAgIFtzZWxmIF9hY2Nlc3NpYmlsaXR5UmVnaXN0ZXJV
SVByb2Nlc3NUb2tlbnNdOwogfQogCitzdGF0aWMgdm9pZCBzdG9yZUFjY2Vzc2liaWxpdHlSZW1v
dGVDb25uZWN0aW9uSW5mb3JtYXRpb24oaWQgZWxlbWVudCwgcGlkX3QgcGlkLCBtYWNoX3BvcnRf
dCBzZW5kUG9ydCwgTlNVVUlEICp1dWlkKQoreworICAgIC8vIFRoZSBhY2Nlc3NpYmlsaXR5IGJ1
bmRsZSBuZWVkcyB0byBrbm93IHRoZSB1dWlkLCBwaWQgYW5kIG1hY2hfcG9ydCB0aGF0IHRoaXMg
b2JqZWN0IHdpbGwgcmVmZXIgdG8uCisgICAgb2JqY19zZXRBc3NvY2lhdGVkT2JqZWN0KGVsZW1l
bnQsICh2b2lkKilbQCJheC11dWlkIiBoYXNoXSwgdXVpZCwgT0JKQ19BU1NPQ0lBVElPTl9SRVRB
SU5fTk9OQVRPTUlDKTsKKyAgICBvYmpjX3NldEFzc29jaWF0ZWRPYmplY3QoZWxlbWVudCwgKHZv
aWQqKVtAImF4LXBpZCIgaGFzaF0sIEAocGlkKSwgT0JKQ19BU1NPQ0lBVElPTl9SRVRBSU5fTk9O
QVRPTUlDKTsKKyAgICBvYmpjX3NldEFzc29jaWF0ZWRPYmplY3QoZWxlbWVudCwgKHZvaWQqKVtA
ImF4LW1hY2hwb3J0IiBoYXNoXSwgQChzZW5kUG9ydCksIE9CSkNfQVNTT0NJQVRJT05fUkVUQUlO
X05PTkFUT01JQyk7Cit9CisKIC0gKHZvaWQpX2FjY2Vzc2liaWxpdHlSZWdpc3RlclVJUHJvY2Vz
c1Rva2VucwogewotICAgIFJldGFpblB0cjxDRlVVSURSZWY+IHV1aWQgPSBhZG9wdENGKENGVVVJ
RENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0KSk7Ci0gICAgTlNEYXRhICpyZW1vdGVFbGVtZW50
VG9rZW4gPSBXS0FYUmVtb3RlVG9rZW4odXVpZC5nZXQoKSk7CisgICAgYXV0byB1dWlkID0gYWRv
cHROUyhbW05TVVVJRCBhbGxvY10gaW5pdF0pOworICAgIFJldGFpblB0cjxOU0RhdGE+IHJlbW90
ZUVsZW1lbnRUb2tlbiA9IGNyZWF0ZUFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbih1dWlkLmdldCgp
KTsKIAogICAgIC8vIFN0b3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBXZWJQcm9jZXNzIHRoYXQg
Y2FuIGxhdGVyIGJlIHJldHJpZXZlZCBieSB0aGUgaU9TIEFjY2Vzc2liaWxpdHkgcnVudGltZS4K
ICAgICBpZiAoX3BhZ2UtPnByb2Nlc3MoKS5zdGF0ZSgpID09IFdlYlByb2Nlc3NQcm94eTo6U3Rh
dGU6OlJ1bm5pbmcpIHsKICAgICAgICAgSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uID0gX3Bh
Z2UtPnByb2Nlc3MoKS5jb25uZWN0aW9uKCk7Ci0gICAgICAgIFdLQVhTdG9yZVJlbW90ZUNvbm5l
Y3Rpb25JbmZvcm1hdGlvbihzZWxmLCBfcGFnZS0+cHJvY2VzcygpLnByb2Nlc3NJZGVudGlmaWVy
KCksIGNvbm5lY3Rpb24tPmlkZW50aWZpZXIoKS5wb3J0LCB1dWlkLmdldCgpKTsKKyAgICAgICAg
c3RvcmVBY2Nlc3NpYmlsaXR5UmVtb3RlQ29ubmVjdGlvbkluZm9ybWF0aW9uKHNlbGYsIF9wYWdl
LT5wcm9jZXNzKCkucHJvY2Vzc0lkZW50aWZpZXIoKSwgY29ubmVjdGlvbi0+aWRlbnRpZmllcigp
LnBvcnQsIHV1aWQuZ2V0KCkpOwogCiAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBlbGVtZW50
VG9rZW4gPSBJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4oW3JlbW90ZUVsZW1lbnRUb2tlbiBieXRlc10pLCBbcmVtb3RlRWxlbWVudFRva2VuIGxlbmd0
aF0pOwogICAgICAgICBfcGFnZS0+cmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5z
KGVsZW1lbnRUb2tlbiwgZWxlbWVudFRva2VuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggMGZmNjlk
N2YxNGFiZTlkZGY3Y2IwMjE5MjUzMmVhMmVjOWUwZWJjYS4uMGIyNDQ1NThlNWZiZWVjMDY1NWY5
OWMyNTFlMDhkZjZlZDNkOGE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTcxLDcgKzcxLDYgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvVGV4dEluZGljYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJF
dmVudC5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYlNlbGVjdGlvblJlY3QuaD4gLy8gRklYTUU6IFdL
MiBzaG91bGQgbm90IGluY2x1ZGUgV2ViS2l0IGhlYWRlcnMhCi0jaW1wb3J0IDxXZWJLaXRTeXN0
ZW1JbnRlcmZhY2VJT1MuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogQGludGVyZmFj
ZSBVSUV2ZW50KFVJRXZlbnRJbnRlcm5hbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggMjFkM2M4NzkyMTQ0Mzg0YWVjNWUyZGNkZjY3
NjNkYzAyMWU0ZDQ4Yi4uNzY2NzUxNGU2NTMzNDgyZDNlM2FlODhhODljZTk4NmQ2NTk4NDVjYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0K
QEAgLTQwLDEyICs0MCwxMiBAQAogI2ltcG9ydCAiVXNlckRhdGEuaCIKICNpbXBvcnQgIlZpZXdV
cGRhdGVEaXNwYXRjaGVyTWVzc2FnZXMuaCIKICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlckludGVybmFsLmgiCi0jaW1wb3J0ICJXZWJLaXRTeXN0ZW1JbnRlcmZhY2VJT1MuaCIK
ICNpbXBvcnQgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5Lmgi
CiAjaW1wb3J0ICJXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCIKICNpbXBvcnQgPFdl
YkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Cisj
aW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Vc2VyQWdlbnQuaD4KIApAQCAtNzY1LDE3ICs3
NjUsMTcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJsdXJBc3Npc3RlZE5vZGUoKQogCiBGbG9hdFNp
emUgV2ViUGFnZVByb3h5OjpzY3JlZW5TaXplKCkKIHsKLSAgICByZXR1cm4gRmxvYXRTaXplKFdL
R2V0U2NyZWVuU2l6ZSgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6c2NyZWVuU2l6ZSgpOwogfQog
CiBGbG9hdFNpemUgV2ViUGFnZVByb3h5OjphdmFpbGFibGVTY3JlZW5TaXplKCkKIHsKLSAgICBy
ZXR1cm4gRmxvYXRTaXplKFdLR2V0QXZhaWxhYmxlU2NyZWVuU2l6ZSgpKTsKKyAgICByZXR1cm4g
V2ViQ29yZTo6YXZhaWxhYmxlU2NyZWVuU2l6ZSgpOwogfQogICAgIAogZmxvYXQgV2ViUGFnZVBy
b3h5Ojp0ZXh0QXV0b3NpemluZ1dpZHRoKCkKIHsKLSAgICByZXR1cm4gV0tHZXRTY3JlZW5TaXpl
KCkud2lkdGg7CisgICAgcmV0dXJuIFdlYkNvcmU6OnNjcmVlblNpemUoKS53aWR0aCgpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZHluYW1pY1ZpZXdwb3J0VXBkYXRlQ2hhbmdlZFRhcmdldChk
b3VibGUgbmV3U2NhbGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIG5ld1Njcm9sbFBvc2l0
aW9uLCB1aW50NjRfdCBkeW5hbWljVmlld3BvcnRTaXplVXBkYXRlSUQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzBmNzhkYzZk
ZmQ5NzY0YTI5YjY0MmFjMGQxMzhiNWQxN2Y4NTc3Zi4uYjc0MWM3Nzg4MDA0ODZkZTE0MzBlN2I0
MzNlZTBiNGM5NjBmZWEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIzNCw2ICsxMjM0LDggQEAKIAkJQTExOEE5RUYxOTA3
QUQ2RjAwRjdDOTJCIC8qIFF1aWNrTG9va0RvY3VtZW50RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTExOEE5RUQxOTA3QUQ2RjAwRjdDOTJCIC8q
IFF1aWNrTG9va0RvY3VtZW50RGF0YS5oICovOyB9OwogCQlBMTE4QTlGMjE5MDhCOEVBMDBGN0M5
MkIgLyogX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMThBOUYwMTkwOEI4RUEwMEY3QzkyQiAvKiBfV0tOU0Zp
bGVNYW5hZ2VyRXh0cmFzLm1tICovOyB9OwogCQlBMTE4QTlGMzE5MDhCOEVBMDBGN0M5MkIgLyog
X1dLTlNGaWxlTWFuYWdlckV4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTExOEE5RjExOTA4QjhFQTAwRjdDOTJCIC8qIF9XS05TRmlsZU1hbmFn
ZXJFeHRyYXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlBMTgyRDVCNDFCRTZCRDI1MDA4N0E3Q0MgLyogQWNjZXNzaWJpbGl0eUlPUy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExODJENUIyMUJFNkJE
MjUwMDg3QTdDQyAvKiBBY2Nlc3NpYmlsaXR5SU9TLm1tICovOyB9OworCQlBMTgyRDVCNTFCRTZC
RDI1MDA4N0E3Q0MgLyogQWNjZXNzaWJpbGl0eUlPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE4MkQ1QjMxQkU2QkQyNTAwODdBN0NDIC8qIEFjY2Vz
c2liaWxpdHlJT1MuaCAqLzsgfTsKIAkJQTFBNEZFNUExOERDRTlGQTAwQjVFQThBIC8qIF9XS0Rv
d25sb2FkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
MUE0RkU1NzE4RENFOUZBMDBCNUVBOEEgLyogX1dLRG93bmxvYWQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUE0RkU1QjE4RENFOUZBMDBCNUVB
OEEgLyogX1dLRG93bmxvYWQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMUE0RkU1ODE4RENFOUZBMDBCNUVBOEEgLyogX1dLRG93bmxvYWQubW0gKi87
IH07CiAJCUExQTRGRTVDMThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9hZEludGVybmFsLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUE0RkU1OTE4
RENFOUZBMDBCNUVBOEEgLyogX1dLRG93bmxvYWRJbnRlcm5hbC5oICovOyB9OwpAQCAtMzQ1Niw2
ICszNDU4LDggQEAKIAkJQTExOEE5RUQxOTA3QUQ2RjAwRjdDOTJCIC8qIFF1aWNrTG9va0RvY3Vt
ZW50RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBRdWlja0xvb2tEb2N1
bWVudERhdGEuaDsgcGF0aCA9IGlvcy9RdWlja0xvb2tEb2N1bWVudERhdGEuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTExOEE5RjAxOTA4QjhFQTAwRjdDOTJCIC8qIF9XS05TRmls
ZU1hbmFnZXJFeHRyYXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBfV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMTE4QTlGMTE5MDhCOEVBMDBGN0M5MkIgLyogX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExODJENUIyMUJFNkJEMjUwMDg3QTdDQyAv
KiBBY2Nlc3NpYmlsaXR5SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gQWNjZXNzaWJpbGl0eUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTE4MkQ1QjMxQkU2QkQyNTAwODdBN0NDIC8qIEFjY2Vzc2liaWxpdHlJT1MuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eUlPUy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBMUE0RkU1NzE4RENFOUZBMDBCNUVBOEEgLyogX1dLRG93bmxvYWQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLRG93bmxvYWQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFBNEZFNTgxOERDRTlGQTAwQjVFQThBIC8qIF9XS0Rv
d25sb2FkLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLRG93
bmxvYWQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExQTRGRTU5MThEQ0U5RkEw
MEI1RUE4QSAvKiBfV0tEb3dubG9hZEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IF9XS0Rvd25sb2FkSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTU5NTIsNiArNTk1NiwxNSBAQAogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CiAJCX07CisJCUExODJENUIxMUJFNkJDRjQwMDg3QTdDQyAvKiBpb3MgKi8g
PSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUExODJENUIzMUJF
NkJEMjUwMDg3QTdDQyAvKiBBY2Nlc3NpYmlsaXR5SU9TLmggKi8sCisJCQkJQTE4MkQ1QjIxQkU2
QkQyNTAwODdBN0NDIC8qIEFjY2Vzc2liaWxpdHlJT1MubW0gKi8sCisJCQkpOworCQkJcGF0aCA9
IGlvczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUE3OENDREQ1MTkzQUM5
RTMwMDVFQ0MyNSAvKiBTYW5kYm94UHJvZmlsZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKApAQCAtNjcyNSw2ICs2NzM4LDcgQEAKIAkJCQkxQUEyRTUxQTEyRTRD
MDU2MDBCQzQ5NjYgLyogY2cgKi8sCiAJCQkJMzcwOTUwNDIxOEE4OENERTAwODdBRTVEIC8qIGZv
dW5kYXRpb24gKi8sCiAJCQkJMUFFMDBENjgxODMyN0MxMjAwMDg3REQ3IC8qIElQQyAqLywKKwkJ
CQlBMTgyRDVCMTFCRTZCQ0Y0MDA4N0E3Q0MgLyogaW9zICovLAogCQkJCTFBN0U4MTRFMTE1MkQy
MjQwMDAzNjk1QiAvKiBtYWMgKi8sCiAJCQkJQ0UxQTBCQ0ExQTQ4RTZDNjAwNTRFRjc0IC8qIHNw
aSAqLywKIAkJCQk1MUIxNUE3RDEzODQzOUIyMDAzMjFBRDggLyogdW5peCAqLywKQEAgLTgxNDEs
NiArODE1NSw3IEBACiAJCQkJMzc2MDg4MUYxNTA0MTNFOTAwRkM4MkM3IC8qIFdlYlJlbmRlck9i
amVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwQUZGQkExNjU0MjA0ODAwMUJBMDVFIC8qIFdl
YlJlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUYwNjBFMDE2NTQzMTdGMDBG
MzI4MUIgLyogV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QTE4MkQ1QjUxQkU2QkQyNTAwODdBN0NDIC8qIEFjY2Vzc2liaWxpdHlJT1MuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdDMzYxRDczMTkyN0ZBMzYwMDM2QTU5RCAvKiBXZWJTY3JpcHRNZXNzYWdlSGFu
ZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDNCOTQ4NDkxMUZGNEI2NTAwMDMyQjM5IC8qIFdl
YlNlYXJjaFBvcHVwTWVudS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0ODMyRDcxQTlDREY5NjAw
OEI0REZFIC8qIFdlYnNpdGVEYXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTk0NzMsNiArOTQ4OCw3
IEBACiAJCQkJMUFDMTMzNkUxODU2NUQyQjAwRjNFQzA1IC8qIEFQSVBhZ2VIYW5kbGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0NFNEQyMUYxQTQ5MTRDQTAwQzdGMTUyIC8qIEFQSVByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRUQzQzFEQzFCNDQ3RUFD
MDBFMEVCN0YgLyogQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW0gaW4gU291cmNlcyAq
LywKKwkJCQlBMTgyRDVCNDFCRTZCRDI1MDA4N0E3Q0MgLyogQWNjZXNzaWJpbGl0eUlPUy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTc1QThEMkUyMTg3REVDMUUwMEMzOUM5RSAvKiBBUElTZXNzaW9u
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRkRFNjYxMTk1NEU5QjEwMEM0OEZGQSAvKiBBUElT
ZXNzaW9uU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFMjMxNUUxMjJDMzBDQTAwRDVD
MzVBIC8qIEFQSVVSTFJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZh
Y2UubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJT
eXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggZGNlMjU3NGRiMzVkMTcxNDYzZjg3MmNkMDhmNDUwODI5
NjI3MmMyMS4uMDNmMjg4MjMwMjExMzZmZTA4ZGQyZjczYzU0YWJiMzVmMzNiOGU4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lz
dGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQpAQCAtMTUxLDI4ICsxNTEsMTEgQEAgdm9p
ZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogCiAgICAgICAgIElOSVQoQ0ZVUkxS
ZXF1ZXN0QWxsb3dBbGxQb3N0Q2FjaGluZyk7CiAKLSNpZiBQTEFURk9STShJT1MpCi0gICAgICAg
IElOSVQoR2V0VXNlckFnZW50KTsKLSAgICAgICAgSU5JVChHZXREZXZpY2VOYW1lKTsKLSAgICAg
ICAgSU5JVChHZXRPU05hbWVGb3JVc2VyQWdlbnQpOwotICAgICAgICBJTklUKEdldFBsYXRmb3Jt
TmFtZUZvck5hdmlnYXRvcik7Ci0gICAgICAgIElOSVQoR2V0VmVuZG9yTmFtZUZvck5hdmlnYXRv
cik7Ci0jZW5kaWYKLQogI2lmICFQTEFURk9STShJT1MpCiAgICAgICAgIElOSVQoTlNFbGFzdGlj
RGVsdGFGb3JUaW1lRGVsdGEpOwogICAgICAgICBJTklUKE5TRWxhc3RpY0RlbHRhRm9yUmVib3Vu
ZERlbHRhKTsKICAgICAgICAgSU5JVChOU1JlYm91bmREZWx0YUZvckVsYXN0aWNEZWx0YSk7CiAj
ZW5kaWYKLSNpZiBQTEFURk9STShJT1MpCi0gICAgICAgIElOSVQoRXhlY3V0YWJsZVdhc0xpbmtl
ZE9uT3JBZnRlcklPU1ZlcnNpb24pOwotICAgICAgICBJTklUKEdldERldmljZUNsYXNzKTsKLSAg
ICAgICAgSU5JVChHZXRTY3JlZW5TaXplKTsKLSAgICAgICAgSU5JVChHZXRBdmFpbGFibGVTY3Jl
ZW5TaXplKTsKLSAgICAgICAgSU5JVChHZXRTY3JlZW5TY2FsZUZhY3Rvcik7Ci0gICAgICAgIElO
SVQoSXNHQjE4MDMwQ29tcGxpYW5jZVJlcXVpcmVkKTsKLSAgICAgICAgSU5JVChJc09wdGltaXpl
ZEZ1bGxzY3JlZW5TdXBwb3J0ZWQpOwotI2VuZGlmCiAKICNpZiBFTkFCTEUoUFVCTElDX1NVRkZJ
WF9MSVNUKQogICAgICAgICBJTklUKElzUHVibGljU3VmZml4KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA1Yzk4YjYy
YTcyZjlhMDc3Yjc1ODVjODc0Y2Q2MGQ2MDdiYzYyMDMwLi45ZmVlNDg5NDkzOTkzN2EzZjRhMzQ1
ZWY3OGQwYjRjNjlhNzk4ODI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBQTEFU
Rk9STShJT1MpCiAKKyNpbXBvcnQgIkFjY2Vzc2liaWxpdHlJT1MuaCIKICNpbXBvcnQgIkFzc2lz
dGVkTm9kZUluZm9ybWF0aW9uLmgiCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0
ICJEcmF3aW5nQXJlYS5oIgpAQCAtNDUsNyArNDYsNiBAQAogI2ltcG9ydCAiV2ViRnJhbWUuaCIK
ICNpbXBvcnQgIldlYkltYWdlLmgiCiAjaW1wb3J0ICJXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaCIK
LSNpbXBvcnQgIldlYktpdFN5c3RlbUludGVyZmFjZUlPUy5oIgogI2ltcG9ydCAiV2ViUGFnZVBy
b3h5TWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3MuaCIKICNpbXBvcnQgPENvcmVUZXh0
L0NURm9udC5oPgpAQCAtMTE5LDggKzExOSw4IEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1Jbml0
aWFsaXplQWNjZXNzaWJpbGl0eSgpCiAgICAgbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBh
ZG9wdE5TKFtbV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCBhbGxvY10gaW5pdF0pOwogICAg
IFttX21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCBzZXRXZWJQYWdlOnRoaXNdOwogICAgIAotICAg
IFJldGFpblB0cjxDRlVVSURSZWY+IHV1aWQgPSBhZG9wdENGKENGVVVJRENyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0KSk7Ci0gICAgTlNEYXRhICpyZW1vdGVUb2tlbiA9IFdLQVhSZW1vdGVUb2tl
bih1dWlkLmdldCgpKTsKKyAgICBhdXRvIHV1aWQgPSBhZG9wdE5TKFtbTlNVVUlEIGFsbG9jXSBp
bml0XSk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gcmVtb3RlVG9rZW4gPSBjcmVhdGVBY2Nlc3Np
YmlsaXR5UmVtb3RlVG9rZW4odXVpZC5nZXQoKSk7CiAgICAgCiAgICAgSVBDOjpEYXRhUmVmZXJl
bmNlIGRhdGFUb2tlbiA9IElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihbcmVtb3RlVG9rZW4gYnl0ZXNdKSwgW3JlbW90ZVRva2VuIGxlbmd0aF0pOwog
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNz
aWJpbGl0eVRva2VuKGRhdGFUb2tlbikpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264557</attachid>
            <date>2015-11-01 22:34:59 -0800</date>
            <delta_ts>2015-11-01 23:06:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150763-20151101223403.patch</filename>
            <type>text/plain</type>
            <size>107685</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxODc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzU0ODA5OWRkYWY1ODQx
NmE1NzQxNzdjNWZiZDVmMDNkNGJmNTIyZC4uNGMyYjA3ZDk0ZWE3MjBmZDFmZTQ0NTYzNDkwMWM0
MzdhNWE1YTQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE1LTEwLTMxICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIGlPUy1vbmx5IFdl
YktpdFN5c3RlbUludGVyZmFjZSBjYWxscyB3aXRoIFNQSQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogY29uZmlnLmg6IFJlbW92ZWQgV0VCQ09SRV9OQVZJR0FUT1JfUExB
VEZPUk0gYW5kIFdFQkNPUkVfTkFWSUdBVE9SX1ZFTkRPUi4KKyAgICAgICAgKiBjc3MvTWVkaWFR
dWVyeUV2YWx1YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1J1bm5pbmdPbklQaG9uZU9y
SVBvZCk6IFVzZWQgZGV2aWNlQ2xhc3MoKSBpbnN0ZWFkIG9mIGlvc0RldmljZUNsYXNzKCkuCisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnNob3VsZE92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rp
b24pOiBVc2VkIHN1cHBvcnRzUGljdHVyZUluUGljdHVyZSgpIGluc3RlYWQgb2Ygd2tJc09wdGlt
aXplZEZ1bGxzY3JlZW5TdXBwb3J0ZWQoKS4KKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZE5vdFBlcmZvcm1VUkxBZGp1c3RtZW50
KTogVXNlZCBkeWxkX2dldF9wcm9ncmFtX3Nka192ZXJzaW9uKCkgaW5zdGVhZCBvZiBpb3NFeGVj
dXRhYmxlV2FzTGlua2VkT25PckFmdGVyVmVyc2lvbigpLgorICAgICAgICAqIGh0bWwvSFRNTFZp
ZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Ojp3ZWJr
aXRTdXBwb3J0c1ByZXNlbnRhdGlvbk1vZGUpOiBVc2VkIHN1cHBvcnRzUGljdHVyZUluUGljdHVy
ZSgpIGluc3RlYWQgb2Ygd2tJc09wdGltaXplZEZ1bGxzY3JlZW5TdXBwb3J0ZWQoKS4KKyAgICAg
ICAgKiBwYWdlL05hdmlnYXRvckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1O
YW1lRm9yTmF2aWdhdG9yKTogQWRkZWQgdG8gcmV0dXJuIGRldmljZU5hbWUoKS4KKyAgICAgICAg
KiBwYWdlL1NldHRpbmdzLmg6CisgICAgICAgICogcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0aW9uOjp0ZXh0RG9jdW1l
bnRQYXJhbWV0ZXJzKTogVXNlZCBzY3JlZW5TaXplKCkgaW5zdGVhZCBvZiB3a0dldFNjcmVlblNp
emUoKS4KKyAgICAgICAgKiBwYWdlL2lvcy9Vc2VyQWdlbnRJT1MubW06CisgICAgICAgIChXZWJD
b3JlOjppc0NsYXNzaWMpOiBBZGRlZCB0byByZXR1cm4gLVtVSUFwcGxpY2F0aW9uIF9pc0NsYXNz
aWNdLgorICAgICAgICAoV2ViQ29yZTo6b3NOYW1lRm9yVXNlckFnZW50KTogVXBzdHJlYW1lZCB0
aGUgaW1wbGVtZW50YXRpb24gb2YgV0tHZXRPU05hbWVGb3JVc2VyQWdlbnQoKSBmcm9tIFdlYktp
dFN5c3RlbUludGVyZmFjZS4KKyAgICAgICAgKFdlYkNvcmU6OmRldmljZU5hbWUpOiBEaXR0byBm
b3Igd2tHZXREZXZpY2VOYW1lKCkuCisgICAgICAgIChXZWJDb3JlOjpzdGFuZGFyZFVzZXJBZ2Vu
dFdpdGhBcHBsaWNhdGlvbk5hbWUpOiBDYWxsZWQgZGV2aWNlTmFtZSgpIGFuZCBvc05hbWVGb3JV
c2VyQWdlbnQoKS4KKyAgICAgICAgKiBwYWdlL21hYy9TZXR0aW5nc0NvY29hLm1tOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2V0dGluZ3NNYWMubW0uCisgICAgICAgIChX
ZWJDb3JlOjpTZXR0aW5nczo6ZGVmYXVsdE1pbmltdW1ab29tRm9udFNpemUpOiBVcHN0cmVhbWVk
IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBXS0dldE1pbmltdW1ab29tRm9udFNpemUoKSBmcm9tIFdl
YktpdFN5c3RlbUludGVyZmFjZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5o
OgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9EZXZpY2UuY3BwOiBBZGRlZCBmdW5jdGlvbnMgdGhh
dCBhbnN3ZXIgcXVlcmllcyBhYm91dCB0aGUgaU9TIGRldmljZSBmcm9tIE1vYmlsZUdlc3RhbHQu
CisgICAgICAgIChXZWJDb3JlOjpkZXZpY2VDbGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpkZXZp
Y2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmRldmljZUhhc0lQYWRDYXBhYmlsaXR5KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pb3MvRGV2aWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bs
YXRmb3JtU2NyZWVuSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuUFBJRmFjdG9yKTog
VXNlZCBNR0dldFNJbnQzMkFuc3dlcigpIGFuZCBNR0dldEZsb2F0MzJBbnN3ZXIoKSBpbnN0ZWFk
IG9mIG1vYmlsZUdlc3RhbHRGbG9hdFZhbHVlKCkuCisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5T
aXplKTogVXBzdHJlYW1lZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgV0tHZXRTY3JlZW5TaXplKCkg
ZnJvbSBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuCisgICAgICAgIChXZWJDb3JlOjphdmFpbGFibGVT
Y3JlZW5TaXplKTogRGl0dG8gZm9yIFdLR2V0QXZhaWxhYmxlU2NyZWVuU2l6ZSgpLgorICAgICAg
ICAoV2ViQ29yZTo6c2NyZWVuU2NhbGVGYWN0b3IpOiBEaXR0byBmb3IgV0tHZXRTY3JlZW5TY2Fs
ZUZhY3RvcigpIGFuZCBXS0dldFNjYWxlRmFjdG9yRm9yU2NyZWVuKCkuCisgICAgICAgIChXZWJD
b3JlOjptb2JpbGVHZXN0YWx0RmxvYXRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MuaDogUmVtb3ZlZC4KKyAgICAgICAgKGlv
c0V4ZWN1dGFibGVXYXNMaW5rZWRPbk9yQWZ0ZXJWZXJzaW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KGlvc0RldmljZUNsYXNzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViQ29y
ZVN5c3RlbUludGVyZmFjZUlPUy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDo6bWF5QXV0b21hdGljYWxseVNob3dWaWRlb1BpY3R1cmVJblBpY3R1
cmUpOiBVc2VkIHN1cHBvcnRzUGljdHVyZUluUGljdHVyZSgpIGluc3RlYWQgb2Ygd2tJc09wdGlt
aXplZEZ1bGxzY3JlZW5TdXBwb3J0ZWQoKS4KKyAgICAgICAgKFdlYkNvcmU6OnN1cHBvcnRzUGlj
dHVyZUluUGljdHVyZSk6IFVwc3RyZWFtZWQgdGhlIGltcGxlbWVudGF0aW9uIG9mIFdLSXNPcHRp
bWl6ZWRGdWxsc2NyZWVuU3VwcG9ydGVkKCkgZnJvbSBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuCisg
ICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XQUtXaW5kb3cubW06CisgICAgICAgICgtW1dBS1dp
bmRvdyBpbml0V2l0aExheWVyOl0pOiBVc2VkIHNjcmVlblNjYWxlRmFjdG9yKCkgaW5zdGVhZCBv
ZiBXS0dldFNjcmVlblNjYWxlRmFjdG9yKCkuCisgICAgICAgICgtW1dBS1dpbmRvdyBpbml0V2l0
aEZyYW1lOl0pOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2FrL1dLR3JhcGhpY3Mu
bW06CisgICAgICAgIChXS0dyYXBoaWNzQ3JlYXRlSW1hZ2VGcm9tQnVuZGxlV2l0aE5hbWUpOiBE
aXR0by4KKyAgICAgICAgKFdLRHJhd1BhdHRlcm5CaXRtYXApOiBEaXR0by4KKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L3NwaS9jb2NvYS9EeW5hbWljTGlua2VyU1BJLmg6IERlZmluZWQgYWRkaXRpb25hbCBEWUxEX0lP
U19WRVJTSU9OIG1hY3Jvcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9zcGkvaW9zL01vYmlsZUdlc3Rh
bHRTUEkuaDogRGVmaW5lZCBhZGRpdGlvbmFsIE1vYmlsZUdlc3RhbHQgcXVlcmllcywgZW51bSBN
R0RldmljZUNsYXNzLCBNR0dldFNJbnQzMkFuc3dlciwgYW5kIE1HR2V0RmxvYXQzMkFuc3dlci4K
KyAgICAgICAgKiBwbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9pb3MvVUlDb2xvclNQSS5oLCBhbmQgYWRkZWQgU1BJIGRl
Y2xhcmF0aW9ucyBmb3IgVUlBcHBsaWNhdGlvbiBhbmQgVUlTY3JlZW4uCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorCiAyMDE1LTExLTAxICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KIAogICAgICAgICBUaWR5IGhhbmRsaW5nIG9mIHR5cGU9Y29sb3IgaW4g
SFRNTElucHV0RWxlbWVudCBhIGJpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCmluZGV4IDRmYTViYWVmODE4ZDk2
MTM0NTNmMDQ3ZjZjYzRlMGIxOGZkMTUwZWMuLjAzOTAyZTI4NmE5NmJlNmI3ZTcxMGUzM2NjYTQ5
MmUxMjNiOGIxNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNS0xMC0z
MSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBpT1Mt
b25seSBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgY2FsbHMgd2l0aCBTUEkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc2MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWlzYy9XZWJVSUtpdFN1cHBvcnQu
bW06CisgICAgICAgIChsaW5rZWRPbk9yQWZ0ZXJJT1M1KTogVXNlZCBkeWxkX2dldF9wcm9ncmFt
X3Nka192ZXJzaW9uKCkgaW5zdGVhZCBvZiBpb3NFeGVjdXRhYmxlV2FzTGlua2VkT25PckFmdGVy
VmVyc2lvbigpLgorICAgICAgICAoV2ViS2l0R2V0TWluaW11bVpvb21Gb250U2l6ZSk6IFVzZWQg
U2V0dGluZ3M6OmRlZmF1bHRNaW5pbXVtWm9vbUZvbnRTaXplKCkgaW5zdGVhZCBvZiBXS0dldE1p
bmltdW1ab29tRm9udFNpemUoKS4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnRJT1MubW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnRJT1M6OnNjcmVlblNpemUpOiBV
c2VkIHNjcmVlblNpemUoKSBpbnN0ZWFkIG9mIFdLR2V0U2NyZWVuU2l6ZSgpLgorCiAyMDE1LTEw
LTE0ICBaaHVvIExpICA8emFjaGxpQGFwcGxlLmNvbT4KIAogICAgICAgICBBdWdtZW50IDxpbnB1
dCB0eXBlPXNlYXJjaD7igJlzIHJlY2VudCBzZWFyY2ggaGlzdG9yeSB3aXRoIHRoZSB0aW1lIGVh
Y2ggZW50cnkgd2FzIGFkZGVkLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDIyNzc0NDQ3NTk0YWViZTdk
NjE4ZWQ3OTYxZGJjNWI5ZDMzZGU1NTIuLmM1MGZjZTEwNWI2YmJiZTFkZTQ5NTk2N2Y0OGEwNGYz
OWU4YmU4NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNS0xMC0zMSAg
QW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBpT1Mtb25s
eSBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgY2FsbHMgd2l0aCBTUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc2MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVt
SW50ZXJmYWNlLm1tOgorICAgICAgICAoSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UpOiBEZWxl
dGVkLgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAgICAgICgrW1dl
YlByZWZlcmVuY2VzIGluaXRpYWxpemVdKTogVXNlZCBkZXZpY2VDbGFzcygpIGFuZCBTZXR0aW5n
czo6ZGVmYXVsdE1pbmltdW1ab29tRm9udFNpemUoKSBpbnN0ZWFkIG9mIFdLR2V0RGV2aWNlQ2xh
c3MoKSBhbmQgV0tHZXRNaW5pbXVtWm9vbUZvbnRTaXplKCkuCisgICAgICAgICogV2ViVmlldy9X
ZWJWaWV3Lm1tOgorICAgICAgICAoc2hvdWxkQWxsb3dQaWN0dXJlSW5QaWN0dXJlTWVkaWFQbGF5
YmFjayk6IFVzZWQgZHlsZF9nZXRfcHJvZ3JhbV9zZGtfdmVyc2lvbigpIGluc3RlYWQgb2YgaW9z
RXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JBZnRlclZlcnNpb24oKS4KKyAgICAgICAgKC1bV2ViVmll
dyBfdXBkYXRlU2NyZWVuU2NhbGVGcm9tV2luZG93XSk6IFVzZWQgc2NyZWVuU2NhbGVGYWN0b3Io
KSBpbnN0ZWFkIG9mIFdLR2V0U2NyZWVuU2NhbGVGYWN0b3IoKS4KKwogMjAxNS0xMS0wMSAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbRVM2XSBTdXBw
b3J0IEdlbmVyYXRvciBTeW50YXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA5MzBmYTE0NzlmZGRjYTA3YzhjMjFi
N2E5NWJlYTc5ZDg4MjZhOGFkLi4yMjc1NGJjMDk4Njc1YjU5OTY1YWRhZWQ1ZDg4YTkzNjExYjEy
YjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTUtMTAtMzEgIEFuZHkgRXN0ZXMg
IDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgaU9TLW9ubHkgV2ViS2l0U3lz
dGVtSW50ZXJmYWNlIGNhbGxzIHdpdGggU1BJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtL2lvcy9BY2Nlc3NpYmlsaXR5SU9TLmg6IEFk
ZGVkLgorICAgICAgICAqIFBsYXRmb3JtL2lvcy9BY2Nlc3NpYmlsaXR5SU9TLm1tOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6Y3JlYXRlQWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuKTogVXBzdHJl
YW1lZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgV0tBWFJlbW90ZVRva2VuKCkgZnJvbSBXZWJLaXRT
eXN0ZW1JbnRlcmZhY2UuCisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmaW5pdGlv
bnMuaDogVXNlZCBTZXR0aW5nczo6ZGVmYXVsdE1pbmltdW1ab29tRm9udFNpemUoKSBpbnN0ZWFk
IG9mIFdLR2V0TWluaW11bVpvb21Gb250U2l6ZSgpLgorICAgICAgICAqIFNoYXJlZC9XZWJQcmVm
ZXJlbmNlc1N0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbToKKyAgICAgICAgKHNob3VsZEFsbG93UGljdHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2sp
OiBVc2VkIGR5bGRfZ2V0X3Byb2dyYW1fc2RrX3ZlcnNpb24oKSBpbnN0ZWFkIG9mIGlvc0V4ZWN1
dGFibGVXYXNMaW5rZWRPbk9yQWZ0ZXJWZXJzaW9uKCkuCisgICAgICAgICgtW1dLV2ViVmlldyBf
dGFrZVZpZXdTbmFwc2hvdF0pOiBVc2VkIHNjcmVlblNjYWxlRmFjdG9yKCkgaW5zdGVhZCBvZiBX
S0dldFNjcmVlblNjYWxlRmFjdG9yKCkuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGluaXRdKTogVXNlZCBkZXZpY2VDbGFzcygpIGluc3RlYWQgb2YgV0tHZXREZXZpY2VDbGFz
cygpLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoUHJvY2Vzc1Bvb2w6Y29u
ZmlndXJhdGlvbjpdKTogVXNlZCBzY3JlZW5TY2FsZUZhY3RvcigpIGluc3RlYWQgb2YgV0tHZXRT
Y2FsZUZhY3RvckZvclNjcmVlbigpLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF91cGRhdGVG
b3JTY3JlZW46XSk6IERpdHRvLgorICAgICAgICAoc3RvcmVBY2Nlc3NpYmlsaXR5UmVtb3RlQ29u
bmVjdGlvbkluZm9ybWF0aW9uKTogVXBzdHJlYW1lZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgV0tB
WFN0b3JlUmVtb3RlQ29ubmVjdGlvbkluZm9ybWF0aW9uKCkgZnJvbSBXZWJLaXRTeXN0ZW1JbnRl
cmZhY2UuCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2FjY2Vzc2liaWxpdHlSZWdpc3RlclVJ
UHJvY2Vzc1Rva2Vuc10pOiBVc2VkIGNyZWF0ZUFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbigpIGFu
ZCBzdG9yZUFjY2Vzc2liaWxpdHlSZW1vdGVDb25uZWN0aW9uSW5mb3JtYXRpb24oKSBpbnN0ZWFk
IG9mIFdLQVhSZW1vdGVUb2tlbigpIGFuZCBXS0FYU3RvcmVSZW1vdGVDb25uZWN0aW9uSW5mb3Jt
YXRpb24oKS4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzY3JlZW5TaXplKTogVXNlZCBzY3JlZW5TaXplKCkg
aW5zdGVhZCBvZiBXS0dldFNjcmVlblNpemUoKS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjphdmFpbGFibGVTY3JlZW5TaXplKTogVXNlZCBhdmFpbGFibGVTY3JlZW5TaXplKCkgaW5z
dGVhZCBvZiBXS0dldEF2YWlsYWJsZVNjcmVlblNpemUoKS4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojp0ZXh0QXV0b3NpemluZ1dpZHRoKTogVXNlZCBzY3JlZW5TaXplKCkgaW5zdGVh
ZCBvZiBXS0dldFNjcmVlblNpemUoKS4KKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
U3lzdGVtSW50ZXJmYWNlLm1tOgorICAgICAgICAoSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Up
OiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJp
bGl0eSk6IFVzZWQgY3JlYXRlQWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuKCkgaW5zdGVhZCBvZiBX
S0FYUmVtb3RlVG9rZW4oKS4KKwogMjAxNS0xMS0wMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbRVM2XSBTdXBwb3J0IEdlbmVyYXRvciBTeW50YXgK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBlZjc5M2UxMTJlYjU3ZWNlZDI0NmRlYzRjM2M2YjVlYzYwYjA0MThhLi4xY2VjYjVkYzMx
NGI1NTczMzM3NzYyZTFjZTA2NzMwZWZhZTEzYTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzU5LDcgKzEzNTksNiBAQAog
CQkzMURFQTQ1NTFCMzlGNEQ5MDBGNzcxNzggLyogV2ViU3lzdGVtQmFja2Ryb3BMYXllci5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxREVBNDUzMUIz
OUY0RDkwMEY3NzE3OCAvKiBXZWJTeXN0ZW1CYWNrZHJvcExheWVyLm1tICovOyB9OwogCQkzMURF
QTQ1NjFCMzlGNEQ5MDBGNzcxNzggLyogV2ViU3lzdGVtQmFja2Ryb3BMYXllci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFERUE0NTQxQjM5RjREOTAw
Rjc3MTc4IC8qIFdlYlN5c3RlbUJhY2tkcm9wTGF5ZXIuaCAqLzsgfTsKIAkJMzFERjYzNTcxQUYx
ODdERDAwNzhGRDkxIC8qIE5TQ29sb3JTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxREY2MzU2MUFGMTg3REQwMDc4RkQ5MSAvKiBOU0NvbG9yU1BJ
LmggKi87IH07Ci0JCTMxREY2MzU5MUFGMTk0RjAwMDc4RkQ5MSAvKiBVSUNvbG9yU1BJLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMURGNjM1ODFBRjE5
NEYwMDA3OEZEOTEgLyogVUlDb2xvclNQSS5oICovOyB9OwogCQkzMUVBRjk3RTEyMTQzNUE0MDBF
N0MxQkYgLyogRGV2aWNlTW90aW9uQ2xpZW50SU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUVBRjk3QzEyMTQzNUE0MDBFN0MxQkYgLyogRGV2aWNl
TW90aW9uQ2xpZW50SU9TLmggKi87IH07CiAJCTMxRUFGOTdGMTIxNDM1QTQwMEU3QzFCRiAvKiBE
ZXZpY2VNb3Rpb25DbGllbnRJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMUVBRjk3RDEyMTQzNUE0MDBFN0MxQkYgLyogRGV2aWNlTW90aW9uQ2xp
ZW50SU9TLm1tICovOyB9OwogCQkzMUVDMUUyODE0RkY2MEVFMDBDOTQ2NjIgLyogSlNOb3RpZmlj
YXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzFFQzFFMjYxNEZGNjBFRTAwQzk0NjYyIC8qIEpTTm90aWZpY2F0
aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcCAqLzsgfTsKQEAgLTE2NzUsNyArMTY3NCw2IEBACiAJ
CTQ0QTI4QUFGMTJERkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRBMjhBQUUxMkRGQjhCRjAwQUU5MjNC
IC8qIE1hdGhNTE5hbWVzLmggKi87IH07CiAJCTQ0QzM2M0YwMEZBQTdCQjMwMDk3RjhDQyAvKiBS
dW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QzM2M0VFMEZBQTdCQjMwMDk3RjhDQyAvKiBSdW50aW1lQXBw
bGljYXRpb25DaGVja3NJT1MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0NEMzNjNGMTBGQUE3QkIzMDA5N0Y4Q0MgLyogUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDRDMzYzRUYwRkFBN0JCMzAwOTdGOENDIC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNr
c0lPUy5tbSAqLzsgfTsKLQkJNDRDM0NGRTgxNTU2QkU1RDAwMDEzNjA5IC8qIFdlYkNvcmVTeXN0
ZW1JbnRlcmZhY2VJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ0QzNDRkU3MTU1NkJFNUQwMDAxMzYwOSAvKiBXZWJDb3JlU3lzdGVtSW50ZXJmYWNl
SU9TLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NDRDOTkxODIwRjNEMUUwRDAwNTg2NjcwIC8qIFNjcm9sbGJhclRoZW1lSU9TLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRDOTkxODEwRjNEMUUwRDAw
NTg2NjcwIC8qIFNjcm9sbGJhclRoZW1lSU9TLm1tICovOyB9OwogCQk0NEM5OTE4NjBGM0QxRUJF
MDA1ODY2NzAgLyogU2Nyb2xsYmFyVGhlbWVJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Qzk5MTg1MEYzRDFFQkUwMDU4NjY3MCAvKiBTY3JvbGxi
YXJUaGVtZUlPUy5oICovOyB9OwogCQk0NEM5OTE5RjBGM0QyMTBFMDA1ODY2NzAgLyogVGhlbWVJ
T1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Qzk5
MTlEMEYzRDIxMEUwMDU4NjY3MCAvKiBUaGVtZUlPUy5oICovOyB9OwpAQCAtNDAyOSw2ICs0MDI3
LDcgQEAKIAkJQTE0OTc4NzExQUJBRjNBNTAwQ0VGN0U0IC8qIFBsYXRmb3JtQ29udGVudEZpbHRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0OTc4
NzAxQUJBRjNBNTAwQ0VGN0U0IC8qIFBsYXRmb3JtQ29udGVudEZpbHRlci5oICovOyB9OwogCQlB
MTdDODEyMjBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExN0M4MTIwMEYyQTVDRjcw
MDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuY3BwICovOyB9OwogCQlBMTdDODEyMzBGMkE1
Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTdDODEyMTBGMkE1Q0Y3MDA1REFBRUIgLyogSFRN
TEVsZW1lbnRGYWN0b3J5LmggKi87IH07CisJCUExODJENUI3MUJFNzIyNjcwMDg3QTdDQyAvKiBT
ZXR0aW5nc0NvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTE4MkQ1QjYxQkU3MjI2MjAwODdBN0NDIC8qIFNldHRpbmdzQ29jb2EubW0gKi87IH07
CiAJCUExODg5MEFFMUFBMTNGMjUwMDI2QzMwMSAvKiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZp
bHRlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
ODg5MEFDMUFBMTNGMjUwMDI2QzMwMSAvKiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5t
bSAqLzsgfTsKIAkJQTE4ODkwQUYxQUExM0YyNTAwMjZDMzAxIC8qIFBhcmVudGFsQ29udHJvbHND
b250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMTg4OTBBRDFBQTEzRjI1MDAyNkMzMDEgLyogUGFyZW50YWxDb250cm9sc0NvbnRlbnRG
aWx0ZXIuaCAqLzsgfTsKIAkJQTE5QUVBMjExQUFBODA4NjAwQjUyQjI1IC8qIEpTTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTE5QUVBMUUxQUFBODA2RTAwQjUyQjI1IC8qIEpTTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5oICovOyB9OwpAQCAtNDA1NCw2ICs0MDUzLDkgQEAKIAkJQTFFMTE1NDYxMzAxNUM0
RTAwNTRBQzhDIC8qIFBvaW50TGlnaHRTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFFMTE1NDUxMzAxNUM0RTAwNTRBQzhDIC8qIFBvaW50
TGlnaHRTb3VyY2UuY3BwICovOyB9OwogCQlBMUUxMTU0ODEzMDE1QzVEMDA1NEFDOEMgLyogU3Bv
dExpZ2h0U291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExRTExNTQ3MTMwMTVDNUQwMDU0QUM4QyAvKiBTcG90TGlnaHRTb3VyY2UuY3BwICov
OyB9OwogCQlBMUU1QjMxRjFBQUQxREE0MDA2RUJFRkIgLyogSlNNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExRTVCMzFEMUFBRDFEQTQwMDZFQkVGQiAvKiBKU01vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3NDdXN0b20uY3BwICovOyB9OworCQlBMUVENzc4QzFCRTMyOTQwMDBEQzE3OTEgLyogRGV2
aWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
RUQ3NzhBMUJFMzI5M0YwMERDMTc5MSAvKiBEZXZpY2UuY3BwICovOyB9OworCQlBMUVENzc4RDFC
RTMyOTQwMDBEQzE3OTEgLyogRGV2aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMUVENzc4QjFCRTMyOTQwMDBEQzE3OTEgLyogRGV2aWNlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTFFRDc3OEYx
QkU0MjkxODAwREMxNzkxIC8qIFVJS2l0U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBMUVENzc4RTFCRTQyOTE4MDBEQzE3OTEgLyogVUlLaXRTUEku
aCAqLzsgfTsKIAkJQTJCOTIxNzMxNkM1Q0M0MjAwNDFEQ0Q5IC8qIEludFJlY3RFeHRlbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEyQjkyMTcyMTZD
NUNDNDIwMDQxRENEOSAvKiBJbnRSZWN0RXh0ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTMxQzRFNEQxNkUwMkFBNjAwMkY3OTU3IC8qIE9F
U1RleHR1cmVIYWxmRmxvYXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTMxQzRFNEMxNkUwMkFBNjAwMkY3OTU3IC8qIE9FU1RleHR1cmVIYWxmRmxv
YXQuY3BwICovOyB9OwogCQlBMzFDNEU0RjE2RTAyQUI0MDAyRjc5NTcgLyogT0VTVGV4dHVyZUhh
bGZGbG9hdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTMxQzRFNEUxNkUwMkFCNDAwMkY3OTU3IC8qIE9FU1RleHR1cmVIYWxmRmxvYXQuaCAqLzsgfTsK
QEAgLTYwNjEsNyArNjA2Myw3IEBACiAJCUNFMTI1MjNEMUExNjc2Q0QwMDg2NDQ4MCAvKiBRdWFy
dHpDb3JlU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRTEyNTIzQzFBMTY3NkNEMDA4NjQ0ODAgLyogUXVhcnR6Q29yZVNQSS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMTI1MjQxMUExNkIxQjYw
MDg2NDQ4MCAvKiBNZWRpYVBsYXllclNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0UxMjUyNDAxQTE2QjFCNjAwODY0NDgwIC8qIE1lZGlhUGxheWVy
U1BJLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
Q0UxMjUyNDMxQTE2QzAxQTAwODY0NDgwIC8qIENvcmVVSVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxMjUyNDIxQTE2QzAxQTAwODY0NDgwIC8q
IENvcmVVSVNQSS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07Ci0JCUNFMTI1MjQ1MUExNkMyMjUwMDg2NDQ4MCAvKiBEeW5hbWljTGlua2VyU1BJLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTEyNTI0NDFBMTZD
MjI1MDA4NjQ0ODAgLyogRHluYW1pY0xpbmtlclNQSS5oICovOyB9OworCQlDRTEyNTI0NTFBMTZD
MjI1MDA4NjQ0ODAgLyogRHluYW1pY0xpbmtlclNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxMjUyNDQxQTE2QzIyNTAwODY0NDgwIC8qIER5bmFt
aWNMaW5rZXJTUEkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlDRTEyNTI0NzFBMTZDMkMyMDA4NjQ0ODAgLyogTlNQb2ludGVyRnVuY3Rpb25zU1BJ
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTEyNTI0
NjFBMTZDMkMyMDA4NjQ0ODAgLyogTlNQb2ludGVyRnVuY3Rpb25zU1BJLmggKi87IH07CiAJCUNF
MTI1MjQ5MUExNkMzQkMwMDg2NDQ4MCAvKiBNb2JpbGVHZXN0YWx0U1BJLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTEyNTI0ODFBMTZDM0JDMDA4NjQ0
ODAgLyogTW9iaWxlR2VzdGFsdFNQSS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUNFMTI1MjREMUExQTc3REUwMDg2NDQ4MCAvKiBJT1BNTGliU1BJ
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTEyNTI0
QzFBMUE3N0RFMDA4NjQ0ODAgLyogSU9QTUxpYlNQSS5oICovOyB9OwpAQCAtNjM1MCw3ICs2MzUy
LDYgQEAKIAkJRTFDMjY2REIxODMxOTkzNTAwM0Y4QjMzIC8qIENyeXB0b0FsZ29yaXRobVJzYUtl
eVBhcmFtc1dpdGhIYXNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMUMyNjZEQTE4MzE5OTM1MDAzRjhCMzMgLyogQ3J5cHRvQWxnb3JpdGhtUnNhS2V5
UGFyYW1zV2l0aEhhc2guaCAqLzsgfTsKIAkJRTFDMjY2REUxODMxOUYzMTAwM0Y4QjMzIC8qIENy
eXB0b0tleURhdGFSU0FDb21wb25lbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUxQzI2NkRDMTgzMTlGMzEwMDNGOEIzMyAvKiBDcnlwdG9LZXlE
YXRhUlNBQ29tcG9uZW50cy5jcHAgKi87IH07CiAJCUUxQzI2NkRGMTgzMTlGMzEwMDNGOEIzMyAv
KiBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTFDMjY2REQxODMxOUYzMTAwM0Y4QjMzIC8qIENyeXB0b0tl
eURhdGFSU0FDb21wb25lbnRzLmggKi87IH07Ci0JCUUxQzJGMjRBMTUzM0EyMTIwMDgzRjk3NCAv
KiBTZXR0aW5nc01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUxQzJGMjQ4MTUzM0EyMTIwMDgzRjk3NCAvKiBTZXR0aW5nc01hYy5tbSAqLzsgfTsK
IAkJRTFDMzYyRUYwRUFGMkFBOTAwNzQxMEJDIC8qIEpTV29ya2VyTG9jYXRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQzM2MkVEMEVBRjJBQTkw
MDc0MTBCQyAvKiBKU1dvcmtlckxvY2F0aW9uLmggKi87IH07CiAJCUUxQzM2MkYwMEVBRjJBQTkw
MDc0MTBCQyAvKiBKU1dvcmtlckxvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQzM2MkVFMEVBRjJBQTkwMDc0MTBCQyAvKiBKU1dvcmtl
ckxvY2F0aW9uLmNwcCAqLzsgfTsKIAkJRTFDMzZDMDMwRUIwNzZENjAwNzQxMEJDIC8qIEpTRE9N
R2xvYmFsT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMUMzNkMwMjBFQjA3NkQ2MDA3NDEwQkMgLyogSlNET01HbG9iYWxPYmplY3QuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODY5OCw3ICs4
Njk5LDYgQEAKIAkJMzFERUE0NTMxQjM5RjREOTAwRjc3MTc4IC8qIFdlYlN5c3RlbUJhY2tkcm9w
TGF5ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTeXN0
ZW1CYWNrZHJvcExheWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMURFQTQ1
NDFCMzlGNEQ5MDBGNzcxNzggLyogV2ViU3lzdGVtQmFja2Ryb3BMYXllci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTeXN0ZW1CYWNrZHJvcExheWVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxREY2MzU2MUFGMTg3REQwMDc4RkQ5MSAvKiBOU0NvbG9y
U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TQ29sb3JTUEkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzFERjYzNTgxQUYxOTRGMDAwNzhGRDkxIC8qIFVJ
Q29sb3JTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVUlDb2xvclNQSS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUU4RDhCQTE2MEJDOTRCMDA0Q0U4RjUg
LyogUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzMUU4RDhCQjE2MEJDOTRDMDA0Q0U4RjUgLyogUmVuZGVyU25hcHNob3R0
ZWRQbHVnSW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFFQUY5N0MxMjE0
MzVBNDAwRTdDMUJGIC8qIERldmljZU1vdGlvbkNsaWVudElPUy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEZXZpY2VNb3Rpb25DbGllbnRJT1MuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTkwMzksNyArOTAzOSw2IEBACiAJCTQ0QTI4QUFFMTJERkI4QkYwMEFF
OTIzQiAvKiBNYXRoTUxOYW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
YXRoTUxOYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NEMzNjNFRTBGQUE3
QkIzMDA5N0Y4Q0MgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NEMzNjNFRjBGQUE3QkIzMDA5N0Y4Q0MgLyogUnVu
dGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk0NEMzQ0ZFNzE1NTZCRTVEMDAwMTM2MDkgLyogV2ViQ29yZVN5c3Rl
bUludGVyZmFjZUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3Jl
U3lzdGVtSW50ZXJmYWNlSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0Qzk5
MTgxMEYzRDFFMEQwMDU4NjY3MCAvKiBTY3JvbGxiYXJUaGVtZUlPUy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbGJhclRoZW1lSU9TLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NEM5OTE4NTBGM0QxRUJFMDA1ODY2NzAgLyogU2Nyb2xs
YmFyVGhlbWVJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsYmFy
VGhlbWVJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRDOTkxOUQwRjNEMjEw
RTAwNTg2NjcwIC8qIFRoZW1lSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFRoZW1lSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTU2MCw2ICsxMTU1
OSw3IEBACiAJCUExNDk3ODcwMUFCQUYzQTUwMENFRjdFNCAvKiBQbGF0Zm9ybUNvbnRlbnRGaWx0
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1Db250ZW50Rmls
dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExN0M4MTIwMEYyQTVDRjcwMDVE
QUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSFRNTEVsZW1lbnRGYWN0b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTE3QzgxMjEwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MRWxlbWVudEZhY3RvcnkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE4MkQ1QjYxQkU3MjI2MjAwODdBN0NDIC8q
IFNldHRpbmdzQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBTZXR0aW5nc0NvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTg4OTBB
QzFBQTEzRjI1MDAyNkMzMDEgLyogUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQYXJlbnRhbENvbnRyb2xzQ29u
dGVudEZpbHRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE4ODkwQUQxQUEx
M0YyNTAwMjZDMzAxIC8qIFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExOUFFQTFDMUFBQTdDNDkwMEI1MkIyNSAv
KiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExNTgxLDYgKzExNTgx
LDkgQEAKIAkJQTFFMTE1NDUxMzAxNUM0RTAwNTRBQzhDIC8qIFBvaW50TGlnaHRTb3VyY2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9pbnRMaWdodFNvdXJjZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRTExNTQ3MTMwMTVDNUQwMDU0QUM4
QyAvKiBTcG90TGlnaHRTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU3BvdExpZ2h0U291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTFFNUIzMUQxQUFEMURBNDAwNkVCRUZCIC8qIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0N1
c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3NDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBMUVENzc4QTFCRTMyOTNGMDBEQzE3OTEgLyogRGV2aWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERldmljZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUExRUQ3NzhCMUJFMzI5NDAwMERDMTc5MSAvKiBEZXZpY2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUExRUQ3NzhFMUJFNDI5MTgwMERDMTc5MSAvKiBVSUtpdFNQSS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBVSUtpdFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBMjA4RTIyMkE1NkEwQzc1NzVGMkE3MkUgLyogUmVuZGVyTWF0aE1MTWVuY2xvc2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTWF0aE1MTWVuY2xvc2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTJCOTIxNzIxNkM1Q0M0MjAwNDFEQ0Q5IC8q
IEludFJlY3RFeHRlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50UmVj
dEV4dGVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzFDNEU0QzE2RTAyQUE2
MDAyRjc5NTcgLyogT0VTVGV4dHVyZUhhbGZGbG9hdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBPRVNUZXh0dXJlSGFsZkZsb2F0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE0MjE0LDcgKzE0MjE3LDYgQEAKIAkJRTFDMjY2REExODMxOTkzNTAw
M0Y4QjMzIC8qIENyeXB0b0FsZ29yaXRobVJzYUtleVBhcmFtc1dpdGhIYXNoLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobVJzYUtleVBhcmFtc1dpdGhI
YXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQzI2NkRDMTgzMTlGMzEwMDNG
OEIzMyAvKiBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQzI2NkREMTgzMTlGMzEwMDNGOEIzMyAvKiBDcnlw
dG9LZXlEYXRhUlNBQ29tcG9uZW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlFMUMyRjI0ODE1MzNBMjEyMDA4M0Y5NzQgLyogU2V0dGluZ3NNYWMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTZXR0aW5nc01hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFDMzYyRUQwRUFGMkFBOTAwNzQxMEJDIC8qIEpTV29ya2Vy
TG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXb3JrZXJMb2Nh
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUMzNjJFRTBFQUYyQUE5MDA3
NDEwQkMgLyogSlNXb3JrZXJMb2NhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1dvcmtlckxvY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTFDMzZDMDIwRUIwNzZENjAwNzQxMEJDIC8qIEpTRE9NR2xvYmFsT2JqZWN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NR2xvYmFsT2JqZWN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzA4Miw2ICsxNzA4NCw3IEBACiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUFERkUyQjU0MUJENUY0MTIwMERBQjQ1NyAv
KiBSZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tICovLAorCQkJCUExODJENUI2MUJFNzIyNjIw
MDg3QTdDQyAvKiBTZXR0aW5nc0NvY29hLm1tICovLAogCQkJCTI2MjU1RjAxMTg4NzhFMTEwMDA2
RTFGRCAvKiBVc2VyQWdlbnQuaCAqLywKIAkJCQk1RDU5NzVCNjE5NjM2MzdCMDBEMDA4NzggLyog
VXNlckFnZW50Lm1tICovLAogCQkJKTsKQEAgLTE4NjAwLDcgKzE4NjAzLDYgQEAKIAkJCQk4MzRE
RDRGMzFCRTA4OTg5MDAyQzlDM0UgLyogUGFnZU1hYy5tbSAqLywKIAkJCQkyRDkzQUVFMTE5REY1
NjQxMDAyQTg2QzMgLyogU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5oICovLAogCQkJCTJEOTNB
RUUyMTlERjU2NDEwMDJBODZDMyAvKiBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tICovLAot
CQkJCUUxQzJGMjQ4MTUzM0EyMTIwMDgzRjk3NCAvKiBTZXR0aW5nc01hYy5tbSAqLywKIAkJCQky
RDRGOTZGMzFBMUVDQzI0MDA5OEJGODggLyogVGV4dEluZGljYXRvcldpbmRvdy5oICovLAogCQkJ
CTJENEY5NkY0MUExRUNDMjQwMDk4QkY4OCAvKiBUZXh0SW5kaWNhdG9yV2luZG93Lm1tICovLAog
CQkJCTI2MjU1RjAyMTg4NzhFMTEwMDA2RTFGRCAvKiBVc2VyQWdlbnRNYWMubW0gKi8sCkBAIC0x
OTQ3MSw3ICsxOTQ3Myw3IEBACiAJCQkJQ0UxMjUyNDgxQTE2QzNCQzAwODY0NDgwIC8qIE1vYmls
ZUdlc3RhbHRTUEkuaCAqLywKIAkJCQk2RkFENEE1NjFBOUQwRkFFMDA5RjdEM0MgLyogT3BlbkdM
RVNTUEkuaCAqLywKIAkJCQlDRTEyNTIzODFBMTY2RkEwMDA4NjQ0ODAgLyogUXVpY2tMb29rU1BJ
LmggKi8sCi0JCQkJMzFERjYzNTgxQUYxOTRGMDAwNzhGRDkxIC8qIFVJQ29sb3JTUEkuaCAqLywK
KwkJCQlBMUVENzc4RTFCRTQyOTE4MDBEQzE3OTEgLyogVUlLaXRTUEkuaCAqLywKIAkJCSk7CiAJ
CQlwYXRoID0gaW9zOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE5NDkwLDYgKzE5
NDkyLDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUExNDgzMjhCMTg3RjUwNjgwMERBNjNBNiAv
KiB3YWsgKi8sCiAJCQkJMjY1NTQxNEIxNDg5QUEyQjAwMERGQzVEIC8qIEN1cnNvcklPUy5jcHAg
Ki8sCisJCQkJQTFFRDc3OEExQkUzMjkzRjAwREMxNzkxIC8qIERldmljZS5jcHAgKi8sCisJCQkJ
QTFFRDc3OEIxQkUzMjk0MDAwREMxNzkxIC8qIERldmljZS5oICovLAogCQkJCTMxRUFGOTdDMTIx
NDM1QTQwMEU3QzFCRiAvKiBEZXZpY2VNb3Rpb25DbGllbnRJT1MuaCAqLywKIAkJCQkzMUVBRjk3
RDEyMTQzNUE0MDBFN0MxQkYgLyogRGV2aWNlTW90aW9uQ2xpZW50SU9TLm1tICovLAogCQkJCTMx
NDAzNzk5MTI0QkVBN0YwMEFGNDBFNCAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudElPUy5oICov
LApAQCAtMTk1MzgsNyArMTk1NDIsNiBAQAogCQkJCTFGNzJCRjA5MTg3RkQ0MjcwMDA5QkNCMyAv
KiBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaCAqLywKIAkJCQkzMTQwMzc5NzEyNEJF
QTdGMDBBRjQwRTQgLyogV2ViQ29yZU1vdGlvbk1hbmFnZXIuaCAqLywKIAkJCQkzMTQwMzc5ODEy
NEJFQTdGMDBBRjQwRTQgLyogV2ViQ29yZU1vdGlvbk1hbmFnZXIubW0gKi8sCi0JCQkJNDRDM0NG
RTcxNTU2QkU1RDAwMDEzNjA5IC8qIFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MuaCAqLywKIAkJ
CQlFNDUzOTAzODBFQUZENjM3MDAzNjk1QzggLyogV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5t
bSAqLywKIAkJCQlGRTBEODRFODEwNDg0MzQ4MDAxQTE3OUUgLyogV2ViRXZlbnQuaCAqLywKIAkJ
CQlGRTBEODRFQTEwNDg0MzZFMDAxQTE3OUUgLyogV2ViRXZlbnQubW0gKi8sCkBAIC0yNTI4NCw2
ICsyNTI4Nyw3IEBACiAJCQkJODU1MjZDRDIwQUIwQjdEOTAwMDMwMkVBIC8qIERPTVRyZWVXYWxr
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MEI0MUMzMEFEOUU3RTcwMEE2RUQ0RiAvKiBET01U
cmVlV2Fsa2VySW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1QzdGNDkxMEFBRjc5REMw
MDQwMTRERCAvKiBET01VSUV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlBMUVENzc4RjFCRTQy
OTE4MDBEQzE3OTEgLyogVUlLaXRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1OTg5REQwMEFD
QzhCQkQwMEEwQkM1MSAvKiBET01VSUV2ZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZFRDEzRDJBMENFQTkxREYwMEQ4OTQ2NiAvKiBET01VSUtpdEV4dGVuc2lvbnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTJFMzdERkRCMTJEQkFGQjgwMEE2QjIzMyAvKiBET01VUkwuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjc2NzYsNiArMjc2ODAsNyBAQAogCQkJCUMxMDVEQTY0MEYzQUE2QjgwMDFE
RDQ0RiAvKiBUZXh0RW5jb2RpbmdEZXRlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RB
NDkwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRFbmNvZGluZ1JlZ2lzdHJ5LmggaW4gSGVhZGVycyAq
LywKIAkJCQk5MzNBMTQzMDBCN0QxODg2MDBBNTNGRkQgLyogVGV4dEV2ZW50LmggaW4gSGVhZGVy
cyAqLywKKwkJCQlBMUVENzc4RDFCRTMyOTQwMDBEQzE3OTEgLyogRGV2aWNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNzdCNDFBMDEyRTY3NUE5MDA1NDM0M0QgLyogVGV4dEV2ZW50SW5wdXRUeXBl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0REODEyNTFGMTJEMDAzRUYyNjkgLyogVGV4dEZp
ZWxkSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREE0NTBEMDA2QzFEMDBFRjZG
MjYgLyogVGV4dEZsYWdzLmggaW4gSGVhZGVycyAqLywKQEAgLTI3NzU1LDcgKzI3NzYwLDYgQEAK
IAkJCQlDMzc1RDdGRTE2NjM5NTE5MDA2MTg0QUIgLyogVHlwZUFoZWFkLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFNDZBMkIxQzE3Q0E2NUI5MDAwREJDRDggLyogVHlwZWRFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUxQTA5OUU2NDkyMDA1NkU1ODEg
LyogVHlwaW5nQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzFERjYzNTkxQUYxOTRGMDAw
NzhGRDkxIC8qIFVJQ29sb3JTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDMxQjRFMEE0NEVG
QzcwMEY5OTJFMCAvKiBVSUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTAzMUI0RjBBNDRF
RkM3MDBGOTkyRTAgLyogVUlFdmVudFdpdGhLZXlTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QUE0NzM5RDIxNzU3QUZFQzAwRTc2NzY3IC8qIFVJUmVxdWVzdEV2ZW50LmggaW4gSGVhZGVycyAq
LywKQEAgLTI3ODY2LDcgKzI3ODcwLDYgQEAKIAkJCQlFMTgwODEwRjE2RkNFQ0RGMDBCODBEMDcg
LyogV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTE1MjU1MTUxNkZEMjM1MDAwM0Q3QURCIC8qIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0
aW9uUXVldWVEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNFQjE2OTcwOUY4ODBDMDAw
OTFGOEZGIC8qIFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ0
QzNDRkU4MTU1NkJFNUQwMDAxMzYwOSAvKiBXZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBMTQ4MzJDNzE4N0Y2NkM4MDBEQTYzQTYgLyogV2ViQ29yZVRocmVh
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE0ODMyQzkxODdGNjc2QjAwREE2M0E2IC8qIFdlYkNv
cmVUaHJlYWRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE0ODMyQ0ExODdGNjc4MDAw
REE2M0E2IC8qIFdlYkNvcmVUaHJlYWRNZXNzYWdlLmggaW4gSGVhZGVycyAqLywKQEAgLTI4NjUy
LDYgKzI4NjU1LDcgQEAKIAkJCQk0MDlFQkRCMjE2QjdFRTc0MDBDQkEzRkMgLyogQ1NTRm9udEZh
Y2VMb2FkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgwRTZDRTcwQTE5ODlDQTAwN0ZC
OEM1IC8qIENTU0ZvbnRGYWNlUnVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzY0QjRENzBD
QjQyOThBMDA1RjJCNjIgLyogQ1NTRm9udEZhY2VTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQTFFRDc3OEMxQkUzMjk0MDAwREMxNzkxIC8qIERldmljZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCQzY0QjREOTBDQjQyOThBMDA1RjJCNjIgLyogQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk0QTZFOUZDMzEzQzE3RDFEMDA0NkE3RjggLyogQ1NTRm9udEZl
YXR1cmVWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzY0QjREQjBDQjQyOThBMDA1RjJC
NjIgLyogQ1NTRm9udFNlbGVjdG9yLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzA3ODAsNyArMzA3
ODQsNiBAQAogCQkJCTkzMzA5RTBGMDk5RTY0OTIwMDU2RTU4MSAvKiBTZXROb2RlQXR0cmlidXRl
Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCOERCREI0QjEzMEIwRjhBMDBGNUNEQjEg
LyogU2V0U2VsZWN0aW9uQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEM5QTVFQTBC
M0QxMDVGMDA1QTAyMzIgLyogU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRTFDMkYy
NEExNTMzQTIxMjAwODNGOTc0IC8qIFNldHRpbmdzTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEYzREQ0NEYxMkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0JsdXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkM1RUI4QzMwRTgyMDMxQjAwQjI1OTY1IC8qIFNoYWRvd0RhdGEuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTZEMTY5NjIxMzQ2QjQ5QjAwMEVCNzcwIC8qIFNoYWRvd1Jvb3QuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC0zMDg1OCw2ICszMDg2MSw3IEBACiAJCQkJMUEzNzYzNkIxQTJFNjhC
QjAwOUE3RUUyIC8qIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk4MTAyQzU4ODEzMjVCQjExMDBEREU2N0EgLyogU3RyaW5nQ2FsbGJhY2suY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQjIzNTQwRjIwRDAwNzgyRTAwMjM4MkZBIC8qIFN0cmluZ1RydW5jYXRv
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMTgyRDVCNzFCRTcyMjY3MDA4N0E3Q0MgLyogU2V0
dGluZ3NDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDNUVCNkEyMEU4MURDNEYwMEIyNTk2
NSAvKiBTdHlsZUJhY2tncm91bmREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNUVCNjdE
MEU4MUQ0MjAwMEIyNTk2NSAvKiBTdHlsZUJveERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
ODM4NkE5NzAxOUY2MUU0RjAwRTFFQzRBIC8qIFN0eWxlQnVpbGRlci5jcHAgaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbmZpZy5oIGIvU291cmNlL1dlYkNvcmUv
Y29uZmlnLmgKaW5kZXggODg5ODU3ZDdjNjgyZDkyMDY3ZmQ0OTIyZjdkYmM0ODcwZTk1MWRiYS4u
ZTMxZjg4ZmQzNWEzZWQxNzE0N2ZlMDI5NGJjNzBlNDMyNmE2MTVhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY29uZmlnLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY29uZmlnLmgKQEAgLTEx
NiwxMSArMTE2LDYgQEAgdHlwZWRlZiBmbG9hdCBDR0Zsb2F0OwogI2VuZGlmCiAjZW5kaWYgLyog
VVNFKENHKSAqLwogCi0jaWYgUExBVEZPUk0oSU9TKQotI2RlZmluZSBXRUJDT1JFX05BVklHQVRP
Ul9QTEFURk9STSB3a0dldFBsYXRmb3JtTmFtZUZvck5hdmlnYXRvcigpOwotI2RlZmluZSBXRUJD
T1JFX05BVklHQVRPUl9WRU5ET1Igd2tHZXRWZW5kb3JOYW1lRm9yTmF2aWdhdG9yKCk7Ci0jZW5k
aWYKLQogLy8gRklYTUU6IE1vdmUgdGhpcyB0byBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0u
aCwgd2hpY2ggaXMgd2hlcmUgd2UgZGVmaW5lIFVTRV9BVkZPVU5EQVRJT04gb24gdGhlIE1hYy4K
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzMzNAogI2lmIFBM
QVRGT1JNKFdJTikgJiYgVVNFKENHKSAmJiBIQVZFKEFWQ0YpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
TWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKaW5kZXggZDM0MWMyMTY3M2UzZDJiM2RmZGNmODdmZTMw
NjNhYTQ4YjFiYmI2MC4uMGIwNjUyODcxMWE2NGIyZjc4OGQxYWUzOTBiZTM4ZGUzMWFiODBjMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcApAQCAtNTcsNyAr
NTcsNyBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1MpCi0jaW5jbHVkZSAiV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5oIgorI2luY2x1ZGUgIkRldmljZS5oIgogI2VuZGlmCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTYzMSw4ICs2MzEsOCBAQCBzdGF0aWMgYm9vbCB2aWV3X21vZGVNZWRp
YUZlYXR1cmVFdmFsKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaQog
c3RhdGljIGlubGluZSBib29sIGlzUnVubmluZ09uSVBob25lT3JJUG9kKCkKIHsKICNpZiBQTEFU
Rk9STShJT1MpCi0gICAgc3RhdGljIHdrRGV2aWNlQ2xhc3MgZGV2aWNlQ2xhc3MgPSBpb3NEZXZp
Y2VDbGFzcygpOwotICAgIHJldHVybiBkZXZpY2VDbGFzcyA9PSB3a0RldmljZUNsYXNzaVBob25l
IHx8IGRldmljZUNsYXNzID09IHdrRGV2aWNlQ2xhc3NpUG9kOworICAgIHN0YXRpYyBNR0Rldmlj
ZUNsYXNzIHRoZUNsYXNzID0gZGV2aWNlQ2xhc3MoKTsKKyAgICByZXR1cm4gdGhlQ2xhc3MgPT0g
TUdEZXZpY2VDbGFzc2lQaG9uZSB8fCB0aGVDbGFzcyA9PSBNR0RldmljZUNsYXNzaVBvZDsKICNl
bHNlCiAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAppbmRleCAzZDhjMmFkMDM0MGExNTA5YWIxOTExYTMzYmViYmZhZDI0ZGY0
MTBjLi4wZTI2ZWJhYzkxNWMyNmQ4MjJlYWJkMmQ5NjY5NWEwNmUwOTY3YWE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTExMCw2ICsxMTAsNyBAQAogCiAj
aWYgUExBVEZPUk0oSU9TKQogI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5o
IgorI2luY2x1ZGUgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgiCiAjZW5kaWYK
IAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCkBAIC02NDM0LDcgKzY0MzUs
NyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnNob3VsZE92ZXJyaWRlQmFja2dyb3VuZFBsYXli
YWNrUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYQogICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1v
ZGUgJiBWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGUg
PT0gVmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkICYmIHdrSXNPcHRpbWl6ZWRGdWxsc2NyZWVu
U3VwcG9ydGVkKCkgJiYgaXNQbGF5aW5nKCkpCisgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9k
ZSA9PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQgJiYgc3VwcG9ydHNQaWN0dXJlSW5QaWN0
dXJlKCkgJiYgaXNQbGF5aW5nKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAgICAg
cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcApp
bmRleCBjMjQxNjdjMDE0ZDFkNzM1ZDFkMGVhMWNlYzJhNTkzNTUyN2U3YmI4Li5kZDNjYTM0MzVm
YWM4MjBkMGQxODA5ZTJmZDEyMThiZmJkZDBiNmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPYmplY3RFbGVtZW50LmNwcApAQCAtNTUsOCArNTUsOCBAQAogI2luY2x1ZGUgPHd0Zi9SZWYu
aD4KIAogI2lmIFBMQVRGT1JNKElPUykKKyNpbmNsdWRlICJEeW5hbWljTGlua2VyU1BJLmgiCiAj
aW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgiCi0jaW5jbHVkZSAiV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE1
OSw3ICsxNTksNyBAQCBzdGF0aWMgdm9pZCBtYXBEYXRhUGFyYW1Ub1NyYyhWZWN0b3I8U3RyaW5n
PiogcGFyYW1OYW1lcywgVmVjdG9yPFN0cmluZz4qIHBhcmFtVgogI2lmIFBMQVRGT1JNKElPUykK
IHN0YXRpYyBib29sIHNob3VsZE5vdFBlcmZvcm1VUkxBZGp1c3RtZW50KCkKIHsKLSAgICBzdGF0
aWMgYm9vbCBzaG91bGROb3RQZXJmb3JtVVJMQWRqdXN0bWVudCA9IGFwcGxpY2F0aW9uSXNOQVNB
SEQoKSAmJiAhaW9zRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JBZnRlclZlcnNpb24od2tJT1NTeXN0
ZW1WZXJzaW9uXzVfMCk7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkTm90UGVyZm9ybVVSTEFkanVz
dG1lbnQgPSBhcHBsaWNhdGlvbklzTkFTQUhEKCkgJiYgZHlsZF9nZXRfcHJvZ3JhbV9zZGtfdmVy
c2lvbigpIDwgRFlMRF9JT1NfVkVSU0lPTl81XzA7CiAgICAgcmV0dXJuIHNob3VsZE5vdFBlcmZv
cm1VUkxBZGp1c3RtZW50OwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9F
bGVtZW50LmNwcAppbmRleCBiZDMwNjc1Y2IxYWNlYThhMTVlNzc5ZDc2M2JiZGVhNjY5NzkzYWY0
Li5lNjgxMmRiMTdiNjQ0YmIwODgyZGFkMzNlODI0NWM1YzM3MzRhMDc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTQzLDYgKzQzLDEwIEBACiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAorI2lmIEVO
QUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKKyNpbmNsdWRlICJXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTM2OSw3ICszNzMsNyBAQCBib29sIEhUTUxWaWRl
b0VsZW1lbnQ6OndlYmtpdFN1cHBvcnRzUHJlc2VudGF0aW9uTW9kZShjb25zdCBTdHJpbmcmIG1v
ZGUpIGNvbnN0CiAgICAgICAgIHJldHVybiBtZWRpYVNlc3Npb24oKS5mdWxsc2NyZWVuUGVybWl0
dGVkKCp0aGlzKSAmJiBzdXBwb3J0c0Z1bGxzY3JlZW4oKTsKIAogICAgIGlmIChtb2RlID09IHBy
ZXNlbnRhdGlvbk1vZGVQaWN0dXJlSW5QaWN0dXJlKCkpCi0gICAgICAgIHJldHVybiB3a0lzT3B0
aW1pemVkRnVsbHNjcmVlblN1cHBvcnRlZCgpICYmIG1lZGlhU2Vzc2lvbigpLmFsbG93c1BpY3R1
cmVJblBpY3R1cmUoKnRoaXMpICYmIHN1cHBvcnRzRnVsbHNjcmVlbigpOworICAgICAgICByZXR1
cm4gc3VwcG9ydHNQaWN0dXJlSW5QaWN0dXJlKCkgJiYgbWVkaWFTZXNzaW9uKCkuYWxsb3dzUGlj
dHVyZUluUGljdHVyZSgqdGhpcykgJiYgc3VwcG9ydHNGdWxsc2NyZWVuKCk7CiAKICAgICBpZiAo
bW9kZSA9PSBwcmVzZW50YXRpb25Nb2RlSW5saW5lKCkpCiAgICAgICAgIHJldHVybiAhbWVkaWFT
ZXNzaW9uKCkucmVxdWlyZXNGdWxsc2NyZWVuRm9yVmlkZW9QbGF5YmFjaygqdGhpcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcAppbmRleCBlZDk5Y2ZmN2YwNjhhMzQ0MzMwZDc4
ZjYwOGJhZDAzOTQ1ODE5YzEwLi41ZTQ4MzExNDUyY2Q1ZTk3MjNlNDQ0Mjc2ZjIyNzAzOTY5Mzll
MWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5jcHAKQEAgLTM2LDEyICszNiwx
MyBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1MpCi0jaW5jbHVkZSAiV2ViQ29yZVN5c3Rl
bUludGVyZmFjZS5oIgorI2luY2x1ZGUgIkRldmljZS5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogI2VuZGlmCiAKICNpZm5kZWYgV0VCQ09SRV9OQVZJR0FUT1JfUExBVEZPUk0K
ICNpZiBQTEFURk9STShJT1MpCi0jZGVmaW5lIFdFQkNPUkVfTkFWSUdBVE9SX1BMQVRGT1JNICIi
CisjZGVmaW5lIFdFQkNPUkVfTkFWSUdBVE9SX1BMQVRGT1JNIHBsYXRmb3JtTmFtZUZvck5hdmln
YXRvcigpCiAjZWxpZiBPUyhNQUNfT1NfWCkgJiYgKENQVShQUEMpIHx8IENQVShQUEM2NCkpCiAj
ZGVmaW5lIFdFQkNPUkVfTkFWSUdBVE9SX1BMQVRGT1JNICJNYWNQUEMiCiAjZWxpZiBPUyhNQUNf
T1NfWCkgJiYgKENQVShYODYpIHx8IENQVShYODZfNjQpKQpAQCAtNjksOSArNzAsMTYgQEAKICNk
ZWZpbmUgV0VCQ09SRV9OQVZJR0FUT1JfVkVORE9SX1NVQiAiIgogI2VuZGlmIC8vIGlmbmRlZiBX
RUJDT1JFX05BVklHQVRPUl9WRU5ET1JfU1VCCiAKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCisj
aWYgUExBVEZPUk0oSU9TKQorc3RhdGljIGNvbnN0IFN0cmluZyYgcGxhdGZvcm1OYW1lRm9yTmF2
aWdhdG9yKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBwbGF0Zm9ybU5h
bWUgPSBkZXZpY2VOYW1lKCk7CisgICAgcmV0dXJuIHBsYXRmb3JtTmFtZTsKK30KKyNlbmRpZgor
CiBOYXZpZ2F0b3JCYXNlOjp+TmF2aWdhdG9yQmFzZSgpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmgKaW5kZXggOTM2ZWFlMWU4MjBlZDM5NGI1ODZhZmY5ZTFmZGM4MGFlMDdjOWZhMi4uMzc0OTI1
MWEwYjA0MWVkZDRmNzUwMmI0ZmRiMmQyN2VlMTdjNTAzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
aApAQCAtMjgyLDYgKzI4MiwxMCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldEZvcmNlUGVuZGluZ1dlYkdMUG9saWN5KGJvb2wpOwogICAgIGJvb2wgaXNGb3JjZVBlbmRp
bmdXZWJHTFBvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9yY2VQZW5kaW5nV2ViR0xQb2xpY3k7
IH0KKyAgICAKKyNpZiBQTEFURk9STShJT1MpCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGZs
b2F0IGRlZmF1bHRNaW5pbXVtWm9vbUZvbnRTaXplKCk7CisjZW5kaWYKIAogcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBTZXR0aW5ncyhQYWdlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdw
b3J0Q29uZmlndXJhdGlvbi5jcHAKaW5kZXggOTI0NzkwZDkzYTZjNDQxNTBjNjBiNmFlZmI0NDE5
ZjIzMzgxYTk5ZS4uNWE4NjhmNGFkOWJlYjkwOGFlNGE0ZDZkZWQ2Y2JhOWE2ZTc4MjhlNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmNwcApAQCAtMzIs
NyArMzIsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JN
KElPUykKLSNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiUGxh
dGZvcm1TY3JlZW4uaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yMTMsNyAr
MjEzLDcgQEAgVmlld3BvcnRDb25maWd1cmF0aW9uOjpQYXJhbWV0ZXJzIFZpZXdwb3J0Q29uZmln
dXJhdGlvbjo6dGV4dERvY3VtZW50UGFyYW1ldGVycygKICAgICBQYXJhbWV0ZXJzIHBhcmFtZXRl
cnM7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgcGFyYW1ldGVycy53aWR0aCA9IHN0YXRpY19j
YXN0PGludD4od2tHZXRTY3JlZW5TaXplKCkud2lkdGgpOworICAgIHBhcmFtZXRlcnMud2lkdGgg
PSBzdGF0aWNfY2FzdDxpbnQ+KHNjcmVlblNpemUoKS53aWR0aCgpKTsKICNlbHNlCiAgICAgLy8g
RklYTUU6IHRoaXMgbmVlZHMgdG8gYmUgdW5pZmllZCB3aXRoIFZpZXdwb3J0QXJndW1lbnRzIG9u
IGFsbCBwb3J0cy4KICAgICBwYXJhbWV0ZXJzLndpZHRoID0gMzIwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9TZXR0aW5nc0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9jb2NvYS9TZXR0aW5nc0NvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2NzEzZmYzZTRhZGM1MGRl
NDNlZjgwM2E2NWY3ZGRiM2I2YTMxMjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2NvY29hL1NldHRpbmdzQ29jb2EubW0KQEAgLTAsMCArMSwxMzAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKworI2lmIFBM
QVRGT1JNKElPUykKKyNpbmNsdWRlICJEZXZpY2UuaCIKKyNpbmNsdWRlICJTb2Z0TGlua2luZy5o
IgorI2luY2x1ZGUgIlVJS2l0U1BJLmgiCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPUykKK1NP
RlRfTElOS19GUkFNRVdPUksoVUlLaXQpCitTT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJQXBwbGlj
YXRpb24pCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgaW5saW5lIGNv
bnN0IGNoYXIqIHNhbnNTZXJpZlRyYWRpdGlvbmFsSGFuRm9udEZhbWlseSgpCit7CisjaWYgKFBM
QVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMDAp
IHx8IFBMQVRGT1JNKElPUykKKyAgICByZXR1cm4gIlBpbmdGYW5nIFRDIjsKKyNlbHNlCisgICAg
cmV0dXJuICJIZWl0aSBUQyI7CisjZW5kaWYKK30KKworc3RhdGljIGlubGluZSBjb25zdCBjaGFy
KiBzYW5zU2VyaWZTaW1wbGlmaWVkSGFuRm9udEZhbWlseSgpCit7CisjaWYgKFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMDApIHx8IFBMQVRG
T1JNKElPUykKKyAgICByZXR1cm4gIlBpbmdGYW5nIFNDIjsKKyNlbHNlCisgICAgcmV0dXJuICJI
ZWl0aSBTQyI7CisjZW5kaWYKK30KKworI2lmIFBMQVRGT1JNKE1BQykKK3ZvaWQgU2V0dGluZ3M6
OmluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVzKCkKK3sKKyAgICBzZXRTdGFuZGFyZEZvbnRG
YW1pbHkoIlNvbmd0aSBUQyIsIFVTQ1JJUFRfVFJBRElUSU9OQUxfSEFOKTsKKyAgICBzZXRTZXJp
ZkZvbnRGYW1pbHkoIlNvbmd0aSBUQyIsIFVTQ1JJUFRfVFJBRElUSU9OQUxfSEFOKTsKKyAgICBz
ZXRGaXhlZEZvbnRGYW1pbHkoc2Fuc1NlcmlmVHJhZGl0aW9uYWxIYW5Gb250RmFtaWx5KCksIFVT
Q1JJUFRfVFJBRElUSU9OQUxfSEFOKTsKKyAgICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KHNhbnNT
ZXJpZlRyYWRpdGlvbmFsSGFuRm9udEZhbWlseSgpLCBVU0NSSVBUX1RSQURJVElPTkFMX0hBTik7
CisKKyAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlNvbmd0aSBTQyIsIFVTQ1JJUFRfU0lNUExJ
RklFRF9IQU4pOworICAgIHNldFNlcmlmRm9udEZhbWlseSgiU29uZ3RpIFNDIiwgVVNDUklQVF9T
SU1QTElGSUVEX0hBTik7CisgICAgc2V0Rml4ZWRGb250RmFtaWx5KHNhbnNTZXJpZlNpbXBsaWZp
ZWRIYW5Gb250RmFtaWx5KCksIFVTQ1JJUFRfU0lNUExJRklFRF9IQU4pOworICAgIHNldFNhbnNT
ZXJpZkZvbnRGYW1pbHkoc2Fuc1NlcmlmU2ltcGxpZmllZEhhbkZvbnRGYW1pbHkoKSwgVVNDUklQ
VF9TSU1QTElGSUVEX0hBTik7CisKKyAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkhpcmFnaW5v
IE1pbmNobyBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7CisgICAgc2V0Rml4
ZWRGb250RmFtaWx5KCJPc2FrYS1Nb25vIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7
CisgICAgc2V0U2VyaWZGb250RmFtaWx5KCJIaXJhZ2lubyBNaW5jaG8gUHJvTiIsIFVTQ1JJUFRf
S0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNldFNhbnNTZXJpZkZvbnRGYW1pbHkoIkhpcmFn
aW5vIEtha3UgR290aGljIFByb04iLCBVU0NSSVBUX0tBVEFLQU5BX09SX0hJUkFHQU5BKTsKKwor
ICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiQXBwbGVNeXVuZ2pvIiwgVVNDUklQVF9IQU5HVUwp
OworICAgIHNldFNlcmlmRm9udEZhbWlseSgiQXBwbGVNeXVuZ2pvIiwgVVNDUklQVF9IQU5HVUwp
OworICAgIHNldEZpeGVkRm9udEZhbWlseSgiQXBwbGUgU0QgR290aGljIE5lbyIsIFVTQ1JJUFRf
SEFOR1VMKTsKKyAgICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVv
IiwgVVNDUklQVF9IQU5HVUwpOworCisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIs
IFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRGaXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NS
SVBUX0NPTU1PTik7CisgICAgc2V0U2VyaWZGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09N
TU9OKTsKKyAgICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NP
TU1PTik7Cit9CisKKyNlbHNlCisKK3ZvaWQgU2V0dGluZ3M6OmluaXRpYWxpemVEZWZhdWx0Rm9u
dEZhbWlsaWVzKCkKK3sKKyAgICAvLyBUaGVyZSBpcyBubyBzZXJpZiBDaGluZXNlIGZvbnQgaW4g
ZGVmYXVsdCBpT1MgaW5zdGFsbGF0aW9uLgorICAgIHNldFN0YW5kYXJkRm9udEZhbWlseShzYW5z
U2VyaWZUcmFkaXRpb25hbEhhbkZvbnRGYW1pbHkoKSwgVVNDUklQVF9UUkFESVRJT05BTF9IQU4p
OworICAgIHNldFNlcmlmRm9udEZhbWlseShzYW5zU2VyaWZUcmFkaXRpb25hbEhhbkZvbnRGYW1p
bHkoKSwgVVNDUklQVF9UUkFESVRJT05BTF9IQU4pOworICAgIHNldEZpeGVkRm9udEZhbWlseShz
YW5zU2VyaWZUcmFkaXRpb25hbEhhbkZvbnRGYW1pbHkoKSwgVVNDUklQVF9UUkFESVRJT05BTF9I
QU4pOworICAgIHNldFNhbnNTZXJpZkZvbnRGYW1pbHkoc2Fuc1NlcmlmVHJhZGl0aW9uYWxIYW5G
b250RmFtaWx5KCksIFVTQ1JJUFRfVFJBRElUSU9OQUxfSEFOKTsKKworICAgIC8vIFRoZXJlIGlz
IG5vIHNlcmlmIENoaW5lc2UgZm9udCBpbiBkZWZhdWx0IGlPUyBpbnN0YWxsYXRpb24uCisgICAg
c2V0U3RhbmRhcmRGb250RmFtaWx5KHNhbnNTZXJpZlNpbXBsaWZpZWRIYW5Gb250RmFtaWx5KCks
IFVTQ1JJUFRfU0lNUExJRklFRF9IQU4pOworICAgIHNldFNlcmlmRm9udEZhbWlseShzYW5zU2Vy
aWZTaW1wbGlmaWVkSGFuRm9udEZhbWlseSgpLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOKTsKKyAg
ICBzZXRGaXhlZEZvbnRGYW1pbHkoc2Fuc1NlcmlmU2ltcGxpZmllZEhhbkZvbnRGYW1pbHkoKSwg
VVNDUklQVF9TSU1QTElGSUVEX0hBTik7CisgICAgc2V0U2Fuc1NlcmlmRm9udEZhbWlseShzYW5z
U2VyaWZTaW1wbGlmaWVkSGFuRm9udEZhbWlseSgpLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOKTsK
KworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdpbm8gTWluY2hvIFByb04iLCBVU0NS
SVBUX0tBVEFLQU5BX09SX0hJUkFHQU5BKTsKKyAgICBzZXRGaXhlZEZvbnRGYW1pbHkoIkhpcmFn
aW5vIEtha3UgR290aGljIFByb04iLCBVU0NSSVBUX0tBVEFLQU5BX09SX0hJUkFHQU5BKTsKKyAg
ICBzZXRTZXJpZkZvbnRGYW1pbHkoIkhpcmFnaW5vIE1pbmNobyBQcm9OIiwgVVNDUklQVF9LQVRB
S0FOQV9PUl9ISVJBR0FOQSk7CisgICAgc2V0U2Fuc1NlcmlmRm9udEZhbWlseSgiSGlyYWdpbm8g
S2FrdSBHb3RoaWMgUHJvTiIsIFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworCisgICAg
Ly8gVGhlcmUgaXMgbm8gc2VyaWYgS29yZWFuIGZvbnQgaW4gZGVmYXVsdCBpT1MgaW5zdGFsbGF0
aW9uLgorICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiQXBwbGUgU0QgR290aGljIE5lbyIsIFVT
Q1JJUFRfSEFOR1VMKTsKKyAgICBzZXRTZXJpZkZvbnRGYW1pbHkoIkFwcGxlIFNEIEdvdGhpYyBO
ZW8iLCBVU0NSSVBUX0hBTkdVTCk7CisgICAgc2V0Rml4ZWRGb250RmFtaWx5KCJBcHBsZSBTRCBH
b3RoaWMgTmVvIiwgVVNDUklQVF9IQU5HVUwpOworICAgIHNldFNhbnNTZXJpZkZvbnRGYW1pbHko
IkFwcGxlIFNEIEdvdGhpYyBOZW8iLCBVU0NSSVBUX0hBTkdVTCk7CisKKyAgICBzZXRTdGFuZGFy
ZEZvbnRGYW1pbHkoIlRpbWVzIiwgVVNDUklQVF9DT01NT04pOworICAgIHNldEZpeGVkRm9udEZh
bWlseSgiQ291cmllciIsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRTZXJpZkZvbnRGYW1pbHko
IlRpbWVzIiwgVVNDUklQVF9DT01NT04pOworICAgIHNldFNhbnNTZXJpZkZvbnRGYW1pbHkoIkhl
bHZldGljYSIsIFVTQ1JJUFRfQ09NTU9OKTsKK30KKyAgICAKK2Zsb2F0IFNldHRpbmdzOjpkZWZh
dWx0TWluaW11bVpvb21Gb250U2l6ZSgpCit7CisgICAgaWYgKGRldmljZUhhc0lQYWRDYXBhYmls
aXR5KCkgJiYgIVtbZ2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkgc2hhcmVkQXBwbGljYXRpb25dIF9p
c0NsYXNzaWNdKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gMTU7Cit9CisjZW5kaWYK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9pb3MvVXNlckFnZW50SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvVXNlckFnZW50
SU9TLm1tCmluZGV4IDY4ZmJkZjJhNzIzNGM4MTM2YmI1Zjk0NzA5OTc5OGIxY2YzYTBkZmEuLjc2
ZDM0NDJkODE1OGUwODJmZmQ2NThhNTViYWZiOWJmMWU2ZGViOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvaW9zL1VzZXJBZ2VudElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2lvcy9Vc2VyQWdlbnRJT1MubW0KQEAgLTI2LDE2ICsyNiw0NyBAQAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJVc2VyQWdlbnQuaCIKIAorI2ltcG9ydCAiRGV2aWNlLmgiCisjaW1w
b3J0ICJNb2JpbGVHZXN0YWx0U1BJLmgiCisjaW1wb3J0ICJTb2Z0TGlua2luZy5oIgogI2ltcG9y
dCAiU3lzdGVtVmVyc2lvbi5oIgorI2ltcG9ydCAiVUlLaXRTUEkuaCIKICNpbXBvcnQgIldlYkNv
cmVTeXN0ZW1JbnRlcmZhY2UuaCIKKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworU09GVF9M
SU5LX0ZSQU1FV09SSyhVSUtpdCk7CitTT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJQXBwbGljYXRp
b24pOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudFdp
dGhBcHBsaWNhdGlvbk5hbWUoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0
cmluZyYgZnVsbFdlYktpdFZlcnNpb25TdHJpbmcpCitzdGF0aWMgaW5saW5lIGJvb2wgaXNDbGFz
c2ljKCkKK3sKKyAgICByZXR1cm4gW1tnZXRVSUFwcGxpY2F0aW9uQ2xhc3MoKSBzaGFyZWRBcHBs
aWNhdGlvbl0gX2lzQ2xhc3NpY107Cit9CisKK3N0YXRpYyBpbmxpbmUgTlNTdHJpbmcgKm9zTmFt
ZUZvclVzZXJBZ2VudCgpCiB7Ci0gICAgaWYgKENGU3RyaW5nUmVmIG92ZXJyaWRlVXNlckFnZW50
ID0gd2tHZXRVc2VyQWdlbnQoKSkKLSAgICAgICAgcmV0dXJuIG92ZXJyaWRlVXNlckFnZW50Owor
ICAgIGlmIChkZXZpY2VIYXNJUGFkQ2FwYWJpbGl0eSgpICYmICFpc0NsYXNzaWMoKSkKKyAgICAg
ICAgcmV0dXJuIEAiT1MiOworICAgIHJldHVybiBAImlQaG9uZSBPUyI7Cit9CiAKK3N0YXRpYyBp
bmxpbmUgTlNTdHJpbmcgKmRldmljZU5hbWVGb3JVc2VyQWdlbnQoKQoreworICAgIGlmIChpc0Ns
YXNzaWMoKSkKKyAgICAgICAgcmV0dXJuIEAiaVBob25lIjsKKyAgICAKKyAgICBhdXRvIG5hbWUg
PSByZXRhaW5QdHIoKE5TU3RyaW5nICopZGV2aWNlTmFtZSgpKTsKKyNpZiBQTEFURk9STShJT1Nf
U0lNVUxBVE9SKQorICAgIE5TVUludGVnZXIgbG9jYXRpb24gPSBbbmFtZSByYW5nZU9mU3RyaW5n
OkAiIFNpbXVsYXRvciIgb3B0aW9uczpOU0JhY2t3YXJkc1NlYXJjaF0ubG9jYXRpb247CisgICAg
aWYgKGxvY2F0aW9uICE9IE5TTm90Rm91bmQgJiYgbG9jYXRpb24gPiAwKQorICAgICAgICByZXR1
cm4gW25hbWUgc3Vic3RyaW5nVG9JbmRleDpsb2NhdGlvbl07CisjZW5kaWYKKyAgICByZXR1cm4g
bmFtZS5hdXRvcmVsZWFzZSgpOworfQorCitTdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBw
bGljYXRpb25OYW1lKGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25OYW1lLCBjb25zdCBTdHJpbmcm
IGZ1bGxXZWJLaXRWZXJzaW9uU3RyaW5nKQorewogICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGVy
ZSBpcyBhIHVzZXIgYWdlbnQgb3ZlcnJpZGUgZm9yIGFsbCBXZWJLaXQgY2xpZW50cy4KICAgICBD
RlByb3BlcnR5TGlzdFJlZiBvdmVycmlkZSA9IENGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUoQ0ZT
VFIoIlVzZXJBZ2VudCIpLCBDRlNUUigiY29tLmFwcGxlLldlYkZvdW5kYXRpb24iKSk7CiAgICAg
aWYgKG92ZXJyaWRlKSB7CkBAIC00NCwxMyArNzUsMTIgQEAgU3RyaW5nIHN0YW5kYXJkVXNlckFn
ZW50V2l0aEFwcGxpY2F0aW9uTmFtZShjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uTmFtZSwgY29u
c3QKICAgICAgICAgQ0ZSZWxlYXNlKG92ZXJyaWRlKTsKICAgICB9CiAKKyAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGltcGxlbWVudCB0aGlzIHdpdGggU3RyaW5nIGFuZC9vciBTdHJpbmdCdWlsZGVy
IGluc3RlYWQuCiAgICAgTlNTdHJpbmcgKndlYktpdFZlcnNpb24gPSB1c2VyQWdlbnRCdW5kbGVW
ZXJzaW9uRnJvbUZ1bGxWZXJzaW9uU3RyaW5nKGZ1bGxXZWJLaXRWZXJzaW9uU3RyaW5nKTsKLSAg
ICBDRlN0cmluZ1JlZiBkZXZpY2VOYW1lID0gd2tHZXREZXZpY2VOYW1lKCk7Ci0gICAgQ0ZTdHJp
bmdSZWYgb3NOYW1lRm9yVXNlckFnZW50ID0gd2tHZXRPU05hbWVGb3JVc2VyQWdlbnQoKTsKICAg
ICBOU1N0cmluZyAqb3NNYXJrZXRpbmdWZXJzaW9uU3RyaW5nID0gc3lzdGVtTWFya2V0aW5nVmVy
c2lvbkZvclVzZXJBZ2VudFN0cmluZygpOwogICAgIGlmIChhcHBsaWNhdGlvbk5hbWUuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJNb3ppbGxh
LzUuMCAoJUA7IENQVSAlQCAlQCBsaWtlIE1hYyBPUyBYKSBBcHBsZVdlYktpdC8lQCAoS0hUTUws
IGxpa2UgR2Vja28pIiwgZGV2aWNlTmFtZSwgb3NOYW1lRm9yVXNlckFnZW50LCBvc01hcmtldGlu
Z1ZlcnNpb25TdHJpbmcsIHdlYktpdFZlcnNpb25dOwotICAgIHJldHVybiBbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAIk1vemlsbGEvNS4wICglQDsgQ1BVICVAICVAIGxpa2UgTWFjIE9TIFgp
IEFwcGxlV2ViS2l0LyVAIChLSFRNTCwgbGlrZSBHZWNrbykgJUAiLCBkZXZpY2VOYW1lLCBvc05h
bWVGb3JVc2VyQWdlbnQsIG9zTWFya2V0aW5nVmVyc2lvblN0cmluZywgd2ViS2l0VmVyc2lvbiwg
c3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4oYXBwbGljYXRpb25OYW1lKV07CisgICAgICAgIHJldHVy
biBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIk1vemlsbGEvNS4wICglQDsgQ1BVICVAICVA
IGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LyVAIChLSFRNTCwgbGlrZSBHZWNrbykiLCBkZXZp
Y2VOYW1lRm9yVXNlckFnZW50KCksIG9zTmFtZUZvclVzZXJBZ2VudCgpLCBvc01hcmtldGluZ1Zl
cnNpb25TdHJpbmcsIHdlYktpdFZlcnNpb25dOworICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAIk1vemlsbGEvNS4wICglQDsgQ1BVICVAICVAIGxpa2UgTWFjIE9TIFgpIEFw
cGxlV2ViS2l0LyVAIChLSFRNTCwgbGlrZSBHZWNrbykgJUAiLCBkZXZpY2VOYW1lRm9yVXNlckFn
ZW50KCksIG9zTmFtZUZvclVzZXJBZ2VudCgpLCBvc01hcmtldGluZ1ZlcnNpb25TdHJpbmcsIHdl
YktpdFZlcnNpb24sIHN0YXRpY19jYXN0PE5TU3RyaW5nICo+KGFwcGxpY2F0aW9uTmFtZSldOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvU2V0dGluZ3NNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXR0aW5n
c01hYy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWUwNjEzMmMwZWQ4NTQ2ODE3
ZWQ1MzllZGNkZmIwZWYyMTExMTU2NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXR0aW5nc01hYy5tbQorKysg
L2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIlNldHRpbmdzLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3Rh
dGljIGlubGluZSBjb25zdCBjaGFyKiBzYW5zU2VyaWZUcmFkaXRpb25hbEhhbkZvbnRGYW1pbHko
KQotewotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTAxMDAwKSB8fCBQTEFURk9STShJT1MpCi0gICAgcmV0dXJuICJQaW5nRmFuZyBUQyI7
Ci0jZWxzZQotICAgIHJldHVybiAiSGVpdGkgVEMiOwotI2VuZGlmCi19Ci0KLXN0YXRpYyBpbmxp
bmUgY29uc3QgY2hhciogc2Fuc1NlcmlmU2ltcGxpZmllZEhhbkZvbnRGYW1pbHkoKQotewotI2lm
IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAx
MDAwKSB8fCBQTEFURk9STShJT1MpCi0gICAgcmV0dXJuICJQaW5nRmFuZyBTQyI7Ci0jZWxzZQot
ICAgIHJldHVybiAiSGVpdGkgU0MiOwotI2VuZGlmCi19Ci0KLSNpZiBQTEFURk9STShNQUMpCi12
b2lkIFNldHRpbmdzOjppbml0aWFsaXplRGVmYXVsdEZvbnRGYW1pbGllcygpCi17Ci0gICAgc2V0
U3RhbmRhcmRGb250RmFtaWx5KCJTb25ndGkgVEMiLCBVU0NSSVBUX1RSQURJVElPTkFMX0hBTik7
Ci0gICAgc2V0U2VyaWZGb250RmFtaWx5KCJTb25ndGkgVEMiLCBVU0NSSVBUX1RSQURJVElPTkFM
X0hBTik7Ci0gICAgc2V0Rml4ZWRGb250RmFtaWx5KHNhbnNTZXJpZlRyYWRpdGlvbmFsSGFuRm9u
dEZhbWlseSgpLCBVU0NSSVBUX1RSQURJVElPTkFMX0hBTik7Ci0gICAgc2V0U2Fuc1NlcmlmRm9u
dEZhbWlseShzYW5zU2VyaWZUcmFkaXRpb25hbEhhbkZvbnRGYW1pbHkoKSwgVVNDUklQVF9UUkFE
SVRJT05BTF9IQU4pOwotCi0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJTb25ndGkgU0MiLCBV
U0NSSVBUX1NJTVBMSUZJRURfSEFOKTsKLSAgICBzZXRTZXJpZkZvbnRGYW1pbHkoIlNvbmd0aSBT
QyIsIFVTQ1JJUFRfU0lNUExJRklFRF9IQU4pOwotICAgIHNldEZpeGVkRm9udEZhbWlseShzYW5z
U2VyaWZTaW1wbGlmaWVkSGFuRm9udEZhbWlseSgpLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOKTsK
LSAgICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KHNhbnNTZXJpZlNpbXBsaWZpZWRIYW5Gb250RmFt
aWx5KCksIFVTQ1JJUFRfU0lNUExJRklFRF9IQU4pOwotCi0gICAgc2V0U3RhbmRhcmRGb250RmFt
aWx5KCJIaXJhZ2lubyBNaW5jaG8gUHJvTiIsIFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEp
OwotICAgIHNldEZpeGVkRm9udEZhbWlseSgiT3Nha2EtTW9ubyIsIFVTQ1JJUFRfS0FUQUtBTkFf
T1JfSElSQUdBTkEpOwotICAgIHNldFNlcmlmRm9udEZhbWlseSgiSGlyYWdpbm8gTWluY2hvIFBy
b04iLCBVU0NSSVBUX0tBVEFLQU5BX09SX0hJUkFHQU5BKTsKLSAgICBzZXRTYW5zU2VyaWZGb250
RmFtaWx5KCJIaXJhZ2lubyBLYWt1IEdvdGhpYyBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9I
SVJBR0FOQSk7Ci0KLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkFwcGxlTXl1bmdqbyIsIFVT
Q1JJUFRfSEFOR1VMKTsKLSAgICBzZXRTZXJpZkZvbnRGYW1pbHkoIkFwcGxlTXl1bmdqbyIsIFVT
Q1JJUFRfSEFOR1VMKTsKLSAgICBzZXRGaXhlZEZvbnRGYW1pbHkoIkFwcGxlIFNEIEdvdGhpYyBO
ZW8iLCBVU0NSSVBUX0hBTkdVTCk7Ci0gICAgc2V0U2Fuc1NlcmlmRm9udEZhbWlseSgiQXBwbGUg
U0QgR290aGljIE5lbyIsIFVTQ1JJUFRfSEFOR1VMKTsKLQotICAgIHNldFN0YW5kYXJkRm9udEZh
bWlseSgiVGltZXMiLCBVU0NSSVBUX0NPTU1PTik7Ci0gICAgc2V0Rml4ZWRGb250RmFtaWx5KCJD
b3VyaWVyIiwgVVNDUklQVF9DT01NT04pOwotICAgIHNldFNlcmlmRm9udEZhbWlseSgiVGltZXMi
LCBVU0NSSVBUX0NPTU1PTik7Ci0gICAgc2V0U2Fuc1NlcmlmRm9udEZhbWlseSgiSGVsdmV0aWNh
IiwgVVNDUklQVF9DT01NT04pOwotfQotCi0jZWxzZQotCi12b2lkIFNldHRpbmdzOjppbml0aWFs
aXplRGVmYXVsdEZvbnRGYW1pbGllcygpCi17Ci0gICAgLy8gVGhlcmUgaXMgbm8gc2VyaWYgQ2hp
bmVzZSBmb250IGluIGRlZmF1bHQgaU9TIGluc3RhbGxhdGlvbi4KLSAgICBzZXRTdGFuZGFyZEZv
bnRGYW1pbHkoc2Fuc1NlcmlmVHJhZGl0aW9uYWxIYW5Gb250RmFtaWx5KCksIFVTQ1JJUFRfVFJB
RElUSU9OQUxfSEFOKTsKLSAgICBzZXRTZXJpZkZvbnRGYW1pbHkoc2Fuc1NlcmlmVHJhZGl0aW9u
YWxIYW5Gb250RmFtaWx5KCksIFVTQ1JJUFRfVFJBRElUSU9OQUxfSEFOKTsKLSAgICBzZXRGaXhl
ZEZvbnRGYW1pbHkoc2Fuc1NlcmlmVHJhZGl0aW9uYWxIYW5Gb250RmFtaWx5KCksIFVTQ1JJUFRf
VFJBRElUSU9OQUxfSEFOKTsKLSAgICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KHNhbnNTZXJpZlRy
YWRpdGlvbmFsSGFuRm9udEZhbWlseSgpLCBVU0NSSVBUX1RSQURJVElPTkFMX0hBTik7Ci0KLSAg
ICAvLyBUaGVyZSBpcyBubyBzZXJpZiBDaGluZXNlIGZvbnQgaW4gZGVmYXVsdCBpT1MgaW5zdGFs
bGF0aW9uLgotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseShzYW5zU2VyaWZTaW1wbGlmaWVkSGFu
Rm9udEZhbWlseSgpLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOKTsKLSAgICBzZXRTZXJpZkZvbnRG
YW1pbHkoc2Fuc1NlcmlmU2ltcGxpZmllZEhhbkZvbnRGYW1pbHkoKSwgVVNDUklQVF9TSU1QTElG
SUVEX0hBTik7Ci0gICAgc2V0Rml4ZWRGb250RmFtaWx5KHNhbnNTZXJpZlNpbXBsaWZpZWRIYW5G
b250RmFtaWx5KCksIFVTQ1JJUFRfU0lNUExJRklFRF9IQU4pOwotICAgIHNldFNhbnNTZXJpZkZv
bnRGYW1pbHkoc2Fuc1NlcmlmU2ltcGxpZmllZEhhbkZvbnRGYW1pbHkoKSwgVVNDUklQVF9TSU1Q
TElGSUVEX0hBTik7Ci0KLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkhpcmFnaW5vIE1pbmNo
byBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7Ci0gICAgc2V0Rml4ZWRGb250
RmFtaWx5KCJIaXJhZ2lubyBLYWt1IEdvdGhpYyBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9I
SVJBR0FOQSk7Ci0gICAgc2V0U2VyaWZGb250RmFtaWx5KCJIaXJhZ2lubyBNaW5jaG8gUHJvTiIs
IFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOwotICAgIHNldFNhbnNTZXJpZkZvbnRGYW1p
bHkoIkhpcmFnaW5vIEtha3UgR290aGljIFByb04iLCBVU0NSSVBUX0tBVEFLQU5BX09SX0hJUkFH
QU5BKTsKLQotICAgIC8vIFRoZXJlIGlzIG5vIHNlcmlmIEtvcmVhbiBmb250IGluIGRlZmF1bHQg
aU9TIGluc3RhbGxhdGlvbi4KLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkFwcGxlIFNEIEdv
dGhpYyBOZW8iLCBVU0NSSVBUX0hBTkdVTCk7Ci0gICAgc2V0U2VyaWZGb250RmFtaWx5KCJBcHBs
ZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQVF9IQU5HVUwpOwotICAgIHNldEZpeGVkRm9udEZhbWls
eSgiQXBwbGUgU0QgR290aGljIE5lbyIsIFVTQ1JJUFRfSEFOR1VMKTsKLSAgICBzZXRTYW5zU2Vy
aWZGb250RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQVF9IQU5HVUwpOwotCi0g
ICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBz
ZXRGaXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1PTik7Ci0gICAgc2V0U2Vy
aWZGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRTYW5zU2VyaWZG
b250RmFtaWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7Ci19Ci0jZW5kaWYKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1TY3JlZW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2NyZWVu
LmgKaW5kZXggZTRjYWUxMGZkOWIxOTQ3NTMwYzE5YmI5ZGQwMmU4YzNlYTFhOWRjYy4uNTI3OTAw
YjhhZjFiZDczMjc2NTQ3MThkYjFhMTc2NjE2NzRmNzMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TY3JlZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oCkBAIC00MCw2ICs0MCwxMCBAQCB0eXBlZGVmIHN0cnVjdCBf
TlNQb2ludCBOU1BvaW50OwogI2VuZGlmCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPUykKK09C
SkNfQ0xBU1MgVUlTY3JlZW47CisjZW5kaWYKKwogdHlwZWRlZiB1aW50MzJfdCBQbGF0Zm9ybURp
c3BsYXlJRDsKIAogdHlwZWRlZiBXVEY6OlZlY3RvcjxjaGFyPiBDb2xvclByb2ZpbGU7CkBAIC00
Nyw2ICs1MSw3IEBAIHR5cGVkZWYgV1RGOjpWZWN0b3I8Y2hhcj4gQ29sb3JQcm9maWxlOwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgRmxvYXRSZWN0OworICAgIGNsYXNzIEZsb2F0
U2l6ZTsKICAgICBjbGFzcyBXaWRnZXQ7CiAKICAgICBpbnQgc2NyZWVuRGVwdGgoV2lkZ2V0Kik7
CkBAIC02OSw2ICs3NCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIFBMQVRGT1JNKElP
UykKICAgICBmbG9hdCBzY3JlZW5QUElGYWN0b3IoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBGbG9h
dFNpemUgc2NyZWVuU2l6ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0U2l6ZSBhdmFpbGFi
bGVTY3JlZW5TaXplKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgc2NyZWVuU2NhbGVGYWN0
b3IoVUlTY3JlZW4gKiA9IG5pbCk7CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RldmljZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRGV2aWNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNDFkMGMwYjM3
N2EyOGUwNmIwZTQ3ZmRlNWQ5ZWRmMzNhZjg5MzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RldmljZS5jcHAKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEZXZpY2UuaCIKKworI2lmIFBM
QVRGT1JNKElPUykKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitNR0RldmljZUNsYXNzIGRldmljZUNsYXNzKCkKK3sKKyAgICBpbnQgZGV2aWNl
Q2xhc3MgPSBNR0dldFNJbnQzMkFuc3dlcihrTUdRRGV2aWNlQ2xhc3NOdW1iZXIsIE1HRGV2aWNl
Q2xhc3NJbnZhbGlkKTsKKyAgICBzd2l0Y2ggKGRldmljZUNsYXNzKSB7CisgICAgY2FzZSBNR0Rl
dmljZUNsYXNzSW52YWxpZDoKKyAgICBjYXNlIE1HRGV2aWNlQ2xhc3NpUGhvbmU6CisgICAgY2Fz
ZSBNR0RldmljZUNsYXNzaVBvZDoKKyAgICBjYXNlIE1HRGV2aWNlQ2xhc3NpUGFkOgorICAgIGNh
c2UgTUdEZXZpY2VDbGFzc0FwcGxlVFY6CisgICAgY2FzZSBNR0RldmljZUNsYXNzV2F0Y2g6Cisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxNR0RldmljZUNsYXNzPihkZXZpY2VDbGFzcyk7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVy
biBNR0RldmljZUNsYXNzSW52YWxpZDsKKyAgICB9Cit9CisKK0NGU3RyaW5nUmVmIGRldmljZU5h
bWUoKQoreworICAgIGF1dG8gZGV2aWNlTmFtZSA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZTdHJp
bmdSZWY+KE1HQ29weUFuc3dlcihrTUdRRGV2aWNlTmFtZSwgbnVsbHB0cikpKTsKKyAgICBBU1NF
UlQoIWRldmljZU5hbWUgfHwgQ0ZHZXRUeXBlSUQoZGV2aWNlTmFtZS5nZXQoKSkgPT0gQ0ZTdHJp
bmdHZXRUeXBlSUQoKSk7CisgICAgcmV0dXJuIGRldmljZU5hbWUuYXV0b3JlbGVhc2UoKTsKK30K
KworYm9vbCBkZXZpY2VIYXNJUGFkQ2FwYWJpbGl0eSgpCit7CisgICAgcmV0dXJuIE1HR2V0Qm9v
bEFuc3dlcihrTUdRaVBhZENhcGFiaWxpdHkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvRGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRGV2aWNl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjMwNzZhNTg2NTE2NmU0MDc4MDMxMTQ1YTUxZGZkMjQyMjExZWVlOAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EZXZpY2UuaApA
QCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBEZXZpY2VfaAorI2RlZmluZSBE
ZXZpY2VfaAorCisjaWYgUExBVEZPUk0oSU9TKQorCisjaW5jbHVkZSAiTW9iaWxlR2VzdGFsdFNQ
SS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dFQkNPUkVfRVhQT1JUIE1HRGV2aWNlQ2xh
c3MgZGV2aWNlQ2xhc3MoKTsKK0NGU3RyaW5nUmVmIGRldmljZU5hbWUoKTsKKworLy8gRklYTUU6
IElzbid0IHRoaXMgdGhlIHNhbWUgYXMgZGV2aWNlQ2xhc3MoKSA9PSBNR0RldmljZUNsYXNzaVBh
ZD8KK2Jvb2wgZGV2aWNlSGFzSVBhZENhcGFiaWxpdHkoKTsKKworfQorCisjZW5kaWYgLy8gUExB
VEZPUk0oSU9TKQorCisjZW5kaWYgLy8gRGV2aWNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNjcmVlbklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QbGF0Zm9ybVNjcmVlbklPUy5tbQppbmRleCBhMjA4ZmU5ZTY5NjA0MmJiOGQ3
M2MxNWM2MmYyZjZmODUzZTc4MTNlLi41YzlhOTVkODM0Yzk5MDA2ODNhMzBmNjZiZTgwMjM4YmQ5
ZDI5ZTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1T
Y3JlZW5JT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtU2Ny
ZWVuSU9TLm1tCkBAIC0yNiwxNyArMjYsMjIgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9y
dCAiUGxhdGZvcm1TY3JlZW4uaCIKIAorI2ltcG9ydCAiRGV2aWNlLmgiCiAjaW1wb3J0ICJGbG9h
dFJlY3QuaCIKKyNpbXBvcnQgIkZsb2F0U2l6ZS5oIgogI2ltcG9ydCAiRnJhbWVWaWV3LmgiCiAj
aW1wb3J0ICJIb3N0V2luZG93LmgiCiAjaW1wb3J0ICJJbnRSZWN0LmgiCiAjaW1wb3J0ICJNb2Jp
bGVHZXN0YWx0U1BJLmgiCiAjaW1wb3J0ICJTb2Z0TGlua2luZy5oIgorI2ltcG9ydCAiVUlLaXRT
UEkuaCIKICNpbXBvcnQgIldBS1dpbmRvdy5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVy
ZmFjZS5oIgogI2ltcG9ydCAiV2lkZ2V0LmgiCiAKIFNPRlRfTElOS19GUkFNRVdPUksoVUlLaXQp
CitTT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJQXBwbGljYXRpb24pCitTT0ZUX0xJTktfQ0xBU1Mo
VUlLaXQsIFVJU2NyZWVuKQogU09GVF9MSU5LKFVJS2l0LCBVSUFjY2Vzc2liaWxpdHlJc0dyYXlz
Y2FsZUVuYWJsZWQsIGJvb2wsICh2b2lkKSwgKCkpCiBTT0ZUX0xJTksoVUlLaXQsIFVJQWNjZXNz
aWJpbGl0eUlzSW52ZXJ0Q29sb3JzRW5hYmxlZCwgYm9vbCwgKHZvaWQpLCAoKSkKIApAQCAtOTgs
MjUgKzEwMywxNCBAQCBGbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxlUmVjdChXaWRnZXQqIHdpZGdl
dCkKICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCB3
aWRnZXQtPnJvb3QoKS0+aG9zdFdpbmRvdygpLT5hdmFpbGFibGVTY3JlZW5TaXplKCkpKTsKIH0K
IAotc3RhdGljIGZsb2F0IG1vYmlsZUdlc3RhbHRGbG9hdFZhbHVlKENGU3RyaW5nUmVmIHF1ZXN0
aW9uKQotewotICAgIGZsb2F0IHJlc3VsdCA9IDA7Ci0gICAgaWYgKENGVHlwZVJlZiB2YWx1ZSA9
IE1HQ29weUFuc3dlcihxdWVzdGlvbiwgMCkpIHsKLSAgICAgICAgaWYgKENGR2V0VHlwZUlEKHZh
bHVlKSA9PSBDRk51bWJlckdldFR5cGVJRCgpKQotICAgICAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1
ZShzdGF0aWNfY2FzdDxDRk51bWJlclJlZj4odmFsdWUpLCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZy
ZXN1bHQpOwotICAgICAgICBDRlJlbGVhc2UodmFsdWUpOwotICAgIH0KLSAgICByZXR1cm4gcmVz
dWx0OwotfQotCiBmbG9hdCBzY3JlZW5QUElGYWN0b3IoKQogewogICAgIHN0YXRpYyBmbG9hdCBw
cGlGYWN0b3I7CiAKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKICAgICBk
aXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIGZsb2F0IHBpdGNoID0gbW9iaWxl
R2VzdGFsdEZsb2F0VmFsdWUoa01HUU1haW5TY3JlZW5QaXRjaCk7Ci0gICAgICAgIGZsb2F0IHNj
YWxlID0gbW9iaWxlR2VzdGFsdEZsb2F0VmFsdWUoa01HUU1haW5TY3JlZW5TY2FsZSk7CisgICAg
ICAgIGludCBwaXRjaCA9IE1HR2V0U0ludDMyQW5zd2VyKGtNR1FNYWluU2NyZWVuUGl0Y2gsIDAp
OworICAgICAgICBmbG9hdCBzY2FsZSA9IE1HR2V0RmxvYXQzMkFuc3dlcihrTUdRTWFpblNjcmVl
blNjYWxlLCAwKTsKIAogICAgICAgICBzdGF0aWMgY29uc3QgZmxvYXQgb3JpZ2luYWxJUGhvbmVQ
UEkgPSAxNjM7CiAgICAgICAgIGZsb2F0IG1haW5TY3JlZW5QUEkgPSAocGl0Y2ggJiYgc2NhbGUp
ID8gcGl0Y2ggLyBzY2FsZSA6IG9yaWdpbmFsSVBob25lUFBJOwpAQCAtMTI2LDQgKzEyMCwzMyBA
QCBmbG9hdCBzY3JlZW5QUElGYWN0b3IoKQogICAgIHJldHVybiBwcGlGYWN0b3I7CiB9CiAKK0Zs
b2F0U2l6ZSBzY3JlZW5TaXplKCkKK3sKKyAgICBpZiAoZGV2aWNlSGFzSVBhZENhcGFiaWxpdHko
KSAmJiBbW2dldFVJQXBwbGljYXRpb25DbGFzcygpIHNoYXJlZEFwcGxpY2F0aW9uXSBfaXNDbGFz
c2ljXSkKKyAgICAgICAgcmV0dXJuIHsgMzIwLCA0ODAgfTsKKyAgICByZXR1cm4gRmxvYXRTaXpl
KFtbZ2V0VUlTY3JlZW5DbGFzcygpIG1haW5TY3JlZW5dIF9yZWZlcmVuY2VCb3VuZHNdLnNpemUp
OworfQorCitGbG9hdFNpemUgYXZhaWxhYmxlU2NyZWVuU2l6ZSgpCit7CisgICAgaWYgKGRldmlj
ZUhhc0lQYWRDYXBhYmlsaXR5KCkgJiYgW1tnZXRVSUFwcGxpY2F0aW9uQ2xhc3MoKSBzaGFyZWRB
cHBsaWNhdGlvbl0gX2lzQ2xhc3NpY10pCisgICAgICAgIHJldHVybiB7IDMyMCwgNDgwIH07Cisg
ICAgcmV0dXJuIEZsb2F0U2l6ZShbZ2V0VUlTY3JlZW5DbGFzcygpIG1haW5TY3JlZW5dLmJvdW5k
cy5zaXplKTsKK30KKworZmxvYXQgc2NyZWVuU2NhbGVGYWN0b3IoVUlTY3JlZW4gKnNjcmVlbikK
K3sKKyAgICBpZiAoIXNjcmVlbikKKyAgICAgICAgc2NyZWVuID0gW2dldFVJU2NyZWVuQ2xhc3Mo
KSBtYWluU2NyZWVuXTsKKworICAgIENHRmxvYXQgc2NhbGUgPSBzY3JlZW4uc2NhbGU7CisKKyAg
ICAvLyBXZSBjYW4gcmVtb3ZlIHRoaXMgY2xhbXBpbmcgb25jZSA8cmRhcjovL3Byb2JsZW0vMTYz
OTU0NzU+IGlzIGZpeGVkLgorICAgIGNvbnN0IENHRmxvYXQgbWF4aW11bUNsYXNzaWNTY3JlZW5T
Y2FsZUZhY3RvciA9IDI7CisgICAgaWYgKFtbZ2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkgc2hhcmVk
QXBwbGljYXRpb25dIF9pc0NsYXNzaWNdKQorICAgICAgICByZXR1cm4gc3RkOjptaW4oc2NhbGUs
IG1heGltdW1DbGFzc2ljU2NyZWVuU2NhbGVGYWN0b3IpOworCisgICAgcmV0dXJuIHNjYWxlOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggOThmMDExYWRiNTliMjUxZDg3NTQ0NDIzZTU4YjdlNDFmMjk5YjAwOC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5oCisrKyAvZGV2L251
bGwKQEAgLTEsNzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAot
ICovCi0KLSNpZm5kZWYgV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPU19oCi0jZGVmaW5lIFdlYkNv
cmVTeXN0ZW1JbnRlcmZhY2VJT1NfaAotCi0jaW5jbHVkZSA8QXZhaWxhYmlsaXR5Lmg+Ci0KLXR5
cGVkZWYgZW51bSB7Ci0gICAgd2tJT1NTeXN0ZW1WZXJzaW9uXzNfMCA9IF9fSVBIT05FXzNfMCwK
LSAgICB3a0lPU1N5c3RlbVZlcnNpb25fNF8yID0gX19JUEhPTkVfNF8yLAotICAgIHdrSU9TU3lz
dGVtVmVyc2lvbl81XzAgPSBfX0lQSE9ORV81XzAsCi0gICAgd2tJT1NTeXN0ZW1WZXJzaW9uXzZf
MCA9IF9fSVBIT05FXzZfMCwKLSAgICB3a0lPU1N5c3RlbVZlcnNpb25fOV8wID0gX19JUEhPTkVf
OV8wLAotfSB3a0lPU1N5c3RlbVZlcnNpb247Ci0KLWJvb2wgaW9zRXhlY3V0YWJsZVdhc0xpbmtl
ZE9uT3JBZnRlclZlcnNpb24od2tJT1NTeXN0ZW1WZXJzaW9uKTsKLQotZXh0ZXJuIGJvb2wgKCp3
a0V4ZWN1dGFibGVXYXNMaW5rZWRPbk9yQWZ0ZXJJT1NWZXJzaW9uKShpbnQpOwotCi1leHRlcm4g
Ym9vbCAoKndrSXNHQjE4MDMwQ29tcGxpYW5jZVJlcXVpcmVkKSh2b2lkKTsKLQotaW5saW5lIGJv
b2wgaW9zRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JBZnRlclZlcnNpb24od2tJT1NTeXN0ZW1WZXJz
aW9uIHZlcnNpb24pCi17Ci0gICAgcmV0dXJuIHdrRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JBZnRl
cklPU1ZlcnNpb24odmVyc2lvbik7Ci19Ci0KLXR5cGVkZWYgZW51bSB7Ci0gICAgd2tEZXZpY2VD
bGFzc0ludmFsaWQgPSAtMSwKLSAgICB3a0RldmljZUNsYXNzaVBhZCwKLSAgICB3a0RldmljZUNs
YXNzaVBob25lLAotICAgIHdrRGV2aWNlQ2xhc3NpUG9kLAotfSB3a0RldmljZUNsYXNzOwotZXh0
ZXJuIGludCAoKndrR2V0RGV2aWNlQ2xhc3MpKHZvaWQpOwotaW5saW5lIHdrRGV2aWNlQ2xhc3Mg
aW9zRGV2aWNlQ2xhc3Modm9pZCkKLXsKLSAgICBpbnQgZGV2aWNlQ2xhc3MgPSB3a0dldERldmlj
ZUNsYXNzKCk7Ci0gICAgc3dpdGNoIChkZXZpY2VDbGFzcykgewotICAgIGNhc2Ugd2tEZXZpY2VD
bGFzc0ludmFsaWQ6Ci0gICAgY2FzZSB3a0RldmljZUNsYXNzaVBhZDoKLSAgICBjYXNlIHdrRGV2
aWNlQ2xhc3NpUGhvbmU6Ci0gICAgY2FzZSB3a0RldmljZUNsYXNzaVBvZDoKLSAgICAgICAgcmV0
dXJuICh3a0RldmljZUNsYXNzKWRldmljZUNsYXNzOwotICAgIH0KLSAgICBhc3NlcnQoZmFsc2Up
OwotICAgIHJldHVybiB3a0RldmljZUNsYXNzSW52YWxpZDsKLX0KLQotZXh0ZXJuIENGU3RyaW5n
UmVmICgqd2tHZXRVc2VyQWdlbnQpKHZvaWQpOwotZXh0ZXJuIENGU3RyaW5nUmVmICgqd2tHZXRE
ZXZpY2VOYW1lKSh2b2lkKTsKLWV4dGVybiBDRlN0cmluZ1JlZiAoKndrR2V0T1NOYW1lRm9yVXNl
ckFnZW50KSh2b2lkKTsKLWV4dGVybiBDRlN0cmluZ1JlZiAoKndrR2V0UGxhdGZvcm1OYW1lRm9y
TmF2aWdhdG9yKSh2b2lkKTsKLWV4dGVybiBDRlN0cmluZ1JlZiAoKndrR2V0VmVuZG9yTmFtZUZv
ck5hdmlnYXRvcikodm9pZCk7Ci0KLWV4dGVybiBib29sICgqd2tJc09wdGltaXplZEZ1bGxzY3Jl
ZW5TdXBwb3J0ZWQpKHZvaWQpOwotCi0jZW5kaWYgLy8gV2ViQ29yZVN5c3RlbUludGVyZmFjZUlP
U19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3Rl
bUludGVyZmFjZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lz
dGVtSW50ZXJmYWNlSU9TLm1tCmluZGV4IGM2ZTRjMTY5NzNmYzc2ZmVkNTMzNWM1YjhjOTNlYmFi
ZWNmM2RkOGQuLjRlMzAzNjZkNGViN2ZhYjE4OGRlNGNhZTkwZjlkNTUxMWY5MDZkYWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNl
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50
ZXJmYWNlSU9TLm1tCkBAIC00NiwxMyArNDYsNyBAQCBXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tT
ZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcAog
V0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0
cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUF1dGhvcml6YXRpb25TdHJp
bmcpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0Q29va2llU3RvcmFnZVByaXZhdGVCcm93
c2luZ0VuYWJsZWQpKEJPT0wpOwogV0VCQ09SRV9FWFBPUlQgQ0ZIVFRQTWVzc2FnZVJlZiAoKndr
Q29weUNPTk5FQ1RQcm94eVJlc3BvbnNlKShDRlJlYWRTdHJlYW1SZWYsIENGVVJMUmVmIHJlc3Bv
bnNlVVJMLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7Ci1X
RUJDT1JFX0VYUE9SVCBib29sICgqd2tFeGVjdXRhYmxlV2FzTGlua2VkT25PckFmdGVySU9TVmVy
c2lvbikoaW50KTsKLVdFQkNPUkVfRVhQT1JUIGludCAoKndrR2V0RGV2aWNlQ2xhc3MpKHZvaWQp
OwotV0VCQ09SRV9FWFBPUlQgQ0dTaXplICgqd2tHZXRTY3JlZW5TaXplKSh2b2lkKTsKLVdFQkNP
UkVfRVhQT1JUIENHU2l6ZSAoKndrR2V0QXZhaWxhYmxlU2NyZWVuU2l6ZSkodm9pZCk7CiBXRUJD
T1JFX0VYUE9SVCB2b2lkICgqd2tTZXRMYXllckNvbnRlbnRzU2NhbGUpKENBTGF5ZXIgKik7Ci1X
RUJDT1JFX0VYUE9SVCBmbG9hdCAoKndrR2V0U2NyZWVuU2NhbGVGYWN0b3IpKHZvaWQpOwotV0VC
Q09SRV9FWFBPUlQgYm9vbCAoKndrSXNHQjE4MDMwQ29tcGxpYW5jZVJlcXVpcmVkKSh2b2lkKTsK
IFdFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a0NGVVJMUmVxdWVzdEFsbG93QWxsUG9zdENhY2hpbmcp
KENGVVJMUmVxdWVzdFJlZik7CiBXRUJDT1JFX0VYUE9SVCBDRkFycmF5UmVmICgqd2tDb3B5TlNV
UkxSZXNwb25zZUNlcnRpZmljYXRlQ2hhaW4pKE5TVVJMUmVzcG9uc2UqKTsKIFdFQkNPUkVfRVhQ
T1JUIENGU3RyaW5nRW5jb2RpbmcgKCp3a0dldFdlYkRlZmF1bHRDRlN0cmluZ0VuY29kaW5nKSh2
b2lkKTsKQEAgLTEwNCwxNCArOTgsNiBAQCBXRUJDT1JFX0VYUE9SVCBib29sICgqd2tJc1B1Ymxp
Y1N1ZmZpeCkoTlNTdHJpbmcgKmhvc3QpOwogV0VCQ09SRV9FWFBPUlQgQ0ZTdHJpbmdSZWYgKCp3
a0NhY2hlUGFydGl0aW9uS2V5KSh2b2lkKTsKICNlbmRpZgogCi1XRUJDT1JFX0VYUE9SVCBDRlN0
cmluZ1JlZiAoKndrR2V0VXNlckFnZW50KSh2b2lkKTsKLVdFQkNPUkVfRVhQT1JUIENGU3RyaW5n
UmVmICgqd2tHZXREZXZpY2VOYW1lKSh2b2lkKTsKLVdFQkNPUkVfRVhQT1JUIENGU3RyaW5nUmVm
ICgqd2tHZXRPU05hbWVGb3JVc2VyQWdlbnQpKHZvaWQpOwotV0VCQ09SRV9FWFBPUlQgQ0ZTdHJp
bmdSZWYgKCp3a0dldFBsYXRmb3JtTmFtZUZvck5hdmlnYXRvcikodm9pZCk7Ci1XRUJDT1JFX0VY
UE9SVCBDRlN0cmluZ1JlZiAoKndrR2V0VmVuZG9yTmFtZUZvck5hdmlnYXRvcikodm9pZCk7Ci0K
LVdFQkNPUkVfRVhQT1JUIGJvb2wgKCp3a0lzT3B0aW1pemVkRnVsbHNjcmVlblN1cHBvcnRlZCko
dm9pZCk7Ci0KIFdFQkNPUkVfRVhQT1JUIGludCAoKndrRXhlcm5hbERldmljZVR5cGVGb3JQbGF5
ZXIpKEFWUGxheWVyICopOwogV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcgKigqd2tFeGVybmFsRGV2
aWNlRGlzcGxheU5hbWVGb3JQbGF5ZXIpKEFWUGxheWVyICopOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdC5oCmluZGV4IDhkMmQ4YzgwMzhhNTEyZGJmN2U0YWU1ZjgxNjEyMzk5MGE1MzJlMDIu
LmQ1NjEyZWMzYjk5YjYxMWMxMzdmZmRjMDA2MGIwMzhkMGYxNzI1OGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdC5oCkBAIC0xNTgsNiArMTU4LDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQg
ZG9FbnRlckZ1bGxzY3JlZW4oKTsKIH07CiAKK2Jvb2wgc3VwcG9ydHNQaWN0dXJlSW5QaWN0dXJl
KCk7CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KaW5kZXggODI2
YWYxM2E2NTMxODFiMDcxMjliOWZhY2I4OTIyZWUzNDJmM2QyYi4uY2RlZDY2NjYxMTUzYTI2ZTE4
ZmVmYWQ1M2Y4ZDI0OWRhOGM4MmZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQpA
QCAtMjYsNyArMjYsOSBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAotI2lmIFBMQVRGT1JNKElP
UykgJiYgSEFWRShBVktJVCkKKyNpZiBQTEFURk9STShJT1MpCisKKyNpZiBIQVZFKEFWS0lUKQog
CiAjaW1wb3J0ICJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oIgogCkBAIC01Nyw2
ICs1OSw3IEBAIFNPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTGF5ZXJWaWRlb0dy
YXZpdHlSZXNpemVBc3BlY3QsIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3Vu
ZGF0aW9uLCBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbCwgTlNTdHJpbmcgKikK
IAogU09GVF9MSU5LX0ZSQU1FV09SSyhBVktpdCkKK1NPRlRfTElOS19DTEFTUyhBVktpdCwgQVZQ
aWN0dXJlSW5QaWN0dXJlQ29udHJvbGxlcikKIFNPRlRfTElOS19DTEFTUyhBVktpdCwgQVZQbGF5
ZXJDb250cm9sbGVyKQogU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlBsYXllclZpZXdDb250cm9s
bGVyKQogU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlZhbHVlVGltaW5nKQpAQCAtMTMwMiw3ICsx
MzA1LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cHJlcGFyZWRU
b1JldHVyblRvSW5saW5lKGJvb2wgdmlzaWJsZSwgY28KIAogYm9vbCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDo6bWF5QXV0b21hdGljYWxseVNob3dWaWRlb1BpY3R1cmVJblBpY3R1
cmUoKSBjb25zdAogewotICAgIHJldHVybiBbbV9wbGF5ZXJDb250cm9sbGVyIGlzUGxheWluZ10g
JiYgbV9tb2RlID09IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0
YW5kYXJkICYmIHdrSXNPcHRpbWl6ZWRGdWxsc2NyZWVuU3VwcG9ydGVkKCk7CisgICAgcmV0dXJu
IFttX3BsYXllckNvbnRyb2xsZXIgaXNQbGF5aW5nXSAmJiBtX21vZGUgPT0gSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQgJiYgc3VwcG9ydHNQaWN0dXJl
SW5QaWN0dXJlKCk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6
OmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZShzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IGNh
bGxiYWNrKQpAQCAtMTQzOCw0ICsxNDQxLDE1IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6OmNsZWFyTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsCiAg
ICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChtX21v
ZGUpOwogfQogCisjZW5kaWYgLy8gSEFWRShBVktJVCkKKworYm9vbCBXZWJDb3JlOjpzdXBwb3J0
c1BpY3R1cmVJblBpY3R1cmUoKQoreworI2lmIFBMQVRGT1JNKElPUykgJiYgSEFWRShBVktJVCkK
KyAgICByZXR1cm4gW2dldEFWUGljdHVyZUluUGljdHVyZUNvbnRyb2xsZXJDbGFzcygpIGlzUGlj
dHVyZUluUGljdHVyZVN1cHBvcnRlZF07CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKICNlbmRp
ZgorfQorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL3dhay9XQUtXaW5kb3cubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3Mvd2FrL1dBS1dpbmRvdy5tbQppbmRleCA5ZDgzYzVkMGM2YjYxYjFkNDM2YjNiZjZjYjVk
YzcyMDFkODYzODVkLi45ODljZDc3ZmRhYzI0ZWJlNmM3NDA3MzkyZjkyMGUyNjM4MWY5MGI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1dpbmRvdy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1dpbmRvdy5tbQpAQCAtMjks
NiArMjksNyBAQAogI2lmIFBMQVRGT1JNKElPUykKIAogI2ltcG9ydCAiTGVnYWN5VGlsZUNhY2hl
LmgiCisjaW1wb3J0ICJQbGF0Zm9ybVNjcmVlbi5oIgogI2ltcG9ydCAiV0FLVmlld0ludGVybmFs
LmgiCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0ICJXZWJDb3Jl
VGhyZWFkUnVuLmgiCkBAIC02Nyw3ICs2OCw3IEBAIC0gKGlkKWluaXRXaXRoTGF5ZXI6KENBTGF5
ZXIgKilsYXllcgogICAgIF9ob3N0TGF5ZXIgPSBbbGF5ZXIgcmV0YWluXTsKIAogICAgIF9mcmFt
ZSA9IFtfaG9zdExheWVyIGZyYW1lXTsKLSAgICBfc2NyZWVuU2NhbGUgPSB3a0dldFNjcmVlblNj
YWxlRmFjdG9yKCk7CisgICAgX3NjcmVlblNjYWxlID0gc2NyZWVuU2NhbGVGYWN0b3IoKTsKICAg
ICAKICAgICBfdGlsZUNhY2hlID0gbmV3IExlZ2FjeVRpbGVDYWNoZShzZWxmKTsKIApAQCAtODYs
NyArODcsNyBAQCAtIChpZClpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUKICAgICAgICAgcmV0
dXJuIG5pbDsKIAogICAgIF9mcmFtZSA9IGZyYW1lOwotICAgIF9zY3JlZW5TY2FsZSA9IHdrR2V0
U2NyZWVuU2NhbGVGYWN0b3IoKTsKKyAgICBfc2NyZWVuU2NhbGUgPSBzY3JlZW5TY2FsZUZhY3Rv
cigpOwogCiAgICAgX2V4cG9zZWRTY3JvbGxWaWV3UmVjdCA9IENHUmVjdE51bGw7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0tHcmFwaGljcy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0tHcmFwaGljcy5tbQppbmRleCA5OWM0MTYx
OTVjMmJhNDU4NTgwNDkwYzU1MGUyZTk1YjUxZjA1ZDZmLi4yZGU0M2RmM2YyZjg2ZmI1YTBkNTZi
YmVjZTI2ZWNlODRkMmQ3OTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3Mvd2FrL1dLR3JhcGhpY3MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dh
ay9XS0dyYXBoaWNzLm1tCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbXBvcnQgIkNvcmVHcmFwaGlj
c1NQSS5oIgogI2ltcG9ydCAiRm9udENhc2NhZGUuaCIKLSNpbXBvcnQgIldlYkNvcmVTeXN0ZW1J
bnRlcmZhY2UuaCIKKyNpbXBvcnQgIlBsYXRmb3JtU2NyZWVuLmgiCiAjaW1wb3J0ICJXZWJDb3Jl
VGhyZWFkLmgiCiAjaW1wb3J0IDxJbWFnZUlPL0ltYWdlSU8uaD4KICNpbXBvcnQgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KQEAgLTExMyw5ICsxMTMsOSBAQCBDR0ltYWdlUmVmIFdLR3JhcGhpY3NDcmVh
dGVJbWFnZUZyb21CdW5kbGVXaXRoTmFtZShjb25zdCBjaGFyICppbWFnZV9maWxlKQogCiAgICAg
Q0dJbWFnZVJlZiBpbWFnZSA9IG51bGxwdHI7CiAgICAgTlNEYXRhICppbWFnZURhdGEgPSBudWxs
cHRyOwotICAgIGZvciAodW5zaWduZWQgc2NhbGVGYWN0b3IgPSB3a0dldFNjcmVlblNjYWxlRmFj
dG9yKCk7IHNjYWxlRmFjdG9yID4gMDsgLS1zY2FsZUZhY3RvcikgeworICAgIGZvciAodW5zaWdu
ZWQgc2NhbGVGYWN0b3IgPSBzY3JlZW5TY2FsZUZhY3RvcigpOyBzY2FsZUZhY3RvciA+IDA7IC0t
c2NhbGVGYWN0b3IpIHsKICAgICAgICAgaW1hZ2VEYXRhID0gW05TRGF0YSBkYXRhV2l0aENvbnRl
bnRzT2ZGaWxlOmltYWdlUmVzb3VyY2VQYXRoKGltYWdlX2ZpbGUsIHNjYWxlRmFjdG9yKV07Ci0g
ICAgICAgIEFTU0VSVChzY2FsZUZhY3RvciAhPSB3a0dldFNjcmVlblNjYWxlRmFjdG9yKCkgfHwg
aW1hZ2VEYXRhKTsKKyAgICAgICAgQVNTRVJUKHNjYWxlRmFjdG9yICE9IHNjcmVlblNjYWxlRmFj
dG9yKCkgfHwgaW1hZ2VEYXRhKTsKICAgICAgICAgaWYgKGltYWdlRGF0YSkKICAgICAgICAgICAg
IGJyZWFrOwogICAgIH0KQEAgLTEzMSw3ICsxMzEsNyBAQCBDR0ltYWdlUmVmIFdLR3JhcGhpY3ND
cmVhdGVJbWFnZUZyb21CdW5kbGVXaXRoTmFtZShjb25zdCBjaGFyICppbWFnZV9maWxlKQogc3Rh
dGljIHZvaWQgV0tEcmF3UGF0dGVybkJpdG1hcCh2b2lkICppbmZvLCBDR0NvbnRleHRSZWYgYykg
CiB7CiAgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IChDR0ltYWdlUmVmKWluZm87Ci0gICAgQ0dGbG9h
dCBzY2FsZSA9IHdrR2V0U2NyZWVuU2NhbGVGYWN0b3IoKTsKKyAgICBDR0Zsb2F0IHNjYWxlID0g
c2NyZWVuU2NhbGVGYWN0b3IoKTsKICAgICBDR0NvbnRleHREcmF3SW1hZ2UoYywgQ0dSZWN0TWFr
ZSgwLCAwLCBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpIC8gc2NhbGUsIENHSW1hZ2VHZXRIZWlnaHQo
aW1hZ2UpIC8gc2NhbGUpLCBpbWFnZSk7ICAgIAogfQogCkBAIC0xNTAsNyArMTUwLDcgQEAgQ0dQ
YXR0ZXJuUmVmIFdLQ3JlYXRlUGF0dGVybkZyb21DR0ltYWdlKENHSW1hZ2VSZWYgaW1hZ2VSZWYp
CiAgICAgLy8gcmV0YWluIGltYWdlIHNpbmNlIGl0J3MgZnJlZWQgYnkgb3VyIGNhbGxiYWNrCiAg
ICAgQ0dJbWFnZVJldGFpbihpbWFnZVJlZik7CiAKLSAgICBDR0Zsb2F0IHNjYWxlID0gd2tHZXRT
Y3JlZW5TY2FsZUZhY3RvcigpOworICAgIENHRmxvYXQgc2NhbGUgPSBzY3JlZW5TY2FsZUZhY3Rv
cigpOwogICAgIHJldHVybiBDR1BhdHRlcm5DcmVhdGUoKHZvaWQqKWltYWdlUmVmLCBDR1JlY3RN
YWtlKDAsIDAsIENHSW1hZ2VHZXRXaWR0aChpbWFnZVJlZikgLyBzY2FsZSwgQ0dJbWFnZUdldEhl
aWdodChpbWFnZVJlZikgLyBzY2FsZSksIENHQWZmaW5lVHJhbnNmb3JtSWRlbnRpdHksIENHSW1h
Z2VHZXRXaWR0aChpbWFnZVJlZikgLyBzY2FsZSwgQ0dJbWFnZUdldEhlaWdodChpbWFnZVJlZikg
LyBzY2FsZSwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZywgMSAvKmlzQ29sb3JlZCov
LCAmV0tQYXR0ZXJuQml0bWFwQ2FsbGJhY2tzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKaW5kZXggMDQ2ZGQ2Yjc3
NDExNDBkODBmN2ExZmYwMjYxZTQ0MWVhZmUwNjEyNS4uNjBiNDg5MDU3M2FkNmE4NWQzYjBhMzcz
Y2M4Y2EyNWZmMzlmMDIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCkBAIC0yOCwxMCArMjgsNiBAQAogCiAjaW5jbHVk
ZSA8b2JqYy9vYmpjLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCi0jaW5jbHVkZSAiV2ViQ29yZVN5
c3RlbUludGVyZmFjZUlPUy5oIgotI2VuZGlmCi0KIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZT
dHJpbmcgKiBDRlN0cmluZ1JlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZOdW1iZXIgKiBD
Rk51bWJlclJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZEaWN0aW9uYXJ5ICogQ0ZEaWN0
aW9uYXJ5UmVmOwpAQCAtMjM3LDEwICsyMzMsNyBAQCBleHRlcm4gQVhVSUVsZW1lbnRSZWYgKCp3
a0NyZWF0ZUFYVUlFbGVtZW50UmVmKShpZCBlbGVtZW50KTsKICNlbmRpZiAvLyAhUExBVEZPUk0o
SU9TKQogCiAjaWYgUExBVEZPUk0oSU9TKQotZXh0ZXJuIENHU2l6ZSAoKndrR2V0U2NyZWVuU2l6
ZSkodm9pZCk7Ci1leHRlcm4gQ0dTaXplICgqd2tHZXRBdmFpbGFibGVTY3JlZW5TaXplKSh2b2lk
KTsKIGV4dGVybiB2b2lkICgqd2tTZXRMYXllckNvbnRlbnRzU2NhbGUpKENBTGF5ZXIgKik7Ci1l
eHRlcm4gZmxvYXQgKCp3a0dldFNjcmVlblNjYWxlRmFjdG9yKSh2b2lkKTsKICNlbmRpZgogCiB0
eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMU3RvcmFnZVNlc3Npb24qIENGVVJMU3RvcmFnZVNl
c3Npb25SZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2Ev
RHluYW1pY0xpbmtlclNQSS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL0R5
bmFtaWNMaW5rZXJTUEkuaAppbmRleCA0NjBkYTkxOWE0ZTlhNmNjODA4ZmNiMjMxYTQ1MzIxOTZl
NTMyMGRmLi5kZTYyNmIxMTZmMDUyOGI3ZTFmN2Q1MmJmNmIyZGNjMzRhYzE2YWMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvRHluYW1pY0xpbmtlclNQSS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9EeW5hbWljTGlua2VyU1BJ
LmgKQEAgLTM1LDggKzM1LDExIEBACiAjZWxzZQogCiAjZGVmaW5lIERZTERfSU9TX1ZFUlNJT05f
M18wIDB4MDAwMzAwMDAKLSNkZWZpbmUgRFlMRF9JT1NfVkVSU0lPTl82XzAgMHgwMDA2MDAwMDsK
LSNkZWZpbmUgRFlMRF9JT1NfVkVSU0lPTl83XzAgMHgwMDA3MDAwMDsKKyNkZWZpbmUgRFlMRF9J
T1NfVkVSU0lPTl80XzIgMHgwMDA0MDIwMAorI2RlZmluZSBEWUxEX0lPU19WRVJTSU9OXzVfMCAw
eDAwMDUwMDAwCisjZGVmaW5lIERZTERfSU9TX1ZFUlNJT05fNl8wIDB4MDAwNjAwMDAKKyNkZWZp
bmUgRFlMRF9JT1NfVkVSU0lPTl83XzAgMHgwMDA3MDAwMAorI2RlZmluZSBEWUxEX0lPU19WRVJT
SU9OXzlfMCAweDAwMDkwMDAwCiAKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcGkvaW9zL01vYmlsZUdlc3RhbHRTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NwaS9pb3MvTW9iaWxlR2VzdGFsdFNQSS5oCmluZGV4IDAzNmE0NDcxMzQ3NjY1YzFh
MGQ0NzlhYTczYjEyOTg2ZjRkYTg2OGMuLjJkOWViZGZiYzUwMTBmMDI5ZmY2MGNkNDI3NGRjZmI1
ZmZkZmZiNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9pb3MvTW9i
aWxlR2VzdGFsdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9pb3MvTW9i
aWxlR2VzdGFsdFNQSS5oCkBAIC00MSw2ICs0MSwyMCBAQAogRVhURVJOX0MgY29uc3QgQ0ZTdHJp
bmdSZWYga01HUUFwcGxlSW50ZXJuYWxJbnN0YWxsQ2FwYWJpbGl0eSA9IENGU1RSKCJhcHBsZS1p
bnRlcm5hbC1pbnN0YWxsIik7CiBFWFRFUk5fQyBjb25zdCBDRlN0cmluZ1JlZiBrTUdRTWFpblNj
cmVlblBpdGNoID0gQ0ZTVFIoIm1haW4tc2NyZWVuLXBpdGNoIik7CiBFWFRFUk5fQyBjb25zdCBD
RlN0cmluZ1JlZiBrTUdRTWFpblNjcmVlblNjYWxlID0gQ0ZTVFIoIm1haW4tc2NyZWVuLXNjYWxl
Iik7CitFWFRFUk5fQyBjb25zdCBDRlN0cmluZ1JlZiBrTUdRaVBhZENhcGFiaWxpdHkgPSBDRlNU
UigiaXBhZCIpOworRVhURVJOX0MgY29uc3QgQ0ZTdHJpbmdSZWYga01HUURldmljZU5hbWUgPSBD
RlNUUigiRGV2aWNlTmFtZSIpOworRVhURVJOX0MgY29uc3QgQ0ZTdHJpbmdSZWYga01HUURldmlj
ZUNsYXNzTnVtYmVyID0gQ0ZTVFIoIkRldmljZUNsYXNzTnVtYmVyIik7CisKK3R5cGVkZWYgZW51
bSB7CisgICAgTUdEZXZpY2VDbGFzc0ludmFsaWQgPSAtMSwKKyAgICAvKiAwIGlzIGludGVudGlv
bmFsbHkgbm90IGluIHRoaXMgZW51bSAqLworICAgIE1HRGV2aWNlQ2xhc3NpUGhvbmUgID0gMSwK
KyAgICBNR0RldmljZUNsYXNzaVBvZCAgICA9IDIsCisgICAgTUdEZXZpY2VDbGFzc2lQYWQgICAg
PSAzLAorICAgIE1HRGV2aWNlQ2xhc3NBcHBsZVRWID0gNCwKKyAgICAvKiA1IGlzIGludGVudGlv
bmFsbHkgbm90IGluIHRoaXMgZW51bSAqLworICAgIE1HRGV2aWNlQ2xhc3NXYXRjaCAgID0gNiwK
K30gTUdEZXZpY2VDbGFzczsKIAogI2VuZGlmCiAKQEAgLTUwLDYgKzY0LDE0IEBAIEVYVEVSTl9D
IENGVHlwZVJlZiBNR0NvcHlBbnN3ZXIoQ0ZTdHJpbmdSZWYgcXVlc3Rpb24sIENGRGljdGlvbmFy
eVJlZiBvcHRpb25zKTsKIEVYVEVSTl9DIGJvb2wgTUdHZXRCb29sQW5zd2VyKENGU3RyaW5nUmVm
IHF1ZXN0aW9uKTsKICNlbmRpZgogCisjaWZuZGVmIE1HR2V0U0ludDMyQW5zd2VyCitFWFRFUk5f
QyBTSW50MzIgTUdHZXRTSW50MzJBbnN3ZXIoQ0ZTdHJpbmdSZWYgcXVlc3Rpb24sIFNJbnQzMiBk
ZWZhdWx0VmFsdWUpOworI2VuZGlmCisKKyNpZm5kZWYgTUdHZXRGbG9hdDMyQW5zd2VyCitFWFRF
Uk5fQyBGbG9hdDMyIE1HR2V0RmxvYXQzMkFuc3dlcihDRlN0cmluZ1JlZiBxdWVzdGlvbiwgRmxv
YXQzMiBkZWZhdWx0VmFsdWUpOworI2VuZGlmCisKICNlbmRpZgogCiAjZW5kaWYgLy8gTW9iaWxl
R2VzdGFsdFNQSV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvaW9z
L1VJQ29sb3JTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9pb3MvVUlDb2xvclNQ
SS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOTgxNGE1NjhlMDJmZDZjMGVlMTk3
YjhmOWVjZGE4YTY4NGI1YjY3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9pb3MvVUlDb2xvclNQSS5oCisr
KyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZiBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQotCi0jaW1wb3J0IDxVSUtpdC9VSUludGVyZmFjZV9Qcml2YXRlLmg+Ci0K
LSNlbHNlCi0KLSNpbXBvcnQgPFVJS2l0L1VJQ29sb3IuaD4KLQotQGludGVyZmFjZSBVSUNvbG9y
ICgpCi0KLSsgKFVJQ29sb3IgKilzeXN0ZW1CbHVlQ29sb3I7Ci0rIChVSUNvbG9yICopc3lzdGVt
R3JheUNvbG9yOwotKyAoVUlDb2xvciAqKXN5c3RlbUdyZWVuQ29sb3I7Ci0rIChVSUNvbG9yICop
c3lzdGVtT3JhbmdlQ29sb3I7Ci0rIChVSUNvbG9yICopc3lzdGVtUGlua0NvbG9yOwotKyAoVUlD
b2xvciAqKXN5c3RlbVJlZENvbG9yOwotKyAoVUlDb2xvciAqKXN5c3RlbVllbGxvd0NvbG9yOwot
Ci1AZW5kCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Bp
L2lvcy9VSUtpdFNQSS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQ
SS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjNjZjIwZjk4Nzk3MDczZDZmMWJiZGI3MDk5NTM1ZTUxY2Q2ZGIyYTIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvaW9zL1VJS2l0
U1BJLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKQorCisjaW1wb3J0IDxVSUtpdC9VSUFwcGxpY2F0aW9uX1ByaXZhdGUuaD4KKyNpbXBv
cnQgPFVJS2l0L1VJSW50ZXJmYWNlX1ByaXZhdGUuaD4KKyNpbXBvcnQgPFVJS2l0L1VJU2NyZWVu
X1ByaXZhdGUuaD4KKworI2Vsc2UKKworI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KKworQGludGVy
ZmFjZSBVSUFwcGxpY2F0aW9uICgpCisKKy0gKEJPT0wpX2lzQ2xhc3NpYzsKKworQGVuZAorCitA
aW50ZXJmYWNlIFVJQ29sb3IgKCkKKworKyAoVUlDb2xvciAqKXN5c3RlbUJsdWVDb2xvcjsKKysg
KFVJQ29sb3IgKilzeXN0ZW1HcmF5Q29sb3I7CisrIChVSUNvbG9yICopc3lzdGVtR3JlZW5Db2xv
cjsKKysgKFVJQ29sb3IgKilzeXN0ZW1PcmFuZ2VDb2xvcjsKKysgKFVJQ29sb3IgKilzeXN0ZW1Q
aW5rQ29sb3I7CisrIChVSUNvbG9yICopc3lzdGVtUmVkQ29sb3I7CisrIChVSUNvbG9yICopc3lz
dGVtWWVsbG93Q29sb3I7CisKK0BlbmQKKworQGludGVyZmFjZSBVSVNjcmVlbiAoKQorCitAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIENHUmVjdCBfcmVmZXJlbmNlQm91bmRzOworCitA
ZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1t
CmluZGV4IDk5Njc5YzhhMmQzYmEzZDNjYjI0MzYxY2QyMjViZjA4NGUzNTg1YzYuLjVlY2Y4MWRj
YTE4OGYyYTJhMTZmNGQ4ZmQzYTAyNWUxZTk2M2I5NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KQEAgLTU2LDcgKzU2LDcgQEAKICNpbXBvcnQgIlJlbmRl
clRoZW1lSU9TLmgiCiAjaW1wb3J0ICJSZW5kZXJWaWV3LmgiCiAjaW1wb3J0ICJTb2Z0TGlua2lu
Zy5oIgotI2ltcG9ydCAiVUlDb2xvclNQSS5oIgorI2ltcG9ydCAiVUlLaXRTUEkuaCIKICNpbXBv
cnQgIlVzZXJBZ2VudFNjcmlwdHMuaCIKICNpbXBvcnQgIlVzZXJBZ2VudFN0eWxlU2hlZXRzLmgi
CiAjaW1wb3J0ICJXZWJDb3JlVGhyZWFkUnVuLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2lvcy9NaXNjL1dlYlVJS2l0U3VwcG9ydC5tbSBiL1NvdXJjZS9XZWJLaXQvaW9zL01pc2MvV2Vi
VUlLaXRTdXBwb3J0Lm1tCmluZGV4IDAyYzk3YTYzZGFjYjExNzI0YjNhZDJjMWY1NjM2ZWM1NWJh
NDM5ZGMuLjczOTM5ZjM1ZDFiMjRhOGM0Yzk5ZmVhYmU5MmQ4Y2VhMjI0NjA0YTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvaW9zL01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvaW9zL01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tCkBAIC0zMyw4ICszMywxMCBAQAog
I2ltcG9ydCAiV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW1wb3J0ICJXZWJTeXN0ZW1JbnRl
cmZhY2UuaCIKICNpbXBvcnQgIldlYlZpZXdQcml2YXRlLmgiCisjaW1wb3J0IDxXZWJDb3JlL0R5
bmFtaWNMaW5rZXJTUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGF0aFV0aWxpdGllcy5oPgogI2lt
cG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2V0dGlu
Z3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEJyZWFrSXRlcmF0b3IuaD4KICNpbXBvcnQgPFdl
YkNvcmUvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3Jl
VGhyZWFkU3lzdGVtSW50ZXJmYWNlLmg+CkBAIC00Niw3ICs0OCw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBzdGF0aWMgaW5saW5lIGJvb2wgbGlua2VkT25PckFmdGVySU9TNSgpCiB7
Ci0gICAgc3RhdGljIGJvb2wgc19saW5rZWRPbk9yQWZ0ZXJJT1M1ID0gaW9zRXhlY3V0YWJsZVdh
c0xpbmtlZE9uT3JBZnRlclZlcnNpb24od2tJT1NTeXN0ZW1WZXJzaW9uXzVfMCk7CisgICAgc3Rh
dGljIGJvb2wgc19saW5rZWRPbk9yQWZ0ZXJJT1M1ID0gZHlsZF9nZXRfcHJvZ3JhbV9zZGtfdmVy
c2lvbigpID49IERZTERfSU9TX1ZFUlNJT05fNV8wOwogICAgIHJldHVybiBzX2xpbmtlZE9uT3JB
ZnRlcklPUzU7CiB9CiAKQEAgLTgzLDcgKzg1LDcgQEAgdm9pZCBXZWJLaXRTZXRJc0NsYXNzaWMo
Qk9PTCBmbGFnKQogCiBmbG9hdCBXZWJLaXRHZXRNaW5pbXVtWm9vbUZvbnRTaXplKHZvaWQpCiB7
Ci0gICAgcmV0dXJuIFdLR2V0TWluaW11bVpvb21Gb250U2l6ZSgpOworICAgIHJldHVybiBTZXR0
aW5nczo6ZGVmYXVsdE1pbmltdW1ab29tRm9udFNpemUoKTsKIH0KIAogaW50IFdlYktpdEdldExh
c3RMaW5lQnJlYWtJbkJ1ZmZlcihVQ2hhciAqY2hhcmFjdGVycywgaW50IHBvc2l0aW9uLCBpbnQg
bGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50SU9TLm1tIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50SU9TLm1tCmluZGV4IGI5Y2YxMzk3ODRlNmY1MjBlNGVjYTg2OWQ0YjJiNDlm
M2ZkYzNkODcuLjRlNDBhYjUyNGM1YmZmZWRkZTY2NWMxMTgwNGYxNTY5YTc2Mzk0MDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnRJT1MubW0KQEAgLTU0LDYgKzU0LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm9kZS5oPgor
I2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5k
ZXJCb3guaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyT2JqZWN0Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5oPgpAQCAtNjEsMTAgKzYyLDYgQEAKICNp
bXBvcnQgPFdlYkNvcmUvV0FLV2luZG93Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJl
YWRNZXNzYWdlLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCi0jaW5jbHVkZSAiV2ViS2l0U3lzdGVt
SW50ZXJmYWNlLmgiCi0jZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHZvaWQg
V2ViQ2hyb21lQ2xpZW50SU9TOjpzZXRXaW5kb3dSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYgcikKQEAgLTE3NCw3ICsxNzEsNyBAQCBzdGF0aWMgaW5saW5lIE5TRGljdGlvbmFyeSogZGlj
dGlvbmFyeUZvclZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IFdlYkNvcmU6OlZpZXdwbwogCiBGbG9h
dFNpemUgV2ViQ2hyb21lQ2xpZW50SU9TOjpzY3JlZW5TaXplKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gRmxvYXRTaXplKFdLR2V0U2NyZWVuU2l6ZSgpKTsKKyAgICByZXR1cm4gRmxvYXRTaXplKHNj
cmVlblNpemUoKSk7CiB9CiAKIEZsb2F0U2l6ZSBXZWJDaHJvbWVDbGllbnRJT1M6OmF2YWlsYWJs
ZVNjcmVlblNpemUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCmluZGV4IDhjMjA1YjQ2YjNmMjk5MTVkNzBl
MGEyYmI5YTNhMGZkMmY1NWUzZDAuLjE0YzFiYzZjNmI2MWVlNWM2Y2M4NDY2MTVjNDg5ZDNhZDRl
NGMxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5
c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJTeXN0ZW1JbnRlcmZhY2UubW0KQEAgLTExMSwxNiArMTExLDYgQEAgdm9pZCBJbml0V2ViQ29y
ZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgIElOSVQoUVRDbGVhck1lZGlhRG93bmxvYWRDYWNo
ZSk7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKLSAgICBJTklUKEV4ZWN1dGFibGVXYXNM
aW5rZWRPbk9yQWZ0ZXJJT1NWZXJzaW9uKTsKLSAgICBJTklUKEdldERldmljZUNsYXNzKTsKLSAg
ICBJTklUKEdldFNjcmVlblNpemUpOwotICAgIElOSVQoR2V0QXZhaWxhYmxlU2NyZWVuU2l6ZSk7
Ci0gICAgSU5JVChHZXRTY3JlZW5TY2FsZUZhY3Rvcik7Ci0gICAgSU5JVChJc0dCMTgwMzBDb21w
bGlhbmNlUmVxdWlyZWQpOwotICAgIElOSVQoSXNPcHRpbWl6ZWRGdWxsc2NyZWVuU3VwcG9ydGVk
KTsKLSNlbmRpZgotCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBJTklUKEV4ZWN1dGFibGVXYXNM
aW5rZWRPbk9yQmVmb3JlU25vd0xlb3BhcmQpOwogICAgIElOSVQoQ29weURlZmF1bHRTZWFyY2hQ
cm92aWRlckRpc3BsYXlOYW1lKTsKQEAgLTE3MCwxNCArMTYwLDYgQEAgdm9pZCBJbml0V2ViQ29y
ZVN5c3RlbUludGVyZmFjZSh2b2lkKQogCiAgICAgSU5JVChDRlVSTFJlcXVlc3RBbGxvd0FsbFBv
c3RDYWNoaW5nKTsKIAotI2lmIFBMQVRGT1JNKElPUykKLSAgICBJTklUKEdldFVzZXJBZ2VudCk7
Ci0gICAgSU5JVChHZXREZXZpY2VOYW1lKTsKLSAgICBJTklUKEdldE9TTmFtZUZvclVzZXJBZ2Vu
dCk7Ci0gICAgSU5JVChHZXRQbGF0Zm9ybU5hbWVGb3JOYXZpZ2F0b3IpOwotICAgIElOSVQoR2V0
VmVuZG9yTmFtZUZvck5hdmlnYXRvcik7Ci0jZW5kaWYKLQogI2lmICFQTEFURk9STShJT1MpCiAg
ICAgSU5JVChOU0VsYXN0aWNEZWx0YUZvclRpbWVEZWx0YSk7CiAgICAgSU5JVChOU0VsYXN0aWNE
ZWx0YUZvclJlYm91bmREZWx0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlByZWZlcmVuY2VzLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVm
ZXJlbmNlcy5tbQppbmRleCBlMDJhOTE4ZGUyMzNhN2M5NTE5ZmQ0YTIwYzg1MjA2Y2Y3ZGMxMTlm
Li5lYzcxN2JjMGY1YzE1OTU3OWFmYTVlZDgwNDgwMTQ4MDM1MGJkOGQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KQEAgLTU5LDYgKzU5LDcgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0IDxBdWRp
b1Rvb2xib3gvQXVkaW9TZXNzaW9uLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RldmljZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSW1hZ2VT
b3VyY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRocmVhZE1lc3NhZ2UuaD4KQEAgLTM5
Niw3ICszOTcsNyBAQCArICh2b2lkKWluaXRpYWxpemUKICAgICBXVEY6OmluaXRpYWxpemVNYWlu
VGhyZWFkVG9Qcm9jZXNzTWFpblRocmVhZCgpOwogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWlu
UnVuTG9vcCgpOwogI2Vsc2UKLSAgICBib29sIGFsbG93c0lubGluZU1lZGlhUGxheWJhY2sgPSBX
S0dldERldmljZUNsYXNzKCkgPT0gV0tEZXZpY2VDbGFzc2lQYWQ7CisgICAgYm9vbCBhbGxvd3NJ
bmxpbmVNZWRpYVBsYXliYWNrID0gV2ViQ29yZTo6ZGV2aWNlQ2xhc3MoKSA9PSBNR0RldmljZUNs
YXNzaVBhZDsKICAgICBib29sIHJlcXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1dGUgPSAhYWxsb3dz
SW5saW5lTWVkaWFQbGF5YmFjazsKICNlbmRpZgogICAgIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJm
YWNlKCk7CkBAIC01NzYsNyArNTc3LDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAgICAgIEAi
IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXROZXR3b3JrSW50ZXJmYWNlTmFt
ZVByZWZlcmVuY2VLZXksCiAjZW5kaWYKICNpZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykK
LSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDpXS0dldE1pbmltdW1ab29tRm9udFNp
emUoKV0sIFdlYktpdE1pbmltdW1ab29tRm9udFNpemVQcmVmZXJlbmNlS2V5LAorICAgICAgICBb
TlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OlNldHRpbmdzOjpkZWZhdWx0TWluaW11bVpvb21Gb250
U2l6ZSgpXSwgV2ViS2l0TWluaW11bVpvb21Gb250U2l6ZVByZWZlcmVuY2VLZXksCiAjZW5kaWYK
ICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhMb25nTG9uZzpBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6bm9RdW90YSgpXSwgV2ViS2l0QXBwbGljYXRpb25DYWNoZVRvdGFsUXVvdGEsCiAgICAg
ICAgIFtOU051bWJlciBudW1iZXJXaXRoTG9uZ0xvbmc6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
Om5vUXVvdGEoKV0sIFdlYktpdEFwcGxpY2F0aW9uQ2FjaGVEZWZhdWx0T3JpZ2luUXVvdGEsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggOTFkOGJjNDcxNzJhMWYxYzNmNDlh
NjEzZTBiYTMyNDcxYzcyYjkyNi4uMWE0Zjc1MjExNjU5OTg4NGVmZDI2NDUzMThhNGM1Y2MxNDdj
MTI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMjQzLDYgKzI0Myw3
IEBACiAjaW1wb3J0ICJXZWJTdG9yYWdlTWFuYWdlclByaXZhdGUuaCIKICNpbXBvcnQgIldlYlVJ
S2l0U3VwcG9ydC5oIgogI2ltcG9ydCAiV2ViVmlzaWJsZVBvc2l0aW9uLmgiCisjaW1wb3J0IDxX
ZWJDb3JlL0R5bmFtaWNMaW5rZXJTUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvRXZlbnROYW1lcy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9Gb250Q2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhp
Y3NMYXllci5oPgpAQCAtMjUwLDYgKzI1MSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0xlZ2FjeVRp
bGVDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Nb2JpbGVHZXN0YWx0U1BJLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL1BsYXRm
b3JtU2NyZWVuLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lP
Uy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZVRyYWNrZXIuaD4KICNpbXBvcnQg
PFdlYkNvcmUvU21hcnRSZXBsYWNlLmg+CkBAIC04NTAsNyArODUyLDcgQEAgc3RhdGljIGJvb2wg
c2hvdWxkQWxsb3dEaXNwbGF5QW5kUnVubmluZ09mSW5zZWN1cmVDb250ZW50KCkKIHN0YXRpYyBi
b29sIHNob3VsZEFsbG93UGljdHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2soKQogewogI2lmIFBM
QVRGT1JNKElPUykKLSAgICBzdGF0aWMgYm9vbCBzaG91bGRBbGxvd1BpY3R1cmVJblBpY3R1cmVN
ZWRpYVBsYXliYWNrID0gaW9zRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JBZnRlclZlcnNpb24od2tJ
T1NTeXN0ZW1WZXJzaW9uXzlfMCk7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkQWxsb3dQaWN0dXJl
SW5QaWN0dXJlTWVkaWFQbGF5YmFjayA9IGR5bGRfZ2V0X3Byb2dyYW1fc2RrX3ZlcnNpb24oKSA+
PSBEWUxEX0lPU19WRVJTSU9OXzlfMDsKICAgICByZXR1cm4gc2hvdWxkQWxsb3dQaWN0dXJlSW5Q
aWN0dXJlTWVkaWFQbGF5YmFjazsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTM5OCw3
ICs1NDAwLDcgQEAgLSAodm9pZClfdXBkYXRlU2NyZWVuU2NhbGVGcm9tV2luZG93CiAgICAgaWYg
KFdBS1dpbmRvdyAqd2luZG93ID0gW3NlbGYgd2luZG93XSkKICAgICAgICAgc2NhbGVGYWN0b3Ig
PSBbd2luZG93IHNjcmVlblNjYWxlXTsKICAgICBlbHNlCi0gICAgICAgIHNjYWxlRmFjdG9yID0g
V0tHZXRTY3JlZW5TY2FsZUZhY3RvcigpOworICAgICAgICBzY2FsZUZhY3RvciA9IHNjcmVlblNj
YWxlRmFjdG9yKCk7CiAKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0RGV2aWNlU2NhbGVGYWN0b3Io
c2NhbGVGYWN0b3IpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vaW9z
L0FjY2Vzc2liaWxpdHlJT1MuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2lvcy9BY2Nlc3Np
YmlsaXR5SU9TLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzM0YmY2Y2U0MGRiODNiYTUwNWViOTZhNzdmYTBmMDkx
ODg2YWVjNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2lvcy9B
Y2Nlc3NpYmlsaXR5SU9TLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBOU0RhdGE7CitPQkpDX0NMQVNTIE5TVVVJ
RDsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1JldGFpblB0cjxOU0RhdGE+IGNyZWF0ZUFjY2Vz
c2liaWxpdHlSZW1vdGVUb2tlbihOU1VVSUQgKik7CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vaW9zL0FjY2Vzc2liaWxpdHlJT1Mu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9pb3MvQWNjZXNzaWJpbGl0eUlPUy5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yODhlNDI2MjY3OTZkNjVhOGNkNTY2ZTI2NDliZWY5NTA3NjFhZDc0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vaW9zL0FjY2Vzc2liaWxpdHlJT1Mu
bW0KQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2lt
cG9ydCAiQWNjZXNzaWJpbGl0eUlPUy5oIgorCisjaWYgUExBVEZPUk0oSU9TKQorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlQWNjZXNzaWJpbGl0eVJlbW90
ZVRva2VuKE5TVVVJRCAqdXVpZCkKK3sKKyAgICBpZiAoIXV1aWQpCisgICAgICAgIHJldHVybiBu
aWw7CisgICAgcmV0dXJuIFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmpl
Y3Q6QHsgQCJheC1waWQiIDogQChnZXRwaWQoKSksIEAiYXgtdXVpZCIgOiBbdXVpZCBVVUlEU3Ry
aW5nXSwgQCJheC1yZWdpc3RlciIgOiBAWUVTIH1dOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oCmluZGV4IDFjMDhhZDIwMTU5Njk0MDZiODgy
ZDFiMWZjM2UyMGZkN2NlMjI3NTguLjdjODkzYmM5YTQ2MzkxNTU4YmRhY2IxMzZhZDRjZmQ1Yzhh
ZjIwMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc0Rl
ZmluaXRpb25zLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVm
aW5pdGlvbnMuaApAQCAtNTUsNyArNTUsNyBAQAogI2RlZmluZSBERUZBVUxUX1RFWFRfQVJFQVNf
QVJFX1JFU0laQUJMRSBmYWxzZQogI2RlZmluZSBERUZBVUxUX0pBVkFTQ1JJUFRfQ0FOX09QRU5f
V0lORE9XU19BVVRPTUFUSUNBTExZIGZhbHNlCiAjZGVmaW5lIERFRkFVTFRfU0hPVUxEX1JFU1BF
Q1RfSU1BR0VfT1JJRU5UQVRJT04gdHJ1ZQotI2RlZmluZSBERUZBVUxUX01JTklNVU1fRk9OVF9a
T09NX1NJWkUgV0tHZXRNaW5pbXVtWm9vbUZvbnRTaXplKCkKKyNkZWZpbmUgREVGQVVMVF9NSU5J
TVVNX0ZPTlRfWk9PTV9TSVpFIFdlYkNvcmU6OlNldHRpbmdzOjpkZWZhdWx0TWluaW11bVpvb21G
b250U2l6ZSgpCiAjZGVmaW5lIERFRkFVTFRfUEFTU1dPUkRfRUNIT19FTkFCTEVEIHRydWUKICNk
ZWZpbmUgREVGQVVMVF9BTExPV1NfSU5MSU5FX01FRElBX1BMQVlCQUNLIGZhbHNlCiAjZGVmaW5l
IERFRkFVTFRfSU5MSU5FX01FRElBX1BMQVlCQUNLX1JFUVVJUkVTX1BMQVlTX0lOTElORV9BVFRS
SUJVVEUgdHJ1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVu
Y2VzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUu
Y3BwCmluZGV4IGIxZDRlM2UwYmFhYWM0OTVhYjBiZjFlYzg5ZDUzOTQ5NjIxN2IwODUuLmNjMjRk
ZDg2NzkwMmVmODM1MGRlYjVkMzUyMWY0NmJlZWFlZTFmMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHAKQEAgLTMzLDEwICszMyw2IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9UZXh0RW5jb2RpbmdSZWdpc3RyeS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQotI2ltcG9ydCA8V2ViS2l0U3lzdGVt
SW50ZXJmYWNlSU9TLmg+Ci0jZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQppbmRleCA1YzlmNmM0NzJkZjIzMTdlYTJiMWQ5ZGRhNWU1ZjUwYjhkYjRl
MmYwLi4xOGRlOWJjY2U5Mjk1ZjRiYjlhNWJmYzMyODA1YWQxYjU2NDg3NTNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTA0LDYg
KzEwNCw3IEBACiAjaW1wb3J0ICJXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCIKICNp
bXBvcnQgPFVJS2l0L1VJQXBwbGljYXRpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29yZUdyYXBo
aWNzU1BJLmg+CisjaW1wb3J0IDxXZWJDb3JlL0R5bmFtaWNMaW5rZXJTUEkuaD4KICNpbXBvcnQg
PFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9JbnNwZWN0b3JP
dmVybGF5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1F1YXJ0ekNvcmVTUEkuaD4KQEAgLTI4MCw3ICsy
ODEsNyBAQCAtIChCT09MKV9tYXlBdXRvbWF0aWNhbGx5U2hvd1ZpZGVvUGljdHVyZUluUGljdHVy
ZQogCiBzdGF0aWMgYm9vbCBzaG91bGRBbGxvd1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNr
KCkKIHsKLSAgICBzdGF0aWMgYm9vbCBzaG91bGRBbGxvd1BpY3R1cmVJblBpY3R1cmVNZWRpYVBs
YXliYWNrID0gaW9zRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JBZnRlclZlcnNpb24od2tJT1NTeXN0
ZW1WZXJzaW9uXzlfMCk7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkQWxsb3dQaWN0dXJlSW5QaWN0
dXJlTWVkaWFQbGF5YmFjayA9IGR5bGRfZ2V0X3Byb2dyYW1fc2RrX3ZlcnNpb24oKSA+PSBEWUxE
X0lPU19WRVJTSU9OXzlfMDsKICAgICByZXR1cm4gc2hvdWxkQWxsb3dQaWN0dXJlSW5QaWN0dXJl
TWVkaWFQbGF5YmFjazsKIH0KIApAQCAtMTEzNiw3ICsxMTM3LDcgQEAgLSAodm9pZClfcmVzdG9y
ZVBhZ2VTdGF0ZVRvVW5vYnNjdXJlZENlbnRlcjooV2ViQ29yZTo6RmxvYXRQb2ludCljZW50ZXIg
c2NhbGU6KGQKIAogLSAoUGFzc1JlZlB0cjxXZWJLaXQ6OlZpZXdTbmFwc2hvdD4pX3Rha2VWaWV3
U25hcHNob3QKIHsKLSAgICBmbG9hdCBkZXZpY2VTY2FsZSA9IFdLR2V0U2NyZWVuU2NhbGVGYWN0
b3IoKTsKKyAgICBmbG9hdCBkZXZpY2VTY2FsZSA9IFdlYkNvcmU6OnNjcmVlblNjYWxlRmFjdG9y
KCk7CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIHNuYXBzaG90U2l6ZShzZWxmLmJvdW5kcy5zaXpl
KTsKICAgICBzbmFwc2hvdFNpemUuc2NhbGUoZGV2aWNlU2NhbGUsIGRldmljZVNjYWxlKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdD
b25maWd1cmF0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdDb25maWd1cmF0aW9uLm1tCmluZGV4IGY2NTdlMjQyNzRmNWIwMmQ0NGFjMWI1MmI1YTBl
ODcxMThmNDM1NmIuLjMzNzJkMDlmN2Y1YzQ1NjRlMDkzZGFmOTA0MjRiN2Q2ZDE5MDAzMGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KQEAgLTQwLDcgKzQwLDcgQEAKIAogI2lmIFBMQVRGT1JN
KElPUykKICNpbXBvcnQgIlVJS2l0U1BJLmgiCi0jaW1wb3J0ICJXZWJLaXRTeXN0ZW1JbnRlcmZh
Y2VJT1MuaCIKKyNpbXBvcnQgPFdlYkNvcmUvRGV2aWNlLmg+CiAjZW5kaWYKIAogdGVtcGxhdGU8
dHlwZW5hbWUgVD4gY2xhc3MgTGF6eUluaXRpYWxpemVkIHsKQEAgLTEwOSw3ICsxMDksNyBAQCAt
IChpbnN0YW5jZXR5cGUpaW5pdAogI2lmIFBMQVRGT1JNKElPUykKICAgICBfcmVxdWlyZXNVc2Vy
QWN0aW9uRm9yTWVkaWFQbGF5YmFjayA9IFlFUzsKICAgICBfYWxsb3dzUGljdHVyZUluUGljdHVy
ZU1lZGlhUGxheWJhY2sgPSBZRVM7Ci0gICAgX2FsbG93c0lubGluZU1lZGlhUGxheWJhY2sgPSBX
S0dldERldmljZUNsYXNzKCkgPT0gV0tEZXZpY2VDbGFzc2lQYWQ7CisgICAgX2FsbG93c0lubGlu
ZU1lZGlhUGxheWJhY2sgPSBXZWJDb3JlOjpkZXZpY2VDbGFzcygpID09IE1HRGV2aWNlQ2xhc3Np
UGFkOwogICAgIF9pbmxpbmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQbGF5c0lubGluZUF0dHJpYnV0
ZSA9ICFfYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjazsKICAgICBfbWVkaWFEYXRhTG9hZHNBdXRv
bWF0aWNhbGx5ID0gTk87CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlldy5tbQppbmRleCBiZDM0ZDQ1NjQ1NWIwMTQ3ODEwMmNlNmY4YTMxODE2YTdj
MzcyMGFiLi5kOTdkNTBmN2JlZDBlNDEwZmQwMjE2MzQ0MDJkZDZhNDRkN2Q1Y2IwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCkBAIC0yOSw2ICsy
OSw3IEBACiAjaWYgUExBVEZPUk0oSU9TKQogCiAjaW1wb3J0ICJBUElQYWdlQ29uZmlndXJhdGlv
bi5oIgorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUlPUy5oIgogI2ltcG9ydCAiQXBwbGljYXRpb25T
dGF0ZVRyYWNrZXIuaCIKICNpbXBvcnQgIlBhZ2VDbGllbnRJbXBsSU9TLmgiCiAjaW1wb3J0ICJS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5LmgiCkBAIC00NCw3ICs0NSw2IEBACiAjaW1w
b3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViRnJhbWVQcm94eS5oIgogI2lt
cG9ydCAiV2ViS2l0MkluaXRpYWxpemUuaCIKLSNpbXBvcnQgIldlYktpdFN5c3RlbUludGVyZmFj
ZUlPUy5oIgogI2ltcG9ydCAiV2ViUGFnZUdyb3VwLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUG9v
bC5oIgogI2ltcG9ydCAiV2ViU3lzdGVtSW50ZXJmYWNlLmgiCkBAIC01Myw2ICs1Myw3IEBACiAj
aW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9JbnNwZWN0b3JP
dmVybGF5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1F1YXJ0ekNvcmVTUEku
aD4KICNpbXBvcnQgPHd0Zi9DdXJyZW50VGltZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgpAQCAtMTg4LDcgKzE4OSw3IEBAIC0gKGluc3RhbmNldHlwZSlfY29tbW9uSW5pdGlhbGl6YXRp
b25XaXRoUHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByCiAKICAgICBfcGFn
ZSA9IHByb2Nlc3NQb29sLmNyZWF0ZVdlYlBhZ2UoKl9wYWdlQ2xpZW50LCBXVEY6Om1vdmUoY29u
ZmlndXJhdGlvbikpOwogICAgIF9wYWdlLT5pbml0aWFsaXplV2ViUGFnZSgpOwotICAgIF9wYWdl
LT5zZXRJbnRyaW5zaWNEZXZpY2VTY2FsZUZhY3RvcihXS0dldFNjYWxlRmFjdG9yRm9yU2NyZWVu
KFtVSVNjcmVlbiBtYWluU2NyZWVuXSkpOworICAgIF9wYWdlLT5zZXRJbnRyaW5zaWNEZXZpY2VT
Y2FsZUZhY3RvcihzY3JlZW5TY2FsZUZhY3RvcihbVUlTY3JlZW4gbWFpblNjcmVlbl0pKTsKICAg
ICBfcGFnZS0+c2V0VXNlRml4ZWRMYXlvdXQodHJ1ZSk7CiAgICAgX3BhZ2UtPnNldERlbGVnYXRl
c1Njcm9sbGluZyh0cnVlKTsKIApAQCAtNDE5LDcgKzQyMCw3IEBAIC0gKHZvaWQpX3dpbmRvd0Rp
ZE1vdmVUb1NjcmVlbk5vdGlmaWNhdGlvbjooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24K
IC0gKHZvaWQpX3VwZGF0ZUZvclNjcmVlbjooVUlTY3JlZW4gKilzY3JlZW4KIHsKICAgICBBU1NF
UlQoc2NyZWVuKTsKLSAgICBfcGFnZS0+c2V0SW50cmluc2ljRGV2aWNlU2NhbGVGYWN0b3IoV0tH
ZXRTY2FsZUZhY3RvckZvclNjcmVlbihzY3JlZW4pKTsKKyAgICBfcGFnZS0+c2V0SW50cmluc2lj
RGV2aWNlU2NhbGVGYWN0b3Ioc2NyZWVuU2NhbGVGYWN0b3Ioc2NyZWVuKSk7CiAgICAgW3NlbGYg
X2FjY2Vzc2liaWxpdHlSZWdpc3RlclVJUHJvY2Vzc1Rva2Vuc107CiB9CiAKQEAgLTQyOSwxNSAr
NDMwLDIzIEBAIC0gKHZvaWQpX3NldEFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW46KE5TRGF0
YSAqKWRhdGEKICAgICBbc2VsZiBfYWNjZXNzaWJpbGl0eVJlZ2lzdGVyVUlQcm9jZXNzVG9rZW5z
XTsKIH0KIAorc3RhdGljIHZvaWQgc3RvcmVBY2Nlc3NpYmlsaXR5UmVtb3RlQ29ubmVjdGlvbklu
Zm9ybWF0aW9uKGlkIGVsZW1lbnQsIHBpZF90IHBpZCwgbWFjaF9wb3J0X3Qgc2VuZFBvcnQsIE5T
VVVJRCAqdXVpZCkKK3sKKyAgICAvLyBUaGUgYWNjZXNzaWJpbGl0eSBidW5kbGUgbmVlZHMgdG8g
a25vdyB0aGUgdXVpZCwgcGlkIGFuZCBtYWNoX3BvcnQgdGhhdCB0aGlzIG9iamVjdCB3aWxsIHJl
ZmVyIHRvLgorICAgIG9iamNfc2V0QXNzb2NpYXRlZE9iamVjdChlbGVtZW50LCAodm9pZCopW0Ai
YXgtdXVpZCIgaGFzaF0sIHV1aWQsIE9CSkNfQVNTT0NJQVRJT05fUkVUQUlOX05PTkFUT01JQyk7
CisgICAgb2JqY19zZXRBc3NvY2lhdGVkT2JqZWN0KGVsZW1lbnQsICh2b2lkKilbQCJheC1waWQi
IGhhc2hdLCBAKHBpZCksIE9CSkNfQVNTT0NJQVRJT05fUkVUQUlOX05PTkFUT01JQyk7CisgICAg
b2JqY19zZXRBc3NvY2lhdGVkT2JqZWN0KGVsZW1lbnQsICh2b2lkKilbQCJheC1tYWNocG9ydCIg
aGFzaF0sIEAoc2VuZFBvcnQpLCBPQkpDX0FTU09DSUFUSU9OX1JFVEFJTl9OT05BVE9NSUMpOwor
fQorCiAtICh2b2lkKV9hY2Nlc3NpYmlsaXR5UmVnaXN0ZXJVSVByb2Nlc3NUb2tlbnMKIHsKLSAg
ICBSZXRhaW5QdHI8Q0ZVVUlEUmVmPiB1dWlkID0gYWRvcHRDRihDRlVVSURDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCkpOwotICAgIE5TRGF0YSAqcmVtb3RlRWxlbWVudFRva2VuID0gV0tBWFJl
bW90ZVRva2VuKHV1aWQuZ2V0KCkpOworICAgIGF1dG8gdXVpZCA9IGFkb3B0TlMoW1tOU1VVSUQg
YWxsb2NdIGluaXRdKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiByZW1vdGVFbGVtZW50VG9rZW4g
PSBjcmVhdGVBY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW4odXVpZC5nZXQoKSk7CiAKICAgICAvLyBT
dG9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgV2ViUHJvY2VzcyB0aGF0IGNhbiBsYXRlciBiZSBy
ZXRyaWV2ZWQgYnkgdGhlIGlPUyBBY2Nlc3NpYmlsaXR5IHJ1bnRpbWUuCiAgICAgaWYgKF9wYWdl
LT5wcm9jZXNzKCkuc3RhdGUoKSA9PSBXZWJQcm9jZXNzUHJveHk6OlN0YXRlOjpSdW5uaW5nKSB7
CiAgICAgICAgIElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiA9IF9wYWdlLT5wcm9jZXNzKCku
Y29ubmVjdGlvbigpOwotICAgICAgICBXS0FYU3RvcmVSZW1vdGVDb25uZWN0aW9uSW5mb3JtYXRp
b24oc2VsZiwgX3BhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzSWRlbnRpZmllcigpLCBjb25uZWN0aW9u
LT5pZGVudGlmaWVyKCkucG9ydCwgdXVpZC5nZXQoKSk7CisgICAgICAgIHN0b3JlQWNjZXNzaWJp
bGl0eVJlbW90ZUNvbm5lY3Rpb25JbmZvcm1hdGlvbihzZWxmLCBfcGFnZS0+cHJvY2VzcygpLnBy
b2Nlc3NJZGVudGlmaWVyKCksIGNvbm5lY3Rpb24tPmlkZW50aWZpZXIoKS5wb3J0LCB1dWlkLmdl
dCgpKTsKIAogICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZWxlbWVudFRva2VuID0gSVBDOjpE
YXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtyZW1vdGVFbGVt
ZW50VG9rZW4gYnl0ZXNdKSwgW3JlbW90ZUVsZW1lbnRUb2tlbiBsZW5ndGhdKTsKICAgICAgICAg
X3BhZ2UtPnJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VucyhlbGVtZW50VG9rZW4s
IGVsZW1lbnRUb2tlbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDBjOGM5YTdkNDg4ZTRiZjE1NzUx
ZDYzNjkwM2Y4YjJiYTM2OGMyYTguLjk3MDE2ZWVmYTg4MDI4MWMxMjQ0ZWZlOThjOTgyYzMwZDFm
MjIyOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC03MSw3ICs3MSw2IEBACiAjaW1wb3J0IDxXZWJD
b3JlL1RleHRJbmRpY2F0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViRXZlbnQuaD4KICNpbXBv
cnQgPFdlYktpdC9XZWJTZWxlY3Rpb25SZWN0Lmg+IC8vIEZJWE1FOiBXSzIgc2hvdWxkIG5vdCBp
bmNsdWRlIFdlYktpdCBoZWFkZXJzIQotI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlSU9T
Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIEBpbnRlcmZhY2UgVUlFdmVudChVSUV2
ZW50SW50ZXJuYWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dl
YlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVBy
b3h5SU9TLm1tCmluZGV4IDIxZDNjODc5MjE0NDM4NGFlYzVlMmRjZGY2NzYzZGMwMjFlNGQ0OGIu
Ljc2Njc1MTRlNjUzMzQ4MmQzZTNhZTg4YTg5Y2U5ODZkNjU5ODQ1Y2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC00MCwxMiArNDAs
MTIgQEAKICNpbXBvcnQgIlVzZXJEYXRhLmgiCiAjaW1wb3J0ICJWaWV3VXBkYXRlRGlzcGF0Y2hl
ck1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJJbnRlcm5h
bC5oIgotI2ltcG9ydCAiV2ViS2l0U3lzdGVtSW50ZXJmYWNlSU9TLmgiCiAjaW1wb3J0ICJXZWJQ
YWdlTWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9ydCAiV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgiCiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmll
dy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9QbGF0Zm9ybVNjcmVlbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNp
bXBvcnQgPFdlYkNvcmUvVXNlckFnZW50Lmg+CiAKQEAgLTc2NSwxNyArNzY1LDE3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpibHVyQXNzaXN0ZWROb2RlKCkKIAogRmxvYXRTaXplIFdlYlBhZ2VQcm94
eTo6c2NyZWVuU2l6ZSgpCiB7Ci0gICAgcmV0dXJuIEZsb2F0U2l6ZShXS0dldFNjcmVlblNpemUo
KSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OnNjcmVlblNpemUoKTsKIH0KIAogRmxvYXRTaXplIFdl
YlBhZ2VQcm94eTo6YXZhaWxhYmxlU2NyZWVuU2l6ZSgpCiB7Ci0gICAgcmV0dXJuIEZsb2F0U2l6
ZShXS0dldEF2YWlsYWJsZVNjcmVlblNpemUoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmF2YWls
YWJsZVNjcmVlblNpemUoKTsKIH0KICAgICAKIGZsb2F0IFdlYlBhZ2VQcm94eTo6dGV4dEF1dG9z
aXppbmdXaWR0aCgpCiB7Ci0gICAgcmV0dXJuIFdLR2V0U2NyZWVuU2l6ZSgpLndpZHRoOworICAg
IHJldHVybiBXZWJDb3JlOjpzY3JlZW5TaXplKCkud2lkdGgoKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OmR5bmFtaWNWaWV3cG9ydFVwZGF0ZUNoYW5nZWRUYXJnZXQoZG91YmxlIG5ld1NjYWxl
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBuZXdTY3JvbGxQb3NpdGlvbiwgdWludDY0X3Qg
ZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZUlEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDBhYWE2ZjY4ZGZjNGI4ZDA2NWU1MjEw
MmNkZWYzZWExODIyZjkxMGMuLjVkZWM0NzA5YmRkZDRiMzgyNmY0YTU1OGYwNDE0NmQ0OGMzMmNh
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTEyMzYsNiArMTIzNiw4IEBACiAJCUExMThBOUVGMTkwN0FENkYwMEY3QzkyQiAv
KiBRdWlja0xvb2tEb2N1bWVudERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExMThBOUVEMTkwN0FENkYwMEY3QzkyQiAvKiBRdWlja0xvb2tEb2N1
bWVudERhdGEuaCAqLzsgfTsKIAkJQTExOEE5RjIxOTA4QjhFQTAwRjdDOTJCIC8qIF9XS05TRmls
ZU1hbmFnZXJFeHRyYXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMTE4QTlGMDE5MDhCOEVBMDBGN0M5MkIgLyogX1dLTlNGaWxlTWFuYWdlckV4dHJh
cy5tbSAqLzsgfTsKIAkJQTExOEE5RjMxOTA4QjhFQTAwRjdDOTJCIC8qIF9XS05TRmlsZU1hbmFn
ZXJFeHRyYXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExMThBOUYxMTkwOEI4RUEwMEY3QzkyQiAvKiBfV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTE4MkQ1QjQx
QkU2QkQyNTAwODdBN0NDIC8qIEFjY2Vzc2liaWxpdHlJT1MubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTgyRDVCMjFCRTZCRDI1MDA4N0E3Q0MgLyog
QWNjZXNzaWJpbGl0eUlPUy5tbSAqLzsgfTsKKwkJQTE4MkQ1QjUxQkU2QkQyNTAwODdBN0NDIC8q
IEFjY2Vzc2liaWxpdHlJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExODJENUIzMUJFNkJEMjUwMDg3QTdDQyAvKiBBY2Nlc3NpYmlsaXR5SU9TLmgg
Ki87IH07CiAJCUExQTRGRTVBMThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9hZC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFBNEZFNTcxOERDRTlG
QTAwQjVFQThBIC8qIF9XS0Rvd25sb2FkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTFBNEZFNUIxOERDRTlGQTAwQjVFQThBIC8qIF9XS0Rvd25s
b2FkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFB
NEZFNTgxOERDRTlGQTAwQjVFQThBIC8qIF9XS0Rvd25sb2FkLm1tICovOyB9OwogCQlBMUE0RkU1
QzE4RENFOUZBMDBCNUVBOEEgLyogX1dLRG93bmxvYWRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFBNEZFNTkxOERDRTlGQTAwQjVFQThB
IC8qIF9XS0Rvd25sb2FkSW50ZXJuYWwuaCAqLzsgfTsKQEAgLTM0NjAsNiArMzQ2Miw4IEBACiAJ
CUExMThBOUVEMTkwN0FENkYwMEY3QzkyQiAvKiBRdWlja0xvb2tEb2N1bWVudERhdGEuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUXVpY2tMb29rRG9jdW1lbnREYXRhLmg7IHBh
dGggPSBpb3MvUXVpY2tMb29rRG9jdW1lbnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUExMThBOUYwMTkwOEI4RUEwMEY3QzkyQiAvKiBfV0tOU0ZpbGVNYW5hZ2VyRXh0cmFz
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLTlNGaWxlTWFu
YWdlckV4dHJhcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTExOEE5RjExOTA4
QjhFQTAwRjdDOTJCIC8qIF9XS05TRmlsZU1hbmFnZXJFeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBMTgyRDVCMjFCRTZCRDI1MDA4N0E3Q0MgLyogQWNjZXNzaWJpbGl0
eUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFjY2Vzc2li
aWxpdHlJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExODJENUIzMUJFNkJE
MjUwMDg3QTdDQyAvKiBBY2Nlc3NpYmlsaXR5SU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTFBNEZFNTcxOERDRTlGQTAwQjVFQThBIC8qIF9XS0Rvd25sb2FkLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0Rvd25sb2FkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUExQTRGRTU4MThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9hZC5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0Rvd25sb2FkLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUE0RkU1OTE4RENFOUZBMDBCNUVBOEEgLyogX1dL
RG93bmxvYWRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tE
b3dubG9hZEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01OTU4LDYg
KzU5NjIsMTUgQEAKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwog
CQl9OworCQlBMTgyRDVCMTFCRTZCQ0Y0MDA4N0E3Q0MgLyogaW9zICovID0geworCQkJaXNhID0g
UEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlBMTgyRDVCMzFCRTZCRDI1MDA4N0E3Q0Mg
LyogQWNjZXNzaWJpbGl0eUlPUy5oICovLAorCQkJCUExODJENUIyMUJFNkJEMjUwMDg3QTdDQyAv
KiBBY2Nlc3NpYmlsaXR5SU9TLm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBpb3M7CisJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlBNzhDQ0RENTE5M0FDOUUzMDA1RUNDMjUgLyog
U2FuZGJveFByb2ZpbGVzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKQEAgLTY3MzEsNiArNjc0NCw3IEBACiAJCQkJMUFBMkU1MUExMkU0QzA1NjAwQkM0OTY2IC8q
IGNnICovLAogCQkJCTM3MDk1MDQyMThBODhDREUwMDg3QUU1RCAvKiBmb3VuZGF0aW9uICovLAog
CQkJCTFBRTAwRDY4MTgzMjdDMTIwMDA4N0RENyAvKiBJUEMgKi8sCisJCQkJQTE4MkQ1QjExQkU2
QkNGNDAwODdBN0NDIC8qIGlvcyAqLywKIAkJCQkxQTdFODE0RTExNTJEMjI0MDAwMzY5NUIgLyog
bWFjICovLAogCQkJCUNFMUEwQkNBMUE0OEU2QzYwMDU0RUY3NCAvKiBzcGkgKi8sCiAJCQkJNTFC
MTVBN0QxMzg0MzlCMjAwMzIxQUQ4IC8qIHVuaXggKi8sCkBAIC04MTQ4LDYgKzgxNjIsNyBAQAog
CQkJCTM3NjA4ODFGMTUwNDEzRTkwMEZDODJDNyAvKiBXZWJSZW5kZXJPYmplY3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxMEFGRkJBMTY1NDIwNDgwMDFCQTA1RSAvKiBXZWJSZXNvdXJjZUxvYWRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGMDYwRTAxNjU0MzE3RjAwRjMyODFCIC8qIFdlYlJl
c291cmNlTG9hZGVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUExODJENUI1MUJFNkJE
MjUwMDg3QTdDQyAvKiBBY2Nlc3NpYmlsaXR5SU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzM2
MUQ3MzE5MjdGQTM2MDAzNkE1OUQgLyogV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUQzQjk0ODQ5MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1l
bnUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNDgzMkQ3MUE5Q0RGOTYwMDhCNERGRSAvKiBXZWJz
aXRlRGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC05NDgwLDYgKzk0OTUsNyBAQAogCQkJCTFBQzEz
MzZFMTg1NjVEMkIwMEYzRUMwNSAvKiBBUElQYWdlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTdDRTREMjFGMUE0OTE0Q0EwMEM3RjE1MiAvKiBBUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkVEM0MxREMxQjQ0N0VBQzAwRTBFQjdGIC8qIEFQ
SVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQTE4MkQ1
QjQxQkU2QkQyNTAwODdBN0NDIC8qIEFjY2Vzc2liaWxpdHlJT1MubW0gaW4gU291cmNlcyAqLywK
IAkJCQk3NUE4RDJFMjE4N0RFQzFFMDBDMzlDOUUgLyogQVBJU2Vzc2lvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQUZERTY2MTE5NTRFOUIxMDBDNDhGRkEgLyogQVBJU2Vzc2lvblN0YXRlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDRTIzMTVFMTIyQzMwQ0EwMEQ1QzM1QSAvKiBBUElVUkxS
ZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNl
Lm1tCmluZGV4IGRjZTI1NzRkYjM1ZDE3MTQ2M2Y4NzJjZDA4ZjQ1MDgyOTYyNzJjMjEuLjAzZjI4
ODIzMDIxMTM2ZmUwOGRkMmY3M2M1NGFiYjM1ZjMzYjhlOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJT
eXN0ZW1JbnRlcmZhY2UubW0KQEAgLTE1MSwyOCArMTUxLDExIEBAIHZvaWQgSW5pdFdlYkNvcmVT
eXN0ZW1JbnRlcmZhY2Uodm9pZCkKIAogICAgICAgICBJTklUKENGVVJMUmVxdWVzdEFsbG93QWxs
UG9zdENhY2hpbmcpOwogCi0jaWYgUExBVEZPUk0oSU9TKQotICAgICAgICBJTklUKEdldFVzZXJB
Z2VudCk7Ci0gICAgICAgIElOSVQoR2V0RGV2aWNlTmFtZSk7Ci0gICAgICAgIElOSVQoR2V0T1NO
YW1lRm9yVXNlckFnZW50KTsKLSAgICAgICAgSU5JVChHZXRQbGF0Zm9ybU5hbWVGb3JOYXZpZ2F0
b3IpOwotICAgICAgICBJTklUKEdldFZlbmRvck5hbWVGb3JOYXZpZ2F0b3IpOwotI2VuZGlmCi0K
ICNpZiAhUExBVEZPUk0oSU9TKQogICAgICAgICBJTklUKE5TRWxhc3RpY0RlbHRhRm9yVGltZURl
bHRhKTsKICAgICAgICAgSU5JVChOU0VsYXN0aWNEZWx0YUZvclJlYm91bmREZWx0YSk7CiAgICAg
ICAgIElOSVQoTlNSZWJvdW5kRGVsdGFGb3JFbGFzdGljRGVsdGEpOwogI2VuZGlmCi0jaWYgUExB
VEZPUk0oSU9TKQotICAgICAgICBJTklUKEV4ZWN1dGFibGVXYXNMaW5rZWRPbk9yQWZ0ZXJJT1NW
ZXJzaW9uKTsKLSAgICAgICAgSU5JVChHZXREZXZpY2VDbGFzcyk7Ci0gICAgICAgIElOSVQoR2V0
U2NyZWVuU2l6ZSk7Ci0gICAgICAgIElOSVQoR2V0QXZhaWxhYmxlU2NyZWVuU2l6ZSk7Ci0gICAg
ICAgIElOSVQoR2V0U2NyZWVuU2NhbGVGYWN0b3IpOwotICAgICAgICBJTklUKElzR0IxODAzMENv
bXBsaWFuY2VSZXF1aXJlZCk7Ci0gICAgICAgIElOSVQoSXNPcHRpbWl6ZWRGdWxsc2NyZWVuU3Vw
cG9ydGVkKTsKLSNlbmRpZgogCiAjaWYgRU5BQkxFKFBVQkxJQ19TVUZGSVhfTElTVCkKICAgICAg
ICAgSU5JVChJc1B1YmxpY1N1ZmZpeCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggNWM5OGI2MmE3MmY5YTA3N2I3NTg1
Yzg3NGNkNjBkNjA3YmM2MjAzMC4uOWZlZTQ4OTQ5Mzk5MzdhM2Y0YTM0NWVmNzhkMGI0YzY5YTc5
ODgyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgUExBVEZPUk0oSU9TKQogCisj
aW1wb3J0ICJBY2Nlc3NpYmlsaXR5SU9TLmgiCiAjaW1wb3J0ICJBc3Npc3RlZE5vZGVJbmZvcm1h
dGlvbi5oIgogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiRHJhd2luZ0FyZWEu
aCIKQEAgLTQ1LDcgKzQ2LDYgQEAKICNpbXBvcnQgIldlYkZyYW1lLmgiCiAjaW1wb3J0ICJXZWJJ
bWFnZS5oIgogI2ltcG9ydCAiV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgiCi0jaW1wb3J0ICJXZWJL
aXRTeXN0ZW1JbnRlcmZhY2VJT1MuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgi
CiAjaW1wb3J0ICJXZWJQcm9jZXNzLmgiCiAjaW1wb3J0IDxDb3JlVGV4dC9DVEZvbnQuaD4KQEAg
LTExOSw4ICsxMTksOCBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZUFjY2Vzc2li
aWxpdHkoKQogICAgIG1fbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50ID0gYWRvcHROUyhbW1dLQWNj
ZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QgYWxsb2NdIGluaXRdKTsKICAgICBbbV9tb2NrQWNjZXNz
aWJpbGl0eUVsZW1lbnQgc2V0V2ViUGFnZTp0aGlzXTsKICAgICAKLSAgICBSZXRhaW5QdHI8Q0ZV
VUlEUmVmPiB1dWlkID0gYWRvcHRDRihDRlVVSURDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCkp
OwotICAgIE5TRGF0YSAqcmVtb3RlVG9rZW4gPSBXS0FYUmVtb3RlVG9rZW4odXVpZC5nZXQoKSk7
CisgICAgYXV0byB1dWlkID0gYWRvcHROUyhbW05TVVVJRCBhbGxvY10gaW5pdF0pOworICAgIFJl
dGFpblB0cjxOU0RhdGE+IHJlbW90ZVRva2VuID0gY3JlYXRlQWNjZXNzaWJpbGl0eVJlbW90ZVRv
a2VuKHV1aWQuZ2V0KCkpOwogICAgIAogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhVG9rZW4g
PSBJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oW3Jl
bW90ZVRva2VuIGJ5dGVzXSksIFtyZW1vdGVUb2tlbiBsZW5ndGhdKTsKICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihk
YXRhVG9rZW4pKTsK
</data>
<flag name="review"
          id="289670"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>