<?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>206096</bug_id>
          
          <creation_ts>2020-01-10 14:38:47 -0800</creation_ts>
          <short_desc>Remove old iOS version macros</short_desc>
          <delta_ts>2020-07-15 06:57:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=206634</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=206719</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=206786</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=206787</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=206838</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=206841</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=206905</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>krollin</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1605308</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-01-10 14:38:47 -0800</bug_when>
    <thetext>We have a handful of old iOS 11 and 12 macros which should be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605312</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-10 14:41:11 -0800</bug_when>
    <thetext>&lt;rdar://problem/58491675&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605373</commentid>
    <comment_count>2</comment_count>
      <attachid>387391</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-01-10 16:14:26 -0800</bug_when>
    <thetext>Created attachment 387391
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605396</commentid>
    <comment_count>3</comment_count>
      <attachid>387391</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-01-10 16:45:07 -0800</bug_when>
    <thetext>Comment on attachment 387391
Patch

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

&gt; Source/WTF/wtf/FeatureDefines.h:181
&gt; +#if !PLATFORM(WATCHOS) &amp;&amp; !PLATFORM(APPLETV) &amp;&amp; !PLATFORM(MACCATALYST)

This can simplify to just PLATFORM(IOS)

&gt; Source/WTF/wtf/Platform.h:1620
&gt; +#if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101400) || PLATFORM(IOS) || PLATFORM(WATCHOS) || PLATFORM(APPLETV)

I *think* this is wrong and should be IOS_FAMILY (right now it seemingly-wrongly excludes ONLY macCatalyst)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605429</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-01-10 17:26:59 -0800</bug_when>
    <thetext>&gt; I *think* this is wrong and should be IOS_FAMILY (right now it seemingly-wrongly excludes ONLY macCatalyst)

That should be a separate patch of course.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605436</commentid>
    <comment_count>5</comment_count>
      <attachid>387405</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-01-10 17:35:33 -0800</bug_when>
    <thetext>Created attachment 387405
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605916</commentid>
    <comment_count>6</comment_count>
      <attachid>387405</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-01-13 10:03:22 -0800</bug_when>
    <thetext>Comment on attachment 387405
Patch

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

&gt; Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h:216
&gt; -#if PLATFORM(MAC) || (PLATFORM(IOS_FAMILY) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &gt;= 110000)
&gt; +#if PLATFORM(MAC) || PLATFORM(IOS_FAMILY)

I don&apos;t think that this is a no-op. Isn&apos;t __IPHONE_OS_VERSION_MIN_REQUIRED frozen at a lower number on watchOS and tvOS? I think that this is actually &quot;Mac or iOS or macCatalyst&quot;.

This change may or may not be desirable, but this patch shouldn&apos;t change behavior of course.

Really, all these things should be in Platform.h, not inline. It seems OK to leave those that will go away soon, but those that encode decisions like excluding watchOS and tvOS should be centralized. It is a lot of work, so I don&apos;t want to block this patch on it, but it would be a substantial improvement.

&gt; Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:285
&gt; -#if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101400) || (PLATFORM(IOS_FAMILY) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &gt;= 120000)
&gt; +#if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101400) || PLATFORM(IOS_FAMILY)

Ditto.

&gt; Source/WebCore/PAL/pal/spi/ios/MediaPlayerSPI.h:-37
&gt; -#if __IPHONE_OS_VERSION_MIN_REQUIRED &gt;= 120000

Ditto. I stopped looking at this point, please check the rest of the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606168</commentid>
    <comment_count>7</comment_count>
      <attachid>387601</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-01-13 17:45:05 -0800</bug_when>
    <thetext>Created attachment 387601
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606406</commentid>
    <comment_count>8</comment_count>
      <attachid>387659</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-01-14 08:24:12 -0800</bug_when>
    <thetext>Created attachment 387659
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606455</commentid>
    <comment_count>9</comment_count>
      <attachid>387659</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-01-14 09:56:30 -0800</bug_when>
    <thetext>Comment on attachment 387659
Patch

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

&gt; Tools/Scripts/webkitpy/port/image_diff.py:61
&gt; +            print(&apos;    Comparing {} vs {}&apos;.formt(len(actual_contents), len(expected_contents)))

typo: formt

This breaks layout-tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606457</commentid>
    <comment_count>10</comment_count>
      <attachid>387670</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-01-14 10:04:55 -0800</bug_when>
    <thetext>Created attachment 387670
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606458</commentid>
    <comment_count>11</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-01-14 10:06:01 -0800</bug_when>
    <thetext>(In reply to Aakash Jain from comment #9)
&gt; Comment on attachment 387659 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=387659&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/port/image_diff.py:61
&gt; &gt; +            print(&apos;    Comparing {} vs {}&apos;.formt(len(actual_contents), len(expected_contents)))
&gt; 
&gt; typo: formt
&gt; 
&gt; This breaks layout-tests.

Among other things, yes.

That&apos;s why I hadn&apos;t marked it for review. Far more worried about the building, actually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606477</commentid>
    <comment_count>12</comment_count>
      <attachid>387676</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-01-14 10:51:27 -0800</bug_when>
    <thetext>Created attachment 387676
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607686</commentid>
    <comment_count>13</comment_count>
      <attachid>387965</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-01-16 14:58:23 -0800</bug_when>
    <thetext>Created attachment 387965
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607687</commentid>
    <comment_count>14</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-01-16 14:59:06 -0800</bug_when>
    <thetext>(In reply to Jonathan Bedard from comment #13)
&gt; Created attachment 387965 [details]
&gt; Patch

Needed to rebase on some recent changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607872</commentid>
    <comment_count>15</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-01-16 22:07:29 -0800</bug_when>
    <thetext>The latest patch fails to build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608010</commentid>
    <comment_count>16</comment_count>
      <attachid>388042</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-01-17 08:37:55 -0800</bug_when>
    <thetext>Created attachment 388042
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608859</commentid>
    <comment_count>17</comment_count>
      <attachid>388042</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-01-20 14:11:58 -0800</bug_when>
    <thetext>Comment on attachment 388042
Patch

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

There are multiple places here where this patch got things backwards. Must fix those or we are changing behavior

Way too much to review all at once. This has to be done in smaller batches, because it’s so easy to get it wrong and so hard to spot mistakes. And it’s subtle, because getting this wrong often might just turn off some workaround or run a less efficient code path. It won’t always lead to a compilation failure or test failure, and even when it does it might be for a platform not on EWS.

Most of this refactoring ends up being about tvOS and watchOS, or about limitations of Catalyst. I think we should write these expressions so they specifically mention these platforms rather than having lines of code that mention the others in the iOS family. This makes it easier to ask the question &quot;is it right to have these be exceptions&quot;.

The counterargument is that there might be another iOS family member in the future that is more like watchOS and tvOS than it is like iOS and Catalyst. But I think a more important trend is all these platform converging to be more alike as the past differences go away, and so I think it’s best to list &quot;Cocoa minus the unusual cases&quot; in more places. I said &quot;Cocoa&quot; and not &quot;iOS family&quot; because I think this applies with Mac too, so we should write things like this:

#if PLATFORM(COCOA) &amp;&amp; !(PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 101400) &amp;&amp; !PLATFORM(WATCHOS) &amp;&amp; !PLATFORM(APPLETV)

This kind of &quot;listing exceptions to the norm/future&quot; is best for things that will eventually converge for all the Cocoa platforms, which is the case for a of these USE/ENABLE/HAVE things.

I ran out of steam after reviewing the first 3/4 of the patch, so didn’t make the similar comments on the last 1/4.

&gt; Source/WTF/wtf/PlatformEnable.h:211
&gt;  #if !defined(ENABLE_WKPDFVIEW)
&gt; -#if !PLATFORM(WATCHOS) &amp;&amp; !PLATFORM(APPLETV) &amp;&amp; !PLATFORM(MACCATALYST) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &gt;= 120000
&gt; +#if !PLATFORM(WATCHOS) &amp;&amp; !PLATFORM(APPLETV) &amp;&amp; !PLATFORM(MACCATALYST)
&gt;  #define ENABLE_WKPDFVIEW 1
&gt;  #endif
&gt;  #endif

How about just:

    #if PLATFORM(IOS)

instead? Like for ENABLE_PREVIEW_CONVERTER below.

As an aside, we have a style problem with this file. I don’t understand the use of nested #if, if we are using these blocks sometimes to set things to 0, other times leave them alone if the value should be 0. Either it’s this file’s job to set the value always to 0 or 1, or it’s this file’s job to only set things that need to be 1. If we’re supposed to set things to 0 or 1, then we need an #else on any nested #if. For example, for watchOS on this. But if we don’t then we should just write a single #if like this:

#if !defined(ENABLE_WKPDFVIEW) &amp;&amp; PLATFORM(IOS)
#define ENABLE_WKPDFVIEW 1
#endif

And we should delete all the ones that define a value of &quot;0&quot; or replace them with comments.

&gt; Source/WTF/wtf/PlatformEnable.h:1037
&gt; -#if !defined(ENABLE_MONOSPACE_FONT_EXCEPTION) &amp;&amp; ((PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 101500) || (PLATFORM(IOS_FAMILY) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &lt; 130000))
&gt; +#if !defined(ENABLE_MONOSPACE_FONT_EXCEPTION) &amp;&amp; ((PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 101500) || PLATFORM(IOS) || PLATFORM(MACCATALYST))

This change is backwards. The old code was false for iOS 13. The new code is true for iOS 13. A correct behavior-preserving refactoring would be:

#if !defined(ENABLE_MONOSPACE_FONT_EXCEPTION) &amp;&amp; ((PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 101500) || PLATFORM(WATCHOS) || PLATFORM(APPLETV))

On the other hand, I think it’s likely we don’t need this on the latest watchOS and tvOS. It would be good for someone to look into that, and remove those.

&gt; Source/WTF/wtf/PlatformHave.h:359
&gt; +#if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101500) || PLATFORM(IOS) || PLATFORM(MACCATALYST)
&gt;  #define HAVE_HSTS_STORAGE_PATH 1

This seems to be a behavior-preserving refactoring. But I would prefer it say this:

    #if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101500) || (PLATFORM(IOS_FAMILY) &amp;&amp; !PLATFORM(WATCHOS) &amp;&amp; !PLATFORM(APPLETV))

or this:

    #if PLATFORM(COCOA) &amp;&amp; !(PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 101500) &amp;&amp; !PLATFORM(WATCHOS) &amp;&amp; !PLATFORM(APPLETV)

I suspect this is incorrect for recent watchOS and tvOS; mentioning them explicitly could help us spot the mistake. But also I would like to come up with a good way to keep track of this as an outstanding item: checking whether this needs to be turned on for watchOS and tvOS.

&gt; Source/WTF/wtf/PlatformHave.h:446
&gt; +#if (PLATFORM(MAC) &amp;&amp; (__MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101400 &amp;&amp; __MAC_OS_X_VERSION_MAX_ALLOWED &gt;= 101404)) || PLATFORM(WATCHOS) || PLATFORM(APPLETV)
&gt;  #define HAVE_CFNETWORK_OVERRIDE_SESSION_COOKIE_ACCEPT_POLICY 1

This change is backwards. The old code was true for iOS 13. The new code is false for iOS 13. A correct behavior-preserving refactoring would be:

#if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101400 &amp;&amp; __MAC_OS_X_VERSION_MAX_ALLOWED &gt;= 101404) || PLATFORM(IOS_FAMILY)

or:

#if PLATFORM(COCOA) &amp;&amp; !(PLATFORM(MAC) &amp;&amp; !(__MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101400 &amp;&amp; __MAC_OS_X_VERSION_MAX_ALLOWED &gt;= 101404))

&gt; Source/WTF/wtf/PlatformHave.h:450
&gt; +#if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101500) || PLATFORM(IOS) || PLATFORM(MACCATALYST)
&gt;  #define HAVE_CFNETWORK_NSURLSESSION_STRICTRUSTEVALUATE 1

This seems to be a behavior-preserving refactoring. But I would prefer it say:

    #if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101500) || (PLATFORM(IOS_FAMILY) &amp;&amp; !PLATFORM(WATCHOS) &amp;&amp; !PLATFORM(APPLETV))

or:

    #if PLATFORM(COCOA) &amp;&amp; !(PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 101500) &amp;&amp; !PLATFORM(WATCHOS) &amp;&amp; !PLATFORM(APPLETV)

I suspect this is incorrect for recent watchOS and tvOS, and mentioning them explicitly could help us spot the mistake. But also I would like to come up with a good way to keep track of this as an outstanding item: checking whether this needs to be turned on for watchOS and tvOS.

&gt; Source/WTF/wtf/PlatformHave.h:474
&gt; +#if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101500) || PLATFORM(IOS) || PLATFORM(MACCATALYST)
&gt;  #define HAVE_MDNS_FAST_REGISTRATION 1

This seems to be a behavior-preserving refactoring. But I would prefer it say:

    #if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101500) || (PLATFORM(IOS_FAMILY) &amp;&amp; !PLATFORM(WATCHOS) &amp;&amp; !PLATFORM(APPLETV))

or:

    #if PLATFORM(COCOA) &amp;&amp; !(PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 101500) &amp;&amp; !PLATFORM(WATCHOS) &amp;&amp; !PLATFORM(APPLETV)

I suspect this is incorrect for recent watchOS and tvOS, and mentioning them explicitly could help us spot the mistake. But also I would like to come up with a good way to keep track of this as an outstanding item: checking whether this needs to be turned on for watchOS and tvOS.

&gt; Source/WTF/wtf/PlatformHave.h:482
&gt; +#if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101500) || PLATFORM(IOS) || PLATFORM(MACCATALYST)
&gt;  #define HAVE_CTFONTCREATEFORCHARACTERSWITHLANGUAGEANDOPTION 1

This seems to be a behavior-preserving refactoring. But I would prefer it say:

    #if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101500) || (PLATFORM(IOS_FAMILY) &amp;&amp; !PLATFORM(WATCHOS) &amp;&amp; !PLATFORM(APPLETV))

or:

    #if PLATFORM(COCOA) &amp;&amp; !(PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 101500) &amp;&amp; !PLATFORM(WATCHOS) &amp;&amp; !PLATFORM(APPLETV)

This will likely eventually be incorrect for recent watchOS and tvOS, and mentioning them explicitly could help us spot the mistake. But also I would like to come up with a good way to keep track of this as an outstanding item: checking whether this needs to be turned on for watchOS and tvOS.

&gt; Source/WTF/wtf/PlatformHave.h:486
&gt; +#if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101500) || PLATFORM(IOS) || PLATFORM(MACCATALYST)
&gt;  #define HAVE_CTFONTTRANSFORMGLYPHSWITHLANGUAGE 1

This seems to be a behavior-preserving refactoring. But I would prefer it say:

    #if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101500) || (PLATFORM(IOS_FAMILY) &amp;&amp; !PLATFORM(WATCHOS) &amp;&amp; !PLATFORM(APPLETV))

or:

    #if PLATFORM(COCOA) &amp;&amp; !(PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 101500) &amp;&amp; !PLATFORM(WATCHOS) &amp;&amp; !PLATFORM(APPLETV)

This will likely eventually be incorrect for recent watchOS and tvOS, and mentioning them explicitly could help us spot the mistake. But also I would like to come up with a good way to keep track of this as an outstanding item: checking whether this needs to be turned on for watchOS and tvOS.

&gt; Source/WTF/wtf/PlatformHave.h:514
&gt; +#if PLATFORM(IOS) || PLATFORM(WATCHOS) || PLATFORM(APPLETV)
&gt;  #define HAVE_UI_SCROLL_VIEW_INDICATOR_FLASHING_SPI 1

This seems to be a behavior-preserving refactoring. But is it correct that we don’t have this in Catalyst? To emphasize this I think we should instead write:

    #if PLATFORM(IOS_FAMILY) &amp;&amp; !PLATFORM(MACCATALYST)

And figure out a way to get someone to follow up and figure out if this is correct.

&gt; Source/WTF/wtf/PlatformHave.h:518
&gt; +#if PLATFORM(IOS) || PLATFORM(WATCHOS) || PLATFORM(APPLETV)
&gt;  #define HAVE_APP_LINKS_WITH_ISENABLED 1

This seems to be a behavior-preserving refactoring. But is it correct that we don’t have this in Catalyst? To emphasize this I think we should instead write:

    #if PLATFORM(IOS_FAMILY) &amp;&amp; !PLATFORM(MACCATALYST)

And figure out a way to get someone to follow up and figure out if this is correct.

&gt; Source/WTF/wtf/PlatformHave.h:522
&gt; +#if PLATFORM(IOS)
&gt;  #define HAVE_ROUTE_SHARING_POLICY_LONG_FORM_VIDEO 1

This seems to be a behavior-preserving refactoring.

But it’s factually incorrect. We have this on recent versions of watchOS and tvOS. Not sure about Catalyst. I think we probably have this on all versions of all the iOS family that we currently support. Most likely, the correct change after a bit of research is to remove this entirely and make the code guarded by it unconditional.

&gt; Source/WTF/wtf/PlatformHave.h:529
&gt; +#if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101500) || PLATFORM(IOS_FAMILY)

A better way to write this might be:

    #if PLATFORM(COCOA) &amp;&amp; !(PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 101500)

&gt; Source/WTF/wtf/PlatformHave.h:534
&gt; +#if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101500) || PLATFORM(IOS) || PLATFORM(WATCHOS) || PLATFORM(APPLETV)
&gt;  #define HAVE_AVPLAYER_RESOURCE_CONSERVATION_LEVEL 1

This seems to be a behavior-preserving refactoring. But is it correct that we don’t have this in Catalyst? To emphasize this I think we should instead write:

    #if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101500) || (PLATFORM(IOS_FAMILY) &amp;&amp; !PLATFORM(MACCATALYST))

or:

    #if PLATFORM(COCOA) &amp;&amp; !(PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 101500) &amp;&amp; !PLATFORM(MACCATALYST)

And figure out a way to get someone to follow up and figure out if this is correct.

&gt; Source/WTF/wtf/PlatformHave.h:538
&gt; +#if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101400) || PLATFORM(IOS) || PLATFORM(WATCHOS) || PLATFORM(APPLETV)
&gt;  #define HAVE_CORETEXT_AUTO_OPTICAL_SIZING 1

This seems to be a behavior-preserving refactoring. But is it correct that we don’t have this in Catalyst? To emphasize this I think we should instead write:

    #if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101500) || (PLATFORM(IOS_FAMILY) &amp;&amp; !PLATFORM(MACCATALYST))

or:

    #if PLATFORM(COCOA) &amp;&amp; !(PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 101500) &amp;&amp; !PLATFORM(MACCATALYST))

And figure out a way to get someone to follow up and figure out if this is correct.

&gt; Source/WTF/wtf/PlatformHave.h:541
&gt; -#if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 101500) || (PLATFORM(IOS) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &lt; 130000)
&gt; +#if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 101500) || PLATFORM(IOS)

This change is backwards. The old code was false for iOS 13. The new code is true for iOS 13. A correct behavior-preserving refactoring would be to not mention anything in the iOS family:

#if PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 101500

&gt; Source/WTF/wtf/PlatformHave.h:549
&gt; +#if PLATFORM(IOS) || (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101500) || PLATFORM(WATCHOS) || PLATFORM(APPLETV) || PLATFORM(MACCATALYST)

This seems to be a behavior-preserving refactoring. But I suggest we use IOS_FAMILY:

    #if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101500) || PLATFORM(IOS_FAMILY)

or:

    #if PLATFORM(COCOA) &amp;&amp; !(PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 101500)

&gt; Source/WTF/wtf/PlatformHave.h:570
&gt; +#if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101500) || PLATFORM(IOS) || PLATFORM(WATCHOS) || PLATFORM(APPLETV)
&gt;  #define HAVE_DESIGN_SYSTEM_UI_FONTS 1

This seems to be a behavior-preserving refactoring. But is it correct that we don’t have this in Catalyst? To emphasize this I think we should instead write something more like this:

    #if PLATFORM(COCOA) &amp;&amp; !(PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 101500) &amp;&amp; !PLATFORM(MACCATALYST)

And also figure out a way to get someone to follow up and figure out if this is correct.

&gt; Source/WTF/wtf/PlatformUse.h:323
&gt; +#if PLATFORM(MAC) || PLATFORM(IOS_FAMILY)
&gt;  #define USE_PLATFORM_SYSTEM_FALLBACK_LIST 1

Could say PLATFORM(COCOA) instead of MAC || IOS_FAMILY.

Note also that many (most) of the uses of this are in Cocoa-specific source files, so we can/should get rid of any uses of it from those places.

&gt; Source/WebCore/PAL/pal/cocoa/AVFoundationSoftLink.mm:34
&gt; +#if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101500) || PLATFORM(IOS) || PLATFORM(MACCATALYST)
&gt;  SOFT_LINK_FRAMEWORK_FOR_SOURCE_WITH_EXPORT(PAL, AVFoundation, PAL_EXPORT)

This seems to be a behavior-preserving refactoring. But is it what we want for tvOS and watchOS? We should consider writing it this way:

    #if !(PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 101500) &amp;&amp; !PLATFORM(WATCHOS) &amp;&amp; !PLATFORM(APPLETV)

&gt; Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h:216
&gt; -#if PLATFORM(MAC) || (PLATFORM(IOS_FAMILY) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &gt;= 110000)
&gt; +#if PLATFORM(MAC) || PLATFORM(IOS) || PLATFORM(MACCATALYST)

This seems to be a behavior-preserving refactoring. But I think it is wrong for recent tvOS and watchOS. Not sure. And I would write it in a way that emphasizes these exceptions instead of listing everything normal:

    #if !PLATFORM(WATCHOS) &amp;&amp; !PLATFORM(APPLETV)

&gt; Source/WebCore/PAL/pal/spi/cocoa/IOSurfaceSPI.h:108
&gt; -#if __IPHONE_OS_VERSION_MIN_REQUIRED &lt; 110000
&gt; +#if PLATFORM(WATCHOS) || PLATFORM(APPLETV)
&gt;  typedef uint32_t IOSurfaceID;
&gt;  #endif

This is a behavior-preserving refactoring.

But code is definitely unneeded on recent tvOS and watchOS. It’s just harmless on any platform since it’s a typedef that exactly matches the header, and that’s always allowed and harmless. So it would be OK for this #if to say anything, 0, 1, any random set of platforms.

Better to remove this entirely

&gt; Source/WebCore/PAL/pal/spi/cocoa/NSKeyedArchiverSPI.h:32
&gt; +#define USE_SECURE_ARCHIVER_API (PLATFORM(MAC) || PLATFORM(IOS_FAMILY))

This is a behavior-preserving refactoring.

But this should be PLATFORM(COCOA) and maybe can be removed entirely since this is a Cocoa-specific header. If we were keeping it, we should move it to PlatformUse.h.

&gt; Source/WebCore/PAL/pal/spi/cocoa/NSKeyedArchiverSPI.h:34
&gt; +#define USE_SECURE_ARCHIVER_FOR_ATTRIBUTED_STRING (PLATFORM(MAC) || PLATFORM(IOS_FAMILY))

This is a behavior-preserving refactoring.

But this should be PLATFORM(COCOA) and maybe can be removed entirely since this is a Cocoa-specific header. If we were keeping it, we should move it to PlatformUse.h.

&gt; Source/WebCore/PAL/pal/spi/cocoa/NSProgressSPI.h:30
&gt; -#define USE_NSPROGRESS_PUBLISHING_SPI PLATFORM(IOS_FAMILY) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &lt; 130000
&gt; +#define USE_NSPROGRESS_PUBLISHING_SPI PLATFORM(IOS_FAMILY) &amp;&amp; (PLATFORM(WATCHOS) || PLATFORM(APPLETV))

This is incorrect. The old version was false for watchOS and tvOS and the new version is true.

The way this was written elsewhere in this patch was PLATFORM(IOS) || PLATFORM(MACCATALYST)

Another way to write it is PLATFORM(IOS_FAMILY) &amp;&amp; !PLATFORM(WATCHOS) &amp;&amp; !PLATFORM(APPLETV)

But not sure why we&apos;d choose something different here. Also, this belongs in PlatformUse.h, not in NSProgressSPI.h.

&gt; Source/WebCore/PAL/pal/spi/ios/MediaPlayerSPI.h:38
&gt; -#if __IPHONE_OS_VERSION_MIN_REQUIRED &gt;= 120000
&gt; +#if PLATFORM(IOS) || PLATFORM(MACCATALYST)
&gt;  #import &lt;MediaPlayer/MPMediaControlsConfiguration.h&gt;

This is a behavior-preserving refactoring. But it should be written this way like the ones below:

#if !PLATFORM(WATCHOS) &amp;&amp; !PLATFORM(APPLETV)

But it’s not clear that this is correct for watchOS and tvOS.

&gt; Source/WebCore/PAL/pal/spi/ios/MediaPlayerSPI.h:41
&gt; -#if __IPHONE_OS_VERSION_MIN_REQUIRED &gt;= 110000 &amp;&amp; !PLATFORM(WATCHOS) &amp;&amp; !PLATFORM(APPLETV)
&gt; +#if !PLATFORM(WATCHOS) &amp;&amp; !PLATFORM(APPLETV)

This is a behavior-preserving refactoring.

But it’s not clear that this is correct for watchOS and tvOS. And it’s also strange that we express the same thing two lines up with a different expression.

&gt; Source/WebCore/PAL/pal/spi/ios/MediaPlayerSPI.h:67
&gt; -#if __IPHONE_OS_VERSION_MIN_REQUIRED &gt;= 110000 &amp;&amp; !PLATFORM(WATCHOS) &amp;&amp; !PLATFORM(APPLETV)
&gt; +#if !PLATFORM(WATCHOS) &amp;&amp; !PLATFORM(APPLETV)

This is a behavior-preserving refactoring.

But it’s not clear that this is correct for watchOS and tvOS. And it’s also strange that we express the same thing two lines up with a different expression.

&gt; Source/WebCore/editing/cocoa/WebContentReaderCocoa.mm:76
&gt; -#if (PLATFORM(IOS_FAMILY) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &gt;= 110000) || PLATFORM(MAC)
&gt; +#if PLATFORM(IOS) || PLATFORM(MAC) || PLATFORM(MACCATALYST)

This is a behavior-preserving refactoring. But given where it is, another better way to write it is:

    #if !PLATFORM(WATCHOS) &amp;&amp; !PLATFORM(APPLETV)

&gt; Source/WebCore/editing/cocoa/WebContentReaderCocoa.mm:99
&gt; -#elif (PLATFORM(IOS_FAMILY) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &gt;= 110000) || PLATFORM(MAC)
&gt; +#elif PLATFORM(IOS) || PLATFORM(MAC) || PLATFORM(MACCATALYST)

This is a behavior-preserving refactoring, but seems inelegant. The #if above handles PLATFORM(MACCATALYST) so we definitely don’t want or need to mention it again. Given this is in a Cocoa-specific file, I suggest we write it like this:

    #elif !PLATFORM(WATCHOS) &amp;&amp; !PLATFORM(APPLETV)

&gt; Source/WebCore/page/SettingsDefaultValues.h:107
&gt; +#if PLATFORM(IOS) || (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101400) || PLATFORM(WATCHOS) || PLATFORM(MACCATALYST)

This is a behavior-preserving refactoring. But I think it would be better as:

    #if PLATFORM(COCOA) &amp;&amp; !(PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 101400) &amp;&amp; !PLATFORM(APPLETV)

And then someone should check why we have this tvOS exception. And maybe this should be a USE instead of something written out here. Not really clear on why this defaults false on non-Cocoa platforms either.

&gt; Source/WebCore/platform/graphics/cg/GradientCG.cpp:185
&gt; -#if (PLATFORM(IOS_FAMILY) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &gt;= 120000) || (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101400) || PLATFORM(WATCHOS)
&gt; +#if PLATFORM(IOS) || (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101400) || PLATFORM(WATCHOS)

This is a behavior-preserving refactoring. Seems clearly related to the one above and should also be:

    #if PLATFORM(COCOA) &amp;&amp; !(PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 101400) &amp;&amp; !PLATFORM(APPLETV)

But then I think this needs to be a USE or HAVE instead. The fact that it shows up separately in SettingsDefaultValues.h and GradientCG.cpp seems especially problematic. One is a runtime thing and the other a compile-time thing. Peculiar.

&gt; Source/WebCore/platform/graphics/cg/PathCG.cpp:317
&gt; +#if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101400) || PLATFORM(IOS) || PLATFORM(MACCATALYST)

This is a behavior-preserving refactoring and it’s already inside an #if PLATFORM(COCOA). I think we should write it more like this:

    #if !(PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 101400) &amp;&amp; !PLATFORM(APPLETV)

And check if the tvOS one is correct. But it should ideally be HAVE(CGPATHADDUNEVENCORNERSROUNDEDRECT) rather than being written out here. Although the &quot;all caps&quot; version of that reads horribly!

&gt; Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:42
&gt; -#define HAS_CORE_TEXT_WIDTH_ATTRIBUTE (PLATFORM(MAC) || (PLATFORM(IOS_FAMILY) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &gt;= 110000))
&gt; +#define HAS_CORE_TEXT_WIDTH_ATTRIBUTE (PLATFORM(MAC) || PLATFORM(IOS) || PLATFORM(MACCATALYST))

This is a behavior-preserving refactoring. It’s in a Cocoa-specific file so it should be:

    #define HAS_CORE_TEXT_WIDTH_ATTRIBUTE (!PLATFORM(WATCHOS) &amp;&amp; !PLATFORM(APPLETV))

And as with all the others, I suspect this is incorrect. And it should be a HAVE in PlatformHave.h, not here.

&gt; Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1067
&gt; -#if (PLATFORM(MAC) || (PLATFORM(IOS_FAMILY) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &gt;= 110000))
&gt; +#if (PLATFORM(MAC) || PLATFORM(IOS) || PLATFORM(MACCATALYST))

Same thing. Should be a HAVE or a USE macro and until then should be:

    #if !PLATFORM(WATCHOS) &amp;&amp; !PLATFORM(APPLETV)

&gt; Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1642
&gt; -#if (PLATFORM(IOS_FAMILY) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &gt;= 110000) || PLATFORM(MAC)
&gt; +#if PLATFORM(IOS) || PLATFORM(MAC) || PLATFORM(MACCATALYST)

Ditto.

&gt; Source/WebCore/platform/graphics/cocoa/FontPlatformDataCocoa.mm:127
&gt; -#define WORKAROUND_CORETEXT_VARIATIONS_WITH_FALLBACK_LIST_BUG (ENABLE(VARIATION_FONTS) &amp;&amp; (PLATFORM(IOS_FAMILY) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &lt; 110000))
&gt; +#define WORKAROUND_CORETEXT_VARIATIONS_WITH_FALLBACK_LIST_BUG (ENABLE(VARIATION_FONTS) &amp;&amp; (PLATFORM(IOS) || PLATFORM(MACCATALYST)))

This is backwards. This was false for iOS 13 and the new code is true for iOS 13. I am pretty sure this should just be unconditionally true. But to correctly refactor it for now it could be:

    #define WORKAROUND_CORETEXT_VARIATIONS_WITH_FALLBACK_LIST_BUG (ENABLE(VARIATION_FONTS) &amp;&amp; (PLATFORM(WATCHOS) || PLATFORM(APPLETV)))

I suspect this isn’t needed at all any more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609654</commentid>
    <comment_count>18</comment_count>
      <attachid>388042</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-01-22 11:39:37 -0800</bug_when>
    <thetext>Comment on attachment 388042
Patch

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

I&apos;m going to upload a patch with Darin&apos;s edits, but I&apos;m not going to mark it for review. I think I can reasonably split this change up so it&apos;s a bit easier to review.

&gt;&gt; Source/WTF/wtf/PlatformHave.h:359
&gt;&gt;  #define HAVE_HSTS_STORAGE_PATH 1
&gt; 
&gt; This seems to be a behavior-preserving refactoring. But I would prefer it say this:
&gt; 
&gt;     #if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101500) || (PLATFORM(IOS_FAMILY) &amp;&amp; !PLATFORM(WATCHOS) &amp;&amp; !PLATFORM(APPLETV))
&gt; 
&gt; or this:
&gt; 
&gt;     #if PLATFORM(COCOA) &amp;&amp; !(PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 101500) &amp;&amp; !PLATFORM(WATCHOS) &amp;&amp; !PLATFORM(APPLETV)
&gt; 
&gt; I suspect this is incorrect for recent watchOS and tvOS; mentioning them explicitly could help us spot the mistake. But also I would like to come up with a good way to keep track of this as an outstanding item: checking whether this needs to be turned on for watchOS and tvOS.

This probably isn&apos;t the only place in this patch where we&apos;re disabling something on watchOS and tvOS that should be enabled.

I was going to split the changes that modify behavior into a different patch and keep this as a behavior-preserving refactor, but it&apos;s becoming increasingly clear that I should split this patch up too.

&gt;&gt; Source/WTF/wtf/PlatformHave.h:522
&gt;&gt;  #define HAVE_ROUTE_SHARING_POLICY_LONG_FORM_VIDEO 1
&gt; 
&gt; This seems to be a behavior-preserving refactoring.
&gt; 
&gt; But it’s factually incorrect. We have this on recent versions of watchOS and tvOS. Not sure about Catalyst. I think we probably have this on all versions of all the iOS family that we currently support. Most likely, the correct change after a bit of research is to remove this entirely and make the code guarded by it unconditional.

I&apos;m putting together a list of this sort of thing to work through once this refactor (or probably more accurately, it&apos;s pieces) land so that we can have changes that are simple to roll-out if we get them wrong.

&gt;&gt; Source/WTF/wtf/PlatformHave.h:534
&gt;&gt;  #define HAVE_AVPLAYER_RESOURCE_CONSERVATION_LEVEL 1
&gt; 
&gt; This seems to be a behavior-preserving refactoring. But is it correct that we don’t have this in Catalyst? To emphasize this I think we should instead write:
&gt; 
&gt;     #if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101500) || (PLATFORM(IOS_FAMILY) &amp;&amp; !PLATFORM(MACCATALYST))
&gt; 
&gt; or:
&gt; 
&gt;     #if PLATFORM(COCOA) &amp;&amp; !(PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 101500) &amp;&amp; !PLATFORM(MACCATALYST)
&gt; 
&gt; And figure out a way to get someone to follow up and figure out if this is correct.

There is a good chance it&apos;s not correct, but yes, this is trying to preserve behavior.

&gt;&gt; Source/WebCore/PAL/pal/spi/cocoa/IOSurfaceSPI.h:108
&gt;&gt;  #endif
&gt; 
&gt; This is a behavior-preserving refactoring.
&gt; 
&gt; But code is definitely unneeded on recent tvOS and watchOS. It’s just harmless on any platform since it’s a typedef that exactly matches the header, and that’s always allowed and harmless. So it would be OK for this #if to say anything, 0, 1, any random set of platforms.
&gt; 
&gt; Better to remove this entirely

Adding this to my list of changes after the refactor.

&gt;&gt; Source/WebCore/PAL/pal/spi/cocoa/NSProgressSPI.h:30
&gt;&gt; +#define USE_NSPROGRESS_PUBLISHING_SPI PLATFORM(IOS_FAMILY) &amp;&amp; (PLATFORM(WATCHOS) || PLATFORM(APPLETV))
&gt; 
&gt; This is incorrect. The old version was false for watchOS and tvOS and the new version is true.
&gt; 
&gt; The way this was written elsewhere in this patch was PLATFORM(IOS) || PLATFORM(MACCATALYST)
&gt; 
&gt; Another way to write it is PLATFORM(IOS_FAMILY) &amp;&amp; !PLATFORM(WATCHOS) &amp;&amp; !PLATFORM(APPLETV)
&gt; 
&gt; But not sure why we&apos;d choose something different here. Also, this belongs in PlatformUse.h, not in NSProgressSPI.h.

I think the !PLATFORM(WATCHOS) &amp;&amp; !PLATFORM(APPLETV) is what we want here.

The fact that like 35 contains a different macro for this same #define, despite watchOS and tvOS not being built in OpenSource, supports this being moved to PlatformUse.h, but that might need to be a stand-alone change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609656</commentid>
    <comment_count>19</comment_count>
      <attachid>388451</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-01-22 11:42:22 -0800</bug_when>
    <thetext>Created attachment 388451
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671725</commentid>
    <comment_count>20</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-07-15 06:57:49 -0700</bug_when>
    <thetext>All of the sub-tasks are finished, closing this bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387391</attachid>
            <date>2020-01-10 16:14:26 -0800</date>
            <delta_ts>2020-01-10 17:35:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206096-20200110161425.patch</filename>
            <type>text/plain</type>
            <size>48146</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNTQzNjQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAxLTEwICBKb25hdGhhbiBCZWRhcmQgIDxq
YmVkYXJkQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgb2xkIGlPUyB2ZXJzaW9uIG1hY3Jv
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MDk2
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODQ5MTY3NT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9GZWF0dXJlRGVmaW5lcy5oOiBSZW1v
dmUgaU9TIDEyIHZlcnNpb24gbWFjcm8uCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6IERpdHRv
LgorCiAyMDIwLTAxLTA5ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgog
CiAgICAgICAgIEFkb3B0IFRBUkdFVF9PU19NQUNDQVRBTFlTVCBpbiBtb3JlIHBsYWNlcwpJbmRl
eDogU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCShyZXZpc2lvbiAyNTQzNjQpCisrKyBTb3VyY2UvV1RG
L3d0Zi9GZWF0dXJlRGVmaW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNyArMTc4LDcgQEAg
dGhlIHB1YmxpYyBpT1MgU0RLLiBTZWUgPGh0dHBzOi8vd2Via2l0LgogI2VuZGlmCiAKICNpZiAh
ZGVmaW5lZChFTkFCTEVfV0tQREZWSUVXKQotI2lmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExB
VEZPUk0oQVBQTEVUVikgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKSAmJiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAKKyNpZiAhUExBVEZPUk0oV0FUQ0hPUykgJiYg
IVBMQVRGT1JNKEFQUExFVFYpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkKICNkZWZpbmUgRU5B
QkxFX1dLUERGVklFVyAxCiAjZW5kaWYKICNlbmRpZgpJbmRleDogU291cmNlL1dURi93dGYvUGxh
dGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lv
biAyNTQzNjQpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTIxLDcgKzE1MjEsNyBAQAogI2RlZmluZSBIQVZFX0FVVEhPUklaQVRJT05fU1RBVFVTX0ZP
Ul9NRURJQV9UWVBFIDEKICNlbmRpZgogCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgKF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
QVhfQUxMT1dFRCA+PSAxMDE0MDQpKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhf
QUxMT1dFRCA+PSAxMjAyMDApIHx8IFBMQVRGT1JNKFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQUExF
VFYpCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTAxNDAwICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMDE0MDQp
KSB8fCBQTEFURk9STShXQVRDSE9TKSB8fCBQTEFURk9STShBUFBMRVRWKQogI2RlZmluZSBIQVZF
X0NGTkVUV09SS19PVkVSUklERV9TRVNTSU9OX0NPT0tJRV9BQ0NFUFRfUE9MSUNZIDEKICNlbmRp
ZgogCkBAIC0xNjAxLDcgKzE2MDEsNyBAQAogI2RlZmluZSBIQVZFX1JPVVRFX1NIQVJJTkdfUE9M
SUNZX0xPTkdfRk9STV9WSURFTyAxCiAjZW5kaWYKIAotI2lmIChQTEFURk9STShJT1MpICYmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCAmJiAhUExBVEZPUk0oSU9T
X1NJTVVMQVRPUikpCisjaWYgKFBMQVRGT1JNKElPUykgJiYgIVBMQVRGT1JNKElPU19TSU1VTEFU
T1IpKQogI2RlZmluZSBIQVZFX0RFVklDRV9NQU5BR0VNRU5UIDEKICNlbmRpZgogCkBAIC0xNjE3
LDcgKzE2MTcsNyBAQAogI2RlZmluZSBIQVZFX0FWUExBWUVSX1JFU09VUkNFX0NPTlNFUlZBVElP
Tl9MRVZFTCAxCiAjZW5kaWYKIAotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApIHx8IFBMQVRGT1JNKFdBVENIT1Mp
IHx8IFBMQVRGT1JNKEFQUExFVFYpCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKElPUykgfHwgUExBVEZP
Uk0oV0FUQ0hPUykgfHwgUExBVEZPUk0oQVBQTEVUVikKICNkZWZpbmUgSEFWRV9DT1JFVEVYVF9B
VVRPX09QVElDQUxfU0laSU5HIDEKICNlbmRpZgogCkBAIC0xNjQ5LDcgKzE2NDksNyBAQAogI2Rl
ZmluZSBIQVZFX1NVQlZJRVdTX0lWQVJfREVDTEFSRURfQllfU0RLIDEKICNlbmRpZgogCi0jaWYg
UExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKSB8fCBQTEFURk9STShXQVRDSE9TKSB8fCBQTEFU
Rk9STShBUFBMRVRWKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICNkZWZpbmUgVVNFX1BMQVRGT1JNX1NZU1RFTV9GQUxMQkFDS19MSVNUIDEKICNlbmRpZgogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTQzNjQpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNiBAQAorMjAyMC0wMS0xMCAgSm9uYXRoYW4g
QmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIG9sZCBpT1MgdmVy
c2lvbiBtYWNyb3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNjA5NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTg0OTE2NzU+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisg
ICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06IFJlbW92ZSBp
T1MgMTEgdmVyc2lvbiBjaGVja3MuCisgICAgICAgICogcGFnZS9TZXR0aW5nc0RlZmF1bHRWYWx1
ZXMuaDogUmVtb3ZlIGlPUyAxMiB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFkaWVudENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50Ojpw
YWludCk6IFJlbW92ZSBpT1MgMTIgdmVyc2lvbiBjaGVja3MuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvUGF0aENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6OnBsYXRmb3Jt
QWRkUGF0aEZvclJvdW5kZWRSZWN0KTogUmVtb3ZlIGlPUyAxMiB2ZXJzaW9uIGNoZWNrcy4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjp2YXJpYXRpb25DYXBhYmlsaXRpZXNGb3JGb250RGVzY3JpcHRvcik6
IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3MuCisgICAgICAgIChXZWJDb3JlOjpGb250Q2Fj
aGU6Omxhc3RSZXNvcnRGYWxsYmFja0ZvbnQpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjptYXRjaFN5c3RlbUZvbnRVc2UpOiBSZW1vdmUgaU9TIDExIHZlcnNpb24gY2hlY2suCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ZvbnRDYWNoZUlPUy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OnBsYXRmb3JtRm9udFdpdGhGYW1pbHlTcGVjaWFsQ2FzZSk6IFJlbW92ZSBpT1MgMTEg
dmVyc2lvbiBjaGVja3MuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSk6IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3MuCisgICAgICAgICogcGxh
dGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaDogUmVtb3ZlIGlPUyAxMSB2ZXJz
aW9uIGNoZWNrcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29va2llc0ZvclVSTCk6IFJl
bW92ZSBpT1MgMTIgdmVyc2lvbiBjaGVja3MuCisgICAgICAgIChXZWJDb3JlOjpzZXRIVFRQQ29v
a2llc0ZvclVSTCk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpjYWNoZWRTeXN0ZW1Gb250RGVz
Y3JpcHRpb24gY29uc3QpOiBSZW1vdmUgaU9TIDExIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnVwZGF0ZUNhY2hlZFN5c3RlbUZvbnREZXNjcmlwdGlv
biBjb25zdCk6IERpdHRvLgorCiAyMDIwLTAxLTEwICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1dGhuXSBTdXBwb3J0IGF1dGhlbnRpY2F0b3JHZXRO
ZXh0QXNzZXJ0aW9uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDM2NCkKKysr
IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NiBAQAorMjAyMC0wMS0xMCAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIG9sZCBpT1MgdmVyc2lvbiBtYWNyb3MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjA5NgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTg0OTE2NzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oOiBSZW1vdmUgaU9TIDExIHZlcnNp
b24gY2hlY2tzLgorICAgICAgICAqIHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg6IFJlbW92
ZSBpT1MgMTIgdmVyc2lvbiBjaGVja3MuCisgICAgICAgICogcGFsL3NwaS9jb2NvYS9OU0tleWVk
QXJjaGl2ZXJTUEkuaDogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBw
YWwvc3BpL2lvcy9NZWRpYVBsYXllclNQSS5oOiBSZW1vdmUgaU9TIDExIGFuZCAxMiB2ZXJzaW9u
IGNoZWNrcy4KKwogMjAyMC0wMS0wOSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxl
LmNvbT4KIAogICAgICAgICBEb24ndCBzb2Z0bGluayBBVkNhcHR1cmUgY2xhc3NlcyBvbiB3YXRj
aE9TIG9yIHR2T1MKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29y
a1NQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0
d29ya1NQSS5oCShyZXZpc2lvbiAyNTQzNjQpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9jZi9DRk5ldHdvcmtTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMjEzLDcgKzIxMyw3IEBAIHR5
cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIE5TVVJMU2Vzc2lvbkMKIEBwcm9wZXJ0eSAobnVsbGFi
bGUsIHJlYWR3cml0ZSwgcmV0YWluKSBOU1VSTCAqX3NpdGVGb3JDb29raWVzOwogQHByb3BlcnR5
IChyZWFkd3JpdGUpIEJPT0wgX2lzVG9wTGV2ZWxOYXZpZ2F0aW9uOwogI2VuZGlmCi0jaWYgUExB
VEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIEJPT0wgX3ByZWNvbm5l
Y3Q7CiAjZW5kaWYKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0Nv
cmVHcmFwaGljc1NQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3Bp
L2NnL0NvcmVHcmFwaGljc1NQSS5oCShyZXZpc2lvbiAyNTQzNjQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMjgy
LDcgKzI4Miw3IEBAIHZvaWQgQ0dDb250ZXh0U2V0U3R5bGUoQ0dDb250ZXh0UmVmLCBDR1MKIAog
dm9pZCBDR0NvbnRleHREcmF3Q29uaWNHcmFkaWVudChDR0NvbnRleHRSZWYsIENHR3JhZGllbnRS
ZWYsIENHUG9pbnQgY2VudGVyLCBDR0Zsb2F0IGFuZ2xlKTsKIAotI2lmIChQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIw
MDAwKQorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBDR1BhdGhBZGRVbmV2
ZW5Db3JuZXJzUm91bmRlZFJlY3QoQ0dNdXRhYmxlUGF0aFJlZiwgY29uc3QgQ0dBZmZpbmVUcmFu
c2Zvcm0gKiwgQ0dSZWN0LCBjb25zdCBDR1NpemUgY29ybmVyc1s0XSk7CiAjZW5kaWYKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvTlNLZXllZEFy
Y2hpdmVyU1BJLmgJKHJldmlzaW9uIDI1NDM2NCkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsy
OSw3IEBACiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgogCi0jZGVmaW5lIFVTRV9TRUNVUkVfQVJDSElWRVJfQVBJIChQTEFURk9STShNQUMpIHx8
IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMTAyMDApIHx8IFBMQVRGT1JNKFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQUExFVFYpKQor
I2RlZmluZSBVU0VfU0VDVVJFX0FSQ0hJVkVSX0FQSSAoUExBVEZPUk0oTUFDKSB8fCBQTEFURk9S
TShJT1NfRkFNSUxZKSkKIAogI2RlZmluZSBVU0VfU0VDVVJFX0FSQ0hJVkVSX0ZPUl9BVFRSSUJV
VEVEX1NUUklORyAoUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTMwMDAwKSB8fCBQTEFURk9STShXQVRD
SE9TKSB8fCBQTEFURk9STShBUFBMRVRWKSkKIApJbmRleDogU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zcGkvaW9zL01lZGlhUGxheWVyU1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvaW9zL01lZGlhUGxheWVyU1BJLmgJKHJldmlzaW9uIDI1NDM2NCkKKysrIFNv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2lvcy9NZWRpYVBsYXllclNQSS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMywxMiArMzMsOSBAQAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKICNp
bXBvcnQgPE1lZGlhUGxheWVyL01QQVZSb3V0aW5nQ29udHJvbGxlci5oPgotCi0jaWYgX19JUEhP
TkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwCiAjaW1wb3J0IDxNZWRpYVBsYXll
ci9NUE1lZGlhQ29udHJvbHNDb25maWd1cmF0aW9uLmg+Ci0jZW5kaWYKIAotI2lmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCAmJiAhUExBVEZPUk0oV0FUQ0hPUykg
JiYgIVBMQVRGT1JNKEFQUExFVFYpCisjaWYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9S
TShBUFBMRVRWKQogI2ltcG9ydCA8TWVkaWFQbGF5ZXIvTVBNZWRpYUNvbnRyb2xzVmlld0NvbnRy
b2xsZXIuaD4KICNlbHNlCiAjaW1wb3J0IDxNZWRpYVBsYXllci9NUEFWUm91dGluZ1NoZWV0Lmg+
CkBAIC02NCw3ICs2MSw3IEBAIHR5cGVkZWYgTlNJbnRlZ2VyIE1QUm91dGVEaXNjb3ZlcnlNb2Rl
OwogQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgTVBSb3V0ZURpc2NvdmVyeU1vZGUgZGlz
Y292ZXJ5TW9kZTsKIEBlbmQKIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDExMDAwMCAmJiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCisj
aWYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQogCiBAaW50ZXJmYWNl
IE1QTWVkaWFDb250cm9sc1ZpZXdDb250cm9sbGVyIDogVUlWaWV3Q29udHJvbGxlcgogQHByb3Bl
cnR5IChub25hdG9taWMsIGNvcHksIG51bGxhYmxlKSB2b2lkICheZGlkRGlzbWlzc0hhbmRsZXIp
KHZvaWQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVh
ZGVyQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW0JKHJldmlzaW9uIDI1NDM2NCkKKysrIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC03Myw3ICs3Myw3IEBACiAjaW5jbHVkZSAiTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5j
ZS5oIgogI2VuZGlmCiAKLSNpZiAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKSB8fCBQTEFURk9STShNQUMpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkgfHwgUExBVEZPUk0oTUFDKQogQGludGVyZmFjZSBOU0F0dHJpYnV0
ZWRTdHJpbmcgKCkKIC0gKE5TU3RyaW5nICopX2h0bWxEb2N1bWVudEZyYWdtZW50U3RyaW5nOihO
U1JhbmdlKXJhbmdlIGRvY3VtZW50QXR0cmlidXRlczooTlNEaWN0aW9uYXJ5ICopZGljdCBzdWJy
ZXNvdXJjZXM6KE5TQXJyYXkgKiopc3VicmVzb3VyY2VzOwogQGVuZApAQCAtOTYsNyArOTYsNyBA
QCBzdGF0aWMgRnJhZ21lbnRBbmRSZXNvdXJjZXMgY3JlYXRlRnJhZ21lCiAgICAgcmV0dXJuIHsg
fTsKIH0KIAotI2VsaWYgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkgfHwgUExBVEZPUk0oTUFDKQorI2VsaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgfHwgUExBVEZPUk0oTUFDKQogCiBzdGF0aWMgTlNEaWN0aW9uYXJ5ICph
dHRyaWJ1dGVzRm9yQXR0cmlidXRlZFN0cmluZ0NvbnZlcnNpb24oKQogewpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9TZXR0aW5nc0RlZmF1bHRWYWx1ZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzRGVmYXVsdFZhbHVlcy5oCShyZXZpc2lvbiAyNTQzNjQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzRGVmYXVsdFZhbHVlcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIGNvbnN0IGJvb2wgZGVmYXVsdE1lZGlh
RW5hYmxlZCA9IAogc3RhdGljIGNvbnN0IGJvb2wgZGVmYXVsdE1lZGlhRW5hYmxlZCA9IGZhbHNl
OwogI2VuZGlmCiAgICAgCi0jaWYgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKFdBVENI
T1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKFdBVENIT1Mp
CiBzdGF0aWMgY29uc3QgYm9vbCBkZWZhdWx0Q29uaWNHcmFkaWVudCA9IHRydWU7CiAjZWxzZQog
c3RhdGljIGNvbnN0IGJvb2wgZGVmYXVsdENvbmljR3JhZGllbnQgPSBmYWxzZTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3Bw
CShyZXZpc2lvbiAyNTQzNjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFkaWVudENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQg
R3JhZGllbnQ6OnBhaW50KENHQ29udGV4dFJlZiBwbGF0Zm8KICAgICAgICAgICAgICAgICBDR0Nv
bnRleHRSZXN0b3JlR1N0YXRlKHBsYXRmb3JtQ29udGV4dCk7CiAgICAgICAgIH0sCiAgICAgICAg
IFsmXSAoY29uc3QgQ29uaWNEYXRhJiBkYXRhKSB7Ci0jaWYgKFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkgfHwgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8
IFBMQVRGT1JNKFdBVENIT1MpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JN
KE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBM
QVRGT1JNKFdBVENIT1MpCiAgICAgICAgICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKHBsYXRmb3Jt
Q29udGV4dCk7CiAgICAgICAgICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0ocGxhdGZvcm1Db250
ZXh0LCBkYXRhLnBvaW50MC54KCksIGRhdGEucG9pbnQwLnkoKSk7CiAgICAgICAgICAgICBDR0Nv
bnRleHRSb3RhdGVDVE0ocGxhdGZvcm1Db250ZXh0LCAoQ0dGbG9hdCktTV9QSV8yKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcAkocmV2
aXNpb24gMjU0MzY0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0
aENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE0LDcgKzMxNCw3IEBAIHZvaWQgUGF0aDo6cGxh
dGZvcm1BZGRQYXRoRm9yUm91bmRlZFJlY3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotI2lm
IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAx
NDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTIwMDAwKQorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IENHUmVjdCByZWN0VG9EcmF3ID0gcmVjdDsKICAgICAKICAgICBlbnVtIENvcm5lcnMgewpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRl
eHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAkocmV2aXNpb24gMjU0MzY0KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBACiAjaW5jbHVkZSA8d3RmL01lbW9yeVByZXNzdXJl
SGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCi0jZGVmaW5lIEhB
U19DT1JFX1RFWFRfV0lEVEhfQVRUUklCVVRFIChQTEFURk9STShNQUMpIHx8IChQTEFURk9STShJ
T1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAp
KQorI2RlZmluZSBIQVNfQ09SRV9URVhUX1dJRFRIX0FUVFJJQlVURSAoUExBVEZPUk0oTUFDKSB8
fCBQTEFURk9STShJT1NfRkFNSUxZKSkKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDY0
LDcgKzEwNjQsNyBAQCBzdGF0aWMgVmFyaWF0aW9uQ2FwYWJpbGl0aWVzIHZhcmlhdGlvbkNhCiAg
ICAgfQogCiAgICAgYm9vbCBvcHRPdXRGcm9tR1hOb3JtYWxpemF0aW9uID0gZmFsc2U7Ci0jaWYg
KFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkpCisjaWYgKFBMQVRGT1JNKE1BQykgfHwgUExB
VEZPUk0oSU9TX0ZBTUlMWSkpCiAgICAgb3B0T3V0RnJvbUdYTm9ybWFsaXphdGlvbiA9IENURm9u
dERlc2NyaXB0b3JJc1N5c3RlbVVJRm9udChmb250RGVzY3JpcHRvcik7CiAjZW5kaWYKIApAQCAt
MTYzOSw3ICsxNjM5LDcgQEAgUmVmPEZvbnQ+IEZvbnRDYWNoZTo6bGFzdFJlc29ydEZhbGxiYWNr
RgogICAgICAgICByZXR1cm4gKnJlc3VsdDsKIAogICAgIC8vIExhc3RSZXNvcnQgaXMgZ3VhcmFu
dGVlZCB0byBiZSBub24tbnVsbC4KLSNpZiAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhP
TkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKSB8fCBQTEFURk9STShNQUMpCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgUExBVEZPUk0oTUFDKQogICAgIGF1dG8gZm9udERl
c2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVMYXN0UmVzb3J0KCkpOwog
ICAgIGF1dG8gZm9udCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlV2l0aEZvbnREZXNjcmlwdG9yKGZv
bnREZXNjcmlwdG9yLmdldCgpLCBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwg
bnVsbHB0cikpOwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHAJKHJl
dmlzaW9uIDI1NDM2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsMTAgKzgyLDgg
QEAgc3RhdGljIGlubGluZSBPcHRpb25hbDxTeXN0ZW1Gb250S2luZD4gbQogICAgICAgICBrQ1RV
SUZvbnRUZXh0U3R5bGVTaG9ydEZvb3Rub3RlLAogICAgICAgICBrQ1RVSUZvbnRUZXh0U3R5bGVT
aG9ydENhcHRpb24xLAogICAgICAgICBrQ1RVSUZvbnRUZXh0U3R5bGVUYWxsQm9keSwKLSNpZiBf
X0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKICAgICAgICAga0NUVUlG
b250VGV4dFN0eWxlVGl0bGUwLAogICAgICAgICBrQ1RVSUZvbnRUZXh0U3R5bGVUaXRsZTQsCi0j
ZW5kaWYKICAgICB9OwogICAgIAogICAgIHN0YXRpYyBhdXRvIHN0cmluZ3MgeyBtYWtlTmV2ZXJE
ZXN0cm95ZWQoY29udmVydEFycmF5PEF0b21TdHJpbmc+KHN0eWxlcykpIH07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvRm9udENhY2hlSU9TLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9Gb250Q2FjaGVJT1Mu
bW0JKHJldmlzaW9uIDI1NDM2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2lvcy9Gb250Q2FjaGVJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTE1NiwxNCArMTU2LDggQEAg
UmV0YWluUHRyPENURm9udFJlZj4gcGxhdGZvcm1Gb250V2l0aEZhbQogICAgIH0KIAogICAgIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShmYW1pbHksICJsYXN0cmVzb3J0IikpIHsK
LSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKICAgICAgICAg
c3RhdGljIGNvbnN0IENURm9udERlc2NyaXB0b3JSZWYgbGFzdFJlc29ydCA9IENURm9udERlc2Ny
aXB0b3JDcmVhdGVMYXN0UmVzb3J0KCk7CiAgICAgICAgIHJldHVybiBhZG9wdENGKENURm9udENy
ZWF0ZVdpdGhGb250RGVzY3JpcHRvcihsYXN0UmVzb3J0LCBzaXplLCBudWxscHRyKSk7Ci0jZWxz
ZQotICAgICAgICAvLyBMYXN0UmVzb3J0IGlzIHNwZWNpYWwsIHNvIGl0J3MgaW1wb3J0YW50IHRv
IGxvb2sgdGhpcyBleGFjdCBzdHJpbmcgdXAsIGFuZCBub3Qgc29tZSBjYXNlLWZvbGRlZCB2ZXJz
aW9uLgotICAgICAgICAvLyBXZSBoYW5kbGUgdGhpcyBoZXJlIHNvIGFueSBjYWNoaW5nIGFuZCBj
YXNlIGZvbGRpbmcgd2UgZG8gaW4gb3VyIGdlbmVyYWwgdGV4dCBjb2RlcGF0aCBpcyBieXBhc3Nl
ZC4KLSAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ1RGb250Q3JlYXRlV2l0aE5hbWUoQ0ZTVFIoIkxh
c3RSZXNvcnQiKSwgc2l6ZSwgbnVsbHB0cikpOwotI2VuZGlmCiAgICAgfQogCiAgICAgcmV0dXJu
IG51bGxwdHI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCShyZXZpc2lvbiAy
NTQzNjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IAogICAgIFJldGFpblB0cjxDRkRhdGFS
ZWY+IGJ1ZmZlckRhdGEgPSBidWZmZXIuY3JlYXRlQ0ZEYXRhKCk7CiAKICAgICBSZXRhaW5QdHI8
Q1RGb250RGVzY3JpcHRvclJlZj4gZm9udERlc2NyaXB0b3I7Ci0jaWYgUExBVEZPUk0oTUFDKSB8
fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTEwMDAwKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBhdXRvIGFycmF5ID0gYWRvcHRDRihDVEZvbnRNYW5hZ2VyQ3JlYXRlRm9udERlc2NyaXB0
b3JzRnJvbURhdGEoYnVmZmVyRGF0YS5nZXQoKSkpOwogICAgIGlmICghYXJyYXkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0
ZW1Qcm92aWRlclBhc3RlYm9hcmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oCShyZXZpc2lvbiAyNTQzNjQpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw4ICsyNyw2IEBACiAKICNpbXBvcnQgPFdlYkNvcmUvQWJz
dHJhY3RQYXN0ZWJvYXJkLmg+CiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMTAwMDAKLQogc3RydWN0IENHU2l6ZTsKIAogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdl
ciwgV2ViUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUpIHsKQEAgLTExNCw1ICsxMTIsNCBAQCBX
RUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdlYkl0ZW1Qcm92aWRlCiAKIE5TX0FTU1VNRV9OT05O
VUxMX0VORAogCi0jZW5kaWYgLy8gX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTEwMDAwCiAjZW5kaWYgLy8gVEFSR0VUX09TX0lQSE9ORQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkNvY29hLm1tCShyZXZpc2lvbiAyNTQzNjQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIEBpbnRlcmZhY2UgTlNVUkwgKCkKIC0gKENG
VVJMUmVmKV9jZnVybDsKIEBlbmQKIAotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkg
JiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKQorI2lmIChQTEFU
Rk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8
fCBQTEFURk9STShJT1NfRkFNSUxZKQogQGludGVyZmFjZSBOU0hUVFBDb29raWVTdG9yYWdlIChT
dGFnaW5nKQogLSAodm9pZClfZ2V0Q29va2llc0ZvclVSTDooTlNVUkwgKil1cmwgbWFpbkRvY3Vt
ZW50VVJMOihOU1VSTCAqKW1haW5Eb2N1bWVudFVSTCBwYXJ0aXRpb246KE5TU3RyaW5nICopcGFy
dGl0aW9uIHBvbGljeVByb3BlcnRpZXM6KE5TRGljdGlvbmFyeSopcHJvcHMgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKE5TQXJyYXkgKikpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKV9z
ZXRDb29raWVzOihOU0FycmF5ICopY29va2llcyBmb3JVUkw6KE5TVVJMICopVVJMIG1haW5Eb2N1
bWVudFVSTDooTlNVUkwgKiltYWluRG9jdW1lbnRVUkwgcG9saWN5UHJvcGVydGllczooTlNEaWN0
aW9uYXJ5KikgcHJvcHM7CkBAIC0yMDAsNyArMjAwLDcgQEAgc3RhdGljIHZvaWQgZGVsZXRlSFRU
UENvb2tpZShDRkhUVFBDb29raQogICAgIENGSFRUUENvb2tpZVN0b3JhZ2VEZWxldGVDb29raWUo
Y29va2llU3RvcmFnZSwgW2Nvb2tpZSBfR2V0SW50ZXJuYWxDRkhUVFBDb29raWVdKTsKIH0KIAot
I2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTIwMDAwKQorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQog
c3RhdGljIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IHBvbGljeVByb3BlcnRpZXMoY29uc3QgU2Ft
ZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIE5TVVJMICp1cmwpCiB7CiAgICAgc3RhdGljIE5TVVJM
ICplbXB0eVVSTCA9IFtbTlNVUkwgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiIl07CkBAIC0yMTks
NyArMjE5LDcgQEAgc3RhdGljIE5TQXJyYXkgKmNvb2tpZXNGb3JVUkwoTlNIVFRQQ29vawogICAg
IGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbJmNvb2tpZXNQdHJdIChOU0FycmF5ICpjb29raWVz
KSB7CiAgICAgICAgIGNvb2tpZXNQdHIgPSByZXRhaW5QdHIoY29va2llcyk7CiAgICAgfTsKLSNp
ZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
MTQwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEyMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBpZiAoW3N0b3JhZ2UgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfZ2V0Q29va2llc0Zv
clVSTDptYWluRG9jdW1lbnRVUkw6cGFydGl0aW9uOnBvbGljeVByb3BlcnRpZXM6Y29tcGxldGlv
bkhhbmRsZXI6KV0pCiAgICAgICAgIFtzdG9yYWdlIF9nZXRDb29raWVzRm9yVVJMOnVybCBtYWlu
RG9jdW1lbnRVUkw6bWFpbkRvY3VtZW50VVJMIHBhcnRpdGlvbjpwYXJ0aXRpb24gcG9saWN5UHJv
cGVydGllczpzYW1lU2l0ZUluZm8gPyBwb2xpY3lQcm9wZXJ0aWVzKHNhbWVTaXRlSW5mby52YWx1
ZSgpLCB1cmwpLmdldCgpIDogbnVsbHB0ciBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFu
ZGxlcl07CiAgICAgZWxzZQpAQCAtMjM2LDcgKzIzNiw3IEBAIHN0YXRpYyB2b2lkIHNldEhUVFBD
b29raWVzRm9yVVJMKENGSFRUUEMKIHsKICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQ
cm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CiAgICAgaWYgKCFjb29raWVT
dG9yYWdlKSB7Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgICAgIGlmIChbTlNIVFRQQ29va2llU3RvcmFnZSBpbnN0YW5jZXNSZXNw
b25kVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3NldENvb2tpZXM6Zm9yVVJMOm1haW5Eb2N1bWVudFVS
TDpwb2xpY3lQcm9wZXJ0aWVzOildKQogICAgICAgICAgICAgW1tOU0hUVFBDb29raWVTdG9yYWdl
IHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXSBfc2V0Q29va2llczpjb29raWVzIGZvclVSTDp1cmwg
bWFpbkRvY3VtZW50VVJMOm1haW5Eb2N1bWVudFVSTCBwb2xpY3lQcm9wZXJ0aWVzOnBvbGljeVBy
b3BlcnRpZXMoc2FtZVNpdGVJbmZvLCB1cmwpLmdldCgpXTsKICAgICAgICAgZWxzZQpAQCAtMjQ0
LDcgKzI0NCw3IEBAIHN0YXRpYyB2b2lkIHNldEhUVFBDb29raWVzRm9yVVJMKENGSFRUUEMKICAg
ICAgICAgICAgIFtbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV0g
c2V0Q29va2llczpjb29raWVzIGZvclVSTDp1cmwgbWFpbkRvY3VtZW50VVJMOm1haW5Eb2N1bWVu
dFVSTF07CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1Nf
RkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCisj
aWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDE0MDApIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKFtOU0hUVFBDb29raWVTdG9y
YWdlIGluc3RhbmNlc1Jlc3BvbmRUb1NlbGVjdG9yOkBzZWxlY3Rvcihfc2V0Q29va2llczpmb3JV
Ukw6bWFpbkRvY3VtZW50VVJMOnBvbGljeVByb3BlcnRpZXM6KV0pIHsKICAgICAgICAgLy8gRklY
TUU6IFN0b3AgY3JlYXRpbmcgYSBuZXcgTlNIVFRQQ29va2llU3RvcmFnZSBvYmplY3QgZWFjaCB0
aW1lIHdlIHdhbnQgdG8gcXVlcnkgdGhlIGNvb2tpZSBqYXIuCiAgICAgICAgIC8vIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiBjb3VsZCBpbnN0ZWFkIGtlZXAgYSBOU0hUVFBDb29raWVTdG9yYWdlIG9i
amVjdCBmb3IgdXMuCkBAIC0yNTQsNyArMjU0LDcgQEAgc3RhdGljIHZvaWQgc2V0SFRUUENvb2tp
ZXNGb3JVUkwoQ0ZIVFRQQwogI2VuZGlmCiAgICAgICAgIGF1dG8gY2ZDb29raWVzID0gYWRvcHRD
RihbTlNIVFRQQ29va2llIF9uczJjZkNvb2tpZXM6Y29va2llc10pOwogICAgICAgICBDRkhUVFBD
b29raWVTdG9yYWdlU2V0Q29va2llcyhjb29raWVTdG9yYWdlLCBjZkNvb2tpZXMuZ2V0KCksIFt1
cmwgX2NmdXJsXSwgW21haW5Eb2N1bWVudFVSTCBfY2Z1cmxdKTsKLSNpZiAoUExBVEZPUk0oTUFD
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRG
T1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEy
MDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB9CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShzYW1lU2l0ZUluZm8pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZUlPUy5tbQkocmV2aXNpb24gMjU0MzY0KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYyLDE1
ICsxMTYyLDExIEBAIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIFJlbmRlclRoZW1lSU9TOjoKICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gc2hvcnRGb290
bm90ZUZvbnQ7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRlRGVzY3JpcHRp
b24+IHNob3J0Q2FwdGlvbjFGb250OwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGb250Q2Fz
Y2FkZURlc2NyaXB0aW9uPiB0YWxsQm9keUZvbnQ7Ci0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTEwMDAwCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNj
YWRlRGVzY3JpcHRpb24+IHRpdGxlMEZvbnQ7Ci0jZW5kaWYKICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gdGl0bGUxRm9udDsKICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gdGl0bGUyRm9udDsKICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gdGl0bGUzRm9udDsKLSNp
ZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gdGl0bGU0Rm9udDsKLSNlbmRp
ZgogCiAgICAgc3RhdGljIENGU3RyaW5nUmVmIHVzZXJUZXh0U2l6ZSA9IGNvbnRlbnRTaXplQ2F0
ZWdvcnkoKTsKIApAQCAtMTE5NiwyMCArMTE5MiwxNiBAQCBGb250Q2FzY2FkZURlc2NyaXB0aW9u
JiBSZW5kZXJUaGVtZUlPUzo6CiAgICAgICAgIHJldHVybiBoZWFkbGluZUZvbnQ7CiAgICAgY2Fz
ZSBDU1NWYWx1ZUFwcGxlU3lzdGVtQm9keToKICAgICAgICAgcmV0dXJuIGJvZHlGb250OwotI2lm
IF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAogICAgIGNhc2UgQ1NT
VmFsdWVBcHBsZVN5c3RlbVRpdGxlMDoKICAgICAgICAgcmV0dXJuIHRpdGxlMEZvbnQ7Ci0jZW5k
aWYKICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1UaXRsZTE6CiAgICAgICAgIHJldHVybiB0
aXRsZTFGb250OwogICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVRpdGxlMjoKICAgICAgICAg
cmV0dXJuIHRpdGxlMkZvbnQ7CiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtVGl0bGUzOgog
ICAgICAgICByZXR1cm4gdGl0bGUzRm9udDsKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMTAwMDAKICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1UaXRsZTQ6CiAg
ICAgICAgIHJldHVybiB0aXRsZTRGb250OwotI2VuZGlmCiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxl
U3lzdGVtU3ViaGVhZGxpbmU6CiAgICAgICAgIHJldHVybiBzdWJoZWFkbGluZUZvbnQ7CiAgICAg
Y2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtRm9vdG5vdGU6CkBAIC0xMjY1LDEyICsxMjU3LDEwIEBA
IHZvaWQgUmVuZGVyVGhlbWVJT1M6OnVwZGF0ZUNhY2hlZFN5c3RlbUYKICAgICAgICAgdGV4dFN0
eWxlID0ga0NUVUlGb250VGV4dFN0eWxlQm9keTsKICAgICAgICAgZm9udERlc2NyaXB0b3IgPSBh
ZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoVGV4dFN0eWxlKHRleHRTdHlsZSwgY29u
dGVudFNpemVDYXRlZ29yeSgpLCBudWxscHRyKSk7CiAgICAgICAgIGJyZWFrOwotI2lmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAogICAgIGNhc2UgQ1NTVmFsdWVB
cHBsZVN5c3RlbVRpdGxlMDoKICAgICAgICAgdGV4dFN0eWxlID0ga0NUVUlGb250VGV4dFN0eWxl
VGl0bGUwOwogICAgICAgICBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRv
ckNyZWF0ZVdpdGhUZXh0U3R5bGUodGV4dFN0eWxlLCBjb250ZW50U2l6ZUNhdGVnb3J5KCksIG51
bGxwdHIpKTsKICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKICAgICBjYXNlIENTU1ZhbHVlQXBwbGVT
eXN0ZW1UaXRsZTE6CiAgICAgICAgIHRleHRTdHlsZSA9IGtDVFVJRm9udFRleHRTdHlsZVRpdGxl
MTsKICAgICAgICAgZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVh
dGVXaXRoVGV4dFN0eWxlKHRleHRTdHlsZSwgY29udGVudFNpemVDYXRlZ29yeSgpLCBudWxscHRy
KSk7CkBAIC0xMjgzLDEyICsxMjczLDEwIEBAIHZvaWQgUmVuZGVyVGhlbWVJT1M6OnVwZGF0ZUNh
Y2hlZFN5c3RlbUYKICAgICAgICAgdGV4dFN0eWxlID0ga0NUVUlGb250VGV4dFN0eWxlVGl0bGUz
OwogICAgICAgICBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0
ZVdpdGhUZXh0U3R5bGUodGV4dFN0eWxlLCBjb250ZW50U2l6ZUNhdGVnb3J5KCksIG51bGxwdHIp
KTsKICAgICAgICAgYnJlYWs7Ci0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTEwMDAwCiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtVGl0bGU0OgogICAgICAgICB0
ZXh0U3R5bGUgPSBrQ1RVSUZvbnRUZXh0U3R5bGVUaXRsZTQ7CiAgICAgICAgIGZvbnREZXNjcmlw
dG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0aFRleHRTdHlsZSh0ZXh0U3R5
bGUsIGNvbnRlbnRTaXplQ2F0ZWdvcnkoKSwgbnVsbHB0cikpOwogICAgICAgICBicmVhazsKLSNl
bmRpZgogICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVN1YmhlYWRsaW5lOgogICAgICAgICB0
ZXh0U3R5bGUgPSBrQ1RVSUZvbnRUZXh0U3R5bGVTdWJoZWFkOwogICAgICAgICBmb250RGVzY3Jp
cHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZVdpdGhUZXh0U3R5bGUodGV4dFN0
eWxlLCBjb250ZW50U2l6ZUNhdGVnb3J5KCksIG51bGxwdHIpKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNTQzNjQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDMyIEBACisyMDIwLTAxLTEwICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFw
cGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgb2xkIGlPUyB2ZXJzaW9uIG1hY3JvcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MDk2CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS81ODQ5MTY3NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtBY3Rpdml0eVRyYWNr
ZXIuaDogUmVtb3ZlIGlPUyAxMiB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBQbGF0Zm9ybS9z
cGkvaW9zL1VJS2l0U1BJLmg6IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3MuCisgICAgICAg
ICogU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5oOiBSZW1vdmUgaU9TIDEyIHZl
cnNpb24gY2hlY2tzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVu
dENvY29hLm1tOiBSZW1vdmUgaU9TIDEyIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbToKKyAgICAgICAgKGNvbnRlbnRPZmZzZXRCb3Vu
ZGVkSW5WYWxpZFJhbmdlKTogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAg
KC1bV0tXZWJWaWV3IGFjdGl2ZVZpZXdMYXlvdXRTaXplOl0pOiBEaXR0by4KKyAgICAgICAgKC1b
V0tXZWJWaWV3IHNhZmVBcmVhSW5zZXRzRGlkQ2hhbmdlXSk6IERpdHRvLgorICAgICAgICAoLVtX
S1dlYlZpZXcgX3VwZGF0ZVNjcm9sbFZpZXdJbnNldEFkanVzdG1lbnRCZWhhdmlvcl0pOiBEaXR0
by4KKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRy
ZWVWaWV3cy5tbToKKyAgICAgICAgKC1bV0tDaGlsZFNjcm9sbFZpZXcgaW5pdFdpdGhGcmFtZTpd
KTogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBn
ZXN0dXJlUmVjb2duaXplcjpjYW5CZVByZXZlbnRlZEJ5R2VzdHVyZVJlY29nbml6ZXI6XSk6IFJl
bW92ZSBpT1MgMTIgdmVyc2lvbiBjaGVja3MuCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZ2Vz
dHVyZVJlY29nbml6ZXI6c2hvdWxkUmVjb2duaXplU2ltdWx0YW5lb3VzbHlXaXRoR2VzdHVyZVJl
Y29nbml6ZXI6XSk6IERpdHRvLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zaG93UGxheWJh
Y2tUYXJnZXRQaWNrZXI6ZnJvbVJlY3Q6cm91dGVTaGFyaW5nUG9saWN5OnJvdXRpbmdDb250ZXh0
VUlEOl0pOiBSZW1vdmUgaU9TIDExIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IHVub2NjbHVkZWRXaW5kb3dCb3VuZHNGb3JBY3Rpb25TaGVldEFzc2lzdGFudDpdKTog
RGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZpZXcuaDogUmVtb3ZlIGlP
UyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLU2Nyb2xsVmll
dy5tbToKKyAgICAgICAgKC1bV0tTY3JvbGxWaWV3IGluaXRXaXRoRnJhbWU6XSk6IFJlbW92ZSBp
T1MgMTEgdmVyc2lvbiBjaGVja3MuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Fp
clBsYXlSb3V0ZVBpY2tlci5oOiBSZW1vdmUgaU9TIDExIHZlcnNpb24gY2hlY2tzLgorCiAyMDIw
LTAxLTEwICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtp
T1NdIFJlbW92ZSAnY29tLmFwcGxlLmNvb2tpZWQnIGZyb20gdGhlIFdlYkNvbnRlbnQgcHJvY2Vz
cyBzYW5kYm94CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtBY3Rp
dml0eVRyYWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtBY3Rpdml0eVRyYWNrZXIuaAkocmV2aXNpb24gMjU0MzY0KQorKysgU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQWN0aXZpdHlUcmFja2VyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKSAmJiAoKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApIHx8IFBMQVRGT1JNKFdBVENIT1MpKQor
I2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspICYmICgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9TX0ZBTUlM
WSkpCiAjZGVmaW5lIEhBVkVfTldfQUNUSVZJVFkgMQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCShyZXZpc2lvbiAyNTQzNjQpCisrKyBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAkod29ya2luZyBjb3B5KQpA
QCAtNDc0LDExICs0NzQsOSBAQCB0eXBlZGVmIGVudW0gewogQHByb3BlcnR5IChyZWFkb25seSkg
TlNTdHJpbmcgKl9ob3N0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyOwogQGVuZAogCi0jaWYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCiBAaW50ZXJmYWNlIE5T
VVJMICgpCiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgc2V0dGVyPV9zZXRUaXRsZTopIE5T
U3RyaW5nICpfdGl0bGU7CiBAZW5kCi0jZW5kaWYKIAogQHByb3RvY29sIFVJVmlld0NvbnRyb2xs
ZXJDb250ZXh0VHJhbnNpdGlvbmluZ0V4IDxVSVZpZXdDb250cm9sbGVyQ29udGV4dFRyYW5zaXRp
b25pbmc+CiAtICh2b2lkKV9fcnVuQWxvbmdzaWRlQW5pbWF0aW9uczsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5oCShyZXZp
c2lvbiAyNTQzNjQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1
bHRWYWx1ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjI2LDcgKzIyNiw3IEBACiAjZGVmaW5lIERF
RkFVTFRfUFJPQ0VTU19TV0FQX09OX0NST1NTX1NJVEVfTkFWSUdBVElPTl9FTkFCTEVEIGZhbHNl
CiAjZW5kaWYKIAotI2lmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShXQVRDSE9TKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShXQVRDSE9TKQogI2Rl
ZmluZSBERUZBVUxUX0NPTklDX0dSQURJRU5UX0VOQUJMRUQgdHJ1ZQogI2Vsc2UKICNkZWZpbmUg
REVGQVVMVF9DT05JQ19HUkFESUVOVF9FTkFCTEVEIGZhbHNlCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0J
KHJldmlzaW9uIDI1NDM2NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9B
UElBdHRhY2htZW50Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKICNl
bmRpZgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KIAotI2Rl
ZmluZSBDQU5fU0VDVVJFTFlfQVJDSElWRV9GSUxFX1dSQVBQRVIgKFBMQVRGT1JNKE1BQykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJ
T1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAp
CisjZGVmaW5lIENBTl9TRUNVUkVMWV9BUkNISVZFX0ZJTEVfV1JBUFBFUiAoUExBVEZPUk0oTUFD
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIAogbmFtZXNwYWNlIEFQSSB7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCShyZXZpc2lvbiAyNTQzNjQp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQkod29y
a2luZyBjb3B5KQpAQCAtNjkzLDExICs2OTMsNyBAQCAtICh2b2lkKV9kaWRDb21taXRMb2FkRm9y
TWFpbkZyYW1lCiAKIHN0YXRpYyBDR1BvaW50IGNvbnRlbnRPZmZzZXRCb3VuZGVkSW5WYWxpZFJh
bmdlKFVJU2Nyb2xsVmlldyAqc2Nyb2xsVmlldywgQ0dQb2ludCBjb250ZW50T2Zmc2V0KQogewot
I2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAogICAgIFVJRWRn
ZUluc2V0cyBjb250ZW50SW5zZXRzID0gc2Nyb2xsVmlldy5hZGp1c3RlZENvbnRlbnRJbnNldDsK
LSNlbHNlCi0gICAgVUlFZGdlSW5zZXRzIGNvbnRlbnRJbnNldHMgPSBzY3JvbGxWaWV3LmNvbnRl
bnRJbnNldDsKLSNlbmRpZgogCiAgICAgQ0dTaXplIGNvbnRlbnRTaXplID0gc2Nyb2xsVmlldy5j
b250ZW50U2l6ZTsKICAgICBDR1NpemUgc2Nyb2xsVmlld1NpemUgPSBzY3JvbGxWaWV3LmJvdW5k
cy5zaXplOwpAQCAtMTcwMCwxMSArMTY5Niw3IEBAIC0gKFdlYkNvcmU6OkZsb2F0U2l6ZSlhY3Rp
dmVWaWV3TGF5b3V0U2kKICAgICBpZiAoX3ZpZXdMYXlvdXRTaXplT3ZlcnJpZGUpCiAgICAgICAg
IHJldHVybiBXZWJDb3JlOjpGbG9hdFNpemUoX3ZpZXdMYXlvdXRTaXplT3ZlcnJpZGUudmFsdWUo
KSk7CiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKICAg
ICByZXR1cm4gV2ViQ29yZTo6RmxvYXRTaXplKFVJRWRnZUluc2V0c0luc2V0UmVjdChDR1JlY3RN
YWtlKDAsIDAsIGJvdW5kcy5zaXplLndpZHRoLCBib3VuZHMuc2l6ZS5oZWlnaHQpLCBzZWxmLl9z
Y3JvbGxWaWV3U3lzdGVtQ29udGVudEluc2V0KS5zaXplKTsKLSNlbHNlCi0gICAgcmV0dXJuIFdl
YkNvcmU6OkZsb2F0U2l6ZSB7IGJvdW5kcy5zaXplIH07Ci0jZW5kaWYKIH0KIAogLSAodm9pZClf
ZGlzcGF0Y2hTZXRWaWV3TGF5b3V0U2l6ZTooV2ViQ29yZTo6RmxvYXRTaXplKXZpZXdMYXlvdXRT
aXplCkBAIC0xNzc4LDE0ICsxNzcwLDEyIEBAIC0gKEJPT0wpX3Njcm9sbFZpZXdJc1J1YmJlckJh
bmRpbmcKICAgICByZXR1cm4gIXBvaW50c0VxdWFsSW5EZXZpY2VQaXhlbHMoY29udGVudE9mZnNl
dCwgYm91bmRlZE9mZnNldCwgZGV2aWNlU2NhbGVGYWN0b3IpOwogfQogCi0jaWYgX19JUEhPTkVf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCiAtICh2b2lkKXNhZmVBcmVhSW5zZXRz
RGlkQ2hhbmdlCiB7CiAgICAgW3N1cGVyIHNhZmVBcmVhSW5zZXRzRGlkQ2hhbmdlXTsKIAogICAg
IFtzZWxmIF9zY2hlZHVsZVZpc2libGVDb250ZW50UmVjdFVwZGF0ZV07CiB9Ci0jZW5kaWYKIAog
LSAodm9pZClfc2NoZWR1bGVWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUKIHsKQEAgLTIzMDAsMTAg
KzIyOTAsOCBAQCAtIChXS1Bhc3N3b3JkVmlldyAqKV9wYXNzd29yZFZpZXcKIAogLSAodm9pZClf
dXBkYXRlU2Nyb2xsVmlld0luc2V0QWRqdXN0bWVudEJlaGF2aW9yCiB7Ci0jaWYgX19JUEhPTkVf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCiAgICAgaWYgKCFbX3Njcm9sbFZpZXcg
X2NvbnRlbnRJbnNldEFkanVzdG1lbnRCZWhhdmlvcldhc0V4dGVybmFsbHlPdmVycmlkZGVuXSkK
ICAgICAgICAgW19zY3JvbGxWaWV3IF9zZXRDb250ZW50SW5zZXRBZGp1c3RtZW50QmVoYXZpb3JJ
bnRlcm5hbDpzZWxmLl9zYWZlQXJlYVNob3VsZEFmZmVjdE9ic2N1cmVkSW5zZXRzID8gVUlTY3Jv
bGxWaWV3Q29udGVudEluc2V0QWRqdXN0bWVudEFsd2F5cyA6IFVJU2Nyb2xsVmlld0NvbnRlbnRJ
bnNldEFkanVzdG1lbnROZXZlcl07Ci0jZW5kaWYKIH0KIAogLSAodm9pZClfc2V0QXZvaWRzVW5z
YWZlQXJlYTooQk9PTClhdm9pZHNVbnNhZmVBcmVhCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3Rl
TGF5ZXJUcmVlVmlld3MubW0JKHJldmlzaW9uIDI1NDM2NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlVmlld3MubW0JKHdvcmtp
bmcgY29weSkKQEAgLTMxMCw5ICszMTAsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFt
ZTooQ0dSZWN0KWZyCiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogCi0jaWYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCiAgICAgc2VsZi5jb250
ZW50SW5zZXRBZGp1c3RtZW50QmVoYXZpb3IgPSBVSVNjcm9sbFZpZXdDb250ZW50SW5zZXRBZGp1
c3RtZW50TmV2ZXI7Ci0jZW5kaWYKIAogICAgIHJldHVybiBzZWxmOwogfQpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCShyZXZpc2lvbiAyNTQzNjQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTkzLDkgKzE5
OTMsOCBAQCAtIChCT09MKWdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvCiAtIChCT09M
KWdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvZ25pemVyICopcHJldmVudGVkR2VzdHVy
ZVJlY29nbml6ZXIgY2FuQmVQcmV2ZW50ZWRCeUdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVS
ZWNvZ25pemVyICopcHJldmVudGluZ0dlc3R1cmVSZWNvZ25pemVyIHsKICAgICAvLyBEb24ndCBh
bGxvdyB0aGUgaGlnaGxpZ2h0IHRvIGJlIHByZXZlbnRlZCBieSBhIHNlbGVjdGlvbiBnZXN0dXJl
LiBQcmVzcy1hbmQtaG9sZCBvbiBhIGxpbmsgc2hvdWxkIGhpZ2hsaWdodCB0aGUgbGluaywgbm90
IHNlbGVjdCBpdC4KICAgICBib29sIGlzRm9yY2VQcmVzc0dlc3R1cmUgPSBOTzsKLSNpZiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAKICAgICBpc0ZvcmNlUHJlc3NH
ZXN0dXJlID0gKHByZXZlbnRpbmdHZXN0dXJlUmVjb2duaXplciA9PSBfdGV4dEludGVyYWN0aW9u
QXNzaXN0YW50LmdldCgpLmZvcmNlUHJlc3NHZXN0dXJlKTsKLSNlbmRpZgorCiAjaWYgUExBVEZP
Uk0oTUFDQ0FUQUxZU1QpCiAgICAgaWYgKChwcmV2ZW50aW5nR2VzdHVyZVJlY29nbml6ZXIgPT0g
X3RleHRJbnRlcmFjdGlvbkFzc2lzdGFudC5nZXQoKS5sb3VwZUdlc3R1cmUpICYmIChwcmV2ZW50
ZWRHZXN0dXJlUmVjb2duaXplciA9PSBfaGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6
ZXIgfHwgcHJldmVudGVkR2VzdHVyZVJlY29nbml6ZXIgPT0gX2xvbmdQcmVzc0dlc3R1cmVSZWNv
Z25pemVyIHx8IHByZXZlbnRlZEdlc3R1cmVSZWNvZ25pemVyID09IF90ZXh0SW50ZXJhY3Rpb25B
c3Npc3RhbnQuZ2V0KCkuZm9yY2VQcmVzc0dlc3R1cmUpKQogICAgICAgICByZXR1cm4gWUVTOwpA
QCAtMjAzMyw3ICsyMDMyLDYgQEAgLSAoQk9PTClnZXN0dXJlUmVjb2duaXplcjooVUlHZXN0dXJl
UmVjbwogICAgICAgICByZXR1cm4gWUVTOwogI2VuZGlmCiAKLSNpZiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAKICNpZiBQTEFURk9STShNQUNDQVRBTFlTVCkKICAg
ICBpZiAoaXNTYW1lUGFpcihnZXN0dXJlUmVjb2duaXplciwgb3RoZXJHZXN0dXJlUmVjb2duaXpl
ciwgX3RleHRJbnRlcmFjdGlvbkFzc2lzdGFudC5nZXQoKS5sb3VwZUdlc3R1cmUsIF90ZXh0SW50
ZXJhY3Rpb25Bc3Npc3RhbnQuZ2V0KCkuZm9yY2VQcmVzc0dlc3R1cmUpKQogICAgICAgICByZXR1
cm4gWUVTOwpAQCAtMjA0Niw3ICsyMDQ0LDcgQEAgLSAoQk9PTClnZXN0dXJlUmVjb2duaXplcjoo
VUlHZXN0dXJlUmVjbwogI2VuZGlmCiAgICAgaWYgKGlzU2FtZVBhaXIoZ2VzdHVyZVJlY29nbml6
ZXIsIG90aGVyR2VzdHVyZVJlY29nbml6ZXIsIF9oaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVj
b2duaXplci5nZXQoKSwgX3RleHRJbnRlcmFjdGlvbkFzc2lzdGFudC5nZXQoKS5mb3JjZVByZXNz
R2VzdHVyZSkpCiAgICAgICAgIHJldHVybiBZRVM7Ci0jZW5kaWYKKwogICAgIGlmIChpc1NhbWVQ
YWlyKGdlc3R1cmVSZWNvZ25pemVyLCBvdGhlckdlc3R1cmVSZWNvZ25pemVyLCBfc2luZ2xlVGFw
R2VzdHVyZVJlY29nbml6ZXIuZ2V0KCksIF90ZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQuZ2V0KCku
c2luZ2xlVGFwR2VzdHVyZSkpCiAgICAgICAgIHJldHVybiBZRVM7CiAKQEAgLTY0MjgsNyArNjQy
Niw3IEBAIC0gKHZvaWQpdXBkYXRlVGV4dFN1Z2dlc3Rpb25zRm9ySW5wdXREZWwKIC0gKHZvaWQp
X3Nob3dQbGF5YmFja1RhcmdldFBpY2tlcjooQk9PTCloYXNWaWRlbyBmcm9tUmVjdDooY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYpZWxlbWVudFJlY3Qgcm91dGVTaGFyaW5nUG9saWN5OihXZWJDb3Jl
OjpSb3V0ZVNoYXJpbmdQb2xpY3kpcm91dGVTaGFyaW5nUG9saWN5IHJvdXRpbmdDb250ZXh0VUlE
OihOU1N0cmluZyAqKXJvdXRpbmdDb250ZXh0VUlECiB7CiAjaWYgRU5BQkxFKEFJUlBMQVlfUElD
S0VSKQotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCAmJiAh
UExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCisjaWYgIVBMQVRGT1JNKFdB
VENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQogICAgIGlmICghX2FpclBsYXlSb3V0ZVBpY2tl
cikKICAgICAgICAgX2FpclBsYXlSb3V0ZVBpY2tlciA9IGFkb3B0TlMoW1tXS0FpclBsYXlSb3V0
ZVBpY2tlciBhbGxvY10gaW5pdF0pOwogICAgIFtfYWlyUGxheVJvdXRlUGlja2VyIHNob3dGcm9t
VmlldzpzZWxmIHJvdXRlU2hhcmluZ1BvbGljeTpyb3V0ZVNoYXJpbmdQb2xpY3kgcm91dGluZ0Nv
bnRleHRVSUQ6cm91dGluZ0NvbnRleHRVSUQgaGFzVmlkZW86aGFzVmlkZW9dOwpAQCAtNjYyMywx
NCArNjYyMSwxMiBAQCAtIChCT09MKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoCiAg
ICAgcmV0dXJuIE5POwogfQogCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTEwMDAwCiAtIChDR1JlY3QpdW5vY2NsdWRlZFdpbmRvd0JvdW5kc0ZvckFjdGlvblNoZWV0
QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50CiB7CiAgICAgVUlF
ZGdlSW5zZXRzIGNvbnRlbnRJbnNldCA9IFtbX3dlYlZpZXcgc2Nyb2xsVmlld10gYWRqdXN0ZWRD
b250ZW50SW5zZXRdOwogICAgIENHUmVjdCByZWN0ID0gVUlFZGdlSW5zZXRzSW5zZXRSZWN0KFtf
d2ViVmlldyBib3VuZHNdLCBjb250ZW50SW5zZXQpOwogICAgIHJldHVybiBbX3dlYlZpZXcgY29u
dmVydFJlY3Q6cmVjdCB0b1ZpZXc6W3NlbGYgd2luZG93XV07CiB9Ci0jZW5kaWYKIAogLSAoUmV0
YWluUHRyPE5TQXJyYXk+KWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0
YW50ICopYXNzaXN0YW50IGRlY2lkZUFjdGlvbnNGb3JFbGVtZW50OihfV0tBY3RpdmF0ZWRFbGVt
ZW50SW5mbyAqKWVsZW1lbnQgZGVmYXVsdEFjdGlvbnM6KFJldGFpblB0cjxOU0FycmF5PilkZWZh
dWx0QWN0aW9ucwogewpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLU2Nyb2xs
Vmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1Njcm9s
bFZpZXcuaAkocmV2aXNpb24gMjU0MzY0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLU2Nyb2xsVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMCArMzcsOCBAQAogLSAodm9p
ZClfc2V0U2Nyb2xsRW5hYmxlZEludGVybmFsOihCT09MKWVuYWJsZWQ7CiAtICh2b2lkKV9zZXRa
b29tRW5hYmxlZEludGVybmFsOihCT09MKWVuYWJsZWQ7CiAKLSNpZiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24s
IHJlYWRvbmx5KSBCT09MIF9jb250ZW50SW5zZXRBZGp1c3RtZW50QmVoYXZpb3JXYXNFeHRlcm5h
bGx5T3ZlcnJpZGRlbjsKIC0gKHZvaWQpX3NldENvbnRlbnRJbnNldEFkanVzdG1lbnRCZWhhdmlv
ckludGVybmFsOihVSVNjcm9sbFZpZXdDb250ZW50SW5zZXRBZGp1c3RtZW50QmVoYXZpb3IpaW5z
ZXRBZGp1c3RtZW50QmVoYXZpb3I7Ci0jZW5kaWYKIAogQGVuZAogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tTY3JvbGxWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZpZXcubW0JKHJldmlzaW9uIDI1NDM2NCkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZpZXcubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTEyNyw5ICsxMjcsNyBAQCAtIChpZClmb3J3YXJkaW5nVGFyZ2V0Rm9yU2VsZWN0b3I6
KFNFTClhCiAgICAgV2Vha09iakNQdHI8aWQgPFVJU2Nyb2xsVmlld0RlbGVnYXRlPj4gX2V4dGVy
bmFsRGVsZWdhdGU7CiAgICAgV0tTY3JvbGxWaWV3RGVsZWdhdGVGb3J3YXJkZXIgKl9kZWxlZ2F0
ZUZvcndhcmRlcjsKIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEx
MDAwMAogICAgIEJPT0wgX2NvbnRlbnRJbnNldEFkanVzdG1lbnRCZWhhdmlvcldhc0V4dGVybmFs
bHlPdmVycmlkZGVuOwotI2VuZGlmCiAgICAgQ0dGbG9hdCBfa2V5Ym9hcmRCb3R0b21JbnNldEFk
anVzdG1lbnQ7CiAgICAgQk9PTCBfc2Nyb2xsRW5hYmxlZEJ5Q2xpZW50OwogICAgIEJPT0wgX3Nj
cm9sbEVuYWJsZWRJbnRlcm5hbDsKQEAgLTE1Myw5ICsxNTEsNyBAQCAtIChpZClpbml0V2l0aEZy
YW1lOihDR1JlY3QpZnJhbWUKICAgICBzZWxmLmRpcmVjdGlvbmFsTG9ja0VuYWJsZWQgPSBZRVM7
CiAgICAgW3NlbGYgX3NldEluZGljYXRvckluc2V0QWRqdXN0bWVudEJlaGF2aW9yOlVJU2Nyb2xs
Vmlld0luZGljYXRvckluc2V0QWRqdXN0bWVudEFsd2F5c107CiAKLSNpZiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKICAgICBfY29udGVudEluc2V0QWRqdXN0bWVu
dEJlaGF2aW9yV2FzRXh0ZXJuYWxseU92ZXJyaWRkZW4gPSAoc2VsZi5jb250ZW50SW5zZXRBZGp1
c3RtZW50QmVoYXZpb3IgIT0gVUlTY3JvbGxWaWV3Q29udGVudEluc2V0QWRqdXN0bWVudEF1dG9t
YXRpYyk7Ci0jZW5kaWYKICAgICAKICNpZiBQTEFURk9STShXQVRDSE9TKQogICAgIFtzZWxmIF9j
b25maWd1cmVEaWdpdGFsQ3Jvd25TY3JvbGxpbmddOwpAQCAtMjc4LDggKzI3NCw2IEBAIC0gKHZv
aWQpc2V0Q29udGVudEluc2V0OihVSUVkZ2VJbnNldHMpY28KICAgICBbX2ludGVybmFsRGVsZWdh
dGUgX3NjaGVkdWxlVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlXTsKIH0KIAotI2lmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAotCiAtIChCT09MKV9jb250ZW50SW5z
ZXRBZGp1c3RtZW50QmVoYXZpb3JXYXNFeHRlcm5hbGx5T3ZlcnJpZGRlbgogewogICAgIHJldHVy
biBfY29udGVudEluc2V0QWRqdXN0bWVudEJlaGF2aW9yV2FzRXh0ZXJuYWxseU92ZXJyaWRkZW47
CkBAIC0zMDQsOCArMjk4LDYgQEAgLSAodm9pZClfc2V0Q29udGVudEluc2V0QWRqdXN0bWVudEJl
aGF2aQogICAgIFtzdXBlciBzZXRDb250ZW50SW5zZXRBZGp1c3RtZW50QmVoYXZpb3I6aW5zZXRB
ZGp1c3RtZW50QmVoYXZpb3JdOwogfQogCi0jZW5kaWYKLQogLy8gRmV0Y2ggdG9wL2xlZnQgcnVi
YmVyYmFuZCBhbW91bnRzIChhcyBuZWdhdGl2ZSB2YWx1ZXMpLgogLSAoQ0dTaXplKV9jdXJyZW50
VG9wTGVmdFJ1YmJlcmJhbmRBbW91bnQKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9mb3Jtcy9XS0FpclBsYXlSb3V0ZVBpY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0FpclBsYXlSb3V0ZVBpY2tlci5oCShyZXZpc2lv
biAyNTQzNjQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tBaXJQbGF5
Um91dGVQaWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKEFJUlBMQVlfUElDS0VSKQogCi0jaWYgX19JUEhP
TkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwICYmICFQTEFURk9STShXQVRDSE9T
KSAmJiAhUExBVEZPUk0oQVBQTEVUVikKKyNpZiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRG
T1JNKEFQUExFVFYpCiAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTQzNjQpCisrKyBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBA
QAorMjAyMC0wMS0xMCAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVtb3ZlIG9sZCBpT1MgdmVyc2lvbiBtYWNyb3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjA5NgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNTg0OTE2NzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06IFJlbW92ZSBpT1MgMTEg
dmVyc2lvbiBjaGVja3MuCisgICAgICAgICogV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5o
OiBEaXR0by4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06IERpdHRvLgorICAgICAgICAq
IFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDogRGl0dG8uCisKIDIwMjAtMDEtMDkgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRvcHQgVEFSR0VUX09T
X01BQ0NBVEFMWVNUIGluIG1vcmUgcGxhY2VzCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCShyZXZp
c2lvbiAyNTQzNjQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTQxOCw3ICs0MTgsNyBAQCB2b2lk
IFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyCiAgICAgLy8gTm90IGltcGxlbWVu
dGVkIFdlYktpdCwgb25seSBXZWJLaXQyLgogfQogCi0jaWYgKFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkgfHwgUExBVEZP
Uk0oTUFDKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IFBMQVRGT1JNKE1BQykKIAogLy8g
RklYTUU6IFJlbW92ZSBib3RoIHRoaXMgc3R1YiBhbmQgdGhlIHJlYWwgdmVyc2lvbiBvZiB0aGlz
IGZ1bmN0aW9uIGJlbG93IG9uY2Ugd2UgZG9uJ3QgbmVlZCB0aGUgcmVhbCB2ZXJzaW9uIG9uIGFu
eSBzdXBwb3J0ZWQgcGxhdGZvcm0uCiAvLyBUaGlzIHN0dWIgaXMgbm90IHVzZWQgb3V0c2lkZSBX
ZWJLaXQsIGJ1dCBpdCdzIGhlcmUgc28gd2Ugd29uJ3QgZ2V0IGEgbGlua2VyIGVycm9yLgpJbmRl
eDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVUlEZWxl
Z2F0ZVByaXZhdGUuaAkocmV2aXNpb24gMjU0MzY0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3
ICs0NSw3IEBACiAjZW5kaWYKICNlbmRpZgogCi0jaWYgVEFSR0VUX09TX0lQSE9ORSAmJiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiBUQVJHRVRfT1NfSVBI
T05FCiBAcHJvdG9jb2wgVUlEcm9wU2Vzc2lvbjsKICNlbmRpZgogCkBAIC0yOTksNyArMjk5LDYg
QEAgQGludGVyZmFjZSBOU09iamVjdCAoV2ViVUlEZWxlZ2F0ZVByaXZhdAogCiAtIChCT09MKXdl
YlZpZXdDYW5DaGVja0dlb2xvY2F0aW9uQXV0aG9yaXphdGlvblN0YXR1czooV2ViVmlldyAqKXNl
bmRlcjsKIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAog
LyohCiAgQG1ldGhvZCB3ZWJWaWV3OmRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JTZXNzaW9u
OgogIEBwYXJhbSBzZW5kZXIgVGhlIFdlYlZpZXcgc2VuZGluZyB0aGUgZGVsZWdhdGUgbWV0aG9k
CkBAIC0zMDgsNyArMzA3LDYgQEAgQGludGVyZmFjZSBOU09iamVjdCAoV2ViVUlEZWxlZ2F0ZVBy
aXZhdAogICovCiAtIChXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24pd2ViVmlldzooV2ViVmlldyAq
KXNlbmRlciBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yU2Vzc2lvbjooaWQgPFVJRHJvcFNl
c3Npb24+KXNlc3Npb247CiAjZW5kaWYKLSNlbmRpZgogCiAtIChOU0RhdGEgKil3ZWJDcnlwdG9N
YXN0ZXJLZXlGb3JXZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAyNTQzNjQpCisrKyBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkK
QEAgLTE5NjYsNyArMTk2Niw3IEBAIC0gKHZvaWQpX2RpZENvbmNsdWRlRWRpdERyYWcKICAgICB9
CiB9CiAKLSNlbGlmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAor
I2Vsc2UKIAogLSAoQk9PTClfcmVxdWVzdFN0YXJ0RGF0YUludGVyYWN0aW9uOihDR1BvaW50KWNs
aWVudFBvc2l0aW9uIGdsb2JhbFBvc2l0aW9uOihDR1BvaW50KWdsb2JhbFBvc2l0aW9uCiB7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0
ZS5oCShyZXZpc2lvbiAyNTQzNjQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXdQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNyw5ICsxMTcsNyBAQCBleHRl
cm4gTlNTdHJpbmcgKldlYlF1aWNrTG9va0ZpbGVOYW1lS2V5CiBleHRlcm4gTlNTdHJpbmcgKldl
YlF1aWNrTG9va1VUSUtleTsKICNlbmRpZgogCi0jaWYgVEFSR0VUX09TX0lQSE9ORSAmJiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKIEBwcm90b2NvbCBVSURyb3BT
ZXNzaW9uOwotI2VuZGlmCiAKIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IFdlYlZpZXdXaWxsQ2xv
c2VOb3RpZmljYXRpb247CiAKQEAgLTQ3OSw3ICs0NzcsNiBAQCBDb3VsZCBiZSB3b3J0aCBhZGRp
bmcgdG8gdGhlIEFQSS4KIAogLSAodm9pZClfcmVwbGFjZUN1cnJlbnRIaXN0b3J5SXRlbTooV2Vi
SGlzdG9yeUl0ZW0gKilpdGVtOwogCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTEwMDAwCiAtIChCT09MKV9yZXF1ZXN0U3RhcnREYXRhSW50ZXJhY3Rpb246KENHUG9p
bnQpY2xpZW50UG9zaXRpb24gZ2xvYmFsUG9zaXRpb246KENHUG9pbnQpZ2xvYmFsUG9zaXRpb247
CiAtIChXZWJVSVRleHRJbmRpY2F0b3JEYXRhICopX2dldERhdGFJbnRlcmFjdGlvbkRhdGE7CiBA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIHN0cm9uZywgZ2V0dGVyPV9kYXRhT3BlcmF0
aW9uVGV4dEluZGljYXRvcikgV2ViVUlUZXh0SW5kaWNhdG9yRGF0YSAqZGF0YU9wZXJhdGlvblRl
eHRJbmRpY2F0b3I7CkBAIC00OTUsNyArNDkyLDYgQEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRv
IHRoZSBBUEkuCiAtICh2b2lkKV9lbmRlZERhdGFJbnRlcmFjdGlvbjooQ0dQb2ludCljbGllbnRQ
b3NpdGlvbiBnbG9iYWw6KENHUG9pbnQpZ2xvYmFsUG9zaXRpb247CiAKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSwgZ2V0dGVyPV9kYXRhSW50ZXJhY3Rpb25DYXJldFJlY3QpIENHUmVj
dCBkYXRhSW50ZXJhY3Rpb25DYXJldFJlY3Q7Ci0jZW5kaWYKIAogLy8gRGVwcmVjYXRlZC4gVXNl
IC1bV2ViRGF0YVNvdXJjZSBfcXVpY2tMb29rQ29udGVudF0gaW5zdGVhZC4KIC0gKE5TRGljdGlv
bmFyeSAqKXF1aWNrTG9va0NvbnRlbnRGb3JVUkw6KE5TVVJMICopdXJsOwpJbmRleDogVG9vbHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjU0MzY2
KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIw
MjAtMDEtMTAgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgorCisgICAgICAg
IFJlbW92ZSBvbGQgaU9TIHZlcnNpb24gbWFjcm9zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYwOTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4
NDkxNjc1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5r
VGVzdC5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOiBSZW1vdmUgaU9TIDExIHZl
cnNpb24gY2hlY2tzLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW06IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3Mu
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRU
ZXN0cy5tbTogRGl0dG8uCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XS0hUVFBDb29raWVTdG9yZS5tbTogUmVtb3ZlIGlPUyAxMiB2ZXJzaW9uIGNoZWNrcy4KKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcubW06Cisg
ICAgICAgICgtW1Rlc3RSdW5uZXJXS1dlYlZpZXcgc2V0T3ZlcnJpZGVTYWZlQXJlYUluc2V0czpd
KTogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKwogMjAyMC0wMS0xMCAgQ2FybG9zIEFs
YmVydG8gTG9wZXogUGVyZXogIDxjbG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtX
UEVdIEVXUyBzaG91bGQgbm90IHdpcGUgdGhlIEpIQnVpbGQgaW4gdGhlIHVuYXBwbHkgcGF0Y2gg
c3RlcApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0FWRm91
bmRhdGlvblNvZnRMaW5rVGVzdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmtUZXN0Lm1tCShyZXZpc2lv
biAyNTQzNjQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvQVZG
b3VuZGF0aW9uU29mdExpbmtUZXN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsMTIgKzEzOCwx
MiBAQCBURVNUKEFWRm91bmRhdGlvblNvZnRMaW5rLCBDb25zdGFudHMpCiAgICAgaWYgKFBBTDo6
Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZTYW1wbGVSYXRlS2V5KCkpCiAgICAgICAgIEVYUEVDVF9U
UlVFKFtBVlNhbXBsZVJhdGVLZXkgaXNFcXVhbFRvU3RyaW5nOkAiQVZTYW1wbGVSYXRlS2V5Il0p
OwogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApIHx8IFBMQVRGT1JNKFdBVENIT1MpIHx8IFBM
QVRGT1JNKEFQUExFVFYpCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpIHx8IFBM
QVRGT1JNKFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQUExFVFYpCiAgICAgRVhQRUNUX1RSVUUoUEFM
OjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVlVSTEFzc2V0T3V0T2ZCYW5kTUlNRVR5cGVLZXkoKSk7
CiAgICAgRVhQRUNUX1RSVUUoW0FWVVJMQXNzZXRPdXRPZkJhbmRNSU1FVHlwZUtleSBpc0VxdWFs
VG9TdHJpbmc6QCJBVlVSTEFzc2V0T3V0T2ZCYW5kTUlNRVR5cGVLZXkiXSk7CiAjZW5kaWYKIAot
I2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMjAwMDApIHx8IFBMQVRGT1JNKFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQUExFVFYp
CisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDE0MDApIHx8IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oV0FUQ0hPUykgfHwgUExBVEZP
Uk0oQVBQTEVUVikKICAgICBFWFBFQ1RfVFJVRShQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FW
VVJMQXNzZXRVc2VDbGllbnRVUkxMb2FkaW5nRXhjbHVzaXZlbHkoKSk7CiAgICAgRVhQRUNUX1RS
VUUoW0FWVVJMQXNzZXRVc2VDbGllbnRVUkxMb2FkaW5nRXhjbHVzaXZlbHkgaXNFcXVhbFRvU3Ry
aW5nOkAiQVZVUkxBc3NldFVzZUNsaWVudFVSTExvYWRpbmdFeGNsdXNpdmVseSJdKTsKICNlbmRp
ZgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dh
cE9uTmF2aWdhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCShyZXZpc2lvbiAyNTQzNjQp
CisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25O
YXZpZ2F0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MzkyLDcgKzYzOTIsNyBAQCBURVNUKFBy
b2Nlc3NTd2FwLCBQYWdlT3ZlcmxheUxheWVyUGVyc2lzCiAjZW5kaWYKIH0KIAotI2lmIFBMQVRG
T1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisj
aWYgUExBVEZPUk0oSU9TKQogCiBURVNUKFByb2Nlc3NTd2FwLCBRdWlja0xvb2tSZXF1ZXN0c1Bh
c3N3b3JkQWZ0ZXJTd2FwKQogewpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCShyZXZpc2lvbiAy
NTQzNjQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNo
bWVudFRlc3RzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIC0gKF9XS0F0dGFj
aG1lbnQgKilfYXR0YWNobWVudFdpdGhOYW1lOigKIH0KIEBlbmQKIAotI2RlZmluZSBVU0VTX01P
REVSTl9BVFRSSUJVVEVEX1NUUklOR19DT05WRVJTSU9OICgoUExBVEZPUk0oSU9TX0ZBTUlMWSkg
JiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKSB8fCBQTEFURk9S
TShNQUMpKQorI2RlZmluZSBVU0VTX01PREVSTl9BVFRSSUJVVEVEX1NUUklOR19DT05WRVJTSU9O
IChQTEFURk9STShJT1NfRkFNSUxZKSB8fCBQTEFURk9STShNQUMpKQogCiBAaW50ZXJmYWNlIEF0
dGFjaG1lbnRVcGRhdGVPYnNlcnZlciA6IE5TT2JqZWN0IDxXS1VJRGVsZWdhdGVQcml2YXRlPgog
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0FycmF5ICppbnNlcnRlZDsKSW5kZXg6
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tIVFRQQ29va2llU3RvcmUu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
S0hUVFBDb29raWVTdG9yZS5tbQkocmV2aXNpb24gMjU0MzY0KQorKysgVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzQ3LDcgKzM0Nyw3IEBAIFRFU1QoV2ViS2l0LCBXS0hUVFBDb29raWVTdG9yZUh0dHBP
bmx5KSAKICAgICBbY29va2llcyByZWxlYXNlXTsKIH0KIAotI2lmIChQTEFURk9STShNQUMpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0o
SU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAw
KQorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTAxNDAwKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogVEVTVChXZWJLaXQsIFdLSFRUUENv
b2tpZVN0b3JlQ3JlYXRpb25UaW1lKSAKIHsgICAKICAgICBhdXRvIGRhdGFTdG9yZSA9IFtXS1dl
YnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV07CkBAIC00MDEsNyArNDAxLDcgQEAgVEVT
VChXZWJLaXQsIFdLSFRUUENvb2tpZVN0b3JlQ3JlYXRpb25UaQogICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZ290RmxhZyk7CiAgICAgZ290RmxhZyA9IGZhbHNlOwogfQotI2VuZGlmIC8v
IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAx
NDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTIwMDAwKQorI2VuZGlmIC8vIChQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShJT1NfRkFNSUxZ
KQogCiAvLyBGSVhNRTogVGhpcyAjaWYgc2hvdWxkIGJlIHJlbW92ZWQgb25jZSA8cmRhcjovL3By
b2JsZW0vMzUzNDQyMDI+IGlzIHJlc29sdmVkIGFuZCBib3RzIGFyZSB1cGRhdGVkLgogI2lmIFBM
QVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEIDw9IDEwMTMwMQpJ
bmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldL
V2ViVmlldy5tbQkocmV2aXNpb24gMjU0MzY0KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9j
b2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MjUsOSArNDI1
LDcgQEAgLSAodm9pZClhY2Nlc3NpYmlsaXR5UmV0cmlldmVTcGVha1NlbGVjdAogLSAodm9pZClz
ZXRPdmVycmlkZVNhZmVBcmVhSW5zZXRzOihVSUVkZ2VJbnNldHMpaW5zZXRzCiB7CiAgICAgX292
ZXJyaWRlU2FmZUFyZWFJbnNldHMgPSBpbnNldHM7Ci0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTEwMDAwCiAgICAgW3NlbGYgX3VwZGF0ZVNhZmVBcmVhSW5zZXRzXTsK
LSNlbmRpZgogfQogCiAtIChVSUVkZ2VJbnNldHMpX3NhZmVBcmVhSW5zZXRzRm9yRnJhbWU6KENH
UmVjdClmcmFtZSBpblN1cGVydmlldzooVUlWaWV3ICopdmlldwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387405</attachid>
            <date>2020-01-10 17:35:33 -0800</date>
            <delta_ts>2020-01-13 17:45:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206096-20200110173532.patch</filename>
            <type>text/plain</type>
            <size>48082</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNTQzODQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAxLTEwICBKb25hdGhhbiBCZWRhcmQgIDxq
YmVkYXJkQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgb2xkIGlPUyB2ZXJzaW9uIG1hY3Jv
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MDk2
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODQ5MTY3NT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9GZWF0dXJlRGVmaW5lcy5oOiBSZW1v
dmUgaU9TIDEyIHZlcnNpb24gbWFjcm8uCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6IERpdHRv
LgorCiAyMDIwLTAxLTEwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIEludHJvZHVjZSBFTkFCTEVfTUVUQV9WSUVXUE9SVCBhbmQgdXNlIGl0IGluIHNv
bWUgV0syIGNvZGUKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaAkocmV2aXNpb24gMjU0Mzg0
KQorKysgU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MTc4LDcgKzE3OCw3IEBAIHRoZSBwdWJsaWMgaU9TIFNESy4gU2VlIDxodHRwczovL3dlYmtpdC4K
ICNlbmRpZgogCiAjaWYgIWRlZmluZWQoRU5BQkxFX1dLUERGVklFVykKLSNpZiAhUExBVEZPUk0o
V0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkg
JiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwCisjaWYgUExBVEZP
Uk0oSU9TKQogI2RlZmluZSBFTkFCTEVfV0tQREZWSUVXIDEKICNlbmRpZgogI2VuZGlmCkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtLmgJKHJldmlzaW9uIDI1NDM4NCkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1MjEsNyArMTUyMSw3IEBACiAjZGVmaW5lIEhBVkVfQVVU
SE9SSVpBVElPTl9TVEFUVVNfRk9SX01FRElBX1RZUEUgMQogI2VuZGlmCiAKLSNpZiAoUExBVEZP
Uk0oTUFDKSAmJiAoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDAgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEID49IDEwMTQwNCkpIHx8IChQTEFURk9STShJ
T1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCAmJiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEID49IDEyMDIwMCkgfHwgUExBVEZPUk0oV0FUQ0hP
UykgfHwgUExBVEZPUk0oQVBQTEVUVikKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiAoX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDAgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01B
WF9BTExPV0VEID49IDEwMTQwNCkpIHx8IFBMQVRGT1JNKFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQ
UExFVFYpCiAjZGVmaW5lIEhBVkVfQ0ZORVRXT1JLX09WRVJSSURFX1NFU1NJT05fQ09PS0lFX0FD
Q0VQVF9QT0xJQ1kgMQogI2VuZGlmCiAKQEAgLTE2MDEsNyArMTYwMSw3IEBACiAjZGVmaW5lIEhB
VkVfUk9VVEVfU0hBUklOR19QT0xJQ1lfTE9OR19GT1JNX1ZJREVPIDEKICNlbmRpZgogCi0jaWYg
KFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIw
MDAwICYmICFQTEFURk9STShJT1NfU0lNVUxBVE9SKSkKKyNpZiAoUExBVEZPUk0oSU9TKSAmJiAh
UExBVEZPUk0oSU9TX1NJTVVMQVRPUikpCiAjZGVmaW5lIEhBVkVfREVWSUNFX01BTkFHRU1FTlQg
MQogI2VuZGlmCiAKQEAgLTE2MTcsNyArMTYxNyw3IEBACiAjZGVmaW5lIEhBVkVfQVZQTEFZRVJf
UkVTT1VSQ0VfQ09OU0VSVkFUSU9OX0xFVkVMIDEKICNlbmRpZgogCi0jaWYgKFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFU
Rk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkg
fHwgUExBVEZPUk0oV0FUQ0hPUykgfHwgUExBVEZPUk0oQVBQTEVUVikKKyNpZiAoUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExB
VEZPUk0oSU9TKSB8fCBQTEFURk9STShXQVRDSE9TKSB8fCBQTEFURk9STShBUFBMRVRWKQogI2Rl
ZmluZSBIQVZFX0NPUkVURVhUX0FVVE9fT1BUSUNBTF9TSVpJTkcgMQogI2VuZGlmCiAKQEAgLTE2
NDksNyArMTY0OSw3IEBACiAjZGVmaW5lIEhBVkVfU1VCVklFV1NfSVZBUl9ERUNMQVJFRF9CWV9T
REsgMQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShJT1NfRkFNSUxZ
KSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApIHx8IFBMQVRG
T1JNKFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQUExFVFYpCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQ
TEFURk9STShJT1NfRkFNSUxZKQogI2RlZmluZSBVU0VfUExBVEZPUk1fU1lTVEVNX0ZBTExCQUNL
X0xJU1QgMQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDM4NCkKKysrIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisy
MDIwLTAxLTEwICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZW1vdmUgb2xkIGlPUyB2ZXJzaW9uIG1hY3JvcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MDk2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81
ODQ5MTY3NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFk
ZXJDb2NvYS5tbTogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBwYWdl
L1NldHRpbmdzRGVmYXVsdFZhbHVlcy5oOiBSZW1vdmUgaU9TIDEyIHZlcnNpb24gY2hlY2tzLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhZGllbnQ6OnBhaW50KTogUmVtb3ZlIGlPUyAxMiB2ZXJzaW9uIGNoZWNrcy4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGF0aDo6cGxhdGZvcm1BZGRQYXRoRm9yUm91bmRlZFJlY3QpOiBSZW1vdmUgaU9TIDEy
IHZlcnNpb24gY2hlY2tzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRD
YWNoZUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZhcmlhdGlvbkNhcGFiaWxpdGll
c0ZvckZvbnREZXNjcmlwdG9yKTogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6bGFzdFJlc29ydEZhbGxiYWNrRm9udCk6IERpdHRvLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Om1hdGNoU3lzdGVtRm9udFVzZSk6IFJlbW92ZSBpT1MgMTEg
dmVyc2lvbiBjaGVjay4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvRm9udENhY2hl
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1Gb250V2l0aEZhbWlseVNwZWNpYWxD
YXNlKTogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNo
ZWNrcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5o
OiBSZW1vdmUgaU9TIDExIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJDb3Jl
Ojpjb29raWVzRm9yVVJMKTogUmVtb3ZlIGlPUyAxMiB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAg
KFdlYkNvcmU6OnNldEhUVFBDb29raWVzRm9yVVJMKTogRGl0dG8uCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6
OmNhY2hlZFN5c3RlbUZvbnREZXNjcmlwdGlvbiBjb25zdCk6IFJlbW92ZSBpT1MgMTEgdmVyc2lv
biBjaGVja3MuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6dXBkYXRlQ2FjaGVk
U3lzdGVtRm9udERlc2NyaXB0aW9uIGNvbnN0KTogRGl0dG8uCisKIDIwMjAtMDEtMTAgIFNpbW9u
IEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgSW50cm9kdWNlIEVO
QUJMRV9NRVRBX1ZJRVdQT1JUIGFuZCB1c2UgaXQgaW4gc29tZSBXSzIgY29kZQpJbmRleDogU291
cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTQzODQpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDEtMTAgIEpvbmF0
aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBvbGQgaU9T
IHZlcnNpb24gbWFjcm9zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDYwOTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4NDkxNjc1PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFsL3NwaS9jZi9D
Rk5ldHdvcmtTUEkuaDogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBw
YWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oOiBSZW1vdmUgaU9TIDEyIHZlcnNpb24gY2hlY2tz
LgorICAgICAgICAqIHBhbC9zcGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg6IFJlbW92ZSBp
T1MgMTEgdmVyc2lvbiBjaGVja3MuCisgICAgICAgICogcGFsL3NwaS9pb3MvTWVkaWFQbGF5ZXJT
UEkuaDogUmVtb3ZlIGlPUyAxMSBhbmQgMTIgdmVyc2lvbiBjaGVja3MuCisKIDIwMjAtMDEtMDkg
IEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgRG9uJ3Qg
c29mdGxpbmsgQVZDYXB0dXJlIGNsYXNzZXMgb24gd2F0Y2hPUyBvciB0dk9TCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAkocmV2aXNpb24gMjU0
Mzg0KQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIxMyw3ICsyMTMsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2Vy
LCBOU1VSTFNlc3Npb25DCiBAcHJvcGVydHkgKG51bGxhYmxlLCByZWFkd3JpdGUsIHJldGFpbikg
TlNVUkwgKl9zaXRlRm9yQ29va2llczsKIEBwcm9wZXJ0eSAocmVhZHdyaXRlKSBCT09MIF9pc1Rv
cExldmVsTmF2aWdhdGlvbjsKICNlbmRpZgotI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JN
KElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAw
MCkKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCiBAcHJvcGVydHkg
KG5vbmF0b21pYywgYXNzaWduKSBCT09MIF9wcmVjb25uZWN0OwogI2VuZGlmCiBAZW5kCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaAko
cmV2aXNpb24gMjU0Mzg0KQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdy
YXBoaWNzU1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIENHQ29u
dGV4dFNldFN0eWxlKENHQ29udGV4dFJlZiwgQ0dTCiAKIHZvaWQgQ0dDb250ZXh0RHJhd0Nvbmlj
R3JhZGllbnQoQ0dDb250ZXh0UmVmLCBDR0dyYWRpZW50UmVmLCBDR1BvaW50IGNlbnRlciwgQ0dG
bG9hdCBhbmdsZSk7CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFD
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIHZvaWQgQ0dQYXRoQWRkVW5ldmVuQ29ybmVyc1JvdW5kZWRSZWN0KENH
TXV0YWJsZVBhdGhSZWYsIGNvbnN0IENHQWZmaW5lVHJhbnNmb3JtICosIENHUmVjdCwgY29uc3Qg
Q0dTaXplIGNvcm5lcnNbNF0pOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5oCShyZXZpc2lvbiAy
NTQzODQpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2
ZXJTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2ltcG9ydCA8d3RmL0Fz
c2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAotI2RlZmluZSBVU0VfU0VD
VVJFX0FSQ0hJVkVSX0FQSSAoUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkg
JiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMjAwKSB8fCBQTEFURk9S
TShXQVRDSE9TKSB8fCBQTEFURk9STShBUFBMRVRWKSkKKyNkZWZpbmUgVVNFX1NFQ1VSRV9BUkNI
SVZFUl9BUEkgKFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkpCiAKICNkZWZp
bmUgVVNFX1NFQ1VSRV9BUkNISVZFUl9GT1JfQVRUUklCVVRFRF9TVFJJTkcgKFBMQVRGT1JNKE1B
QykgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEzMDAwMCkgfHwgUExBVEZPUk0oV0FUQ0hPUykgfHwgUExBVEZPUk0oQVBQTEVU
VikpCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2lvcy9NZWRpYVBsYXllclNQ
SS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2lvcy9NZWRpYVBs
YXllclNQSS5oCShyZXZpc2lvbiAyNTQzODQpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9pb3MvTWVkaWFQbGF5ZXJTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTIgKzMzLDkgQEAK
ICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogCiAjaW1wb3J0IDxNZWRpYVBsYXllci9NUEFW
Um91dGluZ0NvbnRyb2xsZXIuaD4KLQotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEyMDAwMAogI2ltcG9ydCA8TWVkaWFQbGF5ZXIvTVBNZWRpYUNvbnRyb2xzQ29uZmln
dXJhdGlvbi5oPgotI2VuZGlmCiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMTAwMDAgJiYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQor
I2lmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikKICNpbXBvcnQgPE1l
ZGlhUGxheWVyL01QTWVkaWFDb250cm9sc1ZpZXdDb250cm9sbGVyLmg+CiAjZWxzZQogI2ltcG9y
dCA8TWVkaWFQbGF5ZXIvTVBBVlJvdXRpbmdTaGVldC5oPgpAQCAtNjQsNyArNjEsNyBAQCB0eXBl
ZGVmIE5TSW50ZWdlciBNUFJvdXRlRGlzY292ZXJ5TW9kZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
LCBhc3NpZ24pIE1QUm91dGVEaXNjb3ZlcnlNb2RlIGRpc2NvdmVyeU1vZGU7CiBAZW5kCiAKLSNp
ZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAgJiYgIVBMQVRGT1JN
KFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQorI2lmICFQTEFURk9STShXQVRDSE9TKSAm
JiAhUExBVEZPUk0oQVBQTEVUVikKIAogQGludGVyZmFjZSBNUE1lZGlhQ29udHJvbHNWaWV3Q29u
dHJvbGxlciA6IFVJVmlld0NvbnRyb2xsZXIKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBu
dWxsYWJsZSkgdm9pZCAoXmRpZERpc21pc3NIYW5kbGVyKSh2b2lkKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1t
CShyZXZpc2lvbiAyNTQzODQpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNv
bnRlbnRSZWFkZXJDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQAogI2lu
Y2x1ZGUgIkxvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaCIKICNlbmRpZgogCi0jaWYgKFBM
QVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDExMDAwMCkgfHwgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IFBM
QVRGT1JNKE1BQykKIEBpbnRlcmZhY2UgTlNBdHRyaWJ1dGVkU3RyaW5nICgpCiAtIChOU1N0cmlu
ZyAqKV9odG1sRG9jdW1lbnRGcmFnbWVudFN0cmluZzooTlNSYW5nZSlyYW5nZSBkb2N1bWVudEF0
dHJpYnV0ZXM6KE5TRGljdGlvbmFyeSAqKWRpY3Qgc3VicmVzb3VyY2VzOihOU0FycmF5ICoqKXN1
YnJlc291cmNlczsKIEBlbmQKQEAgLTk2LDcgKzk2LDcgQEAgc3RhdGljIEZyYWdtZW50QW5kUmVz
b3VyY2VzIGNyZWF0ZUZyYWdtZQogICAgIHJldHVybiB7IH07CiB9CiAKLSNlbGlmIChQTEFURk9S
TShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAw
MDApIHx8IFBMQVRGT1JNKE1BQykKKyNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IFBMQVRG
T1JNKE1BQykKIAogc3RhdGljIE5TRGljdGlvbmFyeSAqYXR0cmlidXRlc0ZvckF0dHJpYnV0ZWRT
dHJpbmdDb252ZXJzaW9uKCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NE
ZWZhdWx0VmFsdWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
c0RlZmF1bHRWYWx1ZXMuaAkocmV2aXNpb24gMjU0Mzg0KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5nc0RlZmF1bHRWYWx1ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3
IEBAIHN0YXRpYyBjb25zdCBib29sIGRlZmF1bHRNZWRpYUVuYWJsZWQgPSAKIHN0YXRpYyBjb25z
dCBib29sIGRlZmF1bHRNZWRpYUVuYWJsZWQgPSBmYWxzZTsKICNlbmRpZgogICAgIAotI2lmIChQ
TEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMjAwMDApIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShXQVRDSE9TKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShXQVRDSE9TKQogc3RhdGljIGNvbnN0IGJvb2wgZGVm
YXVsdENvbmljR3JhZGllbnQgPSB0cnVlOwogI2Vsc2UKIHN0YXRpYyBjb25zdCBib29sIGRlZmF1
bHRDb25pY0dyYWRpZW50ID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFkaWVudENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENHLmNwcAkocmV2aXNpb24gMjU0Mzg0KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIEdyYWRpZW50OjpwYWludChDR0NvbnRl
eHRSZWYgcGxhdGZvCiAgICAgICAgICAgICAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShwbGF0
Zm9ybUNvbnRleHQpOwogICAgICAgICB9LAogICAgICAgICBbJl0gKGNvbnN0IENvbmljRGF0YSYg
ZGF0YSkgewotI2lmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMjAwMDApIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShXQVRDSE9TKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShXQVRDSE9TKQogICAgICAg
ICAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShwbGF0Zm9ybUNvbnRleHQpOwogICAgICAgICAgICAg
Q0dDb250ZXh0VHJhbnNsYXRlQ1RNKHBsYXRmb3JtQ29udGV4dCwgZGF0YS5wb2ludDAueCgpLCBk
YXRhLnBvaW50MC55KCkpOwogICAgICAgICAgICAgQ0dDb250ZXh0Um90YXRlQ1RNKHBsYXRmb3Jt
Q29udGV4dCwgKENHRmxvYXQpLU1fUElfMik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAJKHJldmlzaW9uIDI1NDM4NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMxNCw3ICszMTQsNyBAQCB2b2lkIFBhdGg6OnBsYXRmb3JtQWRkUGF0aEZvclJvdW5kZWRS
ZWN0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPU19G
QU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkKKyNp
ZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
MTQwMCkgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBDR1JlY3QgcmVjdFRvRHJhdyA9IHJl
Y3Q7CiAgICAgCiAgICAgZW51bSBDb3JuZXJzIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5j
cHAJKHJldmlzaW9uIDI1NDM4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzks
NyBAQAogI2luY2x1ZGUgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KICNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAotI2RlZmluZSBIQVNfQ09SRV9URVhUX1dJRFRIX0FUVFJJ
QlVURSAoUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKSkKKyNkZWZpbmUgSEFTX0NPUkVfVEVY
VF9XSURUSF9BVFRSSUJVVEUgKFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkp
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTA2NCw3ICsxMDY0LDcgQEAgc3RhdGljIFZh
cmlhdGlvbkNhcGFiaWxpdGllcyB2YXJpYXRpb25DYQogICAgIH0KIAogICAgIGJvb2wgb3B0T3V0
RnJvbUdYTm9ybWFsaXphdGlvbiA9IGZhbHNlOwotI2lmIChQTEFURk9STShNQUMpIHx8IChQTEFU
Rk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MTAwMDApKQorI2lmIChQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpKQogICAg
IG9wdE91dEZyb21HWE5vcm1hbGl6YXRpb24gPSBDVEZvbnREZXNjcmlwdG9ySXNTeXN0ZW1VSUZv
bnQoZm9udERlc2NyaXB0b3IpOwogI2VuZGlmCiAKQEAgLTE2MzksNyArMTYzOSw3IEBAIFJlZjxG
b250PiBGb250Q2FjaGU6Omxhc3RSZXNvcnRGYWxsYmFja0YKICAgICAgICAgcmV0dXJuICpyZXN1
bHQ7CiAKICAgICAvLyBMYXN0UmVzb3J0IGlzIGd1YXJhbnRlZWQgdG8gYmUgbm9uLW51bGwuCi0j
aWYgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDExMDAwMCkgfHwgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
IHx8IFBMQVRGT1JNKE1BQykKICAgICBhdXRvIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZv
bnREZXNjcmlwdG9yQ3JlYXRlTGFzdFJlc29ydCgpKTsKICAgICBhdXRvIGZvbnQgPSBhZG9wdENG
KENURm9udENyZWF0ZVdpdGhGb250RGVzY3JpcHRvcihmb250RGVzY3JpcHRvci5nZXQoKSwgZm9u
dERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCksIG51bGxwdHIpKTsKICNlbHNlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25D
b2NvYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwCShyZXZpc2lvbiAyNTQzODQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDEwICs4Miw4IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9u
YWw8U3lzdGVtRm9udEtpbmQ+IG0KICAgICAgICAga0NUVUlGb250VGV4dFN0eWxlU2hvcnRGb290
bm90ZSwKICAgICAgICAga0NUVUlGb250VGV4dFN0eWxlU2hvcnRDYXB0aW9uMSwKICAgICAgICAg
a0NUVUlGb250VGV4dFN0eWxlVGFsbEJvZHksCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTEwMDAwCiAgICAgICAgIGtDVFVJRm9udFRleHRTdHlsZVRpdGxlMCwKICAg
ICAgICAga0NUVUlGb250VGV4dFN0eWxlVGl0bGU0LAotI2VuZGlmCiAgICAgfTsKICAgICAKICAg
ICBzdGF0aWMgYXV0byBzdHJpbmdzIHsgbWFrZU5ldmVyRGVzdHJveWVkKGNvbnZlcnRBcnJheTxB
dG9tU3RyaW5nPihzdHlsZXMpKSB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaW9zL0ZvbnRDYWNoZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9pb3MvRm9udENhY2hlSU9TLm1tCShyZXZpc2lvbiAyNTQzODQpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvRm9udENhY2hlSU9TLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTYsMTQgKzE1Niw4IEBAIFJldGFpblB0cjxDVEZvbnRSZWY+IHBs
YXRmb3JtRm9udFdpdGhGYW0KICAgICB9CiAKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoZmFtaWx5LCAibGFzdHJlc29ydCIpKSB7Ci0jaWYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCiAgICAgICAgIHN0YXRpYyBjb25zdCBDVEZvbnREZXNj
cmlwdG9yUmVmIGxhc3RSZXNvcnQgPSBDVEZvbnREZXNjcmlwdG9yQ3JlYXRlTGFzdFJlc29ydCgp
OwogICAgICAgICByZXR1cm4gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3Io
bGFzdFJlc29ydCwgc2l6ZSwgbnVsbHB0cikpOwotI2Vsc2UKLSAgICAgICAgLy8gTGFzdFJlc29y
dCBpcyBzcGVjaWFsLCBzbyBpdCdzIGltcG9ydGFudCB0byBsb29rIHRoaXMgZXhhY3Qgc3RyaW5n
IHVwLCBhbmQgbm90IHNvbWUgY2FzZS1mb2xkZWQgdmVyc2lvbi4KLSAgICAgICAgLy8gV2UgaGFu
ZGxlIHRoaXMgaGVyZSBzbyBhbnkgY2FjaGluZyBhbmQgY2FzZSBmb2xkaW5nIHdlIGRvIGluIG91
ciBnZW5lcmFsIHRleHQgY29kZXBhdGggaXMgYnlwYXNzZWQuCi0gICAgICAgIHJldHVybiBhZG9w
dENGKENURm9udENyZWF0ZVdpdGhOYW1lKENGU1RSKCJMYXN0UmVzb3J0IiksIHNpemUsIG51bGxw
dHIpKTsKLSNlbmRpZgogICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAkocmV2aXNpb24gMjU0Mzg0KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxh
dGZvcm1EYXRhPiAKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBidWZmZXJEYXRhID0gYnVmZmVy
LmNyZWF0ZUNGRGF0YSgpOwogCiAgICAgUmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+IGZv
bnREZXNjcmlwdG9yOwotI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKKyNpZiBQTEFU
Rk9STShNQUMpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYXV0byBhcnJheSA9IGFkb3B0
Q0YoQ1RGb250TWFuYWdlckNyZWF0ZUZvbnREZXNjcmlwdG9yc0Zyb21EYXRhKGJ1ZmZlckRhdGEu
Z2V0KCkpKTsKICAgICBpZiAoIWFycmF5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRl
clBhc3RlYm9hcmQuaAkocmV2aXNpb24gMjU0Mzg0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcs
OCArMjcsNiBAQAogCiAjaW1wb3J0IDxXZWJDb3JlL0Fic3RyYWN0UGFzdGVib2FyZC5oPgogCi0j
aWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCi0KIHN0cnVjdCBD
R1NpemU7CiAKIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdlYlByZWZlcnJlZFByZXNlbnRh
dGlvblN0eWxlKSB7CkBAIC0xMTQsNSArMTEyLDQgQEAgV0VCQ09SRV9FWFBPUlQgQGludGVyZmFj
ZSBXZWJJdGVtUHJvdmlkZQogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKIAotI2VuZGlmIC8vIF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAogI2VuZGlmIC8vIFRBUkdF
VF9PU19JUEhPTkUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
TmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQko
cmV2aXNpb24gMjU0Mzg0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDEsNyAr
NDEsNyBAQCBAaW50ZXJmYWNlIE5TVVJMICgpCiAtIChDRlVSTFJlZilfY2Z1cmw7CiBAZW5kCiAK
LSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEyMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IEBpbnRlcmZhY2UgTlNIVFRQQ29va2llU3RvcmFnZSAoU3RhZ2luZykKIC0gKHZvaWQpX2dldENv
b2tpZXNGb3JVUkw6KE5TVVJMICopdXJsIG1haW5Eb2N1bWVudFVSTDooTlNVUkwgKiltYWluRG9j
dW1lbnRVUkwgcGFydGl0aW9uOihOU1N0cmluZyAqKXBhcnRpdGlvbiBwb2xpY3lQcm9wZXJ0aWVz
OihOU0RpY3Rpb25hcnkqKXByb3BzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0FycmF5
ICopKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClfc2V0Q29va2llczooTlNBcnJheSAqKWNv
b2tpZXMgZm9yVVJMOihOU1VSTCAqKVVSTCBtYWluRG9jdW1lbnRVUkw6KE5TVVJMICopbWFpbkRv
Y3VtZW50VVJMIHBvbGljeVByb3BlcnRpZXM6KE5TRGljdGlvbmFyeSopIHByb3BzOwpAQCAtMjAw
LDcgKzIwMCw3IEBAIHN0YXRpYyB2b2lkIGRlbGV0ZUhUVFBDb29raWUoQ0ZIVFRQQ29va2kKICAg
ICBDRkhUVFBDb29raWVTdG9yYWdlRGVsZXRlQ29va2llKGNvb2tpZVN0b3JhZ2UsIFtjb29raWUg
X0dldEludGVybmFsQ0ZIVFRQQ29va2llXSk7CiB9CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElP
U19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkK
KyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHN0YXRpYyBSZXRhaW5QdHI8TlNEaWN0
aW9uYXJ5PiBwb2xpY3lQcm9wZXJ0aWVzKGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBOU1VSTCAqdXJsKQogewogICAgIHN0YXRpYyBOU1VSTCAqZW1wdHlVUkwgPSBbW05TVVJMIGFs
bG9jXSBpbml0V2l0aFN0cmluZzpAIiJdOwpAQCAtMjE5LDcgKzIxOSw3IEBAIHN0YXRpYyBOU0Fy
cmF5ICpjb29raWVzRm9yVVJMKE5TSFRUUENvb2sKICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVy
ID0gWyZjb29raWVzUHRyXSAoTlNBcnJheSAqY29va2llcykgewogICAgICAgICBjb29raWVzUHRy
ID0gcmV0YWluUHRyKGNvb2tpZXMpOwogICAgIH07Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1Nf
RkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCisj
aWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDE0MDApIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKFtzdG9yYWdlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoX2dldENvb2tpZXNGb3JVUkw6bWFpbkRvY3VtZW50VVJMOnBh
cnRpdGlvbjpwb2xpY3lQcm9wZXJ0aWVzOmNvbXBsZXRpb25IYW5kbGVyOildKQogICAgICAgICBb
c3RvcmFnZSBfZ2V0Q29va2llc0ZvclVSTDp1cmwgbWFpbkRvY3VtZW50VVJMOm1haW5Eb2N1bWVu
dFVSTCBwYXJ0aXRpb246cGFydGl0aW9uIHBvbGljeVByb3BlcnRpZXM6c2FtZVNpdGVJbmZvID8g
cG9saWN5UHJvcGVydGllcyhzYW1lU2l0ZUluZm8udmFsdWUoKSwgdXJsKS5nZXQoKSA6IG51bGxw
dHIgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOwogICAgIGVsc2UKQEAgLTIz
Niw3ICsyMzYsNyBAQCBzdGF0aWMgdm9pZCBzZXRIVFRQQ29va2llc0ZvclVSTChDRkhUVFBDCiB7
CiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNj
ZXNzUmF3Q29va2llcykpOwogICAgIGlmICghY29va2llU3RvcmFnZSkgewotI2lmIChQTEFURk9S
TShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAo
UExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTIwMDAwKQorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBpZiAo
W05TSFRUUENvb2tpZVN0b3JhZ2UgaW5zdGFuY2VzUmVzcG9uZFRvU2VsZWN0b3I6QHNlbGVjdG9y
KF9zZXRDb29raWVzOmZvclVSTDptYWluRG9jdW1lbnRVUkw6cG9saWN5UHJvcGVydGllczopXSkK
ICAgICAgICAgICAgIFtbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFn
ZV0gX3NldENvb2tpZXM6Y29va2llcyBmb3JVUkw6dXJsIG1haW5Eb2N1bWVudFVSTDptYWluRG9j
dW1lbnRVUkwgcG9saWN5UHJvcGVydGllczpwb2xpY3lQcm9wZXJ0aWVzKHNhbWVTaXRlSW5mbywg
dXJsKS5nZXQoKV07CiAgICAgICAgIGVsc2UKQEAgLTI0NCw3ICsyNDQsNyBAQCBzdGF0aWMgdm9p
ZCBzZXRIVFRQQ29va2llc0ZvclVSTChDRkhUVFBDCiAgICAgICAgICAgICBbW05TSFRUUENvb2tp
ZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdIHNldENvb2tpZXM6Y29va2llcyBmb3JV
Ukw6dXJsIG1haW5Eb2N1bWVudFVSTDptYWluRG9jdW1lbnRVUkxdOwogICAgICAgICByZXR1cm47
CiAgICAgfQotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKQorI2lmIChQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIGlmIChbTlNIVFRQQ29va2llU3RvcmFnZSBpbnN0YW5jZXNSZXNwb25kVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoX3NldENvb2tpZXM6Zm9yVVJMOm1haW5Eb2N1bWVudFVSTDpwb2xp
Y3lQcm9wZXJ0aWVzOildKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTdG9wIGNyZWF0aW5nIGEgbmV3
IE5TSFRUUENvb2tpZVN0b3JhZ2Ugb2JqZWN0IGVhY2ggdGltZSB3ZSB3YW50IHRvIHF1ZXJ5IHRo
ZSBjb29raWUgamFyLgogICAgICAgICAvLyBOZXR3b3JrU3RvcmFnZVNlc3Npb24gY291bGQgaW5z
dGVhZCBrZWVwIGEgTlNIVFRQQ29va2llU3RvcmFnZSBvYmplY3QgZm9yIHVzLgpAQCAtMjU0LDcg
KzI1NCw3IEBAIHN0YXRpYyB2b2lkIHNldEhUVFBDb29raWVzRm9yVVJMKENGSFRUUEMKICNlbmRp
ZgogICAgICAgICBhdXRvIGNmQ29va2llcyA9IGFkb3B0Q0YoW05TSFRUUENvb2tpZSBfbnMyY2ZD
b29raWVzOmNvb2tpZXNdKTsKICAgICAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZXMo
Y29va2llU3RvcmFnZSwgY2ZDb29raWVzLmdldCgpLCBbdXJsIF9jZnVybF0sIFttYWluRG9jdW1l
bnRVUkwgX2NmdXJsXSk7Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCisjaWYgKFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc2FtZVNpdGVJ
bmZvKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0J
KHJldmlzaW9uIDI1NDM4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTE2MywxNSArMTE2MywxMSBAQCBGb250Q2FzY2Fk
ZURlc2NyaXB0aW9uJiBSZW5kZXJUaGVtZUlPUzo6CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IHNob3J0Rm9vdG5vdGVGb250OwogICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBzaG9ydENhcHRpb24xRm9udDsK
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gdGFsbEJv
ZHlGb250OwotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAog
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiB0aXRsZTBG
b250OwotI2VuZGlmCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRlRGVzY3Jp
cHRpb24+IHRpdGxlMUZvbnQ7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRl
RGVzY3JpcHRpb24+IHRpdGxlMkZvbnQ7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRD
YXNjYWRlRGVzY3JpcHRpb24+IHRpdGxlM0ZvbnQ7Ci0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTEwMDAwCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNj
YWRlRGVzY3JpcHRpb24+IHRpdGxlNEZvbnQ7Ci0jZW5kaWYKIAogICAgIHN0YXRpYyBDRlN0cmlu
Z1JlZiB1c2VyVGV4dFNpemUgPSBjb250ZW50U2l6ZUNhdGVnb3J5KCk7CiAKQEAgLTExOTcsMjAg
KzExOTMsMTYgQEAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgUmVuZGVyVGhlbWVJT1M6OgogICAg
ICAgICByZXR1cm4gaGVhZGxpbmVGb250OwogICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbUJv
ZHk6CiAgICAgICAgIHJldHVybiBib2R5Rm9udDsKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMTAwMDAKICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1UaXRsZTA6
CiAgICAgICAgIHJldHVybiB0aXRsZTBGb250OwotI2VuZGlmCiAgICAgY2FzZSBDU1NWYWx1ZUFw
cGxlU3lzdGVtVGl0bGUxOgogICAgICAgICByZXR1cm4gdGl0bGUxRm9udDsKICAgICBjYXNlIENT
U1ZhbHVlQXBwbGVTeXN0ZW1UaXRsZTI6CiAgICAgICAgIHJldHVybiB0aXRsZTJGb250OwogICAg
IGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVRpdGxlMzoKICAgICAgICAgcmV0dXJuIHRpdGxlM0Zv
bnQ7Ci0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCiAgICAg
Y2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtVGl0bGU0OgogICAgICAgICByZXR1cm4gdGl0bGU0Rm9u
dDsKLSNlbmRpZgogICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVN1YmhlYWRsaW5lOgogICAg
ICAgICByZXR1cm4gc3ViaGVhZGxpbmVGb250OwogICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3Rl
bUZvb3Rub3RlOgpAQCAtMTI2NiwxMiArMTI1OCwxMCBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjp1
cGRhdGVDYWNoZWRTeXN0ZW1GCiAgICAgICAgIHRleHRTdHlsZSA9IGtDVFVJRm9udFRleHRTdHls
ZUJvZHk7CiAgICAgICAgIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9y
Q3JlYXRlV2l0aFRleHRTdHlsZSh0ZXh0U3R5bGUsIGNvbnRlbnRTaXplQ2F0ZWdvcnkoKSwgbnVs
bHB0cikpOwogICAgICAgICBicmVhazsKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMTAwMDAKICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1UaXRsZTA6CiAgICAg
ICAgIHRleHRTdHlsZSA9IGtDVFVJRm9udFRleHRTdHlsZVRpdGxlMDsKICAgICAgICAgZm9udERl
c2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoVGV4dFN0eWxlKHRl
eHRTdHlsZSwgY29udGVudFNpemVDYXRlZ29yeSgpLCBudWxscHRyKSk7CiAgICAgICAgIGJyZWFr
OwotI2VuZGlmCiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtVGl0bGUxOgogICAgICAgICB0
ZXh0U3R5bGUgPSBrQ1RVSUZvbnRUZXh0U3R5bGVUaXRsZTE7CiAgICAgICAgIGZvbnREZXNjcmlw
dG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0aFRleHRTdHlsZSh0ZXh0U3R5
bGUsIGNvbnRlbnRTaXplQ2F0ZWdvcnkoKSwgbnVsbHB0cikpOwpAQCAtMTI4NCwxMiArMTI3NCwx
MCBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjp1cGRhdGVDYWNoZWRTeXN0ZW1GCiAgICAgICAgIHRl
eHRTdHlsZSA9IGtDVFVJRm9udFRleHRTdHlsZVRpdGxlMzsKICAgICAgICAgZm9udERlc2NyaXB0
b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoVGV4dFN0eWxlKHRleHRTdHls
ZSwgY29udGVudFNpemVDYXRlZ29yeSgpLCBudWxscHRyKSk7CiAgICAgICAgIGJyZWFrOwotI2lm
IF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAogICAgIGNhc2UgQ1NT
VmFsdWVBcHBsZVN5c3RlbVRpdGxlNDoKICAgICAgICAgdGV4dFN0eWxlID0ga0NUVUlGb250VGV4
dFN0eWxlVGl0bGU0OwogICAgICAgICBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVz
Y3JpcHRvckNyZWF0ZVdpdGhUZXh0U3R5bGUodGV4dFN0eWxlLCBjb250ZW50U2l6ZUNhdGVnb3J5
KCksIG51bGxwdHIpKTsKICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKICAgICBjYXNlIENTU1ZhbHVl
QXBwbGVTeXN0ZW1TdWJoZWFkbGluZToKICAgICAgICAgdGV4dFN0eWxlID0ga0NUVUlGb250VGV4
dFN0eWxlU3ViaGVhZDsKICAgICAgICAgZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERl
c2NyaXB0b3JDcmVhdGVXaXRoVGV4dFN0eWxlKHRleHRTdHlsZSwgY29udGVudFNpemVDYXRlZ29y
eSgpLCBudWxscHRyKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjU0Mzg0KQorKysgU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMiBAQAorMjAyMC0w
MS0xMCAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVt
b3ZlIG9sZCBpT1MgdmVyc2lvbiBtYWNyb3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwNjA5NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTg0OTE2
NzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQWN0aXZpdHlUcmFja2VyLmg6IFJlbW92ZSBpT1MgMTIgdmVy
c2lvbiBjaGVja3MuCisgICAgICAgICogUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oOiBSZW1v
dmUgaU9TIDExIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNl
c0RlZmF1bHRWYWx1ZXMuaDogUmVtb3ZlIGlPUyAxMiB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbTogUmVtb3ZlIGlPUyAx
MiB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJ
T1MubW06CisgICAgICAgIChjb250ZW50T2Zmc2V0Qm91bmRlZEluVmFsaWRSYW5nZSk6IFJlbW92
ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3MuCisgICAgICAgICgtW1dLV2ViVmlldyBhY3RpdmVWaWV3
TGF5b3V0U2l6ZTpdKTogRGl0dG8uCisgICAgICAgICgtW1dLV2ViVmlldyBzYWZlQXJlYUluc2V0
c0RpZENoYW5nZV0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF91cGRhdGVTY3JvbGxW
aWV3SW5zZXRBZGp1c3RtZW50QmVoYXZpb3JdKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlVmlld3MubW06CisgICAgICAgICgt
W1dLQ2hpbGRTY3JvbGxWaWV3IGluaXRXaXRoRnJhbWU6XSk6IFJlbW92ZSBpT1MgMTEgdmVyc2lv
biBjaGVja3MuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZ2VzdHVyZVJlY29nbml6ZXI6Y2FuQmVQ
cmV2ZW50ZWRCeUdlc3R1cmVSZWNvZ25pemVyOl0pOiBSZW1vdmUgaU9TIDEyIHZlcnNpb24gY2hl
Y2tzLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGdlc3R1cmVSZWNvZ25pemVyOnNob3VsZFJl
Y29nbml6ZVNpbXVsdGFuZW91c2x5V2l0aEdlc3R1cmVSZWNvZ25pemVyOl0pOiBEaXR0by4KKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyBfc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyOmZyb21SZWN0
OnJvdXRlU2hhcmluZ1BvbGljeTpyb3V0aW5nQ29udGV4dFVJRDpdKTogUmVtb3ZlIGlPUyAxMSB2
ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyB1bm9jY2x1ZGVkV2luZG93
Qm91bmRzRm9yQWN0aW9uU2hlZXRBc3Npc3RhbnQ6XSk6IERpdHRvLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvV0tTY3JvbGxWaWV3Lmg6IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3MuCisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZpZXcubW06CisgICAgICAgICgtW1dLU2Ny
b2xsVmlldyBpbml0V2l0aEZyYW1lOl0pOiBSZW1vdmUgaU9TIDExIHZlcnNpb24gY2hlY2tzLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tBaXJQbGF5Um91dGVQaWNrZXIuaDogUmVt
b3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKwogMjAyMC0wMS0xMCAgU2ltb24gRnJhc2VyICA8
c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRyb2R1Y2UgRU5BQkxFX01FVEFf
VklFV1BPUlQgYW5kIHVzZSBpdCBpbiBzb21lIFdLMiBjb2RlCkluZGV4OiBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtBY3Rpdml0eVRyYWNrZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtBY3Rpdml0eVRyYWNrZXIuaAkocmV2
aXNpb24gMjU0Mzg0KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQWN0
aXZpdHlUcmFja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKSAmJiAoKFBMQVRGT1JNKE1BQykg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9S
TShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAw
MDApIHx8IFBMQVRGT1JNKFdBVENIT1MpKQorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspICYm
ICgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
MTQwMCkgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkpCiAjZGVmaW5lIEhBVkVfTldfQUNUSVZJVFkg
MQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQ
SS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQ
SS5oCShyZXZpc2lvbiAyNTQzODQpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3Mv
VUlLaXRTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtNDc0LDExICs0NzQsOSBAQCB0eXBlZGVmIGVu
dW0gewogQHByb3BlcnR5IChyZWFkb25seSkgTlNTdHJpbmcgKl9ob3N0QXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyOwogQGVuZAogCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTEwMDAwCiBAaW50ZXJmYWNlIE5TVVJMICgpCiBAcHJvcGVydHkgKG5vbmF0b21pYywg
Y29weSwgc2V0dGVyPV9zZXRUaXRsZTopIE5TU3RyaW5nICpfdGl0bGU7CiBAZW5kCi0jZW5kaWYK
IAogQHByb3RvY29sIFVJVmlld0NvbnRyb2xsZXJDb250ZXh0VHJhbnNpdGlvbmluZ0V4IDxVSVZp
ZXdDb250cm9sbGVyQ29udGV4dFRyYW5zaXRpb25pbmc+CiAtICh2b2lkKV9fcnVuQWxvbmdzaWRl
QW5pbWF0aW9uczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVm
YXVsdFZhbHVlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZl
cmVuY2VzRGVmYXVsdFZhbHVlcy5oCShyZXZpc2lvbiAyNTQzODQpCisrKyBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MjI2LDcgKzIyNiw3IEBACiAjZGVmaW5lIERFRkFVTFRfUFJPQ0VTU19TV0FQX09OX0NST1NTX1NJ
VEVfTkFWSUdBVElPTl9FTkFCTEVEIGZhbHNlCiAjZW5kaWYKIAotI2lmIChQTEFURk9STShJT1Nf
RkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApIHx8
IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAx
NDAwKSB8fCBQTEFURk9STShXQVRDSE9TKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAw
KSB8fCBQTEFURk9STShXQVRDSE9TKQogI2RlZmluZSBERUZBVUxUX0NPTklDX0dSQURJRU5UX0VO
QUJMRUQgdHJ1ZQogI2Vsc2UKICNkZWZpbmUgREVGQVVMVF9DT05JQ19HUkFESUVOVF9FTkFCTEVE
IGZhbHNlCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNo
bWVudENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0JKHJldmlzaW9uIDI1NDM4NCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDcgKzM2LDcgQEAKICNlbmRpZgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9O
U0tleWVkQXJjaGl2ZXJTUEkuaD4KIAotI2RlZmluZSBDQU5fU0VDVVJFTFlfQVJDSElWRV9GSUxF
X1dSQVBQRVIgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCisjZGVmaW5lIENBTl9TRUNVUkVMWV9BUkNISVZF
X0ZJTEVfV1JBUFBFUiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogbmFtZXNwYWNlIEFQ
SSB7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9T
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJW
aWV3SU9TLm1tCShyZXZpc2lvbiAyNTQzODQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvaW9zL1dLV2ViVmlld0lPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjkzLDExICs2OTMsNyBA
QCAtICh2b2lkKV9kaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lCiAKIHN0YXRpYyBDR1BvaW50IGNv
bnRlbnRPZmZzZXRCb3VuZGVkSW5WYWxpZFJhbmdlKFVJU2Nyb2xsVmlldyAqc2Nyb2xsVmlldywg
Q0dQb2ludCBjb250ZW50T2Zmc2V0KQogewotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDExMDAwMAogICAgIFVJRWRnZUluc2V0cyBjb250ZW50SW5zZXRzID0gc2Nyb2xs
Vmlldy5hZGp1c3RlZENvbnRlbnRJbnNldDsKLSNlbHNlCi0gICAgVUlFZGdlSW5zZXRzIGNvbnRl
bnRJbnNldHMgPSBzY3JvbGxWaWV3LmNvbnRlbnRJbnNldDsKLSNlbmRpZgogCiAgICAgQ0dTaXpl
IGNvbnRlbnRTaXplID0gc2Nyb2xsVmlldy5jb250ZW50U2l6ZTsKICAgICBDR1NpemUgc2Nyb2xs
Vmlld1NpemUgPSBzY3JvbGxWaWV3LmJvdW5kcy5zaXplOwpAQCAtMTcwMCwxMSArMTY5Niw3IEBA
IC0gKFdlYkNvcmU6OkZsb2F0U2l6ZSlhY3RpdmVWaWV3TGF5b3V0U2kKICAgICBpZiAoX3ZpZXdM
YXlvdXRTaXplT3ZlcnJpZGUpCiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpGbG9hdFNpemUoX3Zp
ZXdMYXlvdXRTaXplT3ZlcnJpZGUudmFsdWUoKSk7CiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKICAgICByZXR1cm4gV2ViQ29yZTo6RmxvYXRTaXplKFVJ
RWRnZUluc2V0c0luc2V0UmVjdChDR1JlY3RNYWtlKDAsIDAsIGJvdW5kcy5zaXplLndpZHRoLCBi
b3VuZHMuc2l6ZS5oZWlnaHQpLCBzZWxmLl9zY3JvbGxWaWV3U3lzdGVtQ29udGVudEluc2V0KS5z
aXplKTsKLSNlbHNlCi0gICAgcmV0dXJuIFdlYkNvcmU6OkZsb2F0U2l6ZSB7IGJvdW5kcy5zaXpl
IH07Ci0jZW5kaWYKIH0KIAogLSAodm9pZClfZGlzcGF0Y2hTZXRWaWV3TGF5b3V0U2l6ZTooV2Vi
Q29yZTo6RmxvYXRTaXplKXZpZXdMYXlvdXRTaXplCkBAIC0xNzc4LDE0ICsxNzcwLDEyIEBAIC0g
KEJPT0wpX3Njcm9sbFZpZXdJc1J1YmJlckJhbmRpbmcKICAgICByZXR1cm4gIXBvaW50c0VxdWFs
SW5EZXZpY2VQaXhlbHMoY29udGVudE9mZnNldCwgYm91bmRlZE9mZnNldCwgZGV2aWNlU2NhbGVG
YWN0b3IpOwogfQogCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEw
MDAwCiAtICh2b2lkKXNhZmVBcmVhSW5zZXRzRGlkQ2hhbmdlCiB7CiAgICAgW3N1cGVyIHNhZmVB
cmVhSW5zZXRzRGlkQ2hhbmdlXTsKIAogICAgIFtzZWxmIF9zY2hlZHVsZVZpc2libGVDb250ZW50
UmVjdFVwZGF0ZV07CiB9Ci0jZW5kaWYKIAogLSAodm9pZClfc2NoZWR1bGVWaXNpYmxlQ29udGVu
dFJlY3RVcGRhdGUKIHsKQEAgLTIzMDAsMTAgKzIyOTAsOCBAQCAtIChXS1Bhc3N3b3JkVmlldyAq
KV9wYXNzd29yZFZpZXcKIAogLSAodm9pZClfdXBkYXRlU2Nyb2xsVmlld0luc2V0QWRqdXN0bWVu
dEJlaGF2aW9yCiB7Ci0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEw
MDAwCiAgICAgaWYgKCFbX3Njcm9sbFZpZXcgX2NvbnRlbnRJbnNldEFkanVzdG1lbnRCZWhhdmlv
cldhc0V4dGVybmFsbHlPdmVycmlkZGVuXSkKICAgICAgICAgW19zY3JvbGxWaWV3IF9zZXRDb250
ZW50SW5zZXRBZGp1c3RtZW50QmVoYXZpb3JJbnRlcm5hbDpzZWxmLl9zYWZlQXJlYVNob3VsZEFm
ZmVjdE9ic2N1cmVkSW5zZXRzID8gVUlTY3JvbGxWaWV3Q29udGVudEluc2V0QWRqdXN0bWVudEFs
d2F5cyA6IFVJU2Nyb2xsVmlld0NvbnRlbnRJbnNldEFkanVzdG1lbnROZXZlcl07Ci0jZW5kaWYK
IH0KIAogLSAodm9pZClfc2V0QXZvaWRzVW5zYWZlQXJlYTooQk9PTClhdm9pZHNVbnNhZmVBcmVh
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90
ZUxheWVyVHJlZVZpZXdzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlVmlld3MubW0JKHJldmlzaW9uIDI1
NDM4NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVt
b3RlTGF5ZXJUcmVlVmlld3MubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxMCw5ICszMTAsNyBAQCAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyCiAgICAgaWYgKCFzZWxmKQog
ICAgICAgICByZXR1cm4gbmlsOwogCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTEwMDAwCiAgICAgc2VsZi5jb250ZW50SW5zZXRBZGp1c3RtZW50QmVoYXZpb3IgPSBV
SVNjcm9sbFZpZXdDb250ZW50SW5zZXRBZGp1c3RtZW50TmV2ZXI7Ci0jZW5kaWYKIAogICAgIHJl
dHVybiBzZWxmOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCShyZXZpc2lvbiAyNTQzODQpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTkzLDkgKzE5OTMsOCBAQCAtIChCT09MKWdlc3R1cmVSZWNvZ25p
emVyOihVSUdlc3R1cmVSZWNvCiAtIChCT09MKWdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVS
ZWNvZ25pemVyICopcHJldmVudGVkR2VzdHVyZVJlY29nbml6ZXIgY2FuQmVQcmV2ZW50ZWRCeUdl
c3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvZ25pemVyICopcHJldmVudGluZ0dlc3R1cmVS
ZWNvZ25pemVyIHsKICAgICAvLyBEb24ndCBhbGxvdyB0aGUgaGlnaGxpZ2h0IHRvIGJlIHByZXZl
bnRlZCBieSBhIHNlbGVjdGlvbiBnZXN0dXJlLiBQcmVzcy1hbmQtaG9sZCBvbiBhIGxpbmsgc2hv
dWxkIGhpZ2hsaWdodCB0aGUgbGluaywgbm90IHNlbGVjdCBpdC4KICAgICBib29sIGlzRm9yY2VQ
cmVzc0dlc3R1cmUgPSBOTzsKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMjAwMDAKICAgICBpc0ZvcmNlUHJlc3NHZXN0dXJlID0gKHByZXZlbnRpbmdHZXN0dXJlUmVj
b2duaXplciA9PSBfdGV4dEludGVyYWN0aW9uQXNzaXN0YW50LmdldCgpLmZvcmNlUHJlc3NHZXN0
dXJlKTsKLSNlbmRpZgorCiAjaWYgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgaWYgKChwcmV2
ZW50aW5nR2VzdHVyZVJlY29nbml6ZXIgPT0gX3RleHRJbnRlcmFjdGlvbkFzc2lzdGFudC5nZXQo
KS5sb3VwZUdlc3R1cmUpICYmIChwcmV2ZW50ZWRHZXN0dXJlUmVjb2duaXplciA9PSBfaGlnaGxp
Z2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgfHwgcHJldmVudGVkR2VzdHVyZVJlY29nbml6
ZXIgPT0gX2xvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyIHx8IHByZXZlbnRlZEdlc3R1cmVSZWNv
Z25pemVyID09IF90ZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQuZ2V0KCkuZm9yY2VQcmVzc0dlc3R1
cmUpKQogICAgICAgICByZXR1cm4gWUVTOwpAQCAtMjAzMyw3ICsyMDMyLDYgQEAgLSAoQk9PTCln
ZXN0dXJlUmVjb2duaXplcjooVUlHZXN0dXJlUmVjbwogICAgICAgICByZXR1cm4gWUVTOwogI2Vu
ZGlmCiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAKICNp
ZiBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBpZiAoaXNTYW1lUGFpcihnZXN0dXJlUmVjb2du
aXplciwgb3RoZXJHZXN0dXJlUmVjb2duaXplciwgX3RleHRJbnRlcmFjdGlvbkFzc2lzdGFudC5n
ZXQoKS5sb3VwZUdlc3R1cmUsIF90ZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQuZ2V0KCkuZm9yY2VQ
cmVzc0dlc3R1cmUpKQogICAgICAgICByZXR1cm4gWUVTOwpAQCAtMjA0Niw3ICsyMDQ0LDcgQEAg
LSAoQk9PTClnZXN0dXJlUmVjb2duaXplcjooVUlHZXN0dXJlUmVjbwogI2VuZGlmCiAgICAgaWYg
KGlzU2FtZVBhaXIoZ2VzdHVyZVJlY29nbml6ZXIsIG90aGVyR2VzdHVyZVJlY29nbml6ZXIsIF9o
aWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplci5nZXQoKSwgX3RleHRJbnRlcmFjdGlv
bkFzc2lzdGFudC5nZXQoKS5mb3JjZVByZXNzR2VzdHVyZSkpCiAgICAgICAgIHJldHVybiBZRVM7
Ci0jZW5kaWYKKwogICAgIGlmIChpc1NhbWVQYWlyKGdlc3R1cmVSZWNvZ25pemVyLCBvdGhlckdl
c3R1cmVSZWNvZ25pemVyLCBfc2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCksIF90ZXh0
SW50ZXJhY3Rpb25Bc3Npc3RhbnQuZ2V0KCkuc2luZ2xlVGFwR2VzdHVyZSkpCiAgICAgICAgIHJl
dHVybiBZRVM7CiAKQEAgLTY0MjgsNyArNjQyNiw3IEBAIC0gKHZvaWQpdXBkYXRlVGV4dFN1Z2dl
c3Rpb25zRm9ySW5wdXREZWwKIC0gKHZvaWQpX3Nob3dQbGF5YmFja1RhcmdldFBpY2tlcjooQk9P
TCloYXNWaWRlbyBmcm9tUmVjdDooY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpZWxlbWVudFJlY3Qg
cm91dGVTaGFyaW5nUG9saWN5OihXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3kpcm91dGVTaGFy
aW5nUG9saWN5IHJvdXRpbmdDb250ZXh0VUlEOihOU1N0cmluZyAqKXJvdXRpbmdDb250ZXh0VUlE
CiB7CiAjaWYgRU5BQkxFKEFJUlBMQVlfUElDS0VSKQotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDExMDAwMCAmJiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JN
KEFQUExFVFYpCisjaWYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQog
ICAgIGlmICghX2FpclBsYXlSb3V0ZVBpY2tlcikKICAgICAgICAgX2FpclBsYXlSb3V0ZVBpY2tl
ciA9IGFkb3B0TlMoW1tXS0FpclBsYXlSb3V0ZVBpY2tlciBhbGxvY10gaW5pdF0pOwogICAgIFtf
YWlyUGxheVJvdXRlUGlja2VyIHNob3dGcm9tVmlldzpzZWxmIHJvdXRlU2hhcmluZ1BvbGljeTpy
b3V0ZVNoYXJpbmdQb2xpY3kgcm91dGluZ0NvbnRleHRVSUQ6cm91dGluZ0NvbnRleHRVSUQgaGFz
VmlkZW86aGFzVmlkZW9dOwpAQCAtNjYyMywxNCArNjYyMSwxMiBAQCAtIChCT09MKWFjdGlvblNo
ZWV0QXNzaXN0YW50OihXS0FjdGlvblNoCiAgICAgcmV0dXJuIE5POwogfQogCi0jaWYgX19JUEhP
TkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCiAtIChDR1JlY3QpdW5vY2NsdWRl
ZFdpbmRvd0JvdW5kc0ZvckFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0
YW50ICopYXNzaXN0YW50CiB7CiAgICAgVUlFZGdlSW5zZXRzIGNvbnRlbnRJbnNldCA9IFtbX3dl
YlZpZXcgc2Nyb2xsVmlld10gYWRqdXN0ZWRDb250ZW50SW5zZXRdOwogICAgIENHUmVjdCByZWN0
ID0gVUlFZGdlSW5zZXRzSW5zZXRSZWN0KFtfd2ViVmlldyBib3VuZHNdLCBjb250ZW50SW5zZXQp
OwogICAgIHJldHVybiBbX3dlYlZpZXcgY29udmVydFJlY3Q6cmVjdCB0b1ZpZXc6W3NlbGYgd2lu
ZG93XV07CiB9Ci0jZW5kaWYKIAogLSAoUmV0YWluUHRyPE5TQXJyYXk+KWFjdGlvblNoZWV0QXNz
aXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IGRlY2lkZUFjdGlvbnNG
b3JFbGVtZW50OihfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAqKWVsZW1lbnQgZGVmYXVsdEFjdGlv
bnM6KFJldGFpblB0cjxOU0FycmF5PilkZWZhdWx0QWN0aW9ucwogewpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLU2Nyb2xsVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZpZXcuaAkocmV2aXNpb24gMjU0Mzg0KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLU2Nyb2xsVmlldy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNywxMCArMzcsOCBAQAogLSAodm9pZClfc2V0U2Nyb2xsRW5hYmxlZEludGVybmFsOihC
T09MKWVuYWJsZWQ7CiAtICh2b2lkKV9zZXRab29tRW5hYmxlZEludGVybmFsOihCT09MKWVuYWJs
ZWQ7CiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24sIHJlYWRvbmx5KSBCT09MIF9jb250ZW50SW5zZXRB
ZGp1c3RtZW50QmVoYXZpb3JXYXNFeHRlcm5hbGx5T3ZlcnJpZGRlbjsKIC0gKHZvaWQpX3NldENv
bnRlbnRJbnNldEFkanVzdG1lbnRCZWhhdmlvckludGVybmFsOihVSVNjcm9sbFZpZXdDb250ZW50
SW5zZXRBZGp1c3RtZW50QmVoYXZpb3IpaW5zZXRBZGp1c3RtZW50QmVoYXZpb3I7Ci0jZW5kaWYK
IAogQGVuZAogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tTY3JvbGxWaWV3
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZp
ZXcubW0JKHJldmlzaW9uIDI1NDM4NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S1Njcm9sbFZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyNyw5ICsxMjcsNyBAQCAtIChpZClm
b3J3YXJkaW5nVGFyZ2V0Rm9yU2VsZWN0b3I6KFNFTClhCiAgICAgV2Vha09iakNQdHI8aWQgPFVJ
U2Nyb2xsVmlld0RlbGVnYXRlPj4gX2V4dGVybmFsRGVsZWdhdGU7CiAgICAgV0tTY3JvbGxWaWV3
RGVsZWdhdGVGb3J3YXJkZXIgKl9kZWxlZ2F0ZUZvcndhcmRlcjsKIAotI2lmIF9fSVBIT05FX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAogICAgIEJPT0wgX2NvbnRlbnRJbnNldEFk
anVzdG1lbnRCZWhhdmlvcldhc0V4dGVybmFsbHlPdmVycmlkZGVuOwotI2VuZGlmCiAgICAgQ0dG
bG9hdCBfa2V5Ym9hcmRCb3R0b21JbnNldEFkanVzdG1lbnQ7CiAgICAgQk9PTCBfc2Nyb2xsRW5h
YmxlZEJ5Q2xpZW50OwogICAgIEJPT0wgX3Njcm9sbEVuYWJsZWRJbnRlcm5hbDsKQEAgLTE1Myw5
ICsxNTEsNyBAQCAtIChpZClpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUKICAgICBzZWxmLmRp
cmVjdGlvbmFsTG9ja0VuYWJsZWQgPSBZRVM7CiAgICAgW3NlbGYgX3NldEluZGljYXRvckluc2V0
QWRqdXN0bWVudEJlaGF2aW9yOlVJU2Nyb2xsVmlld0luZGljYXRvckluc2V0QWRqdXN0bWVudEFs
d2F5c107CiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAK
ICAgICBfY29udGVudEluc2V0QWRqdXN0bWVudEJlaGF2aW9yV2FzRXh0ZXJuYWxseU92ZXJyaWRk
ZW4gPSAoc2VsZi5jb250ZW50SW5zZXRBZGp1c3RtZW50QmVoYXZpb3IgIT0gVUlTY3JvbGxWaWV3
Q29udGVudEluc2V0QWRqdXN0bWVudEF1dG9tYXRpYyk7Ci0jZW5kaWYKICAgICAKICNpZiBQTEFU
Rk9STShXQVRDSE9TKQogICAgIFtzZWxmIF9jb25maWd1cmVEaWdpdGFsQ3Jvd25TY3JvbGxpbmdd
OwpAQCAtMjc4LDggKzI3NCw2IEBAIC0gKHZvaWQpc2V0Q29udGVudEluc2V0OihVSUVkZ2VJbnNl
dHMpY28KICAgICBbX2ludGVybmFsRGVsZWdhdGUgX3NjaGVkdWxlVmlzaWJsZUNvbnRlbnRSZWN0
VXBkYXRlXTsKIH0KIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEx
MDAwMAotCiAtIChCT09MKV9jb250ZW50SW5zZXRBZGp1c3RtZW50QmVoYXZpb3JXYXNFeHRlcm5h
bGx5T3ZlcnJpZGRlbgogewogICAgIHJldHVybiBfY29udGVudEluc2V0QWRqdXN0bWVudEJlaGF2
aW9yV2FzRXh0ZXJuYWxseU92ZXJyaWRkZW47CkBAIC0zMDQsOCArMjk4LDYgQEAgLSAodm9pZClf
c2V0Q29udGVudEluc2V0QWRqdXN0bWVudEJlaGF2aQogICAgIFtzdXBlciBzZXRDb250ZW50SW5z
ZXRBZGp1c3RtZW50QmVoYXZpb3I6aW5zZXRBZGp1c3RtZW50QmVoYXZpb3JdOwogfQogCi0jZW5k
aWYKLQogLy8gRmV0Y2ggdG9wL2xlZnQgcnViYmVyYmFuZCBhbW91bnRzIChhcyBuZWdhdGl2ZSB2
YWx1ZXMpLgogLSAoQ0dTaXplKV9jdXJyZW50VG9wTGVmdFJ1YmJlcmJhbmRBbW91bnQKIHsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0FpclBsYXlSb3V0ZVBpY2tl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Fp
clBsYXlSb3V0ZVBpY2tlci5oCShyZXZpc2lvbiAyNTQzODQpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvZm9ybXMvV0tBaXJQbGF5Um91dGVQaWNrZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMjUsNyArMjUsNyBAQAogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKEFJ
UlBMQVlfUElDS0VSKQogCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTEwMDAwICYmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikKKyNpZiAh
UExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCiAKICNpbXBvcnQgPEZvdW5k
YXRpb24vRm91bmRhdGlvbi5oPgogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNTQzODQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wMS0xMCAgSm9uYXRoYW4gQmVkYXJk
ICA8amJlZGFyZEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIG9sZCBpT1MgdmVyc2lvbiBt
YWNyb3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NjA5NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTg0OTE2NzU+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQubW06IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3MuCisgICAgICAgICogV2Vi
Vmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oOiBEaXR0by4KKyAgICAgICAgKiBXZWJWaWV3L1dl
YlZpZXcubW06IERpdHRvLgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDogRGl0
dG8uCisKIDIwMjAtMDEtMDkgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+
CiAKICAgICAgICAgQWRvcHQgVEFSR0VUX09TX01BQ0NBVEFMWVNUIGluIG1vcmUgcGxhY2VzCklu
ZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lm1tCShyZXZpc2lvbiAyNTQzODQpCisrKyBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTQxOCw3ICs0MTgsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFz
dGVib2FyCiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwgb25seSBXZWJLaXQyLgogfQog
Ci0jaWYgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDExMDAwMCkgfHwgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpIHx8IFBMQVRGT1JNKE1BQykKIAogLy8gRklYTUU6IFJlbW92ZSBib3RoIHRoaXMgc3R1YiBh
bmQgdGhlIHJlYWwgdmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uIGJlbG93IG9uY2Ugd2UgZG9uJ3Qg
bmVlZCB0aGUgcmVhbCB2ZXJzaW9uIG9uIGFueSBzdXBwb3J0ZWQgcGxhdGZvcm0uCiAvLyBUaGlz
IHN0dWIgaXMgbm90IHVzZWQgb3V0c2lkZSBXZWJLaXQsIGJ1dCBpdCdzIGhlcmUgc28gd2Ugd29u
J3QgZ2V0IGEgbGlua2VyIGVycm9yLgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaAkocmV2aXNpb24gMjU0Mzg0
KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBACiAjZW5kaWYKICNlbmRpZgogCi0j
aWYgVEFSR0VUX09TX0lQSE9ORSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMTAwMDAKKyNpZiBUQVJHRVRfT1NfSVBIT05FCiBAcHJvdG9jb2wgVUlEcm9wU2Vzc2lvbjsK
ICNlbmRpZgogCkBAIC0yOTksNyArMjk5LDYgQEAgQGludGVyZmFjZSBOU09iamVjdCAoV2ViVUlE
ZWxlZ2F0ZVByaXZhdAogCiAtIChCT09MKXdlYlZpZXdDYW5DaGVja0dlb2xvY2F0aW9uQXV0aG9y
aXphdGlvblN0YXR1czooV2ViVmlldyAqKXNlbmRlcjsKIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDExMDAwMAogLyohCiAgQG1ldGhvZCB3ZWJWaWV3OmRyYWdEZXN0
aW5hdGlvbkFjdGlvbk1hc2tGb3JTZXNzaW9uOgogIEBwYXJhbSBzZW5kZXIgVGhlIFdlYlZpZXcg
c2VuZGluZyB0aGUgZGVsZWdhdGUgbWV0aG9kCkBAIC0zMDgsNyArMzA3LDYgQEAgQGludGVyZmFj
ZSBOU09iamVjdCAoV2ViVUlEZWxlZ2F0ZVByaXZhdAogICovCiAtIChXZWJEcmFnRGVzdGluYXRp
b25BY3Rpb24pd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkcmFnRGVzdGluYXRpb25BY3Rpb25N
YXNrRm9yU2Vzc2lvbjooaWQgPFVJRHJvcFNlc3Npb24+KXNlc3Npb247CiAjZW5kaWYKLSNlbmRp
ZgogCiAtIChOU0RhdGEgKil3ZWJDcnlwdG9NYXN0ZXJLZXlGb3JXZWJWaWV3OihXZWJWaWV3ICop
c2VuZGVyOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCShyZXZpc2lvbiAyNTQzODQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTE5NjYsNyArMTk2Niw3IEBAIC0gKHZvaWQp
X2RpZENvbmNsdWRlRWRpdERyYWcKICAgICB9CiB9CiAKLSNlbGlmIF9fSVBIT05FX09TX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2Vsc2UKIAogLSAoQk9PTClfcmVxdWVzdFN0YXJ0
RGF0YUludGVyYWN0aW9uOihDR1BvaW50KWNsaWVudFBvc2l0aW9uIGdsb2JhbFBvc2l0aW9uOihD
R1BvaW50KWdsb2JhbFBvc2l0aW9uCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCShyZXZpc2lvbiAyNTQzODQpCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTExNyw5ICsxMTcsNyBAQCBleHRlcm4gTlNTdHJpbmcgKldlYlF1aWNrTG9va0ZpbGVO
YW1lS2V5CiBleHRlcm4gTlNTdHJpbmcgKldlYlF1aWNrTG9va1VUSUtleTsKICNlbmRpZgogCi0j
aWYgVEFSR0VUX09TX0lQSE9ORSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMTAwMDAKIEBwcm90b2NvbCBVSURyb3BTZXNzaW9uOwotI2VuZGlmCiAKIGV4dGVybiBOU1N0
cmluZyAqIGNvbnN0IFdlYlZpZXdXaWxsQ2xvc2VOb3RpZmljYXRpb247CiAKQEAgLTQ3OSw3ICs0
NzcsNiBAQCBDb3VsZCBiZSB3b3J0aCBhZGRpbmcgdG8gdGhlIEFQSS4KIAogLSAodm9pZClfcmVw
bGFjZUN1cnJlbnRIaXN0b3J5SXRlbTooV2ViSGlzdG9yeUl0ZW0gKilpdGVtOwogCi0jaWYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCiAtIChCT09MKV9yZXF1ZXN0
U3RhcnREYXRhSW50ZXJhY3Rpb246KENHUG9pbnQpY2xpZW50UG9zaXRpb24gZ2xvYmFsUG9zaXRp
b246KENHUG9pbnQpZ2xvYmFsUG9zaXRpb247CiAtIChXZWJVSVRleHRJbmRpY2F0b3JEYXRhICop
X2dldERhdGFJbnRlcmFjdGlvbkRhdGE7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHks
IHN0cm9uZywgZ2V0dGVyPV9kYXRhT3BlcmF0aW9uVGV4dEluZGljYXRvcikgV2ViVUlUZXh0SW5k
aWNhdG9yRGF0YSAqZGF0YU9wZXJhdGlvblRleHRJbmRpY2F0b3I7CkBAIC00OTUsNyArNDkyLDYg
QEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBBUEkuCiAtICh2b2lkKV9lbmRlZERhdGFJ
bnRlcmFjdGlvbjooQ0dQb2ludCljbGllbnRQb3NpdGlvbiBnbG9iYWw6KENHUG9pbnQpZ2xvYmFs
UG9zaXRpb247CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgZ2V0dGVyPV9kYXRh
SW50ZXJhY3Rpb25DYXJldFJlY3QpIENHUmVjdCBkYXRhSW50ZXJhY3Rpb25DYXJldFJlY3Q7Ci0j
ZW5kaWYKIAogLy8gRGVwcmVjYXRlZC4gVXNlIC1bV2ViRGF0YVNvdXJjZSBfcXVpY2tMb29rQ29u
dGVudF0gaW5zdGVhZC4KIC0gKE5TRGljdGlvbmFyeSAqKXF1aWNrTG9va0NvbnRlbnRGb3JVUkw6
KE5TVVJMICopdXJsOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0NoYW5nZUxvZwkocmV2aXNpb24gMjU0Mzg0KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDEtMTAgIEpvbmF0aGFuIEJlZGFyZCAgPGpi
ZWRhcmRAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBvbGQgaU9TIHZlcnNpb24gbWFjcm9z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYwOTYK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4NDkxNjc1PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rVGVzdC5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QpOiBSZW1vdmUgaU9TIDExIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW06IFJl
bW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3MuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbTogRGl0dG8uCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbTogUmVtb3Zl
IGlPUyAxMiB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NvY29h
L1Rlc3RSdW5uZXJXS1dlYlZpZXcubW06CisgICAgICAgICgtW1Rlc3RSdW5uZXJXS1dlYlZpZXcg
c2V0T3ZlcnJpZGVTYWZlQXJlYUluc2V0czpdKTogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNr
cy4KKwogMjAyMC0wMS0xMCAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAK
ICAgICAgICAgUHl0aG9uMzogU3VwcG9ydCBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0Cklu
ZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvQVZGb3VuZGF0aW9u
U29mdExpbmtUZXN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGlua1Rlc3QubW0JKHJldmlzaW9uIDI1NDM4
NCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9BVkZvdW5kYXRp
b25Tb2Z0TGlua1Rlc3QubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzOCwxMiArMTM4LDEyIEBAIFRF
U1QoQVZGb3VuZGF0aW9uU29mdExpbmssIENvbnN0YW50cykKICAgICBpZiAoUEFMOjpjYW5Mb2Fk
X0FWRm91bmRhdGlvbl9BVlNhbXBsZVJhdGVLZXkoKSkKICAgICAgICAgRVhQRUNUX1RSVUUoW0FW
U2FtcGxlUmF0ZUtleSBpc0VxdWFsVG9TdHJpbmc6QCJBVlNhbXBsZVJhdGVLZXkiXSk7CiAKLSNp
ZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDExMDAwMCkgfHwgUExBVEZPUk0oV0FUQ0hPUykgfHwgUExBVEZPUk0o
QVBQTEVUVikKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0o
V0FUQ0hPUykgfHwgUExBVEZPUk0oQVBQTEVUVikKICAgICBFWFBFQ1RfVFJVRShQQUw6OmNhbkxv
YWRfQVZGb3VuZGF0aW9uX0FWVVJMQXNzZXRPdXRPZkJhbmRNSU1FVHlwZUtleSgpKTsKICAgICBF
WFBFQ1RfVFJVRShbQVZVUkxBc3NldE91dE9mQmFuZE1JTUVUeXBlS2V5IGlzRXF1YWxUb1N0cmlu
ZzpAIkFWVVJMQXNzZXRPdXRPZkJhbmRNSU1FVHlwZUtleSJdKTsKICNlbmRpZgogCi0jaWYgKFBM
QVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDAp
IHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEyMDAwMCkgfHwgUExBVEZPUk0oV0FUQ0hPUykgfHwgUExBVEZPUk0oQVBQTEVUVikKKyNpZiAo
UExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQw
MCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShXQVRDSE9TKSB8fCBQTEFURk9STShBUFBM
RVRWKQogICAgIEVYUEVDVF9UUlVFKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZVUkxBc3Nl
dFVzZUNsaWVudFVSTExvYWRpbmdFeGNsdXNpdmVseSgpKTsKICAgICBFWFBFQ1RfVFJVRShbQVZV
UkxBc3NldFVzZUNsaWVudFVSTExvYWRpbmdFeGNsdXNpdmVseSBpc0VxdWFsVG9TdHJpbmc6QCJB
VlVSTEFzc2V0VXNlQ2xpZW50VVJMTG9hZGluZ0V4Y2x1c2l2ZWx5Il0pOwogI2VuZGlmCkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZp
Z2F0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0JKHJldmlzaW9uIDI1NDM4NCkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRp
b24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTYzOTIsNyArNjM5Miw3IEBAIFRFU1QoUHJvY2Vzc1N3
YXAsIFBhZ2VPdmVybGF5TGF5ZXJQZXJzaXMKICNlbmRpZgogfQogCi0jaWYgUExBVEZPUk0oSU9T
KSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiBQTEFU
Rk9STShJT1MpCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIFF1aWNrTG9va1JlcXVlc3RzUGFzc3dvcmRB
ZnRlclN3YXApCiB7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dLQXR0YWNobWVudFRlc3RzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0JKHJldmlzaW9uIDI1NDM4NCkK
KysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVz
dHMubW0JKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgLSAoX1dLQXR0YWNobWVudCAq
KV9hdHRhY2htZW50V2l0aE5hbWU6KAogfQogQGVuZAogCi0jZGVmaW5lIFVTRVNfTU9ERVJOX0FU
VFJJQlVURURfU1RSSU5HX0NPTlZFUlNJT04gKChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApIHx8IFBMQVRGT1JNKE1BQykp
CisjZGVmaW5lIFVTRVNfTU9ERVJOX0FUVFJJQlVURURfU1RSSU5HX0NPTlZFUlNJT04gKFBMQVRG
T1JNKElPU19GQU1JTFkpIHx8IFBMQVRGT1JNKE1BQykpCiAKIEBpbnRlcmZhY2UgQXR0YWNobWVu
dFVwZGF0ZU9ic2VydmVyIDogTlNPYmplY3QgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+CiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQXJyYXkgKmluc2VydGVkOwpJbmRleDogVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSFRUUENv
b2tpZVN0b3JlLm1tCShyZXZpc2lvbiAyNTQzODQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0z
NDcsNyArMzQ3LDcgQEAgVEVTVChXZWJLaXQsIFdLSFRUUENvb2tpZVN0b3JlSHR0cE9ubHkpIAog
ICAgIFtjb29raWVzIHJlbGVhc2VdOwogfQogCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1NfRkFN
SUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCisjaWYg
KFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0
MDApIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCiBURVNUKFdlYktpdCwgV0tIVFRQQ29va2llU3Rv
cmVDcmVhdGlvblRpbWUpIAogeyAgIAogICAgIGF1dG8gZGF0YVN0b3JlID0gW1dLV2Vic2l0ZURh
dGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKQEAgLTQwMSw3ICs0MDEsNyBAQCBURVNUKFdlYktp
dCwgV0tIVFRQQ29va2llU3RvcmVDcmVhdGlvblRpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZnb3RGbGFnKTsKICAgICBnb3RGbGFnID0gZmFsc2U7CiB9Ci0jZW5kaWYgLy8gKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8
IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMjAwMDApCisjZW5kaWYgLy8gKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC8v
IEZJWE1FOiBUaGlzICNpZiBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIDxyZGFyOi8vcHJvYmxlbS8z
NTM0NDIwMj4gaXMgcmVzb2x2ZWQgYW5kIGJvdHMgYXJlIHVwZGF0ZWQuCiAjaWYgUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPD0gMTAxMzAxCkluZGV4OiBU
b29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3
Lm1tCShyZXZpc2lvbiAyNTQzODQpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rl
c3RSdW5uZXJXS1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTQyNSw5ICs0MjUsNyBAQCAt
ICh2b2lkKWFjY2Vzc2liaWxpdHlSZXRyaWV2ZVNwZWFrU2VsZWN0CiAtICh2b2lkKXNldE92ZXJy
aWRlU2FmZUFyZWFJbnNldHM6KFVJRWRnZUluc2V0cylpbnNldHMKIHsKICAgICBfb3ZlcnJpZGVT
YWZlQXJlYUluc2V0cyA9IGluc2V0czsKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMTAwMDAKICAgICBbc2VsZiBfdXBkYXRlU2FmZUFyZWFJbnNldHNdOwotI2VuZGlm
CiB9CiAKIC0gKFVJRWRnZUluc2V0cylfc2FmZUFyZWFJbnNldHNGb3JGcmFtZTooQ0dSZWN0KWZy
YW1lIGluU3VwZXJ2aWV3OihVSVZpZXcgKil2aWV3Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387601</attachid>
            <date>2020-01-13 17:45:05 -0800</date>
            <delta_ts>2020-01-14 08:24:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206096-20200113174504.patch</filename>
            <type>text/plain</type>
            <size>48164</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNTQ0MzkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAxLTEzICBKb25hdGhhbiBCZWRhcmQgIDxq
YmVkYXJkQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgb2xkIGlPUyB2ZXJzaW9uIG1hY3Jv
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MDk2
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODQ5MTY3NT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9GZWF0dXJlRGVmaW5lcy5oOiBSZW1v
dmUgaU9TIDEyIHZlcnNpb24gbWFjcm8uCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6IERpdHRv
LgorCiAyMDIwLTAxLTEyICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAg
ICBQbGF0Zm9ybS5oIGlzIG91dCBvZiBjb250cm9sIFBhcnQgMjogU3BsaXQgV1RGX09TXyogbWFj
cm8gZGVmaW5pdGlvbnMgb3V0IG9mIFBsYXRmb3JtLmggYW5kIGludG8gYSBuZXcgT1MuaApJbmRl
eDogU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCShyZXZpc2lvbiAyNTQ0MzkpCisrKyBTb3VyY2UvV1RG
L3d0Zi9GZWF0dXJlRGVmaW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNyArMTc4LDcgQEAg
dGhlIHB1YmxpYyBpT1MgU0RLLiBTZWUgPGh0dHBzOi8vd2Via2l0LgogI2VuZGlmCiAKICNpZiAh
ZGVmaW5lZChFTkFCTEVfV0tQREZWSUVXKQotI2lmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExB
VEZPUk0oQVBQTEVUVikgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKSAmJiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAKKyNpZiBQTEFURk9STShJT1MpCiAjZGVmaW5l
IEVOQUJMRV9XS1BERlZJRVcgMQogI2VuZGlmCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAkocmV2
aXNpb24gMjU0NDM5KQorKysgU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5
KQpAQCAtMTEyNCw3ICsxMTI0LDcgQEAKICNkZWZpbmUgSEFWRV9BVVRIT1JJWkFUSU9OX1NUQVRV
U19GT1JfTUVESUFfVFlQRSAxCiAjZW5kaWYKIAotI2lmIChQTEFURk9STShNQUMpICYmIChfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUFYX0FMTE9XRUQgPj0gMTAxNDA0KSkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwICYmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUFYX0FMTE9XRUQgPj0gMTIwMjAwKSB8fCBQTEFURk9STShXQVRDSE9TKSB8fCBQTEFURk9STShB
UFBMRVRWKQorI2lmIChQTEFURk9STShNQUMpICYmIChfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTQwMCAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTAx
NDA0KSkgfHwgUExBVEZPUk0oV0FUQ0hPUykgfHwgUExBVEZPUk0oQVBQTEVUVikKICNkZWZpbmUg
SEFWRV9DRk5FVFdPUktfT1ZFUlJJREVfU0VTU0lPTl9DT09LSUVfQUNDRVBUX1BPTElDWSAxCiAj
ZW5kaWYKIApAQCAtMTIwNCw3ICsxMjA0LDcgQEAKICNkZWZpbmUgSEFWRV9ST1VURV9TSEFSSU5H
X1BPTElDWV9MT05HX0ZPUk1fVklERU8gMQogI2VuZGlmCiAKLSNpZiAoUExBVEZPUk0oSU9TKSAm
JiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAgJiYgIVBMQVRGT1JN
KElPU19TSU1VTEFUT1IpKQorI2lmIChQTEFURk9STShJT1MpICYmICFQTEFURk9STShJT1NfU0lN
VUxBVE9SKSkKICNkZWZpbmUgSEFWRV9ERVZJQ0VfTUFOQUdFTUVOVCAxCiAjZW5kaWYKIApAQCAt
MTIyMCw3ICsxMjIwLDcgQEAKICNkZWZpbmUgSEFWRV9BVlBMQVlFUl9SRVNPVVJDRV9DT05TRVJW
QVRJT05fTEVWRUwgMQogI2VuZGlmCiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKSB8fCBQTEFURk9STShXQVRD
SE9TKSB8fCBQTEFURk9STShBUFBMRVRWKQorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShJT1MpIHx8IFBM
QVRGT1JNKFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQUExFVFYpCiAjZGVmaW5lIEhBVkVfQ09SRVRF
WFRfQVVUT19PUFRJQ0FMX1NJWklORyAxCiAjZW5kaWYKIApAQCAtMTI1Miw3ICsxMjUyLDcgQEAK
ICNkZWZpbmUgSEFWRV9TVUJWSUVXU19JVkFSX0RFQ0xBUkVEX0JZX1NESyAxCiAjZW5kaWYKIAot
I2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkgfHwgUExBVEZPUk0oV0FUQ0hPUykgfHwg
UExBVEZPUk0oQVBQTEVUVikKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPU19GQU1J
TFkpCiAjZGVmaW5lIFVTRV9QTEFURk9STV9TWVNURU1fRkFMTEJBQ0tfTElTVCAxCiAjZW5kaWYK
IApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjU0NDM5KQorKysgU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjAtMDEtMTMgIEpvbmF0
aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBvbGQgaU9T
IHZlcnNpb24gbWFjcm9zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDYwOTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4NDkxNjc1PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4K
KworICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOiBSZW1v
dmUgaU9TIDExIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3NEZWZhdWx0
VmFsdWVzLmg6IFJlbW92ZSBpT1MgMTIgdmVyc2lvbiBjaGVja3MuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVu
dDo6cGFpbnQpOiBSZW1vdmUgaU9TIDEyIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjpwbGF0
Zm9ybUFkZFBhdGhGb3JSb3VuZGVkUmVjdCk6IFJlbW92ZSBpT1MgMTIgdmVyc2lvbiBjaGVja3Mu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6dmFyaWF0aW9uQ2FwYWJpbGl0aWVzRm9yRm9udERlc2NyaXB0
b3IpOiBSZW1vdmUgaU9TIDExIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dENhY2hlOjpsYXN0UmVzb3J0RmFsbGJhY2tGb250KTogRGl0dG8uCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6bWF0Y2hTeXN0ZW1Gb250VXNlKTogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9Gb250Q2FjaGVJT1MubW06CisgICAgICAg
IChXZWJDb3JlOjpwbGF0Zm9ybUZvbnRXaXRoRmFtaWx5U3BlY2lhbENhc2UpOiBSZW1vdmUgaU9T
IDExIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEpOiBSZW1vdmUgaU9TIDExIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmg6IFJlbW92ZSBpT1MgMTEg
dmVyc2lvbiBjaGVja3MuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvb2tpZXNGb3JVUkwp
OiBSZW1vdmUgaU9TIDEyIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAoV2ViQ29yZTo6c2V0SFRU
UENvb2tpZXNGb3JVUkwpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJ
T1MubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6Y2FjaGVkU3lzdGVtRm9u
dERlc2NyaXB0aW9uIGNvbnN0KTogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjp1cGRhdGVDYWNoZWRTeXN0ZW1Gb250RGVzY3Jp
cHRpb24gY29uc3QpOiBEaXR0by4KKwogMjAyMC0wMS0wNiAgSmlld2VuIFRhbiAgPGppZXdlbl90
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRobl0gU3VwcG9ydCBDVEFQIENsaWVudCBQ
aW4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjU0NDM5KQorKysgU291cmNlL1dl
YkNvcmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDIw
LTAxLTEzICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZW1vdmUgb2xkIGlPUyB2ZXJzaW9uIG1hY3JvcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MDk2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODQ5
MTY3NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg6IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3Mu
CisgICAgICAgICogcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaDogUmVtb3ZlIGlPUyAxMiB2
ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBwYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQ
SS5oOiBSZW1vdmUgaU9TIDExIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAqIHBhbC9zcGkvaW9z
L01lZGlhUGxheWVyU1BJLmg6IFJlbW92ZSBpT1MgMTEgYW5kIDEyIHZlcnNpb24gY2hlY2tzLgor
CiAyMDIwLTAxLTA5ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAg
ICAgICAgIERvbid0IHNvZnRsaW5rIEFWQ2FwdHVyZSBjbGFzc2VzIG9uIHdhdGNoT1Mgb3IgdHZP
UwpJbmRleDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgJ
KHJldmlzaW9uIDI1NDQzOSkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0
d29ya1NQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTMsNyArMjEzLDcgQEAgdHlwZWRlZiBOU19F
TlVNKE5TSW50ZWdlciwgTlNVUkxTZXNzaW9uQwogQHByb3BlcnR5IChudWxsYWJsZSwgcmVhZHdy
aXRlLCByZXRhaW4pIE5TVVJMICpfc2l0ZUZvckNvb2tpZXM7CiBAcHJvcGVydHkgKHJlYWR3cml0
ZSkgQk9PTCBfaXNUb3BMZXZlbE5hdmlnYXRpb247CiAjZW5kaWYKLSNpZiBQTEFURk9STShNQUMp
IHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMTAwMDApCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpIHx8IFBM
QVRGT1JNKE1BQ0NBVEFMWVNUKQogQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgQk9PTCBf
cHJlY29ubmVjdDsKICNlbmRpZgogQGVuZApJbmRleDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
cGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgJKHJldmlzaW9uIDI1NDQzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBDR0NvbnRleHRTZXRTdHlsZShDR0NvbnRleHRSZWYs
IENHUwogCiB2b2lkIENHQ29udGV4dERyYXdDb25pY0dyYWRpZW50KENHQ29udGV4dFJlZiwgQ0dH
cmFkaWVudFJlZiwgQ0dQb2ludCBjZW50ZXIsIENHRmxvYXQgYW5nbGUpOwogCi0jaWYgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8
IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMjAwMDApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FU
QUxZU1QpCiB2b2lkIENHUGF0aEFkZFVuZXZlbkNvcm5lcnNSb3VuZGVkUmVjdChDR011dGFibGVQ
YXRoUmVmLCBjb25zdCBDR0FmZmluZVRyYW5zZm9ybSAqLCBDR1JlY3QsIGNvbnN0IENHU2l6ZSBj
b3JuZXJzWzRdKTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9j
b2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaAkocmV2aXNpb24gMjU0NDM5KQor
KysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25z
Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLSNkZWZpbmUgVVNFX1NFQ1VSRV9BUkNI
SVZFUl9BUEkgKFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDIwMCkgfHwgUExBVEZPUk0oV0FUQ0hP
UykgfHwgUExBVEZPUk0oQVBQTEVUVikpCisjZGVmaW5lIFVTRV9TRUNVUkVfQVJDSElWRVJfQVBJ
IChQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpKQogCiAjZGVmaW5lIFVTRV9T
RUNVUkVfQVJDSElWRVJfRk9SX0FUVFJJQlVURURfU1RSSU5HIChQTEFURk9STShNQUMpIHx8IChQ
TEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMzAwMDApIHx8IFBMQVRGT1JNKFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQUExFVFYpKQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9pb3MvTWVkaWFQbGF5ZXJTUEkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9pb3MvTWVkaWFQbGF5ZXJTUEku
aAkocmV2aXNpb24gMjU0NDM5KQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvaW9zL01l
ZGlhUGxheWVyU1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDExICszNCwxMSBAQAogCiAjaW1w
b3J0IDxNZWRpYVBsYXllci9NUEFWUm91dGluZ0NvbnRyb2xsZXIuaD4KIAotI2lmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMAorI2lmIFBMQVRGT1JNKElPUykgfHwg
UExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAjaW1wb3J0IDxNZWRpYVBsYXllci9NUE1lZGlhQ29udHJv
bHNDb25maWd1cmF0aW9uLmg+CiAjZW5kaWYKIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDExMDAwMCAmJiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQ
UExFVFYpCisjaWYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQogI2lt
cG9ydCA8TWVkaWFQbGF5ZXIvTVBNZWRpYUNvbnRyb2xzVmlld0NvbnRyb2xsZXIuaD4KICNlbHNl
CiAjaW1wb3J0IDxNZWRpYVBsYXllci9NUEFWUm91dGluZ1NoZWV0Lmg+CkBAIC02NCw3ICs2NCw3
IEBAIHR5cGVkZWYgTlNJbnRlZ2VyIE1QUm91dGVEaXNjb3ZlcnlNb2RlOwogQHByb3BlcnR5IChu
b25hdG9taWMsIGFzc2lnbikgTVBSb3V0ZURpc2NvdmVyeU1vZGUgZGlzY292ZXJ5TW9kZTsKIEBl
bmQKIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCAmJiAh
UExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCisjaWYgIVBMQVRGT1JNKFdB
VENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQogCiBAaW50ZXJmYWNlIE1QTWVkaWFDb250cm9s
c1ZpZXdDb250cm9sbGVyIDogVUlWaWV3Q29udHJvbGxlcgogQHByb3BlcnR5IChub25hdG9taWMs
IGNvcHksIG51bGxhYmxlKSB2b2lkICheZGlkRGlzbWlzc0hhbmRsZXIpKHZvaWQpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVy
Q29jb2EubW0JKHJldmlzaW9uIDI1NDQzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3
IEBACiAjaW5jbHVkZSAiTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oIgogI2VuZGlmCiAK
LSNpZiAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTEwMDAwKSB8fCBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQ
TEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogQGludGVyZmFjZSBOU0F0dHJp
YnV0ZWRTdHJpbmcgKCkKIC0gKE5TU3RyaW5nICopX2h0bWxEb2N1bWVudEZyYWdtZW50U3RyaW5n
OihOU1JhbmdlKXJhbmdlIGRvY3VtZW50QXR0cmlidXRlczooTlNEaWN0aW9uYXJ5ICopZGljdCBz
dWJyZXNvdXJjZXM6KE5TQXJyYXkgKiopc3VicmVzb3VyY2VzOwogQGVuZApAQCAtODMsNyArODMs
NyBAQCBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUksoV2ViS2l0TGVnYWN5CiBTT0ZUX0xJTktf
RlJBTUVXT1JLX0lOX1VNQlJFTExBKFdlYktpdCwgV2ViS2l0TGVnYWN5KQogI2VuZGlmCiAKLSNp
ZiAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPCAxMTAwMDApCisjaWYgUExBVEZPUk0oV0FUQ0hPUykgfHwgUExBVEZPUk0oVFZPUykKIFNP
RlRfTElOSyhXZWJLaXRMZWdhY3ksIF9XZWJDcmVhdGVGcmFnbWVudCwgdm9pZCwgKFdlYkNvcmU6
OkRvY3VtZW50JiBkb2N1bWVudCwgTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFdlYkNvcmU6
OkZyYWdtZW50QW5kUmVzb3VyY2VzJiByZXN1bHQpLCAoZG9jdW1lbnQsIHN0cmluZywgcmVzdWx0
KSkKICNlbmRpZgogCkBAIC05Niw3ICs5Niw3IEBAIHN0YXRpYyBGcmFnbWVudEFuZFJlc291cmNl
cyBjcmVhdGVGcmFnbWUKICAgICByZXR1cm4geyB9OwogfQogCi0jZWxpZiAoUExBVEZPUk0oSU9T
X0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKSB8
fCBQTEFURk9STShNQUMpCisjZWxpZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQykgfHwg
UExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAKIHN0YXRpYyBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXNG
b3JBdHRyaWJ1dGVkU3RyaW5nQ29udmVyc2lvbigpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL1NldHRpbmdzRGVmYXVsdFZhbHVlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3NEZWZhdWx0VmFsdWVzLmgJKHJldmlzaW9uIDI1NDQzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NEZWZhdWx0VmFsdWVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgY29uc3QgYm9vbCBkZWZhdWx0TWVkaWFFbmFibGVkID0g
CiBzdGF0aWMgY29uc3QgYm9vbCBkZWZhdWx0TWVkaWFFbmFibGVkID0gZmFsc2U7CiAjZW5kaWYK
ICAgICAKLSNpZiAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTIwMDAwKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oV0FUQ0hPUykKKyNpZiBQ
TEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShXQVRDSE9TKSB8fCBQTEFURk9STShNQUND
QVRBTFlTVCkKIHN0YXRpYyBjb25zdCBib29sIGRlZmF1bHRDb25pY0dyYWRpZW50ID0gdHJ1ZTsK
ICNlbHNlCiBzdGF0aWMgY29uc3QgYm9vbCBkZWZhdWx0Q29uaWNHcmFkaWVudCA9IGZhbHNlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGll
bnRDRy5jcHAJKHJldmlzaW9uIDI1NDQzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsNyArMTgyLDcg
QEAgdm9pZCBHcmFkaWVudDo6cGFpbnQoQ0dDb250ZXh0UmVmIHBsYXRmbwogICAgICAgICAgICAg
ICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUocGxhdGZvcm1Db250ZXh0KTsKICAgICAgICAgfSwK
ICAgICAgICAgWyZdIChjb25zdCBDb25pY0RhdGEmIGRhdGEpIHsKLSNpZiAoUExBVEZPUk0oSU9T
X0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKSB8
fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
MTQwMCkgfHwgUExBVEZPUk0oV0FUQ0hPUykKKyNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9S
TShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQ
TEFURk9STShXQVRDSE9TKQogICAgICAgICAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShwbGF0Zm9y
bUNvbnRleHQpOwogICAgICAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKHBsYXRmb3JtQ29u
dGV4dCwgZGF0YS5wb2ludDAueCgpLCBkYXRhLnBvaW50MC55KCkpOwogICAgICAgICAgICAgQ0dD
b250ZXh0Um90YXRlQ1RNKHBsYXRmb3JtQ29udGV4dCwgKENHRmxvYXQpLU1fUElfMik7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAJKHJl
dmlzaW9uIDI1NDQzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1Bh
dGhDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNCw3ICszMTQsNyBAQCB2b2lkIFBhdGg6OnBs
YXRmb3JtQWRkUGF0aEZvclJvdW5kZWRSZWN0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSNp
ZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
MTQwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEyMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9S
TShNQUNDQVRBTFlTVCkKICAgICBDR1JlY3QgcmVjdFRvRHJhdyA9IHJlY3Q7CiAgICAgCiAgICAg
ZW51bSBDb3JuZXJzIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAJKHJldmlzaW9uIDI1
NDQzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNo
ZUNvcmVUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUg
PHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KIAotI2RlZmluZSBIQVNfQ09SRV9URVhUX1dJRFRIX0FUVFJJQlVURSAoUExBVEZPUk0o
TUFDKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTEwMDAwKSkKKyNkZWZpbmUgSEFTX0NPUkVfVEVYVF9XSURUSF9BVFRSSUJV
VEUgKFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlT
VCkpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTA2NCw3ICsxMDY0LDcgQEAgc3RhdGlj
IFZhcmlhdGlvbkNhcGFiaWxpdGllcyB2YXJpYXRpb25DYQogICAgIH0KIAogICAgIGJvb2wgb3B0
T3V0RnJvbUdYTm9ybWFsaXphdGlvbiA9IGZhbHNlOwotI2lmIChQTEFURk9STShNQUMpIHx8IChQ
TEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMTAwMDApKQorI2lmIChQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykgfHwgUExBVEZP
Uk0oTUFDQ0FUQUxZU1QpKQogICAgIG9wdE91dEZyb21HWE5vcm1hbGl6YXRpb24gPSBDVEZvbnRE
ZXNjcmlwdG9ySXNTeXN0ZW1VSUZvbnQoZm9udERlc2NyaXB0b3IpOwogI2VuZGlmCiAKQEAgLTE2
MzksNyArMTYzOSw3IEBAIFJlZjxGb250PiBGb250Q2FjaGU6Omxhc3RSZXNvcnRGYWxsYmFja0YK
ICAgICAgICAgcmV0dXJuICpyZXN1bHQ7CiAKICAgICAvLyBMYXN0UmVzb3J0IGlzIGd1YXJhbnRl
ZWQgdG8gYmUgbm9uLW51bGwuCi0jaWYgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkgfHwgUExBVEZPUk0oTUFDKQorI2lm
IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkK
ICAgICBhdXRvIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRl
TGFzdFJlc29ydCgpKTsKICAgICBhdXRvIGZvbnQgPSBhZG9wdENGKENURm9udENyZWF0ZVdpdGhG
b250RGVzY3JpcHRvcihmb250RGVzY3JpcHRvci5nZXQoKSwgZm9udERlc2NyaXB0aW9uLmNvbXB1
dGVkUGl4ZWxTaXplKCksIG51bGxwdHIpKTsKICNlbHNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0
aW9uQ29jb2EuY3BwCShyZXZpc2lvbiAyNTQ0MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTgyLDcgKzgyLDcgQEAgc3RhdGljIGlubGluZSBPcHRpb25hbDxTeXN0ZW1Gb250S2luZD4g
bQogICAgICAgICBrQ1RVSUZvbnRUZXh0U3R5bGVTaG9ydEZvb3Rub3RlLAogICAgICAgICBrQ1RV
SUZvbnRUZXh0U3R5bGVTaG9ydENhcHRpb24xLAogICAgICAgICBrQ1RVSUZvbnRUZXh0U3R5bGVU
YWxsQm9keSwKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAK
KyNpZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgICAgICBrQ1RV
SUZvbnRUZXh0U3R5bGVUaXRsZTAsCiAgICAgICAgIGtDVFVJRm9udFRleHRTdHlsZVRpdGxlNCwK
ICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ZvbnRD
YWNoZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pb3MvRm9udENhY2hlSU9TLm1tCShyZXZpc2lvbiAyNTQ0MzkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvRm9udENhY2hlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTYsNyArMTU2LDcgQEAgUmV0YWluUHRyPENURm9udFJlZj4gcGxhdGZvcm1Gb250V2l0aEZh
bQogICAgIH0KIAogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShmYW1pbHks
ICJsYXN0cmVzb3J0IikpIHsKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMTAwMDAKKyNpZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAg
ICAgICBzdGF0aWMgY29uc3QgQ1RGb250RGVzY3JpcHRvclJlZiBsYXN0UmVzb3J0ID0gQ1RGb250
RGVzY3JpcHRvckNyZWF0ZUxhc3RSZXNvcnQoKTsKICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ1RG
b250Q3JlYXRlV2l0aEZvbnREZXNjcmlwdG9yKGxhc3RSZXNvcnQsIHNpemUsIG51bGxwdHIpKTsK
ICNlbHNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCShyZXZpc2lvbiAyNTQ0
MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IAogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+
IGJ1ZmZlckRhdGEgPSBidWZmZXIuY3JlYXRlQ0ZEYXRhKCk7CiAKICAgICBSZXRhaW5QdHI8Q1RG
b250RGVzY3JpcHRvclJlZj4gZm9udERlc2NyaXB0b3I7Ci0jaWYgUExBVEZPUk0oTUFDKSB8fCAo
UExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTEwMDAwKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9S
TShNQUNDQVRBTFlTVCkKICAgICBhdXRvIGFycmF5ID0gYWRvcHRDRihDVEZvbnRNYW5hZ2VyQ3Jl
YXRlRm9udERlc2NyaXB0b3JzRnJvbURhdGEoYnVmZmVyRGF0YS5nZXQoKSkpOwogICAgIGlmICgh
YXJyYXkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oCShyZXZp
c2lvbiAyNTQ0MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3Zp
ZGVyUGFzdGVib2FyZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw4ICsyNyw2IEBACiAKICNpbXBv
cnQgPFdlYkNvcmUvQWJzdHJhY3RQYXN0ZWJvYXJkLmg+CiAKLSNpZiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKLQogc3RydWN0IENHU2l6ZTsKIAogdHlwZWRlZiBO
U19FTlVNKE5TSW50ZWdlciwgV2ViUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUpIHsKQEAgLTEx
NCw1ICsxMTIsNCBAQCBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdlYkl0ZW1Qcm92aWRlCiAK
IE5TX0FTU1VNRV9OT05OVUxMX0VORAogCi0jZW5kaWYgLy8gX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTEwMDAwCiAjZW5kaWYgLy8gVEFSR0VUX09TX0lQSE9ORQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Np
b25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCShyZXZpc2lvbiAyNTQ0MzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIEBpbnRlcmZhY2Ug
TlNVUkwgKCkKIC0gKENGVVJMUmVmKV9jZnVybDsKIEBlbmQKIAotI2lmIChQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIw
MDAwKQorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQog
QGludGVyZmFjZSBOU0hUVFBDb29raWVTdG9yYWdlIChTdGFnaW5nKQogLSAodm9pZClfZ2V0Q29v
a2llc0ZvclVSTDooTlNVUkwgKil1cmwgbWFpbkRvY3VtZW50VVJMOihOU1VSTCAqKW1haW5Eb2N1
bWVudFVSTCBwYXJ0aXRpb246KE5TU3RyaW5nICopcGFydGl0aW9uIHBvbGljeVByb3BlcnRpZXM6
KE5TRGljdGlvbmFyeSopcHJvcHMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXJyYXkg
KikpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKV9zZXRDb29raWVzOihOU0FycmF5ICopY29v
a2llcyBmb3JVUkw6KE5TVVJMICopVVJMIG1haW5Eb2N1bWVudFVSTDooTlNVUkwgKiltYWluRG9j
dW1lbnRVUkwgcG9saWN5UHJvcGVydGllczooTlNEaWN0aW9uYXJ5KikgcHJvcHM7CkBAIC0yMDAs
NyArMjAwLDcgQEAgc3RhdGljIHZvaWQgZGVsZXRlSFRUUENvb2tpZShDRkhUVFBDb29raQogICAg
IENGSFRUUENvb2tpZVN0b3JhZ2VEZWxldGVDb29raWUoY29va2llU3RvcmFnZSwgW2Nvb2tpZSBf
R2V0SW50ZXJuYWxDRkhUVFBDb29raWVdKTsKIH0KIAotI2lmIChQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9T
X0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKQor
I2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTAxNDAwKSB8fCBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogc3RhdGlj
IFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IHBvbGljeVByb3BlcnRpZXMoY29uc3QgU2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIE5TVVJMICp1cmwpCiB7CiAgICAgc3RhdGljIE5TVVJMICplbXB0
eVVSTCA9IFtbTlNVUkwgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiIl07CkBAIC0yMTksNyArMjE5
LDcgQEAgc3RhdGljIE5TQXJyYXkgKmNvb2tpZXNGb3JVUkwoTlNIVFRQQ29vawogICAgIGF1dG8g
Y29tcGxldGlvbkhhbmRsZXIgPSBbJmNvb2tpZXNQdHJdIChOU0FycmF5ICpjb29raWVzKSB7CiAg
ICAgICAgIGNvb2tpZXNQdHIgPSByZXRhaW5QdHIoY29va2llcyk7CiAgICAgfTsKLSNpZiAoUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkg
fHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEyMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUND
QVRBTFlTVCkKICAgICBpZiAoW3N0b3JhZ2UgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihf
Z2V0Q29va2llc0ZvclVSTDptYWluRG9jdW1lbnRVUkw6cGFydGl0aW9uOnBvbGljeVByb3BlcnRp
ZXM6Y29tcGxldGlvbkhhbmRsZXI6KV0pCiAgICAgICAgIFtzdG9yYWdlIF9nZXRDb29raWVzRm9y
VVJMOnVybCBtYWluRG9jdW1lbnRVUkw6bWFpbkRvY3VtZW50VVJMIHBhcnRpdGlvbjpwYXJ0aXRp
b24gcG9saWN5UHJvcGVydGllczpzYW1lU2l0ZUluZm8gPyBwb2xpY3lQcm9wZXJ0aWVzKHNhbWVT
aXRlSW5mby52YWx1ZSgpLCB1cmwpLmdldCgpIDogbnVsbHB0ciBjb21wbGV0aW9uSGFuZGxlcjpj
b21wbGV0aW9uSGFuZGxlcl07CiAgICAgZWxzZQpAQCAtMjM2LDcgKzIzNiw3IEBAIHN0YXRpYyB2
b2lkIHNldEhUVFBDb29raWVzRm9yVVJMKENGSFRUUEMKIHsKICAgICBBU1NFUlQoaGFzUHJvY2Vz
c1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CiAgICAg
aWYgKCFjb29raWVTdG9yYWdlKSB7Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAm
JiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCisjaWYgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8
IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgICAgIGlmIChbTlNI
VFRQQ29va2llU3RvcmFnZSBpbnN0YW5jZXNSZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3Nl
dENvb2tpZXM6Zm9yVVJMOm1haW5Eb2N1bWVudFVSTDpwb2xpY3lQcm9wZXJ0aWVzOildKQogICAg
ICAgICAgICAgW1tOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXSBf
c2V0Q29va2llczpjb29raWVzIGZvclVSTDp1cmwgbWFpbkRvY3VtZW50VVJMOm1haW5Eb2N1bWVu
dFVSTCBwb2xpY3lQcm9wZXJ0aWVzOnBvbGljeVByb3BlcnRpZXMoc2FtZVNpdGVJbmZvLCB1cmwp
LmdldCgpXTsKICAgICAgICAgZWxzZQpAQCAtMjQ0LDcgKzI0NCw3IEBAIHN0YXRpYyB2b2lkIHNl
dEhUVFBDb29raWVzRm9yVVJMKENGSFRUUEMKICAgICAgICAgICAgIFtbTlNIVFRQQ29va2llU3Rv
cmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV0gc2V0Q29va2llczpjb29raWVzIGZvclVSTDp1
cmwgbWFpbkRvY3VtZW50VVJMOm1haW5Eb2N1bWVudFVSTF07CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKElPUykgfHwg
UExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgaWYgKFtOU0hUVFBDb29raWVTdG9yYWdlIGluc3Rh
bmNlc1Jlc3BvbmRUb1NlbGVjdG9yOkBzZWxlY3Rvcihfc2V0Q29va2llczpmb3JVUkw6bWFpbkRv
Y3VtZW50VVJMOnBvbGljeVByb3BlcnRpZXM6KV0pIHsKICAgICAgICAgLy8gRklYTUU6IFN0b3Ag
Y3JlYXRpbmcgYSBuZXcgTlNIVFRQQ29va2llU3RvcmFnZSBvYmplY3QgZWFjaCB0aW1lIHdlIHdh
bnQgdG8gcXVlcnkgdGhlIGNvb2tpZSBqYXIuCiAgICAgICAgIC8vIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiBjb3VsZCBpbnN0ZWFkIGtlZXAgYSBOU0hUVFBDb29raWVTdG9yYWdlIG9iamVjdCBmb3Ig
dXMuCkBAIC0yNTQsNyArMjU0LDcgQEAgc3RhdGljIHZvaWQgc2V0SFRUUENvb2tpZXNGb3JVUkwo
Q0ZIVFRQQwogI2VuZGlmCiAgICAgICAgIGF1dG8gY2ZDb29raWVzID0gYWRvcHRDRihbTlNIVFRQ
Q29va2llIF9uczJjZkNvb2tpZXM6Y29va2llc10pOwogICAgICAgICBDRkhUVFBDb29raWVTdG9y
YWdlU2V0Q29va2llcyhjb29raWVTdG9yYWdlLCBjZkNvb2tpZXMuZ2V0KCksIFt1cmwgX2NmdXJs
XSwgW21haW5Eb2N1bWVudFVSTCBfY2Z1cmxdKTsKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPU19G
QU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkKKyNp
ZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
MTQwMCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICB9CiAj
ZWxzZQogICAgIFVOVVNFRF9QQVJBTShzYW1lU2l0ZUluZm8pOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQkocmV2aXNpb24gMjU0NDM5KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTYzLDEzICsxMTYzLDEzIEBAIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIFJlbmRlclRoZW1l
SU9TOjoKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4g
c2hvcnRGb290bm90ZUZvbnQ7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRl
RGVzY3JpcHRpb24+IHNob3J0Q2FwdGlvbjFGb250OwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiB0YWxsQm9keUZvbnQ7Ci0jaWYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFU
Rk9STShNQUNDQVRBTFlTVCkKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udENhc2NhZGVE
ZXNjcmlwdGlvbj4gdGl0bGUwRm9udDsKICNlbmRpZgogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiB0aXRsZTFGb250OwogICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiB0aXRsZTJGb250OwogICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiB0aXRsZTNGb250OwotI2lmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRGT1JNKElP
UykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZv
bnRDYXNjYWRlRGVzY3JpcHRpb24+IHRpdGxlNEZvbnQ7CiAjZW5kaWYKIApAQCAtMTE5Nyw3ICsx
MTk3LDcgQEAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgUmVuZGVyVGhlbWVJT1M6OgogICAgICAg
ICByZXR1cm4gaGVhZGxpbmVGb250OwogICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbUJvZHk6
CiAgICAgICAgIHJldHVybiBib2R5Rm9udDsKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMTAwMDAKKyNpZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFM
WVNUKQogICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVRpdGxlMDoKICAgICAgICAgcmV0dXJu
IHRpdGxlMEZvbnQ7CiAjZW5kaWYKQEAgLTEyMDcsNyArMTIwNyw3IEBAIEZvbnRDYXNjYWRlRGVz
Y3JpcHRpb24mIFJlbmRlclRoZW1lSU9TOjoKICAgICAgICAgcmV0dXJuIHRpdGxlMkZvbnQ7CiAg
ICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtVGl0bGUzOgogICAgICAgICByZXR1cm4gdGl0bGUz
Rm9udDsKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNp
ZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGNhc2UgQ1NTVmFs
dWVBcHBsZVN5c3RlbVRpdGxlNDoKICAgICAgICAgcmV0dXJuIHRpdGxlNEZvbnQ7CiAjZW5kaWYK
QEAgLTEyNjYsNyArMTI2Niw3IEBAIHZvaWQgUmVuZGVyVGhlbWVJT1M6OnVwZGF0ZUNhY2hlZFN5
c3RlbUYKICAgICAgICAgdGV4dFN0eWxlID0ga0NUVUlGb250VGV4dFN0eWxlQm9keTsKICAgICAg
ICAgZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoVGV4
dFN0eWxlKHRleHRTdHlsZSwgY29udGVudFNpemVDYXRlZ29yeSgpLCBudWxscHRyKSk7CiAgICAg
ICAgIGJyZWFrOwotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAw
MAorI2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgY2FzZSBD
U1NWYWx1ZUFwcGxlU3lzdGVtVGl0bGUwOgogICAgICAgICB0ZXh0U3R5bGUgPSBrQ1RVSUZvbnRU
ZXh0U3R5bGVUaXRsZTA7CiAgICAgICAgIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnRE
ZXNjcmlwdG9yQ3JlYXRlV2l0aFRleHRTdHlsZSh0ZXh0U3R5bGUsIGNvbnRlbnRTaXplQ2F0ZWdv
cnkoKSwgbnVsbHB0cikpOwpAQCAtMTI4NCw3ICsxMjg0LDcgQEAgdm9pZCBSZW5kZXJUaGVtZUlP
Uzo6dXBkYXRlQ2FjaGVkU3lzdGVtRgogICAgICAgICB0ZXh0U3R5bGUgPSBrQ1RVSUZvbnRUZXh0
U3R5bGVUaXRsZTM7CiAgICAgICAgIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNj
cmlwdG9yQ3JlYXRlV2l0aFRleHRTdHlsZSh0ZXh0U3R5bGUsIGNvbnRlbnRTaXplQ2F0ZWdvcnko
KSwgbnVsbHB0cikpOwogICAgICAgICBicmVhazsKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NB
VEFMWVNUKQogICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVRpdGxlNDoKICAgICAgICAgdGV4
dFN0eWxlID0ga0NUVUlGb250VGV4dFN0eWxlVGl0bGU0OwogICAgICAgICBmb250RGVzY3JpcHRv
ciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZVdpdGhUZXh0U3R5bGUodGV4dFN0eWxl
LCBjb250ZW50U2l6ZUNhdGVnb3J5KCksIG51bGxwdHIpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNTQ0MzkpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDMyIEBACisyMDIwLTAxLTEzICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxl
LmNvbT4KKworICAgICAgICBSZW1vdmUgb2xkIGlPUyB2ZXJzaW9uIG1hY3JvcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MDk2CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS81ODQ5MTY3NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtBY3Rpdml0eVRyYWNrZXIu
aDogUmVtb3ZlIGlPUyAxMiB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBQbGF0Zm9ybS9zcGkv
aW9zL1VJS2l0U1BJLmg6IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3MuCisgICAgICAgICog
U2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5oOiBSZW1vdmUgaU9TIDEyIHZlcnNp
b24gY2hlY2tzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENv
Y29hLm1tOiBSZW1vdmUgaU9TIDEyIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbToKKyAgICAgICAgKGNvbnRlbnRPZmZzZXRCb3VuZGVk
SW5WYWxpZFJhbmdlKTogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKC1b
V0tXZWJWaWV3IGFjdGl2ZVZpZXdMYXlvdXRTaXplOl0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tX
ZWJWaWV3IHNhZmVBcmVhSW5zZXRzRGlkQ2hhbmdlXSk6IERpdHRvLgorICAgICAgICAoLVtXS1dl
YlZpZXcgX3VwZGF0ZVNjcm9sbFZpZXdJbnNldEFkanVzdG1lbnRCZWhhdmlvcl0pOiBEaXR0by4K
KyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVW
aWV3cy5tbToKKyAgICAgICAgKC1bV0tDaGlsZFNjcm9sbFZpZXcgaW5pdFdpdGhGcmFtZTpdKTog
UmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBnZXN0
dXJlUmVjb2duaXplcjpjYW5CZVByZXZlbnRlZEJ5R2VzdHVyZVJlY29nbml6ZXI6XSk6IFJlbW92
ZSBpT1MgMTIgdmVyc2lvbiBjaGVja3MuCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZ2VzdHVy
ZVJlY29nbml6ZXI6c2hvdWxkUmVjb2duaXplU2ltdWx0YW5lb3VzbHlXaXRoR2VzdHVyZVJlY29n
bml6ZXI6XSk6IERpdHRvLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zaG93UGxheWJhY2tU
YXJnZXRQaWNrZXI6ZnJvbVJlY3Q6cm91dGVTaGFyaW5nUG9saWN5OnJvdXRpbmdDb250ZXh0VUlE
Ol0pOiBSZW1vdmUgaU9TIDExIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IHVub2NjbHVkZWRXaW5kb3dCb3VuZHNGb3JBY3Rpb25TaGVldEFzc2lzdGFudDpdKTogRGl0
dG8uCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZpZXcuaDogUmVtb3ZlIGlPUyAx
MSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLU2Nyb2xsVmlldy5t
bToKKyAgICAgICAgKC1bV0tTY3JvbGxWaWV3IGluaXRXaXRoRnJhbWU6XSk6IFJlbW92ZSBpT1Mg
MTEgdmVyc2lvbiBjaGVja3MuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0FpclBs
YXlSb3V0ZVBpY2tlci5oOiBSZW1vdmUgaU9TIDExIHZlcnNpb24gY2hlY2tzLgorCiAyMDIwLTAx
LTA2ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1
dGhuXSBTdXBwb3J0IENUQVAgQ2xpZW50IFBpbgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQWN0aXZpdHlUcmFja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQWN0aXZpdHlUcmFja2VyLmgJKHJldmlzaW9uIDI1
NDQzOSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0FjdGl2aXR5VHJh
Y2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQog
Ci0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykgJiYgKChQTEFURk9STShNQUMpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKSB8fCBQ
TEFURk9STShXQVRDSE9TKSkKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKSAmJiAoKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8
IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpIHx8IFBMQVRGT1JNKFdBVENI
T1MpKQogI2RlZmluZSBIQVZFX05XX0FDVElWSVRZIDEKICNlbmRpZgogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAkocmV2aXNpb24gMjU0NDM5KQorKysg
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ3NCw3ICs0NzQsNyBAQCB0eXBlZGVmIGVudW0gewogQHByb3BlcnR5IChyZWFkb25seSkg
TlNTdHJpbmcgKl9ob3N0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyOwogQGVuZAogCi0jaWYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0o
SU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKIEBpbnRlcmZhY2UgTlNVUkwgKCkKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBzZXR0ZXI9X3NldFRpdGxlOikgTlNTdHJpbmcgKl90aXRs
ZTsKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVs
dFZhbHVlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVu
Y2VzRGVmYXVsdFZhbHVlcy5oCShyZXZpc2lvbiAyNTQ0MzkpCisrKyBTb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjI2
LDcgKzIyNiw3IEBACiAjZGVmaW5lIERFRkFVTFRfUFJPQ0VTU19TV0FQX09OX0NST1NTX1NJVEVf
TkFWSUdBVElPTl9FTkFCTEVEIGZhbHNlCiAjZW5kaWYKIAotI2lmIChQTEFURk9STShJT1NfRkFN
SUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApIHx8IChQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAw
KSB8fCBQTEFURk9STShXQVRDSE9TKQorI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRG
T1JNKFdBVENIT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogI2RlZmluZSBERUZBVUxUX0NP
TklDX0dSQURJRU5UX0VOQUJMRUQgdHJ1ZQogI2Vsc2UKICNkZWZpbmUgREVGQVVMVF9DT05JQ19H
UkFESUVOVF9FTkFCTEVEIGZhbHNlCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0JKHJldmlzaW9uIDI1NDQz
OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29j
b2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKICNlbmRpZgogI2ltcG9ydCA8
cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KIAotI2RlZmluZSBDQU5fU0VDVVJF
TFlfQVJDSElWRV9GSUxFX1dSQVBQRVIgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBf
X0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCisjZGVmaW5lIENBTl9T
RUNVUkVMWV9BUkNISVZFX0ZJTEVfV1JBUFBFUiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFU
Rk9STShNQUNDQVRBTFlTVCkKIAogbmFtZXNwYWNlIEFQSSB7CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCShyZXZpc2lvbiAyNTQ0
MzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQko
d29ya2luZyBjb3B5KQpAQCAtNjkzLDcgKzY5Myw3IEBAIC0gKHZvaWQpX2RpZENvbW1pdExvYWRG
b3JNYWluRnJhbWUKIAogc3RhdGljIENHUG9pbnQgY29udGVudE9mZnNldEJvdW5kZWRJblZhbGlk
UmFuZ2UoVUlTY3JvbGxWaWV3ICpzY3JvbGxWaWV3LCBDR1BvaW50IGNvbnRlbnRPZmZzZXQpCiB7
Ci0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExB
VEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBVSUVkZ2VJbnNldHMgY29u
dGVudEluc2V0cyA9IHNjcm9sbFZpZXcuYWRqdXN0ZWRDb250ZW50SW5zZXQ7CiAjZWxzZQogICAg
IFVJRWRnZUluc2V0cyBjb250ZW50SW5zZXRzID0gc2Nyb2xsVmlldy5jb250ZW50SW5zZXQ7CkBA
IC0xNzAwLDcgKzE3MDAsNyBAQCAtIChXZWJDb3JlOjpGbG9hdFNpemUpYWN0aXZlVmlld0xheW91
dFNpCiAgICAgaWYgKF92aWV3TGF5b3V0U2l6ZU92ZXJyaWRlKQogICAgICAgICByZXR1cm4gV2Vi
Q29yZTo6RmxvYXRTaXplKF92aWV3TGF5b3V0U2l6ZU92ZXJyaWRlLnZhbHVlKCkpOwogCi0jaWYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0o
SU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICByZXR1cm4gV2ViQ29yZTo6RmxvYXRT
aXplKFVJRWRnZUluc2V0c0luc2V0UmVjdChDR1JlY3RNYWtlKDAsIDAsIGJvdW5kcy5zaXplLndp
ZHRoLCBib3VuZHMuc2l6ZS5oZWlnaHQpLCBzZWxmLl9zY3JvbGxWaWV3U3lzdGVtQ29udGVudElu
c2V0KS5zaXplKTsKICNlbHNlCiAgICAgcmV0dXJuIFdlYkNvcmU6OkZsb2F0U2l6ZSB7IGJvdW5k
cy5zaXplIH07CkBAIC0xNzc4LDcgKzE3NzgsNyBAQCAtIChCT09MKV9zY3JvbGxWaWV3SXNSdWJi
ZXJCYW5kaW5nCiAgICAgcmV0dXJuICFwb2ludHNFcXVhbEluRGV2aWNlUGl4ZWxzKGNvbnRlbnRP
ZmZzZXQsIGJvdW5kZWRPZmZzZXQsIGRldmljZVNjYWxlRmFjdG9yKTsKIH0KIAotI2lmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRGT1JNKElPUykg
fHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAtICh2b2lkKXNhZmVBcmVhSW5zZXRzRGlkQ2hhbmdl
CiB7CiAgICAgW3N1cGVyIHNhZmVBcmVhSW5zZXRzRGlkQ2hhbmdlXTsKQEAgLTIzMDAsNyArMjMw
MCw3IEBAIC0gKFdLUGFzc3dvcmRWaWV3ICopX3Bhc3N3b3JkVmlldwogCiAtICh2b2lkKV91cGRh
dGVTY3JvbGxWaWV3SW5zZXRBZGp1c3RtZW50QmVoYXZpb3IKIHsKLSNpZiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiBQTEFURk9STShJT1MpIHx8IFBMQVRG
T1JNKE1BQ0NBVEFMWVNUKQogICAgIGlmICghW19zY3JvbGxWaWV3IF9jb250ZW50SW5zZXRBZGp1
c3RtZW50QmVoYXZpb3JXYXNFeHRlcm5hbGx5T3ZlcnJpZGRlbl0pCiAgICAgICAgIFtfc2Nyb2xs
VmlldyBfc2V0Q29udGVudEluc2V0QWRqdXN0bWVudEJlaGF2aW9ySW50ZXJuYWw6c2VsZi5fc2Fm
ZUFyZWFTaG91bGRBZmZlY3RPYnNjdXJlZEluc2V0cyA/IFVJU2Nyb2xsVmlld0NvbnRlbnRJbnNl
dEFkanVzdG1lbnRBbHdheXMgOiBVSVNjcm9sbFZpZXdDb250ZW50SW5zZXRBZGp1c3RtZW50TmV2
ZXJdOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvaW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlVmlld3MubW0J
KHJldmlzaW9uIDI1NDQzOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlVmlld3MubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxMCw3
ICszMTAsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyCiAgICAg
aWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShN
QUNDQVRBTFlTVCkKICAgICBzZWxmLmNvbnRlbnRJbnNldEFkanVzdG1lbnRCZWhhdmlvciA9IFVJ
U2Nyb2xsVmlld0NvbnRlbnRJbnNldEFkanVzdG1lbnROZXZlcjsKICNlbmRpZgogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0JKHJldmlzaW9uIDI1NDQzOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTE5OTMs
OSArMTk5MywxMCBAQCAtIChCT09MKWdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvCiAt
IChCT09MKWdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvZ25pemVyICopcHJldmVudGVk
R2VzdHVyZVJlY29nbml6ZXIgY2FuQmVQcmV2ZW50ZWRCeUdlc3R1cmVSZWNvZ25pemVyOihVSUdl
c3R1cmVSZWNvZ25pemVyICopcHJldmVudGluZ0dlc3R1cmVSZWNvZ25pemVyIHsKICAgICAvLyBE
b24ndCBhbGxvdyB0aGUgaGlnaGxpZ2h0IHRvIGJlIHByZXZlbnRlZCBieSBhIHNlbGVjdGlvbiBn
ZXN0dXJlLiBQcmVzcy1hbmQtaG9sZCBvbiBhIGxpbmsgc2hvdWxkIGhpZ2hsaWdodCB0aGUgbGlu
aywgbm90IHNlbGVjdCBpdC4KICAgICBib29sIGlzRm9yY2VQcmVzc0dlc3R1cmUgPSBOTzsKLSNp
ZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAKKyNpZiBQTEFURk9S
TShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGlzRm9yY2VQcmVzc0dlc3R1cmUg
PSAocHJldmVudGluZ0dlc3R1cmVSZWNvZ25pemVyID09IF90ZXh0SW50ZXJhY3Rpb25Bc3Npc3Rh
bnQuZ2V0KCkuZm9yY2VQcmVzc0dlc3R1cmUpOwogI2VuZGlmCisKICNpZiBQTEFURk9STShNQUND
QVRBTFlTVCkKICAgICBpZiAoKHByZXZlbnRpbmdHZXN0dXJlUmVjb2duaXplciA9PSBfdGV4dElu
dGVyYWN0aW9uQXNzaXN0YW50LmdldCgpLmxvdXBlR2VzdHVyZSkgJiYgKHByZXZlbnRlZEdlc3R1
cmVSZWNvZ25pemVyID09IF9oaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciB8fCBw
cmV2ZW50ZWRHZXN0dXJlUmVjb2duaXplciA9PSBfbG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIg
fHwgcHJldmVudGVkR2VzdHVyZVJlY29nbml6ZXIgPT0gX3RleHRJbnRlcmFjdGlvbkFzc2lzdGFu
dC5nZXQoKS5mb3JjZVByZXNzR2VzdHVyZSkpCiAgICAgICAgIHJldHVybiBZRVM7CkBAIC0yMDMz
LDggKzIwMzQsNyBAQCAtIChCT09MKWdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvCiAg
ICAgICAgIHJldHVybiBZRVM7CiAjZW5kaWYKIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEyMDAwMAotI2lmIFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorI2lmIFBMQVRG
T1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgaWYgKGlzU2FtZVBhaXIoZ2Vz
dHVyZVJlY29nbml6ZXIsIG90aGVyR2VzdHVyZVJlY29nbml6ZXIsIF90ZXh0SW50ZXJhY3Rpb25B
c3Npc3RhbnQuZ2V0KCkubG91cGVHZXN0dXJlLCBfdGV4dEludGVyYWN0aW9uQXNzaXN0YW50Lmdl
dCgpLmZvcmNlUHJlc3NHZXN0dXJlKSkKICAgICAgICAgcmV0dXJuIFlFUzsKIApAQCAtMjA0Mywx
MCArMjA0MywxMSBAQCAtIChCT09MKWdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvCiAK
ICAgICBpZiAoKFtnZXN0dXJlUmVjb2duaXplciBpc0tpbmRPZkNsYXNzOltfVUlMb29rdXBHZXN0
dXJlUmVjb2duaXplciBjbGFzc11dICYmIFtvdGhlckdlc3R1cmVSZWNvZ25pemVyIGlzS2luZE9m
Q2xhc3M6W1VJTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgY2xhc3NdXSkgfHwgKFtvdGhlckdl
c3R1cmVSZWNvZ25pemVyIGlzS2luZE9mQ2xhc3M6W1VJTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6
ZXIgY2xhc3NdXSAmJiBbZ2VzdHVyZVJlY29nbml6ZXIgaXNLaW5kT2ZDbGFzczpbX1VJTG9va3Vw
R2VzdHVyZVJlY29nbml6ZXIgY2xhc3NdXSkpCiAgICAgICAgIHJldHVybiBZRVM7Ci0jZW5kaWYK
KwogICAgIGlmIChpc1NhbWVQYWlyKGdlc3R1cmVSZWNvZ25pemVyLCBvdGhlckdlc3R1cmVSZWNv
Z25pemVyLCBfaGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCksIF90ZXh0
SW50ZXJhY3Rpb25Bc3Npc3RhbnQuZ2V0KCkuZm9yY2VQcmVzc0dlc3R1cmUpKQogICAgICAgICBy
ZXR1cm4gWUVTOwogI2VuZGlmCisKICAgICBpZiAoaXNTYW1lUGFpcihnZXN0dXJlUmVjb2duaXpl
ciwgb3RoZXJHZXN0dXJlUmVjb2duaXplciwgX3NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdl
dCgpLCBfdGV4dEludGVyYWN0aW9uQXNzaXN0YW50LmdldCgpLnNpbmdsZVRhcEdlc3R1cmUpKQog
ICAgICAgICByZXR1cm4gWUVTOwogCkBAIC02NDI4LDcgKzY0MjksNyBAQCAtICh2b2lkKXVwZGF0
ZVRleHRTdWdnZXN0aW9uc0ZvcklucHV0RGVsCiAtICh2b2lkKV9zaG93UGxheWJhY2tUYXJnZXRQ
aWNrZXI6KEJPT0wpaGFzVmlkZW8gZnJvbVJlY3Q6KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKWVs
ZW1lbnRSZWN0IHJvdXRlU2hhcmluZ1BvbGljeTooV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5
KXJvdXRlU2hhcmluZ1BvbGljeSByb3V0aW5nQ29udGV4dFVJRDooTlNTdHJpbmcgKilyb3V0aW5n
Q29udGV4dFVJRAogewogI2lmIEVOQUJMRShBSVJQTEFZX1BJQ0tFUikKLSNpZiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAgJiYgIVBMQVRGT1JNKFdBVENIT1MpICYm
ICFQTEFURk9STShBUFBMRVRWKQorI2lmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0o
QVBQTEVUVikKICAgICBpZiAoIV9haXJQbGF5Um91dGVQaWNrZXIpCiAgICAgICAgIF9haXJQbGF5
Um91dGVQaWNrZXIgPSBhZG9wdE5TKFtbV0tBaXJQbGF5Um91dGVQaWNrZXIgYWxsb2NdIGluaXRd
KTsKICAgICBbX2FpclBsYXlSb3V0ZVBpY2tlciBzaG93RnJvbVZpZXc6c2VsZiByb3V0ZVNoYXJp
bmdQb2xpY3k6cm91dGVTaGFyaW5nUG9saWN5IHJvdXRpbmdDb250ZXh0VUlEOnJvdXRpbmdDb250
ZXh0VUlEIGhhc1ZpZGVvOmhhc1ZpZGVvXTsKQEAgLTY2MjMsNyArNjYyNCw3IEBAIC0gKEJPT0wp
YWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2gKICAgICByZXR1cm4gTk87CiB9CiAKLSNp
ZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiBQTEFURk9S
TShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogLSAoQ0dSZWN0KXVub2NjbHVkZWRXaW5k
b3dCb3VuZHNGb3JBY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAq
KWFzc2lzdGFudAogewogICAgIFVJRWRnZUluc2V0cyBjb250ZW50SW5zZXQgPSBbW193ZWJWaWV3
IHNjcm9sbFZpZXddIGFkanVzdGVkQ29udGVudEluc2V0XTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tTY3JvbGxWaWV3LmgJKHJldmlzaW9uIDI1NDQzOSkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAt
MzcsNyArMzcsNyBAQAogLSAodm9pZClfc2V0U2Nyb2xsRW5hYmxlZEludGVybmFsOihCT09MKWVu
YWJsZWQ7CiAtICh2b2lkKV9zZXRab29tRW5hYmxlZEludGVybmFsOihCT09MKWVuYWJsZWQ7CiAK
LSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiBQTEFU
Rk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogQHByb3BlcnR5IChub25hdG9taWMs
IGFzc2lnbiwgcmVhZG9ubHkpIEJPT0wgX2NvbnRlbnRJbnNldEFkanVzdG1lbnRCZWhhdmlvcldh
c0V4dGVybmFsbHlPdmVycmlkZGVuOwogLSAodm9pZClfc2V0Q29udGVudEluc2V0QWRqdXN0bWVu
dEJlaGF2aW9ySW50ZXJuYWw6KFVJU2Nyb2xsVmlld0NvbnRlbnRJbnNldEFkanVzdG1lbnRCZWhh
dmlvcilpbnNldEFkanVzdG1lbnRCZWhhdmlvcjsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLU2Nyb2xsVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tTY3JvbGxWaWV3Lm1tCShyZXZpc2lvbiAyNTQ0MzkpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tTY3JvbGxWaWV3Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjcsNyArMTI3LDcgQEAgLSAoaWQpZm9yd2FyZGluZ1RhcmdldEZvclNlbGVjdG9yOihT
RUwpYQogICAgIFdlYWtPYmpDUHRyPGlkIDxVSVNjcm9sbFZpZXdEZWxlZ2F0ZT4+IF9leHRlcm5h
bERlbGVnYXRlOwogICAgIFdLU2Nyb2xsVmlld0RlbGVnYXRlRm9yd2FyZGVyICpfZGVsZWdhdGVG
b3J3YXJkZXI7CiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAw
MDAKKyNpZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIEJPT0wg
X2NvbnRlbnRJbnNldEFkanVzdG1lbnRCZWhhdmlvcldhc0V4dGVybmFsbHlPdmVycmlkZGVuOwog
I2VuZGlmCiAgICAgQ0dGbG9hdCBfa2V5Ym9hcmRCb3R0b21JbnNldEFkanVzdG1lbnQ7CkBAIC0x
NTMsNyArMTUzLDcgQEAgLSAoaWQpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lCiAgICAgc2Vs
Zi5kaXJlY3Rpb25hbExvY2tFbmFibGVkID0gWUVTOwogICAgIFtzZWxmIF9zZXRJbmRpY2F0b3JJ
bnNldEFkanVzdG1lbnRCZWhhdmlvcjpVSVNjcm9sbFZpZXdJbmRpY2F0b3JJbnNldEFkanVzdG1l
bnRBbHdheXNdOwogCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEw
MDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBfY29u
dGVudEluc2V0QWRqdXN0bWVudEJlaGF2aW9yV2FzRXh0ZXJuYWxseU92ZXJyaWRkZW4gPSAoc2Vs
Zi5jb250ZW50SW5zZXRBZGp1c3RtZW50QmVoYXZpb3IgIT0gVUlTY3JvbGxWaWV3Q29udGVudElu
c2V0QWRqdXN0bWVudEF1dG9tYXRpYyk7CiAjZW5kaWYKICAgICAKQEAgLTI3OCw3ICsyNzgsNyBA
QCAtICh2b2lkKXNldENvbnRlbnRJbnNldDooVUlFZGdlSW5zZXRzKWNvCiAgICAgW19pbnRlcm5h
bERlbGVnYXRlIF9zY2hlZHVsZVZpc2libGVDb250ZW50UmVjdFVwZGF0ZV07CiB9CiAKLSNpZiBf
X0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiBQTEFURk9STShJ
T1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogCiAtIChCT09MKV9jb250ZW50SW5zZXRBZGp1
c3RtZW50QmVoYXZpb3JXYXNFeHRlcm5hbGx5T3ZlcnJpZGRlbgogewpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLQWlyUGxheVJvdXRlUGlja2VyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLQWlyUGxheVJvdXRlUGlj
a2VyLmgJKHJldmlzaW9uIDI1NDQzOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0FpclBsYXlSb3V0ZVBpY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3
IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoQUlSUExBWV9QSUNLRVIp
CiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAgJiYgIVBM
QVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQorI2lmICFQTEFURk9STShXQVRD
SE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikKIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0
aW9uLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDQz
OSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDIwLTAxLTEzICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFw
cGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgb2xkIGlPUyB2ZXJzaW9uIG1hY3JvcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MDk2CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS81ODQ5MTY3NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbTog
UmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlVJRGVs
ZWdhdGVQcml2YXRlLmg6IERpdHRvLgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbTogRGl0
dG8uCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oOiBEaXR0by4KKwogMjAyMC0w
MS0wOSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZG9wdCBUQVJHRVRfT1NfTUFDQ0FUQUxZU1QgaW4gbW9yZSBwbGFjZXMKSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQubW0JKHJldmlzaW9uIDI1NDQzOSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDE4LDcg
KzQxOCw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXIKICAgICAv
LyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9CiAKLSNpZiAoUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEw
MDAwKSB8fCBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUMp
IHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogCiAvLyBGSVhNRTogUmVtb3ZlIGJvdGggdGhpcyBz
dHViIGFuZCB0aGUgcmVhbCB2ZXJzaW9uIG9mIHRoaXMgZnVuY3Rpb24gYmVsb3cgb25jZSB3ZSBk
b24ndCBuZWVkIHRoZSByZWFsIHZlcnNpb24gb24gYW55IHN1cHBvcnRlZCBwbGF0Zm9ybS4KIC8v
IFRoaXMgc3R1YiBpcyBub3QgdXNlZCBvdXRzaWRlIFdlYktpdCwgYnV0IGl0J3MgaGVyZSBzbyB3
ZSB3b24ndCBnZXQgYSBsaW5rZXIgZXJyb3IuCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oCShyZXZpc2lvbiAy
NTQ0MzkpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQ
cml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAKICNlbmRpZgogI2VuZGlm
CiAKLSNpZiBUQVJHRVRfT1NfSVBIT05FICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDExMDAwMAorI2lmIFRBUkdFVF9PU19JUEhPTkUKIEBwcm90b2NvbCBVSURyb3BTZXNz
aW9uOwogI2VuZGlmCiAKQEAgLTI5OSw3ICsyOTksNiBAQCBAaW50ZXJmYWNlIE5TT2JqZWN0IChX
ZWJVSURlbGVnYXRlUHJpdmF0CiAKIC0gKEJPT0wpd2ViVmlld0NhbkNoZWNrR2VvbG9jYXRpb25B
dXRob3JpemF0aW9uU3RhdHVzOihXZWJWaWV3ICopc2VuZGVyOwogCi0jaWYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCiAvKiEKICBAbWV0aG9kIHdlYlZpZXc6ZHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvclNlc3Npb246CiAgQHBhcmFtIHNlbmRlciBUaGUgV2Vi
VmlldyBzZW5kaW5nIHRoZSBkZWxlZ2F0ZSBtZXRob2QKQEAgLTMwOCw3ICszMDcsNiBAQCBAaW50
ZXJmYWNlIE5TT2JqZWN0IChXZWJVSURlbGVnYXRlUHJpdmF0CiAgKi8KIC0gKFdlYkRyYWdEZXN0
aW5hdGlvbkFjdGlvbil3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRyYWdEZXN0aW5hdGlvbkFj
dGlvbk1hc2tGb3JTZXNzaW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbjsKICNlbmRpZgot
I2VuZGlmCiAKIC0gKE5TRGF0YSAqKXdlYkNyeXB0b01hc3RlcktleUZvcldlYlZpZXc6KFdlYlZp
ZXcgKilzZW5kZXI7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0JKHJldmlzaW9uIDI1NDQzOSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTk2Niw3ICsxOTY2LDcgQEAgLSAo
dm9pZClfZGlkQ29uY2x1ZGVFZGl0RHJhZwogICAgIH0KIH0KIAotI2VsaWYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjZWxpZiBQTEFURk9STShJT1MpIHx8IFBM
QVRGT1JNKE1BQ0NBVEFMWVNUKQogCiAtIChCT09MKV9yZXF1ZXN0U3RhcnREYXRhSW50ZXJhY3Rp
b246KENHUG9pbnQpY2xpZW50UG9zaXRpb24gZ2xvYmFsUG9zaXRpb246KENHUG9pbnQpZ2xvYmFs
UG9zaXRpb24KIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
d1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXdQcml2YXRlLmgJKHJldmlzaW9uIDI1NDQzOSkKKysrIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDcg
KzExNyw3IEBAIGV4dGVybiBOU1N0cmluZyAqV2ViUXVpY2tMb29rRmlsZU5hbWVLZXkKIGV4dGVy
biBOU1N0cmluZyAqV2ViUXVpY2tMb29rVVRJS2V5OwogI2VuZGlmCiAKLSNpZiBUQVJHRVRfT1Nf
SVBIT05FICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lm
IFRBUkdFVF9PU19JUEhPTkUKIEBwcm90b2NvbCBVSURyb3BTZXNzaW9uOwogI2VuZGlmCiAKQEAg
LTQ3OSw3ICs0NzksNyBAQCBDb3VsZCBiZSB3b3J0aCBhZGRpbmcgdG8gdGhlIEFQSS4KIAogLSAo
dm9pZClfcmVwbGFjZUN1cnJlbnRIaXN0b3J5SXRlbTooV2ViSGlzdG9yeUl0ZW0gKilpdGVtOwog
Ci0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExB
VEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKIC0gKEJPT0wpX3JlcXVlc3RTdGFy
dERhdGFJbnRlcmFjdGlvbjooQ0dQb2ludCljbGllbnRQb3NpdGlvbiBnbG9iYWxQb3NpdGlvbjoo
Q0dQb2ludClnbG9iYWxQb3NpdGlvbjsKIC0gKFdlYlVJVGV4dEluZGljYXRvckRhdGEgKilfZ2V0
RGF0YUludGVyYWN0aW9uRGF0YTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgc3Ry
b25nLCBnZXR0ZXI9X2RhdGFPcGVyYXRpb25UZXh0SW5kaWNhdG9yKSBXZWJVSVRleHRJbmRpY2F0
b3JEYXRhICpkYXRhT3BlcmF0aW9uVGV4dEluZGljYXRvcjsKSW5kZXg6IFRvb2xzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDQzOSkKKysrIFRv
b2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDIwLTAxLTEz
ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUg
b2xkIGlPUyB2ZXJzaW9uIG1hY3JvcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA2MDk2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODQ5MTY3NT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGlua1Rlc3QubW06
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKTogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNo
ZWNrcy4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NT
d2FwT25OYXZpZ2F0aW9uLm1tOiBSZW1vdmUgaU9TIDExIHZlcnNpb24gY2hlY2tzLgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW06
IERpdHRvLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tIVFRQ
Q29va2llU3RvcmUubW06IFJlbW92ZSBpT1MgMTIgdmVyc2lvbiBjaGVja3MuCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3Lm1tOgorICAgICAgICAo
LVtUZXN0UnVubmVyV0tXZWJWaWV3IHNldE92ZXJyaWRlU2FmZUFyZWFJbnNldHM6XSk6IFJlbW92
ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3MuCisKIDIwMjAtMDEtMDYgIEppZXdlbiBUYW4gIDxqaWV3
ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQXV0aG5dIFN1cHBvcnQgQ1RBUCBDbGll
bnQgUGluCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW1hZ2VfZGlmZi5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW1hZ2VfZGlmZi5weQko
cmV2aXNpb24gMjU0NDM5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2ltYWdlX2Rp
ZmYucHkJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDcgQEAgY2xhc3MgSW1hZ2VEaWZmZXIo
b2JqZWN0KToKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9wcm9jZXNzOgogICAgICAgICAgICAg
ICAgIHNlbGYuX3N0YXJ0KHRvbGVyYW5jZSkKICAgICAgICAgICAgICMgTm90ZSB0aGF0IGFsdGhv
dWdoIHdlIGFyZSBoYW5kZWQgJ29sZCcsICduZXcnLCBJbWFnZURpZmYgd2FudHMgJ25ldycsICdv
bGQnLgorICAgICAgICAgICAgcHJpbnQoJyAgICBDb21wYXJpbmcge30gdnMge30nLmZvcm10KGxl
bihhY3R1YWxfY29udGVudHMpLCBsZW4oZXhwZWN0ZWRfY29udGVudHMpKSkKICAgICAgICAgICAg
IHNlbGYuX3Byb2Nlc3Mud3JpdGUoJ0NvbnRlbnQtTGVuZ3RoOiB7fVxuJy5mb3JtYXQobGVuKGFj
dHVhbF9jb250ZW50cykpKQogICAgICAgICAgICAgc2VsZi5fcHJvY2Vzcy53cml0ZShhY3R1YWxf
Y29udGVudHMpCiAgICAgICAgICAgICBzZWxmLl9wcm9jZXNzLndyaXRlKCdDb250ZW50LUxlbmd0
aDoge31cbicuZm9ybWF0KGxlbihleHBlY3RlZF9jb250ZW50cykpKQpJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rVGVzdC5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2Ev
QVZGb3VuZGF0aW9uU29mdExpbmtUZXN0Lm1tCShyZXZpc2lvbiAyNTQ0MzkpCisrKyBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmtUZXN0
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsMTIgKzEzOCwxMiBAQCBURVNUKEFWRm91bmRhdGlv
blNvZnRMaW5rLCBDb25zdGFudHMpCiAgICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25f
QVZTYW1wbGVSYXRlS2V5KCkpCiAgICAgICAgIEVYUEVDVF9UUlVFKFtBVlNhbXBsZVJhdGVLZXkg
aXNFcXVhbFRvU3RyaW5nOkAiQVZTYW1wbGVSYXRlS2V5Il0pOwogCi0jaWYgUExBVEZPUk0oTUFD
KSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMTAwMDApIHx8IFBMQVRGT1JNKFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQUExFVFYpCisjaWYg
UExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKFdBVENIT1MpIHx8IFBM
QVRGT1JNKEFQUExFVFYpCiAgICAgRVhQRUNUX1RSVUUoUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlv
bl9BVlVSTEFzc2V0T3V0T2ZCYW5kTUlNRVR5cGVLZXkoKSk7CiAgICAgRVhQRUNUX1RSVUUoW0FW
VVJMQXNzZXRPdXRPZkJhbmRNSU1FVHlwZUtleSBpc0VxdWFsVG9TdHJpbmc6QCJBVlVSTEFzc2V0
T3V0T2ZCYW5kTUlNRVR5cGVLZXkiXSk7CiAjZW5kaWYKIAotI2lmIChQTEFURk9STShNQUMpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0o
SU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApIHx8IFBM
QVRGT1JNKFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQUExFVFYpCisjaWYgKFBMQVRGT1JNKE1BQykg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JN
KElPUykgfHwgUExBVEZPUk0oV0FUQ0hPUykgfHwgUExBVEZPUk0oQVBQTEVUVikKICAgICBFWFBF
Q1RfVFJVRShQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWVVJMQXNzZXRVc2VDbGllbnRVUkxM
b2FkaW5nRXhjbHVzaXZlbHkoKSk7CiAgICAgRVhQRUNUX1RSVUUoW0FWVVJMQXNzZXRVc2VDbGll
bnRVUkxMb2FkaW5nRXhjbHVzaXZlbHkgaXNFcXVhbFRvU3RyaW5nOkAiQVZVUkxBc3NldFVzZUNs
aWVudFVSTExvYWRpbmdFeGNsdXNpdmVseSJdKTsKICNlbmRpZgpJbmRleDogVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NT
d2FwT25OYXZpZ2F0aW9uLm1tCShyZXZpc2lvbiAyNTQ0MzkpCisrKyBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC02MzkyLDcgKzYzOTIsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBQYWdlT3Zlcmxh
eUxheWVyUGVyc2lzCiAjZW5kaWYKIH0KIAotI2lmIFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQ
TEFURk9STShNQUNDQVRBTFlTVCkKIAogVEVTVChQcm9jZXNzU3dhcCwgUXVpY2tMb29rUmVxdWVz
dHNQYXNzd29yZEFmdGVyU3dhcCkKIHsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQkocmV2aXNp
b24gMjU0NDM5KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0
dGFjaG1lbnRUZXN0cy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCAtIChfV0tB
dHRhY2htZW50ICopX2F0dGFjaG1lbnRXaXRoTmFtZTooCiB9CiBAZW5kCiAKLSNkZWZpbmUgVVNF
U19NT0RFUk5fQVRUUklCVVRFRF9TVFJJTkdfQ09OVkVSU0lPTiAoKFBMQVRGT1JNKElPU19GQU1J
TFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkgfHwgUExB
VEZPUk0oTUFDKSkKKyNkZWZpbmUgVVNFU19NT0RFUk5fQVRUUklCVVRFRF9TVFJJTkdfQ09OVkVS
U0lPTiAoUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFM
WVNUKSkKIAogQGludGVyZmFjZSBBdHRhY2htZW50VXBkYXRlT2JzZXJ2ZXIgOiBOU09iamVjdCA8
V0tVSURlbGVnYXRlUHJpdmF0ZT4KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNB
cnJheSAqaW5zZXJ0ZWQ7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0JKHJldmlzaW9uIDI1NDQz
OSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tIVFRQQ29va2ll
U3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0Nyw3ICszNDcsNyBAQCBURVNUKFdlYktpdCwg
V0tIVFRQQ29va2llU3RvcmVIdHRwT25seSkgCiAgICAgW2Nvb2tpZXMgcmVsZWFzZV07CiB9CiAK
LSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEyMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFU
Rk9STShNQUNDQVRBTFlTVCkKIFRFU1QoV2ViS2l0LCBXS0hUVFBDb29raWVTdG9yZUNyZWF0aW9u
VGltZSkgCiB7ICAgCiAgICAgYXV0byBkYXRhU3RvcmUgPSBbV0tXZWJzaXRlRGF0YVN0b3JlIGRl
ZmF1bHREYXRhU3RvcmVdOwpAQCAtNDAxLDcgKzQwMSw3IEBAIFRFU1QoV2ViS2l0LCBXS0hUVFBD
b29raWVTdG9yZUNyZWF0aW9uVGkKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdEZs
YWcpOwogICAgIGdvdEZsYWcgPSBmYWxzZTsKIH0KLSNlbmRpZiAvLyAoUExBVEZPUk0oTUFDKSAm
JiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JN
KElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAw
MCkKKyNlbmRpZiAvLyAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlT
VCkKIAogLy8gRklYTUU6IFRoaXMgI2lmIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgPHJkYXI6Ly9w
cm9ibGVtLzM1MzQ0MjAyPiBpcyByZXNvbHZlZCBhbmQgYm90cyBhcmUgdXBkYXRlZC4KICNpZiBQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA8PSAxMDEzMDEK
SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJX
S1dlYlZpZXcubW0JKHJldmlzaW9uIDI1NDQzOSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
Y29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDI1LDcgKzQy
NSw3IEBAIC0gKHZvaWQpYWNjZXNzaWJpbGl0eVJldHJpZXZlU3BlYWtTZWxlY3QKIC0gKHZvaWQp
c2V0T3ZlcnJpZGVTYWZlQXJlYUluc2V0czooVUlFZGdlSW5zZXRzKWluc2V0cwogewogICAgIF9v
dmVycmlkZVNhZmVBcmVhSW5zZXRzID0gaW5zZXRzOwotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFD
Q0FUQUxZU1QpCiAgICAgW3NlbGYgX3VwZGF0ZVNhZmVBcmVhSW5zZXRzXTsKICNlbmRpZgogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387659</attachid>
            <date>2020-01-14 08:24:12 -0800</date>
            <delta_ts>2020-01-14 10:04:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206096-20200114082411.patch</filename>
            <type>text/plain</type>
            <size>48524</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNTQ1MTApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAxLTE0ICBKb25hdGhhbiBCZWRhcmQgIDxq
YmVkYXJkQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgb2xkIGlPUyB2ZXJzaW9uIG1hY3Jv
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MDk2
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODQ5MTY3NT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9GZWF0dXJlRGVmaW5lcy5oOiBSZW1v
dmUgaU9TIDEyIHZlcnNpb24gbWFjcm8uCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6IERpdHRv
LgorCiAyMDIwLTAxLTE0ICBBbGljaWEgQm95YSBHYXJjw61hICA8YWJveWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbV1RGXSBNYWtlIE1lZGlhVGltZSBjb25zdHJ1Y3RvciBjb25zdGV4cHIKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvRmVhdHVyZURlZmluZXMuaAkocmV2aXNpb24gMjU0NTEwKQorKysgU291cmNlL1dU
Ri93dGYvRmVhdHVyZURlZmluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTgyLDcgKzE4Miw3IEBA
IHRoZSBwdWJsaWMgaU9TIFNESy4gU2VlIDxodHRwczovL3dlYmtpdC4KICNlbmRpZgogCiAjaWYg
IWRlZmluZWQoRU5BQkxFX1dLUERGVklFVykKLSNpZiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBM
QVRGT1JNKEFQUExFVFYpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkgJiYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwCisjaWYgUExBVEZPUk0oSU9TKQogI2RlZmlu
ZSBFTkFCTEVfV0tQREZWSUVXIDEKICNlbmRpZgogI2VuZGlmCkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHJl
dmlzaW9uIDI1NDUxMCkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTg3Nyw3ICs4NzcsNyBAQAogI2RlZmluZSBIQVZFX0FVVEhPUklaQVRJT05fU1RBVFVT
X0ZPUl9NRURJQV9UWVBFIDEKICNlbmRpZgogCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgKF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NQVhfQUxMT1dFRCA+PSAxMDE0MDQpKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
QVhfQUxMT1dFRCA+PSAxMjAyMDApIHx8IFBMQVRGT1JNKFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQ
UExFVFYpCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxNDAwICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMDE0
MDQpKSB8fCBQTEFURk9STShXQVRDSE9TKSB8fCBQTEFURk9STShBUFBMRVRWKQogI2RlZmluZSBI
QVZFX0NGTkVUV09SS19PVkVSUklERV9TRVNTSU9OX0NPT0tJRV9BQ0NFUFRfUE9MSUNZIDEKICNl
bmRpZgogCkBAIC05NTMsNyArOTUzLDcgQEAKICNkZWZpbmUgSEFWRV9ST1VURV9TSEFSSU5HX1BP
TElDWV9MT05HX0ZPUk1fVklERU8gMQogI2VuZGlmCiAKLSNpZiAoUExBVEZPUk0oSU9TKSAmJiBf
X0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAgJiYgIVBMQVRGT1JNKElP
U19TSU1VTEFUT1IpKQorI2lmIChQTEFURk9STShJT1MpICYmICFQTEFURk9STShJT1NfU0lNVUxB
VE9SKSkKICNkZWZpbmUgSEFWRV9ERVZJQ0VfTUFOQUdFTUVOVCAxCiAjZW5kaWYKIApAQCAtOTY5
LDcgKzk2OSw3IEBACiAjZGVmaW5lIEhBVkVfQVZQTEFZRVJfUkVTT1VSQ0VfQ09OU0VSVkFUSU9O
X0xFVkVMIDEKICNlbmRpZgogCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkgfHwgUExBVEZPUk0oV0FUQ0hPUykg
fHwgUExBVEZPUk0oQVBQTEVUVikKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9S
TShXQVRDSE9TKSB8fCBQTEFURk9STShBUFBMRVRWKQogI2RlZmluZSBIQVZFX0NPUkVURVhUX0FV
VE9fT1BUSUNBTF9TSVpJTkcgMQogI2VuZGlmCiAKQEAgLTEwMDEsNyArMTAwMSw3IEBACiAjZGVm
aW5lIEhBVkVfU1VCVklFV1NfSVZBUl9ERUNMQVJFRF9CWV9TREsgMQogI2VuZGlmCiAKLSNpZiBQ
TEFURk9STShNQUMpIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApIHx8IFBMQVRGT1JNKFdBVENIT1MpIHx8IFBMQVRG
T1JNKEFQUExFVFYpCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQog
I2RlZmluZSBVU0VfUExBVEZPUk1fU1lTVEVNX0ZBTExCQUNLX0xJU1QgMQogI2VuZGlmCiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDUxMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDIwLTAxLTE0ICBKb25hdGhhbiBC
ZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgb2xkIGlPUyB2ZXJz
aW9uIG1hY3JvcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA2MDk2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODQ5MTY3NT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuCisKKyAg
ICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbTogUmVtb3ZlIGlP
UyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBwYWdlL1NldHRpbmdzRGVmYXVsdFZhbHVl
cy5oOiBSZW1vdmUgaU9TIDEyIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6OnBh
aW50KTogUmVtb3ZlIGlPUyAxMiB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9QYXRoQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6cGxhdGZvcm1B
ZGRQYXRoRm9yUm91bmRlZFJlY3QpOiBSZW1vdmUgaU9TIDEyIHZlcnNpb24gY2hlY2tzLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnZhcmlhdGlvbkNhcGFiaWxpdGllc0ZvckZvbnREZXNjcmlwdG9yKTog
UmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNo
ZTo6bGFzdFJlc29ydEZhbGxiYWNrRm9udCk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Om1hdGNoU3lzdGVtRm9udFVzZSk6IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVjay4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvRm9udENhY2hlSU9TLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6cGxhdGZvcm1Gb250V2l0aEZhbWlseVNwZWNpYWxDYXNlKTogUmVtb3ZlIGlPUyAxMSB2
ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKTogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oOiBSZW1vdmUgaU9TIDExIHZlcnNp
b24gY2hlY2tzLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpjb29raWVzRm9yVVJMKTogUmVt
b3ZlIGlPUyAxMiB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKFdlYkNvcmU6OnNldEhUVFBDb29r
aWVzRm9yVVJMKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1t
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OmNhY2hlZFN5c3RlbUZvbnREZXNj
cmlwdGlvbiBjb25zdCk6IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3MuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6dXBkYXRlQ2FjaGVkU3lzdGVtRm9udERlc2NyaXB0aW9u
IGNvbnN0KTogRGl0dG8uCisKIDIwMjAtMDEtMTQgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFu
ZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIFVucmV2aWV3ZWQgYnVpbGQgd2Fy
bmluZyBmaXggYWZ0ZXIgcjI1NDUwMwpJbmRleDogU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
NTQ1MTApCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMjAtMDEtMTQgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBw
bGUuY29tPgorCisgICAgICAgIFJlbW92ZSBvbGQgaU9TIHZlcnNpb24gbWFjcm9zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYwOTYKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzU4NDkxNjc1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaDogUmVtb3ZlIGlP
UyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQ
SS5oOiBSZW1vdmUgaU9TIDEyIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAqIHBhbC9zcGkvY29j
b2EvTlNLZXllZEFyY2hpdmVyU1BJLmg6IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3MuCisg
ICAgICAgICogcGFsL3NwaS9pb3MvTWVkaWFQbGF5ZXJTUEkuaDogUmVtb3ZlIGlPUyAxMSBhbmQg
MTIgdmVyc2lvbiBjaGVja3MuCisKIDIwMjAtMDEtMDkgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2Fy
bHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgRG9uJ3Qgc29mdGxpbmsgQVZDYXB0dXJlIGNsYXNz
ZXMgb24gd2F0Y2hPUyBvciB0dk9TCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9j
Zi9DRk5ldHdvcmtTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9jZi9DRk5ldHdvcmtTUEkuaAkocmV2aXNpb24gMjU0NTEwKQorKysgU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMyw3ICsy
MTMsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBOU1VSTFNlc3Npb25DCiBAcHJvcGVy
dHkgKG51bGxhYmxlLCByZWFkd3JpdGUsIHJldGFpbikgTlNVUkwgKl9zaXRlRm9yQ29va2llczsK
IEBwcm9wZXJ0eSAocmVhZHdyaXRlKSBCT09MIF9pc1RvcExldmVsTmF2aWdhdGlvbjsKICNlbmRp
ZgotI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKKyNpZiBQTEFURk9STShNQUMpIHx8
IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiBAcHJvcGVydHkgKG5vbmF0
b21pYywgYXNzaWduKSBCT09MIF9wcmVjb25uZWN0OwogI2VuZGlmCiBAZW5kCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaAkocmV2aXNp
b24gMjU0NTEwKQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNz
U1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIENHQ29udGV4dFNl
dFN0eWxlKENHQ29udGV4dFJlZiwgQ0dTCiAKIHZvaWQgQ0dDb250ZXh0RHJhd0NvbmljR3JhZGll
bnQoQ0dDb250ZXh0UmVmLCBDR0dyYWRpZW50UmVmLCBDR1BvaW50IGNlbnRlciwgQ0dGbG9hdCBh
bmdsZSk7CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9T
KSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKIHZvaWQgQ0dQYXRoQWRkVW5ldmVuQ29ybmVyc1Jv
dW5kZWRSZWN0KENHTXV0YWJsZVBhdGhSZWYsIGNvbnN0IENHQWZmaW5lVHJhbnNmb3JtICosIENH
UmVjdCwgY29uc3QgQ0dTaXplIGNvcm5lcnNbNF0pOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5o
CShyZXZpc2lvbiAyNTQ1MTApCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9O
U0tleWVkQXJjaGl2ZXJTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2lt
cG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAotI2Rl
ZmluZSBVU0VfU0VDVVJFX0FSQ0hJVkVSX0FQSSAoUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0o
SU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMjAw
KSB8fCBQTEFURk9STShXQVRDSE9TKSB8fCBQTEFURk9STShBUFBMRVRWKSkKKyNkZWZpbmUgVVNF
X1NFQ1VSRV9BUkNISVZFUl9BUEkgKFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlM
WSkpCiAKICNkZWZpbmUgVVNFX1NFQ1VSRV9BUkNISVZFUl9GT1JfQVRUUklCVVRFRF9TVFJJTkcg
KFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEzMDAwMCkgfHwgUExBVEZPUk0oV0FUQ0hPUykgfHwgUExB
VEZPUk0oQVBQTEVUVikpCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2lvcy9N
ZWRpYVBsYXllclNQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3Bp
L2lvcy9NZWRpYVBsYXllclNQSS5oCShyZXZpc2lvbiAyNTQ1MTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL3NwaS9pb3MvTWVkaWFQbGF5ZXJTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMzQs
MTEgKzM0LDExIEBACiAKICNpbXBvcnQgPE1lZGlhUGxheWVyL01QQVZSb3V0aW5nQ29udHJvbGxl
ci5oPgogCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwCisj
aWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICNpbXBvcnQgPE1lZGlh
UGxheWVyL01QTWVkaWFDb250cm9sc0NvbmZpZ3VyYXRpb24uaD4KICNlbmRpZgogCi0jaWYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwICYmICFQTEFURk9STShXQVRD
SE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikKKyNpZiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBM
QVRGT1JNKEFQUExFVFYpCiAjaW1wb3J0IDxNZWRpYVBsYXllci9NUE1lZGlhQ29udHJvbHNWaWV3
Q29udHJvbGxlci5oPgogI2Vsc2UKICNpbXBvcnQgPE1lZGlhUGxheWVyL01QQVZSb3V0aW5nU2hl
ZXQuaD4KQEAgLTY0LDcgKzY0LDcgQEAgdHlwZWRlZiBOU0ludGVnZXIgTVBSb3V0ZURpc2NvdmVy
eU1vZGU7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBNUFJvdXRlRGlzY292ZXJ5TW9k
ZSBkaXNjb3ZlcnlNb2RlOwogQGVuZAogCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTEwMDAwICYmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQTEVU
VikKKyNpZiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCiAKIEBpbnRl
cmZhY2UgTVBNZWRpYUNvbnRyb2xzVmlld0NvbnRyb2xsZXIgOiBVSVZpZXdDb250cm9sbGVyCiBA
cHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgbnVsbGFibGUpIHZvaWQgKF5kaWREaXNtaXNzSGFu
ZGxlcikodm9pZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRl
bnRSZWFkZXJDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQkocmV2aXNpb24gMjU0NTEwKQorKysgU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTczLDcgKzczLDcgQEAKICNpbmNsdWRlICJMb2NhbERlZmF1bHRTeXN0ZW1BcHBl
YXJhbmNlLmgiCiAjZW5kaWYKIAotI2lmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApIHx8IFBMQVRGT1JNKE1BQykKKyNp
ZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1Qp
CiBAaW50ZXJmYWNlIE5TQXR0cmlidXRlZFN0cmluZyAoKQogLSAoTlNTdHJpbmcgKilfaHRtbERv
Y3VtZW50RnJhZ21lbnRTdHJpbmc6KE5TUmFuZ2UpcmFuZ2UgZG9jdW1lbnRBdHRyaWJ1dGVzOihO
U0RpY3Rpb25hcnkgKilkaWN0IHN1YnJlc291cmNlczooTlNBcnJheSAqKilzdWJyZXNvdXJjZXM7
CiBAZW5kCkBAIC04Myw3ICs4Myw3IEBAIFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhXZWJL
aXRMZWdhY3kKIFNPRlRfTElOS19GUkFNRVdPUktfSU5fVU1CUkVMTEEoV2ViS2l0LCBXZWJLaXRM
ZWdhY3kpCiAjZW5kaWYKIAotI2lmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMCkKKyNpZiBQTEFURk9STShXQVRDSE9TKSB8
fCBQTEFURk9STShUVk9TKQogU09GVF9MSU5LKFdlYktpdExlZ2FjeSwgX1dlYkNyZWF0ZUZyYWdt
ZW50LCB2b2lkLCAoV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBOU0F0dHJpYnV0ZWRTdHJp
bmcgKnN0cmluZywgV2ViQ29yZTo6RnJhZ21lbnRBbmRSZXNvdXJjZXMmIHJlc3VsdCksIChkb2N1
bWVudCwgc3RyaW5nLCByZXN1bHQpKQogI2VuZGlmCiAKQEAgLTk2LDcgKzk2LDcgQEAgc3RhdGlj
IEZyYWdtZW50QW5kUmVzb3VyY2VzIGNyZWF0ZUZyYWdtZQogICAgIHJldHVybiB7IH07CiB9CiAK
LSNlbGlmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMTAwMDApIHx8IFBMQVRGT1JNKE1BQykKKyNlbGlmIFBMQVRGT1JNKElPUykg
fHwgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKIAogc3RhdGljIE5TRGlj
dGlvbmFyeSAqYXR0cmlidXRlc0ZvckF0dHJpYnV0ZWRTdHJpbmdDb252ZXJzaW9uKCkKIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NEZWZhdWx0VmFsdWVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0RlZmF1bHRWYWx1ZXMuaAkocmV2aXNp
b24gMjU0NTEwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0RlZmF1bHRWYWx1ZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBjb25zdCBib29sIGRl
ZmF1bHRNZWRpYUVuYWJsZWQgPSAKIHN0YXRpYyBjb25zdCBib29sIGRlZmF1bHRNZWRpYUVuYWJs
ZWQgPSBmYWxzZTsKICNlbmRpZgogICAgIAotI2lmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBf
X0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApIHx8IChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFU
Rk9STShXQVRDSE9TKQorI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKFdBVENI
T1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogc3RhdGljIGNvbnN0IGJvb2wgZGVmYXVsdENv
bmljR3JhZGllbnQgPSB0cnVlOwogI2Vsc2UKIHN0YXRpYyBjb25zdCBib29sIGRlZmF1bHRDb25p
Y0dyYWRpZW50ID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFkaWVudENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9HcmFkaWVudENHLmNwcAkocmV2aXNpb24gMjU0NTEwKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIEdyYWRpZW50OjpwYWludChDR0NvbnRleHRSZWYg
cGxhdGZvCiAgICAgICAgICAgICAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShwbGF0Zm9ybUNv
bnRleHQpOwogICAgICAgICB9LAogICAgICAgICBbJl0gKGNvbnN0IENvbmljRGF0YSYgZGF0YSkg
ewotI2lmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMjAwMDApIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShXQVRDSE9TKQorI2lmIFBMQVRG
T1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKFdBVENIT1MpCiAgICAgICAgICAgICBDR0NvbnRl
eHRTYXZlR1N0YXRlKHBsYXRmb3JtQ29udGV4dCk7CiAgICAgICAgICAgICBDR0NvbnRleHRUcmFu
c2xhdGVDVE0ocGxhdGZvcm1Db250ZXh0LCBkYXRhLnBvaW50MC54KCksIGRhdGEucG9pbnQwLnko
KSk7CiAgICAgICAgICAgICBDR0NvbnRleHRSb3RhdGVDVE0ocGxhdGZvcm1Db250ZXh0LCAoQ0dG
bG9hdCktTV9QSV8yKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BhdGhDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUGF0aENHLmNwcAkocmV2aXNpb24gMjU0NTEwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE0LDcgKzMx
NCw3IEBAIHZvaWQgUGF0aDo6cGxhdGZvcm1BZGRQYXRoRm9yUm91bmRlZFJlY3QKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKQorI2lmIChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFU
Rk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIENHUmVjdCByZWN0VG9EcmF3
ID0gcmVjdDsKICAgICAKICAgICBlbnVtIENvcm5lcnMgewpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVU
ZXh0LmNwcAkocmV2aXNpb24gMjU0NTEwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3
ICszOSw3IEBACiAjaW5jbHVkZSA8d3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oPgogI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCi0jZGVmaW5lIEhBU19DT1JFX1RFWFRfV0lEVEhf
QVRUUklCVVRFIChQTEFURk9STShNQUMpIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApKQorI2RlZmluZSBIQVNfQ09S
RV9URVhUX1dJRFRIX0FUVFJJQlVURSAoUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpIHx8
IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKSkKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDY0
LDcgKzEwNjQsNyBAQCBzdGF0aWMgVmFyaWF0aW9uQ2FwYWJpbGl0aWVzIHZhcmlhdGlvbkNhCiAg
ICAgfQogCiAgICAgYm9vbCBvcHRPdXRGcm9tR1hOb3JtYWxpemF0aW9uID0gZmFsc2U7Ci0jaWYg
KFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkpCisjaWYgKFBMQVRGT1JNKE1BQykgfHwgUExB
VEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkpCiAgICAgb3B0T3V0RnJvbUdYTm9y
bWFsaXphdGlvbiA9IENURm9udERlc2NyaXB0b3JJc1N5c3RlbVVJRm9udChmb250RGVzY3JpcHRv
cik7CiAjZW5kaWYKIApAQCAtMTYzOSw3ICsxNjM5LDcgQEAgUmVmPEZvbnQ+IEZvbnRDYWNoZTo6
bGFzdFJlc29ydEZhbGxiYWNrRgogICAgICAgICByZXR1cm4gKnJlc3VsdDsKIAogICAgIC8vIExh
c3RSZXNvcnQgaXMgZ3VhcmFudGVlZCB0byBiZSBub24tbnVsbC4KLSNpZiAoUExBVEZPUk0oSU9T
X0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKSB8
fCBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUMpIHx8IFBM
QVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGF1dG8gZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENU
Rm9udERlc2NyaXB0b3JDcmVhdGVMYXN0UmVzb3J0KCkpOwogICAgIGF1dG8gZm9udCA9IGFkb3B0
Q0YoQ1RGb250Q3JlYXRlV2l0aEZvbnREZXNjcmlwdG9yKGZvbnREZXNjcmlwdG9yLmdldCgpLCBm
b250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwgbnVsbHB0cikpOwogI2Vsc2UKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlv
bkNvY29hLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHAJKHJldmlzaW9uIDI1NDUxMCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29h
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBzdGF0aWMgaW5saW5lIE9wdGlv
bmFsPFN5c3RlbUZvbnRLaW5kPiBtCiAgICAgICAgIGtDVFVJRm9udFRleHRTdHlsZVNob3J0Rm9v
dG5vdGUsCiAgICAgICAgIGtDVFVJRm9udFRleHRTdHlsZVNob3J0Q2FwdGlvbjEsCiAgICAgICAg
IGtDVFVJRm9udFRleHRTdHlsZVRhbGxCb2R5LAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FU
QUxZU1QpCiAgICAgICAgIGtDVFVJRm9udFRleHRTdHlsZVRpdGxlMCwKICAgICAgICAga0NUVUlG
b250VGV4dFN0eWxlVGl0bGU0LAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9pb3MvRm9udENhY2hlSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9Gb250Q2FjaGVJT1MubW0JKHJldmlzaW9uIDI1NDUx
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9Gb250Q2FjaGVJT1Mu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTE1Niw3ICsxNTYsNyBAQCBSZXRhaW5QdHI8Q1RGb250UmVm
PiBwbGF0Zm9ybUZvbnRXaXRoRmFtCiAgICAgfQogCiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKGZhbWlseSwgImxhc3RyZXNvcnQiKSkgewotI2lmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZP
Uk0oTUFDQ0FUQUxZU1QpCiAgICAgICAgIHN0YXRpYyBjb25zdCBDVEZvbnREZXNjcmlwdG9yUmVm
IGxhc3RSZXNvcnQgPSBDVEZvbnREZXNjcmlwdG9yQ3JlYXRlTGFzdFJlc29ydCgpOwogICAgICAg
ICByZXR1cm4gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IobGFzdFJlc29y
dCwgc2l6ZSwgbnVsbHB0cikpOwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5jcHAJKHJldmlzaW9uIDI1NDUxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYs
NyArNTYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gCiAgICAg
UmV0YWluUHRyPENGRGF0YVJlZj4gYnVmZmVyRGF0YSA9IGJ1ZmZlci5jcmVhdGVDRkRhdGEoKTsK
IAogICAgIFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPiBmb250RGVzY3JpcHRvcjsKLSNp
ZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFU
Rk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGF1dG8gYXJyYXkgPSBhZG9w
dENGKENURm9udE1hbmFnZXJDcmVhdGVGb250RGVzY3JpcHRvcnNGcm9tRGF0YShidWZmZXJEYXRh
LmdldCgpKSk7CiAgICAgaWYgKCFhcnJheSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlk
ZXJQYXN0ZWJvYXJkLmgJKHJldmlzaW9uIDI1NDUxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDggKzI3LDYgQEAKIAogI2ltcG9ydCA8V2ViQ29yZS9BYnN0cmFjdFBhc3RlYm9hcmQuaD4KIAot
I2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAotCiBzdHJ1Y3Qg
Q0dTaXplOwogCiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXZWJQcmVmZXJyZWRQcmVzZW50
YXRpb25TdHlsZSkgewpAQCAtMTE0LDUgKzExMiw0IEBAIFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZh
Y2UgV2ViSXRlbVByb3ZpZGUKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECiAKLSNlbmRpZiAvLyBf
X0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKICNlbmRpZiAvLyBUQVJH
RVRfT1NfSVBIT05FCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0J
KHJldmlzaW9uIDI1NDUxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTQxLDcg
KzQxLDcgQEAgQGludGVyZmFjZSBOU1VSTCAoKQogLSAoQ0ZVUkxSZWYpX2NmdXJsOwogQGVuZAog
Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDE0MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKElPUykgfHwgUExB
VEZPUk0oTUFDQ0FUQUxZU1QpCiBAaW50ZXJmYWNlIE5TSFRUUENvb2tpZVN0b3JhZ2UgKFN0YWdp
bmcpCiAtICh2b2lkKV9nZXRDb29raWVzRm9yVVJMOihOU1VSTCAqKXVybCBtYWluRG9jdW1lbnRV
Ukw6KE5TVVJMICopbWFpbkRvY3VtZW50VVJMIHBhcnRpdGlvbjooTlNTdHJpbmcgKilwYXJ0aXRp
b24gcG9saWN5UHJvcGVydGllczooTlNEaWN0aW9uYXJ5Kilwcm9wcyBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikoTlNBcnJheSAqKSljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpX3NldENv
b2tpZXM6KE5TQXJyYXkgKiljb29raWVzIGZvclVSTDooTlNVUkwgKilVUkwgbWFpbkRvY3VtZW50
VVJMOihOU1VSTCAqKW1haW5Eb2N1bWVudFVSTCBwb2xpY3lQcm9wZXJ0aWVzOihOU0RpY3Rpb25h
cnkqKSBwcm9wczsKQEAgLTIwMCw3ICsyMDAsNyBAQCBzdGF0aWMgdm9pZCBkZWxldGVIVFRQQ29v
a2llKENGSFRUUENvb2tpCiAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZURlbGV0ZUNvb2tpZShjb29r
aWVTdG9yYWdlLCBbY29va2llIF9HZXRJbnRlcm5hbENGSFRUUENvb2tpZV0pOwogfQogCi0jaWYg
KFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0
MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMjAwMDApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0o
TUFDQ0FUQUxZU1QpCiBzdGF0aWMgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gcG9saWN5UHJvcGVy
dGllcyhjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgTlNVUkwgKnVybCkKIHsKICAg
ICBzdGF0aWMgTlNVUkwgKmVtcHR5VVJMID0gW1tOU1VSTCBhbGxvY10gaW5pdFdpdGhTdHJpbmc6
QCIiXTsKQEAgLTIxOSw3ICsyMTksNyBAQCBzdGF0aWMgTlNBcnJheSAqY29va2llc0ZvclVSTChO
U0hUVFBDb29rCiAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFsmY29va2llc1B0cl0gKE5T
QXJyYXkgKmNvb2tpZXMpIHsKICAgICAgICAgY29va2llc1B0ciA9IHJldGFpblB0cihjb29raWVz
KTsKICAgICB9OwotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKQorI2lmIChQTEFURk9STShNQUMpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShJ
T1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGlmIChbc3RvcmFnZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF9nZXRDb29raWVzRm9yVVJMOm1haW5Eb2N1bWVudFVSTDpwYXJ0
aXRpb246cG9saWN5UHJvcGVydGllczpjb21wbGV0aW9uSGFuZGxlcjopXSkKICAgICAgICAgW3N0
b3JhZ2UgX2dldENvb2tpZXNGb3JVUkw6dXJsIG1haW5Eb2N1bWVudFVSTDptYWluRG9jdW1lbnRV
UkwgcGFydGl0aW9uOnBhcnRpdGlvbiBwb2xpY3lQcm9wZXJ0aWVzOnNhbWVTaXRlSW5mbyA/IHBv
bGljeVByb3BlcnRpZXMoc2FtZVNpdGVJbmZvLnZhbHVlKCksIHVybCkuZ2V0KCkgOiBudWxscHRy
IGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKICAgICBlbHNlCkBAIC0yMzYs
NyArMjM2LDcgQEAgc3RhdGljIHZvaWQgc2V0SFRUUENvb2tpZXNGb3JVUkwoQ0ZIVFRQQwogewog
ICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vz
c1Jhd0Nvb2tpZXMpKTsKICAgICBpZiAoIWNvb2tpZVN0b3JhZ2UpIHsKLSNpZiAoUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBM
QVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEyMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlT
VCkKICAgICAgICAgaWYgKFtOU0hUVFBDb29raWVTdG9yYWdlIGluc3RhbmNlc1Jlc3BvbmRUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihfc2V0Q29va2llczpmb3JVUkw6bWFpbkRvY3VtZW50VVJMOnBvbGlj
eVByb3BlcnRpZXM6KV0pCiAgICAgICAgICAgICBbW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVk
SFRUUENvb2tpZVN0b3JhZ2VdIF9zZXRDb29raWVzOmNvb2tpZXMgZm9yVVJMOnVybCBtYWluRG9j
dW1lbnRVUkw6bWFpbkRvY3VtZW50VVJMIHBvbGljeVByb3BlcnRpZXM6cG9saWN5UHJvcGVydGll
cyhzYW1lU2l0ZUluZm8sIHVybCkuZ2V0KCldOwogICAgICAgICBlbHNlCkBAIC0yNDQsNyArMjQ0
LDcgQEAgc3RhdGljIHZvaWQgc2V0SFRUUENvb2tpZXNGb3JVUkwoQ0ZIVFRQQwogICAgICAgICAg
ICAgW1tOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXSBzZXRDb29r
aWVzOmNvb2tpZXMgZm9yVVJMOnVybCBtYWluRG9jdW1lbnRVUkw6bWFpbkRvY3VtZW50VVJMXTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkKKyNpZiAoUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkg
fHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBpZiAoW05TSFRU
UENvb2tpZVN0b3JhZ2UgaW5zdGFuY2VzUmVzcG9uZFRvU2VsZWN0b3I6QHNlbGVjdG9yKF9zZXRD
b29raWVzOmZvclVSTDptYWluRG9jdW1lbnRVUkw6cG9saWN5UHJvcGVydGllczopXSkgewogICAg
ICAgICAvLyBGSVhNRTogU3RvcCBjcmVhdGluZyBhIG5ldyBOU0hUVFBDb29raWVTdG9yYWdlIG9i
amVjdCBlYWNoIHRpbWUgd2Ugd2FudCB0byBxdWVyeSB0aGUgY29va2llIGphci4KICAgICAgICAg
Ly8gTmV0d29ya1N0b3JhZ2VTZXNzaW9uIGNvdWxkIGluc3RlYWQga2VlcCBhIE5TSFRUUENvb2tp
ZVN0b3JhZ2Ugb2JqZWN0IGZvciB1cy4KQEAgLTI1NCw3ICsyNTQsNyBAQCBzdGF0aWMgdm9pZCBz
ZXRIVFRQQ29va2llc0ZvclVSTChDRkhUVFBDCiAjZW5kaWYKICAgICAgICAgYXV0byBjZkNvb2tp
ZXMgPSBhZG9wdENGKFtOU0hUVFBDb29raWUgX25zMmNmQ29va2llczpjb29raWVzXSk7CiAgICAg
ICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVzKGNvb2tpZVN0b3JhZ2UsIGNmQ29va2ll
cy5nZXQoKSwgW3VybCBfY2Z1cmxdLCBbbWFpbkRvY3VtZW50VVJMIF9jZnVybF0pOwotI2lmIChQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAw
KSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTIwMDAwKQorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1B
Q0NBVEFMWVNUKQogICAgIH0KICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHNhbWVTaXRlSW5mbyk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCShyZXZp
c2lvbiAyNTQ1MTApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1Mu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTExNjMsMTMgKzExNjMsMTMgQEAgRm9udENhc2NhZGVEZXNj
cmlwdGlvbiYgUmVuZGVyVGhlbWVJT1M6OgogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGb250
Q2FzY2FkZURlc2NyaXB0aW9uPiBzaG9ydEZvb3Rub3RlRm9udDsKICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gc2hvcnRDYXB0aW9uMUZvbnQ7CiAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IHRhbGxCb2R5Rm9u
dDsKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiBQ
TEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiB0aXRsZTBGb250OwogI2VuZGlmCiAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IHRpdGxlMUZvbnQ7
CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IHRpdGxl
MkZvbnQ7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+
IHRpdGxlM0ZvbnQ7Ci0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEw
MDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gdGl0bGU0Rm9udDsKICNl
bmRpZgogCkBAIC0xMTk3LDcgKzExOTcsNyBAQCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBSZW5k
ZXJUaGVtZUlPUzo6CiAgICAgICAgIHJldHVybiBoZWFkbGluZUZvbnQ7CiAgICAgY2FzZSBDU1NW
YWx1ZUFwcGxlU3lzdGVtQm9keToKICAgICAgICAgcmV0dXJuIGJvZHlGb250OwotI2lmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRGT1JNKElPUykg
fHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtVGl0
bGUwOgogICAgICAgICByZXR1cm4gdGl0bGUwRm9udDsKICNlbmRpZgpAQCAtMTIwNyw3ICsxMjA3
LDcgQEAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgUmVuZGVyVGhlbWVJT1M6OgogICAgICAgICBy
ZXR1cm4gdGl0bGUyRm9udDsKICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1UaXRsZTM6CiAg
ICAgICAgIHJldHVybiB0aXRsZTNGb250OwotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZ
U1QpCiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtVGl0bGU0OgogICAgICAgICByZXR1cm4g
dGl0bGU0Rm9udDsKICNlbmRpZgpAQCAtMTI2Niw3ICsxMjY2LDcgQEAgdm9pZCBSZW5kZXJUaGVt
ZUlPUzo6dXBkYXRlQ2FjaGVkU3lzdGVtRgogICAgICAgICB0ZXh0U3R5bGUgPSBrQ1RVSUZvbnRU
ZXh0U3R5bGVCb2R5OwogICAgICAgICBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVz
Y3JpcHRvckNyZWF0ZVdpdGhUZXh0U3R5bGUodGV4dFN0eWxlLCBjb250ZW50U2l6ZUNhdGVnb3J5
KCksIG51bGxwdHIpKTsKICAgICAgICAgYnJlYWs7Ci0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUND
QVRBTFlTVCkKICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1UaXRsZTA6CiAgICAgICAgIHRl
eHRTdHlsZSA9IGtDVFVJRm9udFRleHRTdHlsZVRpdGxlMDsKICAgICAgICAgZm9udERlc2NyaXB0
b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoVGV4dFN0eWxlKHRleHRTdHls
ZSwgY29udGVudFNpemVDYXRlZ29yeSgpLCBudWxscHRyKSk7CkBAIC0xMjg0LDcgKzEyODQsNyBA
QCB2b2lkIFJlbmRlclRoZW1lSU9TOjp1cGRhdGVDYWNoZWRTeXN0ZW1GCiAgICAgICAgIHRleHRT
dHlsZSA9IGtDVFVJRm9udFRleHRTdHlsZVRpdGxlMzsKICAgICAgICAgZm9udERlc2NyaXB0b3Ig
PSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoVGV4dFN0eWxlKHRleHRTdHlsZSwg
Y29udGVudFNpemVDYXRlZ29yeSgpLCBudWxscHRyKSk7CiAgICAgICAgIGJyZWFrOwotI2lmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRGT1JNKElP
UykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVt
VGl0bGU0OgogICAgICAgICB0ZXh0U3R5bGUgPSBrQ1RVSUZvbnRUZXh0U3R5bGVUaXRsZTQ7CiAg
ICAgICAgIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0
aFRleHRTdHlsZSh0ZXh0U3R5bGUsIGNvbnRlbnRTaXplQ2F0ZWdvcnkoKSwgbnVsbHB0cikpOwpJ
bmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDUxMCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjAtMDEtMTQgIEpvbmF0aGFuIEJl
ZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBvbGQgaU9TIHZlcnNp
b24gbWFjcm9zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDYwOTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4NDkxNjc1PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0FjdGl2aXR5VHJhY2tlci5oOiBSZW1vdmUgaU9TIDEyIHZlcnNpb24gY2hlY2tzLgorICAg
ICAgICAqIFBsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaDogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9u
IGNoZWNrcy4KKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmg6
IFJlbW92ZSBpT1MgMTIgdmVyc2lvbiBjaGVja3MuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9BUElBdHRhY2htZW50Q29jb2EubW06IFJlbW92ZSBpT1MgMTIgdmVyc2lvbiBjaGVja3Mu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tOgorICAgICAgICAo
Y29udGVudE9mZnNldEJvdW5kZWRJblZhbGlkUmFuZ2UpOiBSZW1vdmUgaU9TIDExIHZlcnNpb24g
Y2hlY2tzLgorICAgICAgICAoLVtXS1dlYlZpZXcgYWN0aXZlVmlld0xheW91dFNpemU6XSk6IERp
dHRvLgorICAgICAgICAoLVtXS1dlYlZpZXcgc2FmZUFyZWFJbnNldHNEaWRDaGFuZ2VdKTogRGl0
dG8uCisgICAgICAgICgtW1dLV2ViVmlldyBfdXBkYXRlU2Nyb2xsVmlld0luc2V0QWRqdXN0bWVu
dEJlaGF2aW9yXSk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLm1tOgorICAgICAgICAoLVtXS0NoaWxkU2Nyb2xsVmll
dyBpbml0V2l0aEZyYW1lOl0pOiBSZW1vdmUgaU9TIDExIHZlcnNpb24gY2hlY2tzLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IGdlc3R1cmVSZWNvZ25pemVyOmNhbkJlUHJldmVudGVkQnlHZXN0dXJl
UmVjb2duaXplcjpdKTogUmVtb3ZlIGlPUyAxMiB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBnZXN0dXJlUmVjb2duaXplcjpzaG91bGRSZWNvZ25pemVTaW11bHRhbmVv
dXNseVdpdGhHZXN0dXJlUmVjb2duaXplcjpdKTogRGl0dG8uCisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX3Nob3dQbGF5YmFja1RhcmdldFBpY2tlcjpmcm9tUmVjdDpyb3V0ZVNoYXJpbmdQb2xp
Y3k6cm91dGluZ0NvbnRleHRVSUQ6XSk6IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3MuCisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgdW5vY2NsdWRlZFdpbmRvd0JvdW5kc0ZvckFjdGlvblNo
ZWV0QXNzaXN0YW50Ol0pOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLU2Nyb2xs
Vmlldy5oOiBSZW1vdmUgaU9TIDExIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV0tTY3JvbGxWaWV3Lm1tOgorICAgICAgICAoLVtXS1Njcm9sbFZpZXcgaW5pdFdpdGhG
cmFtZTpdKTogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL2Zvcm1zL1dLQWlyUGxheVJvdXRlUGlja2VyLmg6IFJlbW92ZSBpT1MgMTEgdmVyc2lv
biBjaGVja3MuCisKIDIwMjAtMDEtMTQgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBNZWRpYVN0cmVhbSBhdWRpbyB0cmFjayByZW5k
ZXJpbmcgaW4gR1BVUHJvY2VzcwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQWN0aXZpdHlUcmFja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQWN0aXZpdHlUcmFja2VyLmgJKHJldmlzaW9uIDI1NDUxMCkKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0FjdGl2aXR5VHJhY2tlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgVVNF
KEFQUExFX0lOVEVSTkFMX1NESykgJiYgKChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKSB8fCBQTEFURk9STShX
QVRDSE9TKSkKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKSAmJiAoKFBMQVRGT1JNKE1BQykg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JN
KElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpIHx8IFBMQVRGT1JNKFdBVENIT1MpKQogI2Rl
ZmluZSBIQVZFX05XX0FDVElWSVRZIDEKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAkocmV2aXNpb24gMjU0NTEwKQorKysgU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3NCw3
ICs0NzQsNyBAQCB0eXBlZGVmIGVudW0gewogQHByb3BlcnR5IChyZWFkb25seSkgTlNTdHJpbmcg
Kl9ob3N0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyOwogQGVuZAogCi0jaWYgX19JUEhPTkVf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQ
TEFURk9STShNQUNDQVRBTFlTVCkKIEBpbnRlcmZhY2UgTlNVUkwgKCkKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCBjb3B5LCBzZXR0ZXI9X3NldFRpdGxlOikgTlNTdHJpbmcgKl90aXRsZTsKIEBlbmQK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVs
dFZhbHVlcy5oCShyZXZpc2lvbiAyNTQ1MTApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
cmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjI2LDcgKzIyNiw3
IEBACiAjZGVmaW5lIERFRkFVTFRfUFJPQ0VTU19TV0FQX09OX0NST1NTX1NJVEVfTkFWSUdBVElP
Tl9FTkFCTEVEIGZhbHNlCiAjZW5kaWYKIAotI2lmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBf
X0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApIHx8IChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFU
Rk9STShXQVRDSE9TKQorI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKFdBVENI
T1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogI2RlZmluZSBERUZBVUxUX0NPTklDX0dSQURJ
RU5UX0VOQUJMRUQgdHJ1ZQogI2Vsc2UKICNkZWZpbmUgREVGQVVMVF9DT05JQ19HUkFESUVOVF9F
TkFCTEVEIGZhbHNlCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJ
QXR0YWNobWVudENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0JKHJldmlzaW9uIDI1NDUxMCkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0JKHdv
cmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKICNlbmRpZgogI2ltcG9ydCA8cGFsL3NwaS9j
b2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KIAotI2RlZmluZSBDQU5fU0VDVVJFTFlfQVJDSElW
RV9GSUxFX1dSQVBQRVIgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCisjZGVmaW5lIENBTl9TRUNVUkVMWV9B
UkNISVZFX0ZJTEVfV1JBUFBFUiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUND
QVRBTFlTVCkKIAogbmFtZXNwYWNlIEFQSSB7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCShyZXZpc2lvbiAyNTQ1MTApCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQkod29ya2luZyBj
b3B5KQpAQCAtNzA1LDcgKzcwNSw3IEBAIC0gKHZvaWQpX2RpZENvbW1pdExvYWRGb3JNYWluRnJh
bWUKIAogc3RhdGljIENHUG9pbnQgY29udGVudE9mZnNldEJvdW5kZWRJblZhbGlkUmFuZ2UoVUlT
Y3JvbGxWaWV3ICpzY3JvbGxWaWV3LCBDR1BvaW50IGNvbnRlbnRPZmZzZXQpCiB7Ci0jaWYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9T
KSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBVSUVkZ2VJbnNldHMgY29udGVudEluc2V0
cyA9IHNjcm9sbFZpZXcuYWRqdXN0ZWRDb250ZW50SW5zZXQ7CiAjZWxzZQogICAgIFVJRWRnZUlu
c2V0cyBjb250ZW50SW5zZXRzID0gc2Nyb2xsVmlldy5jb250ZW50SW5zZXQ7CkBAIC0xNzEyLDcg
KzE3MTIsNyBAQCAtIChXZWJDb3JlOjpGbG9hdFNpemUpYWN0aXZlVmlld0xheW91dFNpCiAgICAg
aWYgKF92aWV3TGF5b3V0U2l6ZU92ZXJyaWRlKQogICAgICAgICByZXR1cm4gV2ViQ29yZTo6Rmxv
YXRTaXplKF92aWV3TGF5b3V0U2l6ZU92ZXJyaWRlLnZhbHVlKCkpOwogCi0jaWYgX19JUEhPTkVf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQ
TEFURk9STShNQUNDQVRBTFlTVCkKICAgICByZXR1cm4gV2ViQ29yZTo6RmxvYXRTaXplKFVJRWRn
ZUluc2V0c0luc2V0UmVjdChDR1JlY3RNYWtlKDAsIDAsIGJvdW5kcy5zaXplLndpZHRoLCBib3Vu
ZHMuc2l6ZS5oZWlnaHQpLCBzZWxmLl9zY3JvbGxWaWV3U3lzdGVtQ29udGVudEluc2V0KS5zaXpl
KTsKICNlbHNlCiAgICAgcmV0dXJuIFdlYkNvcmU6OkZsb2F0U2l6ZSB7IGJvdW5kcy5zaXplIH07
CkBAIC0xNzkwLDcgKzE3OTAsNyBAQCAtIChCT09MKV9zY3JvbGxWaWV3SXNSdWJiZXJCYW5kaW5n
CiAgICAgcmV0dXJuICFwb2ludHNFcXVhbEluRGV2aWNlUGl4ZWxzKGNvbnRlbnRPZmZzZXQsIGJv
dW5kZWRPZmZzZXQsIGRldmljZVNjYWxlRmFjdG9yKTsKIH0KIAotI2lmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZP
Uk0oTUFDQ0FUQUxZU1QpCiAtICh2b2lkKXNhZmVBcmVhSW5zZXRzRGlkQ2hhbmdlCiB7CiAgICAg
W3N1cGVyIHNhZmVBcmVhSW5zZXRzRGlkQ2hhbmdlXTsKQEAgLTIzMTMsNyArMjMxMyw3IEBAIC0g
KFdLUGFzc3dvcmRWaWV3ICopX3Bhc3N3b3JkVmlldwogCiAtICh2b2lkKV91cGRhdGVTY3JvbGxW
aWV3SW5zZXRBZGp1c3RtZW50QmVoYXZpb3IKIHsKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NB
VEFMWVNUKQogICAgIGlmICghW19zY3JvbGxWaWV3IF9jb250ZW50SW5zZXRBZGp1c3RtZW50QmVo
YXZpb3JXYXNFeHRlcm5hbGx5T3ZlcnJpZGRlbl0pCiAgICAgICAgIFtfc2Nyb2xsVmlldyBfc2V0
Q29udGVudEluc2V0QWRqdXN0bWVudEJlaGF2aW9ySW50ZXJuYWw6c2VsZi5fc2FmZUFyZWFTaG91
bGRBZmZlY3RPYnNjdXJlZEluc2V0cyA/IFVJU2Nyb2xsVmlld0NvbnRlbnRJbnNldEFkanVzdG1l
bnRBbHdheXMgOiBVSVNjcm9sbFZpZXdDb250ZW50SW5zZXRBZGp1c3RtZW50TmV2ZXJdOwogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Jl
bW90ZUxheWVyVHJlZVZpZXdzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlVmlld3MubW0JKHJldmlzaW9u
IDI1NDUxMCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3Mv
UmVtb3RlTGF5ZXJUcmVlVmlld3MubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxMCw3ICszMTAsNyBA
QCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyCiAgICAgaWYgKCFzZWxm
KQogICAgICAgICByZXR1cm4gbmlsOwogCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlT
VCkKICAgICBzZWxmLmNvbnRlbnRJbnNldEFkanVzdG1lbnRCZWhhdmlvciA9IFVJU2Nyb2xsVmll
d0NvbnRlbnRJbnNldEFkanVzdG1lbnROZXZlcjsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0JKHJldmlzaW9uIDI1NDUxMCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTE5OTMsOSArMTk5Mywx
MCBAQCAtIChCT09MKWdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvCiAtIChCT09MKWdl
c3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvZ25pemVyICopcHJldmVudGVkR2VzdHVyZVJl
Y29nbml6ZXIgY2FuQmVQcmV2ZW50ZWRCeUdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNv
Z25pemVyICopcHJldmVudGluZ0dlc3R1cmVSZWNvZ25pemVyIHsKICAgICAvLyBEb24ndCBhbGxv
dyB0aGUgaGlnaGxpZ2h0IHRvIGJlIHByZXZlbnRlZCBieSBhIHNlbGVjdGlvbiBnZXN0dXJlLiBQ
cmVzcy1hbmQtaG9sZCBvbiBhIGxpbmsgc2hvdWxkIGhpZ2hsaWdodCB0aGUgbGluaywgbm90IHNl
bGVjdCBpdC4KICAgICBib29sIGlzRm9yY2VQcmVzc0dlc3R1cmUgPSBOTzsKLSNpZiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAKKyNpZiBQTEFURk9STShJT1MpIHx8
IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGlzRm9yY2VQcmVzc0dlc3R1cmUgPSAocHJldmVu
dGluZ0dlc3R1cmVSZWNvZ25pemVyID09IF90ZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQuZ2V0KCku
Zm9yY2VQcmVzc0dlc3R1cmUpOwogI2VuZGlmCisKICNpZiBQTEFURk9STShNQUNDQVRBTFlTVCkK
ICAgICBpZiAoKHByZXZlbnRpbmdHZXN0dXJlUmVjb2duaXplciA9PSBfdGV4dEludGVyYWN0aW9u
QXNzaXN0YW50LmdldCgpLmxvdXBlR2VzdHVyZSkgJiYgKHByZXZlbnRlZEdlc3R1cmVSZWNvZ25p
emVyID09IF9oaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciB8fCBwcmV2ZW50ZWRH
ZXN0dXJlUmVjb2duaXplciA9PSBfbG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgfHwgcHJldmVu
dGVkR2VzdHVyZVJlY29nbml6ZXIgPT0gX3RleHRJbnRlcmFjdGlvbkFzc2lzdGFudC5nZXQoKS5m
b3JjZVByZXNzR2VzdHVyZSkpCiAgICAgICAgIHJldHVybiBZRVM7CkBAIC0yMDMzLDggKzIwMzQs
NyBAQCAtIChCT09MKWdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvCiAgICAgICAgIHJl
dHVybiBZRVM7CiAjZW5kaWYKIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEyMDAwMAotI2lmIFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorI2lmIFBMQVRGT1JNKElPUykg
fHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgaWYgKGlzU2FtZVBhaXIoZ2VzdHVyZVJlY29n
bml6ZXIsIG90aGVyR2VzdHVyZVJlY29nbml6ZXIsIF90ZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQu
Z2V0KCkubG91cGVHZXN0dXJlLCBfdGV4dEludGVyYWN0aW9uQXNzaXN0YW50LmdldCgpLmZvcmNl
UHJlc3NHZXN0dXJlKSkKICAgICAgICAgcmV0dXJuIFlFUzsKIApAQCAtMjA0MywxMCArMjA0Mywx
MSBAQCAtIChCT09MKWdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvCiAKICAgICBpZiAo
KFtnZXN0dXJlUmVjb2duaXplciBpc0tpbmRPZkNsYXNzOltfVUlMb29rdXBHZXN0dXJlUmVjb2du
aXplciBjbGFzc11dICYmIFtvdGhlckdlc3R1cmVSZWNvZ25pemVyIGlzS2luZE9mQ2xhc3M6W1VJ
TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgY2xhc3NdXSkgfHwgKFtvdGhlckdlc3R1cmVSZWNv
Z25pemVyIGlzS2luZE9mQ2xhc3M6W1VJTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgY2xhc3Nd
XSAmJiBbZ2VzdHVyZVJlY29nbml6ZXIgaXNLaW5kT2ZDbGFzczpbX1VJTG9va3VwR2VzdHVyZVJl
Y29nbml6ZXIgY2xhc3NdXSkpCiAgICAgICAgIHJldHVybiBZRVM7Ci0jZW5kaWYKKwogICAgIGlm
IChpc1NhbWVQYWlyKGdlc3R1cmVSZWNvZ25pemVyLCBvdGhlckdlc3R1cmVSZWNvZ25pemVyLCBf
aGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCksIF90ZXh0SW50ZXJhY3Rp
b25Bc3Npc3RhbnQuZ2V0KCkuZm9yY2VQcmVzc0dlc3R1cmUpKQogICAgICAgICByZXR1cm4gWUVT
OwogI2VuZGlmCisKICAgICBpZiAoaXNTYW1lUGFpcihnZXN0dXJlUmVjb2duaXplciwgb3RoZXJH
ZXN0dXJlUmVjb2duaXplciwgX3NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpLCBfdGV4
dEludGVyYWN0aW9uQXNzaXN0YW50LmdldCgpLnNpbmdsZVRhcEdlc3R1cmUpKQogICAgICAgICBy
ZXR1cm4gWUVTOwogCkBAIC02NDI4LDcgKzY0MjksNyBAQCAtICh2b2lkKXVwZGF0ZVRleHRTdWdn
ZXN0aW9uc0ZvcklucHV0RGVsCiAtICh2b2lkKV9zaG93UGxheWJhY2tUYXJnZXRQaWNrZXI6KEJP
T0wpaGFzVmlkZW8gZnJvbVJlY3Q6KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKWVsZW1lbnRSZWN0
IHJvdXRlU2hhcmluZ1BvbGljeTooV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5KXJvdXRlU2hh
cmluZ1BvbGljeSByb3V0aW5nQ29udGV4dFVJRDooTlNTdHJpbmcgKilyb3V0aW5nQ29udGV4dFVJ
RAogewogI2lmIEVOQUJMRShBSVJQTEFZX1BJQ0tFUikKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMTAwMDAgJiYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9S
TShBUFBMRVRWKQorI2lmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikK
ICAgICBpZiAoIV9haXJQbGF5Um91dGVQaWNrZXIpCiAgICAgICAgIF9haXJQbGF5Um91dGVQaWNr
ZXIgPSBhZG9wdE5TKFtbV0tBaXJQbGF5Um91dGVQaWNrZXIgYWxsb2NdIGluaXRdKTsKICAgICBb
X2FpclBsYXlSb3V0ZVBpY2tlciBzaG93RnJvbVZpZXc6c2VsZiByb3V0ZVNoYXJpbmdQb2xpY3k6
cm91dGVTaGFyaW5nUG9saWN5IHJvdXRpbmdDb250ZXh0VUlEOnJvdXRpbmdDb250ZXh0VUlEIGhh
c1ZpZGVvOmhhc1ZpZGVvXTsKQEAgLTY2MjMsNyArNjYyNCw3IEBAIC0gKEJPT0wpYWN0aW9uU2hl
ZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2gKICAgICByZXR1cm4gTk87CiB9CiAKLSNpZiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiBQTEFURk9STShJT1MpIHx8
IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogLSAoQ0dSZWN0KXVub2NjbHVkZWRXaW5kb3dCb3VuZHNG
b3JBY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFu
dAogewogICAgIFVJRWRnZUluc2V0cyBjb250ZW50SW5zZXQgPSBbW193ZWJWaWV3IHNjcm9sbFZp
ZXddIGFkanVzdGVkQ29udGVudEluc2V0XTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS1Njcm9sbFZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tTY3JvbGxWaWV3LmgJKHJldmlzaW9uIDI1NDUxMCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcs
NyBAQAogLSAodm9pZClfc2V0U2Nyb2xsRW5hYmxlZEludGVybmFsOihCT09MKWVuYWJsZWQ7CiAt
ICh2b2lkKV9zZXRab29tRW5hYmxlZEludGVybmFsOihCT09MKWVuYWJsZWQ7CiAKLSNpZiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiBQTEFURk9STShJT1Mp
IHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbiwg
cmVhZG9ubHkpIEJPT0wgX2NvbnRlbnRJbnNldEFkanVzdG1lbnRCZWhhdmlvcldhc0V4dGVybmFs
bHlPdmVycmlkZGVuOwogLSAodm9pZClfc2V0Q29udGVudEluc2V0QWRqdXN0bWVudEJlaGF2aW9y
SW50ZXJuYWw6KFVJU2Nyb2xsVmlld0NvbnRlbnRJbnNldEFkanVzdG1lbnRCZWhhdmlvcilpbnNl
dEFkanVzdG1lbnRCZWhhdmlvcjsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLU2Nyb2xsVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tTY3JvbGxWaWV3Lm1tCShyZXZpc2lvbiAyNTQ1MTApCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tTY3JvbGxWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcs
NyArMTI3LDcgQEAgLSAoaWQpZm9yd2FyZGluZ1RhcmdldEZvclNlbGVjdG9yOihTRUwpYQogICAg
IFdlYWtPYmpDUHRyPGlkIDxVSVNjcm9sbFZpZXdEZWxlZ2F0ZT4+IF9leHRlcm5hbERlbGVnYXRl
OwogICAgIFdLU2Nyb2xsVmlld0RlbGVnYXRlRm9yd2FyZGVyICpfZGVsZWdhdGVGb3J3YXJkZXI7
CiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiBQ
TEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIEJPT0wgX2NvbnRlbnRJ
bnNldEFkanVzdG1lbnRCZWhhdmlvcldhc0V4dGVybmFsbHlPdmVycmlkZGVuOwogI2VuZGlmCiAg
ICAgQ0dGbG9hdCBfa2V5Ym9hcmRCb3R0b21JbnNldEFkanVzdG1lbnQ7CkBAIC0xNTMsNyArMTUz
LDcgQEAgLSAoaWQpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lCiAgICAgc2VsZi5kaXJlY3Rp
b25hbExvY2tFbmFibGVkID0gWUVTOwogICAgIFtzZWxmIF9zZXRJbmRpY2F0b3JJbnNldEFkanVz
dG1lbnRCZWhhdmlvcjpVSVNjcm9sbFZpZXdJbmRpY2F0b3JJbnNldEFkanVzdG1lbnRBbHdheXNd
OwogCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYg
UExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBfY29udGVudEluc2V0
QWRqdXN0bWVudEJlaGF2aW9yV2FzRXh0ZXJuYWxseU92ZXJyaWRkZW4gPSAoc2VsZi5jb250ZW50
SW5zZXRBZGp1c3RtZW50QmVoYXZpb3IgIT0gVUlTY3JvbGxWaWV3Q29udGVudEluc2V0QWRqdXN0
bWVudEF1dG9tYXRpYyk7CiAjZW5kaWYKICAgICAKQEAgLTI3OCw3ICsyNzgsNyBAQCAtICh2b2lk
KXNldENvbnRlbnRJbnNldDooVUlFZGdlSW5zZXRzKWNvCiAgICAgW19pbnRlcm5hbERlbGVnYXRl
IF9zY2hlZHVsZVZpc2libGVDb250ZW50UmVjdFVwZGF0ZV07CiB9CiAKLSNpZiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiBQTEFURk9STShJT1MpIHx8IFBM
QVRGT1JNKE1BQ0NBVEFMWVNUKQogCiAtIChCT09MKV9jb250ZW50SW5zZXRBZGp1c3RtZW50QmVo
YXZpb3JXYXNFeHRlcm5hbGx5T3ZlcnJpZGRlbgogewpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLQWlyUGxheVJvdXRlUGlja2VyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLQWlyUGxheVJvdXRlUGlja2VyLmgJKHJl
dmlzaW9uIDI1NDUxMCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Fp
clBsYXlSb3V0ZVBpY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoQUlSUExBWV9QSUNLRVIpCiAKLSNpZiBf
X0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAgJiYgIVBMQVRGT1JNKFdB
VENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQorI2lmICFQTEFURk9STShXQVRDSE9TKSAmJiAh
UExBVEZPUk0oQVBQTEVUVikKIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDUxMCkKKysrIFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE2IEBACisyMDIwLTAxLTE0ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4K
KworICAgICAgICBSZW1vdmUgb2xkIGlPUyB2ZXJzaW9uIG1hY3JvcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MDk2CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81ODQ5MTY3NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbTogUmVtb3ZlIGlP
UyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2
YXRlLmg6IERpdHRvLgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbTogRGl0dG8uCisgICAg
ICAgICogV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oOiBEaXR0by4KKwogMjAyMC0wMS0xNCAgQW50
dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRp
b25dIFN1cHBvcnQgdGhlIGZlYXR1cmUgZmxhZyBpbiBEdW1wUmVuZGVyVHJlZQpJbmRleDogU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5tbQkocmV2aXNpb24gMjU0NTEwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00
MTgsNyArNDE4LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcgog
ICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KIAotI2lmIChQ
TEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMTAwMDApIHx8IFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JN
KE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAKIC8vIEZJWE1FOiBSZW1vdmUgYm90aCB0
aGlzIHN0dWIgYW5kIHRoZSByZWFsIHZlcnNpb24gb2YgdGhpcyBmdW5jdGlvbiBiZWxvdyBvbmNl
IHdlIGRvbid0IG5lZWQgdGhlIHJlYWwgdmVyc2lvbiBvbiBhbnkgc3VwcG9ydGVkIHBsYXRmb3Jt
LgogLy8gVGhpcyBzdHViIGlzIG5vdCB1c2VkIG91dHNpZGUgV2ViS2l0LCBidXQgaXQncyBoZXJl
IHNvIHdlIHdvbid0IGdldCBhIGxpbmtlciBlcnJvci4KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmgJKHJldmlz
aW9uIDI1NDUxMCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVUlEZWxl
Z2F0ZVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQAogI2VuZGlmCiAj
ZW5kaWYKIAotI2lmIFRBUkdFVF9PU19JUEhPTkUgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgVEFSR0VUX09TX0lQSE9ORQogQHByb3RvY29sIFVJRHJv
cFNlc3Npb247CiAjZW5kaWYKIApAQCAtMjk5LDcgKzI5OSw2IEBAIEBpbnRlcmZhY2UgTlNPYmpl
Y3QgKFdlYlVJRGVsZWdhdGVQcml2YXQKIAogLSAoQk9PTCl3ZWJWaWV3Q2FuQ2hlY2tHZW9sb2Nh
dGlvbkF1dGhvcml6YXRpb25TdGF0dXM6KFdlYlZpZXcgKilzZW5kZXI7CiAKLSNpZiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKIC8qIQogIEBtZXRob2Qgd2ViVmll
dzpkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yU2Vzc2lvbjoKICBAcGFyYW0gc2VuZGVyIFRo
ZSBXZWJWaWV3IHNlbmRpbmcgdGhlIGRlbGVnYXRlIG1ldGhvZApAQCAtMzA4LDcgKzMwNyw2IEBA
IEBpbnRlcmZhY2UgTlNPYmplY3QgKFdlYlVJRGVsZWdhdGVQcml2YXQKICAqLwogLSAoV2ViRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uTWFza0ZvclNlc3Npb246KGlkIDxVSURyb3BTZXNzaW9uPilzZXNzaW9uOwogI2Vu
ZGlmCi0jZW5kaWYKIAogLSAoTlNEYXRhICopd2ViQ3J5cHRvTWFzdGVyS2V5Rm9yV2ViVmlldzoo
V2ViVmlldyAqKXNlbmRlcjsKIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMjU0NTEwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTY2LDcgKzE5NjYsNyBA
QCAtICh2b2lkKV9kaWRDb25jbHVkZUVkaXREcmFnCiAgICAgfQogfQogCi0jZWxpZiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNlbGlmIFBMQVRGT1JNKElPUykg
fHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAKIC0gKEJPT0wpX3JlcXVlc3RTdGFydERhdGFJbnRl
cmFjdGlvbjooQ0dQb2ludCljbGllbnRQb3NpdGlvbiBnbG9iYWxQb3NpdGlvbjooQ0dQb2ludCln
bG9iYWxQb3NpdGlvbgogewpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJWaWV3UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlld1ByaXZhdGUuaAkocmV2aXNpb24gMjU0NTEwKQorKysgU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTcsNyArMTE3LDcgQEAgZXh0ZXJuIE5TU3RyaW5nICpXZWJRdWlja0xvb2tGaWxlTmFtZUtleQog
ZXh0ZXJuIE5TU3RyaW5nICpXZWJRdWlja0xvb2tVVElLZXk7CiAjZW5kaWYKIAotI2lmIFRBUkdF
VF9PU19JUEhPTkUgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAw
CisjaWYgVEFSR0VUX09TX0lQSE9ORQogQHByb3RvY29sIFVJRHJvcFNlc3Npb247CiAjZW5kaWYK
IApAQCAtNDc5LDcgKzQ3OSw2IEBAIENvdWxkIGJlIHdvcnRoIGFkZGluZyB0byB0aGUgQVBJLgog
CiAtICh2b2lkKV9yZXBsYWNlQ3VycmVudEhpc3RvcnlJdGVtOihXZWJIaXN0b3J5SXRlbSAqKWl0
ZW07CiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKIC0g
KEJPT0wpX3JlcXVlc3RTdGFydERhdGFJbnRlcmFjdGlvbjooQ0dQb2ludCljbGllbnRQb3NpdGlv
biBnbG9iYWxQb3NpdGlvbjooQ0dQb2ludClnbG9iYWxQb3NpdGlvbjsKIC0gKFdlYlVJVGV4dElu
ZGljYXRvckRhdGEgKilfZ2V0RGF0YUludGVyYWN0aW9uRGF0YTsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSwgc3Ryb25nLCBnZXR0ZXI9X2RhdGFPcGVyYXRpb25UZXh0SW5kaWNhdG9y
KSBXZWJVSVRleHRJbmRpY2F0b3JEYXRhICpkYXRhT3BlcmF0aW9uVGV4dEluZGljYXRvcjsKQEAg
LTQ5NSw3ICs0OTQsNiBAQCBDb3VsZCBiZSB3b3J0aCBhZGRpbmcgdG8gdGhlIEFQSS4KIC0gKHZv
aWQpX2VuZGVkRGF0YUludGVyYWN0aW9uOihDR1BvaW50KWNsaWVudFBvc2l0aW9uIGdsb2JhbDoo
Q0dQb2ludClnbG9iYWxQb3NpdGlvbjsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
LCBnZXR0ZXI9X2RhdGFJbnRlcmFjdGlvbkNhcmV0UmVjdCkgQ0dSZWN0IGRhdGFJbnRlcmFjdGlv
bkNhcmV0UmVjdDsKLSNlbmRpZgogCiAvLyBEZXByZWNhdGVkLiBVc2UgLVtXZWJEYXRhU291cmNl
IF9xdWlja0xvb2tDb250ZW50XSBpbnN0ZWFkLgogLSAoTlNEaWN0aW9uYXJ5ICopcXVpY2tMb29r
Q29udGVudEZvclVSTDooTlNVUkwgKil1cmw7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTQ1MTApCisrKyBUb29scy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0wMS0xNCAgSm9uYXRo
YW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIG9sZCBpT1Mg
dmVyc2lvbiBtYWNyb3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNjA5NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTg0OTE2NzU+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmtUZXN0Lm1tOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3MuCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2
aWdhdGlvbi5tbTogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tOiBEaXR0by4K
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSFRUUENvb2tpZVN0
b3JlLm1tOiBSZW1vdmUgaU9TIDEyIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5tbToKKyAgICAgICAgKC1bVGVzdFJ1
bm5lcldLV2ViVmlldyBzZXRPdmVycmlkZVNhZmVBcmVhSW5zZXRzOl0pOiBSZW1vdmUgaU9TIDEx
IHZlcnNpb24gY2hlY2tzLgorCiAyMDIwLTAxLTE0ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFw
cGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gU3VwcG9ydCB0aGUgZmVhdHVy
ZSBmbGFnIGluIER1bXBSZW5kZXJUcmVlCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvaW1hZ2VfZGlmZi5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvaW1hZ2VfZGlmZi5weQkocmV2aXNpb24gMjU0NTEwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L2ltYWdlX2RpZmYucHkJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDcgQEAg
Y2xhc3MgSW1hZ2VEaWZmZXIob2JqZWN0KToKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9wcm9j
ZXNzOgogICAgICAgICAgICAgICAgIHNlbGYuX3N0YXJ0KHRvbGVyYW5jZSkKICAgICAgICAgICAg
ICMgTm90ZSB0aGF0IGFsdGhvdWdoIHdlIGFyZSBoYW5kZWQgJ29sZCcsICduZXcnLCBJbWFnZURp
ZmYgd2FudHMgJ25ldycsICdvbGQnLgorICAgICAgICAgICAgcHJpbnQoJyAgICBDb21wYXJpbmcg
e30gdnMge30nLmZvcm10KGxlbihhY3R1YWxfY29udGVudHMpLCBsZW4oZXhwZWN0ZWRfY29udGVu
dHMpKSkKICAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3Mud3JpdGUoJ0NvbnRlbnQtTGVuZ3RoOiB7
fVxuJy5mb3JtYXQobGVuKGFjdHVhbF9jb250ZW50cykpKQogICAgICAgICAgICAgc2VsZi5fcHJv
Y2Vzcy53cml0ZShhY3R1YWxfY29udGVudHMpCiAgICAgICAgICAgICBzZWxmLl9wcm9jZXNzLndy
aXRlKCdDb250ZW50LUxlbmd0aDoge31cbicuZm9ybWF0KGxlbihleHBlY3RlZF9jb250ZW50cykp
KQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0FWRm91bmRh
dGlvblNvZnRMaW5rVGVzdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmtUZXN0Lm1tCShyZXZpc2lvbiAy
NTQ1MTApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvQVZGb3Vu
ZGF0aW9uU29mdExpbmtUZXN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsMTIgKzE0MSwxMiBA
QCBURVNUKEFWRm91bmRhdGlvblNvZnRMaW5rLCBDb25zdGFudHMpCiAgICAgaWYgKFBBTDo6Y2Fu
TG9hZF9BVkZvdW5kYXRpb25fQVZTYW1wbGVSYXRlS2V5KCkpCiAgICAgICAgIEVYUEVDVF9UUlVF
KFtBVlNhbXBsZVJhdGVLZXkgaXNFcXVhbFRvU3RyaW5nOkAiQVZTYW1wbGVSYXRlS2V5Il0pOwog
Ci0jaWYgUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApIHx8IFBMQVRGT1JNKFdBVENIT1MpIHx8IFBMQVRG
T1JNKEFQUExFVFYpCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpIHx8IFBMQVRG
T1JNKFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQUExFVFYpCiAgICAgRVhQRUNUX1RSVUUoUEFMOjpj
YW5Mb2FkX0FWRm91bmRhdGlvbl9BVlVSTEFzc2V0T3V0T2ZCYW5kTUlNRVR5cGVLZXkoKSk7CiAg
ICAgRVhQRUNUX1RSVUUoW0FWVVJMQXNzZXRPdXRPZkJhbmRNSU1FVHlwZUtleSBpc0VxdWFsVG9T
dHJpbmc6QCJBVlVSTEFzc2V0T3V0T2ZCYW5kTUlNRVR5cGVLZXkiXSk7CiAjZW5kaWYKIAotI2lm
IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAx
NDAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMjAwMDApIHx8IFBMQVRGT1JNKFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQUExFVFYpCisj
aWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDE0MDApIHx8IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oV0FUQ0hPUykgfHwgUExBVEZPUk0o
QVBQTEVUVikKICAgICBFWFBFQ1RfVFJVRShQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWVVJM
QXNzZXRVc2VDbGllbnRVUkxMb2FkaW5nRXhjbHVzaXZlbHkoKSk7CiAgICAgRVhQRUNUX1RSVUUo
W0FWVVJMQXNzZXRVc2VDbGllbnRVUkxMb2FkaW5nRXhjbHVzaXZlbHkgaXNFcXVhbFRvU3RyaW5n
OkAiQVZVUkxBc3NldFVzZUNsaWVudFVSTExvYWRpbmdFeGNsdXNpdmVseSJdKTsKICNlbmRpZgpJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9u
TmF2aWdhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCShyZXZpc2lvbiAyNTQ1MTApCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZp
Z2F0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MzkyLDcgKzYzOTIsNyBAQCBURVNUKFByb2Nl
c3NTd2FwLCBQYWdlT3ZlcmxheUxheWVyUGVyc2lzCiAjZW5kaWYKIH0KIAotI2lmIFBMQVRGT1JN
KElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYg
UExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKIAogVEVTVChQcm9jZXNzU3dh
cCwgUXVpY2tMb29rUmVxdWVzdHNQYXNzd29yZEFmdGVyU3dhcCkKIHsKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1l
bnRUZXN0cy5tbQkocmV2aXNpb24gMjU0NTEwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjks
NyArNjksNyBAQCAtIChfV0tBdHRhY2htZW50ICopX2F0dGFjaG1lbnRXaXRoTmFtZTooCiB9CiBA
ZW5kCiAKLSNkZWZpbmUgVVNFU19NT0RFUk5fQVRUUklCVVRFRF9TVFJJTkdfQ09OVkVSU0lPTiAo
KFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDExMDAwMCkgfHwgUExBVEZPUk0oTUFDKSkKKyNkZWZpbmUgVVNFU19NT0RFUk5fQVRUUklC
VVRFRF9TVFJJTkdfQ09OVkVSU0lPTiAoUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUMpIHx8
IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKSkKIAogQGludGVyZmFjZSBBdHRhY2htZW50VXBkYXRlT2Jz
ZXJ2ZXIgOiBOU09iamVjdCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4KIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgTlNBcnJheSAqaW5zZXJ0ZWQ7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tIVFRQQ29va2llU3RvcmUu
bW0JKHJldmlzaW9uIDI1NDUxMCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0Nyw3ICszNDcs
NyBAQCBURVNUKFdlYktpdCwgV0tIVFRQQ29va2llU3RvcmVIdHRwT25seSkgCiAgICAgW2Nvb2tp
ZXMgcmVsZWFzZV07CiB9CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkKKyNpZiAoUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExB
VEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKIFRFU1QoV2ViS2l0LCBXS0hUVFBD
b29raWVTdG9yZUNyZWF0aW9uVGltZSkgCiB7ICAgCiAgICAgYXV0byBkYXRhU3RvcmUgPSBbV0tX
ZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdOwpAQCAtNDAxLDcgKzQwMSw3IEBAIFRF
U1QoV2ViS2l0LCBXS0hUVFBDb29raWVTdG9yZUNyZWF0aW9uVGkKICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmdvdEZsYWcpOwogICAgIGdvdEZsYWcgPSBmYWxzZTsKIH0KLSNlbmRpZiAv
LyAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
MTQwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEyMDAwMCkKKyNlbmRpZiAvLyAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQ
TEFURk9STShNQUNDQVRBTFlTVCkKIAogLy8gRklYTUU6IFRoaXMgI2lmIHNob3VsZCBiZSByZW1v
dmVkIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzM1MzQ0MjAyPiBpcyByZXNvbHZlZCBhbmQgYm90cyBh
cmUgdXBkYXRlZC4KICNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhf
QUxMT1dFRCA8PSAxMDEzMDEKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVz
dFJ1bm5lcldLV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVy
L2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcubW0JKHJldmlzaW9uIDI1NDUxMCkKKysrIFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5tbQkod29ya2luZyBj
b3B5KQpAQCAtNDI1LDcgKzQyNSw3IEBAIC0gKHZvaWQpYWNjZXNzaWJpbGl0eVJldHJpZXZlU3Bl
YWtTZWxlY3QKIC0gKHZvaWQpc2V0T3ZlcnJpZGVTYWZlQXJlYUluc2V0czooVUlFZGdlSW5zZXRz
KWluc2V0cwogewogICAgIF9vdmVycmlkZVNhZmVBcmVhSW5zZXRzID0gaW5zZXRzOwotI2lmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRGT1JNKElP
UykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgW3NlbGYgX3VwZGF0ZVNhZmVBcmVhSW5z
ZXRzXTsKICNlbmRpZgogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387670</attachid>
            <date>2020-01-14 10:04:55 -0800</date>
            <delta_ts>2020-01-14 10:51:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206096-20200114100454.patch</filename>
            <type>text/plain</type>
            <size>47749</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNTQ1MTApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAxLTE0ICBKb25hdGhhbiBCZWRhcmQgIDxq
YmVkYXJkQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgb2xkIGlPUyB2ZXJzaW9uIG1hY3Jv
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MDk2
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODQ5MTY3NT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9GZWF0dXJlRGVmaW5lcy5oOiBSZW1v
dmUgaU9TIDEyIHZlcnNpb24gbWFjcm8uCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6IERpdHRv
LgorCiAyMDIwLTAxLTE0ICBBbGljaWEgQm95YSBHYXJjw61hICA8YWJveWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbV1RGXSBNYWtlIE1lZGlhVGltZSBjb25zdHJ1Y3RvciBjb25zdGV4cHIKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvRmVhdHVyZURlZmluZXMuaAkocmV2aXNpb24gMjU0NTEwKQorKysgU291cmNlL1dU
Ri93dGYvRmVhdHVyZURlZmluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTgyLDcgKzE4Miw3IEBA
IHRoZSBwdWJsaWMgaU9TIFNESy4gU2VlIDxodHRwczovL3dlYmtpdC4KICNlbmRpZgogCiAjaWYg
IWRlZmluZWQoRU5BQkxFX1dLUERGVklFVykKLSNpZiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBM
QVRGT1JNKEFQUExFVFYpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkgJiYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwCisjaWYgUExBVEZPUk0oSU9TKQogI2RlZmlu
ZSBFTkFCTEVfV0tQREZWSUVXIDEKICNlbmRpZgogI2VuZGlmCkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHJl
dmlzaW9uIDI1NDUxMCkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTg3Nyw3ICs4NzcsNyBAQAogI2RlZmluZSBIQVZFX0FVVEhPUklaQVRJT05fU1RBVFVT
X0ZPUl9NRURJQV9UWVBFIDEKICNlbmRpZgogCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgKF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NQVhfQUxMT1dFRCA+PSAxMDE0MDQpKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
QVhfQUxMT1dFRCA+PSAxMjAyMDApIHx8IFBMQVRGT1JNKFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQ
UExFVFYpCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxNDAwICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMDE0
MDQpKSB8fCBQTEFURk9STShXQVRDSE9TKSB8fCBQTEFURk9STShBUFBMRVRWKQogI2RlZmluZSBI
QVZFX0NGTkVUV09SS19PVkVSUklERV9TRVNTSU9OX0NPT0tJRV9BQ0NFUFRfUE9MSUNZIDEKICNl
bmRpZgogCkBAIC05NTMsNyArOTUzLDcgQEAKICNkZWZpbmUgSEFWRV9ST1VURV9TSEFSSU5HX1BP
TElDWV9MT05HX0ZPUk1fVklERU8gMQogI2VuZGlmCiAKLSNpZiAoUExBVEZPUk0oSU9TKSAmJiBf
X0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAgJiYgIVBMQVRGT1JNKElP
U19TSU1VTEFUT1IpKQorI2lmIChQTEFURk9STShJT1MpICYmICFQTEFURk9STShJT1NfU0lNVUxB
VE9SKSkKICNkZWZpbmUgSEFWRV9ERVZJQ0VfTUFOQUdFTUVOVCAxCiAjZW5kaWYKIApAQCAtOTY5
LDcgKzk2OSw3IEBACiAjZGVmaW5lIEhBVkVfQVZQTEFZRVJfUkVTT1VSQ0VfQ09OU0VSVkFUSU9O
X0xFVkVMIDEKICNlbmRpZgogCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkgfHwgUExBVEZPUk0oV0FUQ0hPUykg
fHwgUExBVEZPUk0oQVBQTEVUVikKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9S
TShXQVRDSE9TKSB8fCBQTEFURk9STShBUFBMRVRWKQogI2RlZmluZSBIQVZFX0NPUkVURVhUX0FV
VE9fT1BUSUNBTF9TSVpJTkcgMQogI2VuZGlmCiAKQEAgLTEwMDEsNyArMTAwMSw3IEBACiAjZGVm
aW5lIEhBVkVfU1VCVklFV1NfSVZBUl9ERUNMQVJFRF9CWV9TREsgMQogI2VuZGlmCiAKLSNpZiBQ
TEFURk9STShNQUMpIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApIHx8IFBMQVRGT1JNKFdBVENIT1MpIHx8IFBMQVRG
T1JNKEFQUExFVFYpCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQog
I2RlZmluZSBVU0VfUExBVEZPUk1fU1lTVEVNX0ZBTExCQUNLX0xJU1QgMQogI2VuZGlmCiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDUxMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDIwLTAxLTE0ICBKb25hdGhhbiBC
ZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgb2xkIGlPUyB2ZXJz
aW9uIG1hY3JvcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA2MDk2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODQ5MTY3NT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuCisKKyAg
ICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbTogUmVtb3ZlIGlP
UyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBwYWdlL1NldHRpbmdzRGVmYXVsdFZhbHVl
cy5oOiBSZW1vdmUgaU9TIDEyIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6OnBh
aW50KTogUmVtb3ZlIGlPUyAxMiB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9QYXRoQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6cGxhdGZvcm1B
ZGRQYXRoRm9yUm91bmRlZFJlY3QpOiBSZW1vdmUgaU9TIDEyIHZlcnNpb24gY2hlY2tzLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnZhcmlhdGlvbkNhcGFiaWxpdGllc0ZvckZvbnREZXNjcmlwdG9yKTog
UmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNo
ZTo6bGFzdFJlc29ydEZhbGxiYWNrRm9udCk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Om1hdGNoU3lzdGVtRm9udFVzZSk6IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVjay4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvRm9udENhY2hlSU9TLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6cGxhdGZvcm1Gb250V2l0aEZhbWlseVNwZWNpYWxDYXNlKTogUmVtb3ZlIGlPUyAxMSB2
ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKTogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oOiBSZW1vdmUgaU9TIDExIHZlcnNp
b24gY2hlY2tzLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpjb29raWVzRm9yVVJMKTogUmVt
b3ZlIGlPUyAxMiB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKFdlYkNvcmU6OnNldEhUVFBDb29r
aWVzRm9yVVJMKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1t
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OmNhY2hlZFN5c3RlbUZvbnREZXNj
cmlwdGlvbiBjb25zdCk6IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3MuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6dXBkYXRlQ2FjaGVkU3lzdGVtRm9udERlc2NyaXB0aW9u
IGNvbnN0KTogRGl0dG8uCisKIDIwMjAtMDEtMTQgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFu
ZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIFVucmV2aWV3ZWQgYnVpbGQgd2Fy
bmluZyBmaXggYWZ0ZXIgcjI1NDUwMwpJbmRleDogU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
NTQ1MTApCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMjAtMDEtMTQgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBw
bGUuY29tPgorCisgICAgICAgIFJlbW92ZSBvbGQgaU9TIHZlcnNpb24gbWFjcm9zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYwOTYKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzU4NDkxNjc1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaDogUmVtb3ZlIGlP
UyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQ
SS5oOiBSZW1vdmUgaU9TIDEyIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAqIHBhbC9zcGkvY29j
b2EvTlNLZXllZEFyY2hpdmVyU1BJLmg6IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3MuCisg
ICAgICAgICogcGFsL3NwaS9pb3MvTWVkaWFQbGF5ZXJTUEkuaDogUmVtb3ZlIGlPUyAxMSBhbmQg
MTIgdmVyc2lvbiBjaGVja3MuCisKIDIwMjAtMDEtMDkgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2Fy
bHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgRG9uJ3Qgc29mdGxpbmsgQVZDYXB0dXJlIGNsYXNz
ZXMgb24gd2F0Y2hPUyBvciB0dk9TCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9j
Zi9DRk5ldHdvcmtTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9jZi9DRk5ldHdvcmtTUEkuaAkocmV2aXNpb24gMjU0NTEwKQorKysgU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMyw3ICsy
MTMsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBOU1VSTFNlc3Npb25DCiBAcHJvcGVy
dHkgKG51bGxhYmxlLCByZWFkd3JpdGUsIHJldGFpbikgTlNVUkwgKl9zaXRlRm9yQ29va2llczsK
IEBwcm9wZXJ0eSAocmVhZHdyaXRlKSBCT09MIF9pc1RvcExldmVsTmF2aWdhdGlvbjsKICNlbmRp
ZgotI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKKyNpZiBQTEFURk9STShNQUMpIHx8
IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiBAcHJvcGVydHkgKG5vbmF0
b21pYywgYXNzaWduKSBCT09MIF9wcmVjb25uZWN0OwogI2VuZGlmCiBAZW5kCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaAkocmV2aXNp
b24gMjU0NTEwKQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNz
U1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIENHQ29udGV4dFNl
dFN0eWxlKENHQ29udGV4dFJlZiwgQ0dTCiAKIHZvaWQgQ0dDb250ZXh0RHJhd0NvbmljR3JhZGll
bnQoQ0dDb250ZXh0UmVmLCBDR0dyYWRpZW50UmVmLCBDR1BvaW50IGNlbnRlciwgQ0dGbG9hdCBh
bmdsZSk7CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9T
KSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKIHZvaWQgQ0dQYXRoQWRkVW5ldmVuQ29ybmVyc1Jv
dW5kZWRSZWN0KENHTXV0YWJsZVBhdGhSZWYsIGNvbnN0IENHQWZmaW5lVHJhbnNmb3JtICosIENH
UmVjdCwgY29uc3QgQ0dTaXplIGNvcm5lcnNbNF0pOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5o
CShyZXZpc2lvbiAyNTQ1MTApCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9O
U0tleWVkQXJjaGl2ZXJTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2lt
cG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAotI2Rl
ZmluZSBVU0VfU0VDVVJFX0FSQ0hJVkVSX0FQSSAoUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0o
SU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMjAw
KSB8fCBQTEFURk9STShXQVRDSE9TKSB8fCBQTEFURk9STShBUFBMRVRWKSkKKyNkZWZpbmUgVVNF
X1NFQ1VSRV9BUkNISVZFUl9BUEkgKFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlM
WSkpCiAKICNkZWZpbmUgVVNFX1NFQ1VSRV9BUkNISVZFUl9GT1JfQVRUUklCVVRFRF9TVFJJTkcg
KFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEzMDAwMCkgfHwgUExBVEZPUk0oV0FUQ0hPUykgfHwgUExB
VEZPUk0oQVBQTEVUVikpCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2lvcy9N
ZWRpYVBsYXllclNQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3Bp
L2lvcy9NZWRpYVBsYXllclNQSS5oCShyZXZpc2lvbiAyNTQ1MTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL3NwaS9pb3MvTWVkaWFQbGF5ZXJTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMzQs
MTEgKzM0LDExIEBACiAKICNpbXBvcnQgPE1lZGlhUGxheWVyL01QQVZSb3V0aW5nQ29udHJvbGxl
ci5oPgogCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwCisj
aWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICNpbXBvcnQgPE1lZGlh
UGxheWVyL01QTWVkaWFDb250cm9sc0NvbmZpZ3VyYXRpb24uaD4KICNlbmRpZgogCi0jaWYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwICYmICFQTEFURk9STShXQVRD
SE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikKKyNpZiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBM
QVRGT1JNKEFQUExFVFYpCiAjaW1wb3J0IDxNZWRpYVBsYXllci9NUE1lZGlhQ29udHJvbHNWaWV3
Q29udHJvbGxlci5oPgogI2Vsc2UKICNpbXBvcnQgPE1lZGlhUGxheWVyL01QQVZSb3V0aW5nU2hl
ZXQuaD4KQEAgLTY0LDcgKzY0LDcgQEAgdHlwZWRlZiBOU0ludGVnZXIgTVBSb3V0ZURpc2NvdmVy
eU1vZGU7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBNUFJvdXRlRGlzY292ZXJ5TW9k
ZSBkaXNjb3ZlcnlNb2RlOwogQGVuZAogCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTEwMDAwICYmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQTEVU
VikKKyNpZiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCiAKIEBpbnRl
cmZhY2UgTVBNZWRpYUNvbnRyb2xzVmlld0NvbnRyb2xsZXIgOiBVSVZpZXdDb250cm9sbGVyCiBA
cHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgbnVsbGFibGUpIHZvaWQgKF5kaWREaXNtaXNzSGFu
ZGxlcikodm9pZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRl
bnRSZWFkZXJDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQkocmV2aXNpb24gMjU0NTEwKQorKysgU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTczLDcgKzczLDcgQEAKICNpbmNsdWRlICJMb2NhbERlZmF1bHRTeXN0ZW1BcHBl
YXJhbmNlLmgiCiAjZW5kaWYKIAotI2lmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApIHx8IFBMQVRGT1JNKE1BQykKKyNp
ZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1Qp
CiBAaW50ZXJmYWNlIE5TQXR0cmlidXRlZFN0cmluZyAoKQogLSAoTlNTdHJpbmcgKilfaHRtbERv
Y3VtZW50RnJhZ21lbnRTdHJpbmc6KE5TUmFuZ2UpcmFuZ2UgZG9jdW1lbnRBdHRyaWJ1dGVzOihO
U0RpY3Rpb25hcnkgKilkaWN0IHN1YnJlc291cmNlczooTlNBcnJheSAqKilzdWJyZXNvdXJjZXM7
CiBAZW5kCkBAIC04Myw3ICs4Myw3IEBAIFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhXZWJL
aXRMZWdhY3kKIFNPRlRfTElOS19GUkFNRVdPUktfSU5fVU1CUkVMTEEoV2ViS2l0LCBXZWJLaXRM
ZWdhY3kpCiAjZW5kaWYKIAotI2lmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMCkKKyNpZiBQTEFURk9STShXQVRDSE9TKSB8
fCBQTEFURk9STShUVk9TKQogU09GVF9MSU5LKFdlYktpdExlZ2FjeSwgX1dlYkNyZWF0ZUZyYWdt
ZW50LCB2b2lkLCAoV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBOU0F0dHJpYnV0ZWRTdHJp
bmcgKnN0cmluZywgV2ViQ29yZTo6RnJhZ21lbnRBbmRSZXNvdXJjZXMmIHJlc3VsdCksIChkb2N1
bWVudCwgc3RyaW5nLCByZXN1bHQpKQogI2VuZGlmCiAKQEAgLTk2LDcgKzk2LDcgQEAgc3RhdGlj
IEZyYWdtZW50QW5kUmVzb3VyY2VzIGNyZWF0ZUZyYWdtZQogICAgIHJldHVybiB7IH07CiB9CiAK
LSNlbGlmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMTAwMDApIHx8IFBMQVRGT1JNKE1BQykKKyNlbGlmIFBMQVRGT1JNKElPUykg
fHwgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKIAogc3RhdGljIE5TRGlj
dGlvbmFyeSAqYXR0cmlidXRlc0ZvckF0dHJpYnV0ZWRTdHJpbmdDb252ZXJzaW9uKCkKIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NEZWZhdWx0VmFsdWVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0RlZmF1bHRWYWx1ZXMuaAkocmV2aXNp
b24gMjU0NTEwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0RlZmF1bHRWYWx1ZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBjb25zdCBib29sIGRl
ZmF1bHRNZWRpYUVuYWJsZWQgPSAKIHN0YXRpYyBjb25zdCBib29sIGRlZmF1bHRNZWRpYUVuYWJs
ZWQgPSBmYWxzZTsKICNlbmRpZgogICAgIAotI2lmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBf
X0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApIHx8IChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFU
Rk9STShXQVRDSE9TKQorI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKFdBVENI
T1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogc3RhdGljIGNvbnN0IGJvb2wgZGVmYXVsdENv
bmljR3JhZGllbnQgPSB0cnVlOwogI2Vsc2UKIHN0YXRpYyBjb25zdCBib29sIGRlZmF1bHRDb25p
Y0dyYWRpZW50ID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFkaWVudENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9HcmFkaWVudENHLmNwcAkocmV2aXNpb24gMjU0NTEwKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIEdyYWRpZW50OjpwYWludChDR0NvbnRleHRSZWYg
cGxhdGZvCiAgICAgICAgICAgICAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShwbGF0Zm9ybUNv
bnRleHQpOwogICAgICAgICB9LAogICAgICAgICBbJl0gKGNvbnN0IENvbmljRGF0YSYgZGF0YSkg
ewotI2lmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMjAwMDApIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShXQVRDSE9TKQorI2lmIFBMQVRG
T1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKFdBVENIT1MpCiAgICAgICAgICAgICBDR0NvbnRl
eHRTYXZlR1N0YXRlKHBsYXRmb3JtQ29udGV4dCk7CiAgICAgICAgICAgICBDR0NvbnRleHRUcmFu
c2xhdGVDVE0ocGxhdGZvcm1Db250ZXh0LCBkYXRhLnBvaW50MC54KCksIGRhdGEucG9pbnQwLnko
KSk7CiAgICAgICAgICAgICBDR0NvbnRleHRSb3RhdGVDVE0ocGxhdGZvcm1Db250ZXh0LCAoQ0dG
bG9hdCktTV9QSV8yKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BhdGhDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUGF0aENHLmNwcAkocmV2aXNpb24gMjU0NTEwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE0LDcgKzMx
NCw3IEBAIHZvaWQgUGF0aDo6cGxhdGZvcm1BZGRQYXRoRm9yUm91bmRlZFJlY3QKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKQorI2lmIChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFU
Rk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIENHUmVjdCByZWN0VG9EcmF3
ID0gcmVjdDsKICAgICAKICAgICBlbnVtIENvcm5lcnMgewpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVU
ZXh0LmNwcAkocmV2aXNpb24gMjU0NTEwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3
ICszOSw3IEBACiAjaW5jbHVkZSA8d3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oPgogI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCi0jZGVmaW5lIEhBU19DT1JFX1RFWFRfV0lEVEhf
QVRUUklCVVRFIChQTEFURk9STShNQUMpIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApKQorI2RlZmluZSBIQVNfQ09S
RV9URVhUX1dJRFRIX0FUVFJJQlVURSAoUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpIHx8
IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKSkKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDY0
LDcgKzEwNjQsNyBAQCBzdGF0aWMgVmFyaWF0aW9uQ2FwYWJpbGl0aWVzIHZhcmlhdGlvbkNhCiAg
ICAgfQogCiAgICAgYm9vbCBvcHRPdXRGcm9tR1hOb3JtYWxpemF0aW9uID0gZmFsc2U7Ci0jaWYg
KFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkpCisjaWYgKFBMQVRGT1JNKE1BQykgfHwgUExB
VEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkpCiAgICAgb3B0T3V0RnJvbUdYTm9y
bWFsaXphdGlvbiA9IENURm9udERlc2NyaXB0b3JJc1N5c3RlbVVJRm9udChmb250RGVzY3JpcHRv
cik7CiAjZW5kaWYKIApAQCAtMTYzOSw3ICsxNjM5LDcgQEAgUmVmPEZvbnQ+IEZvbnRDYWNoZTo6
bGFzdFJlc29ydEZhbGxiYWNrRgogICAgICAgICByZXR1cm4gKnJlc3VsdDsKIAogICAgIC8vIExh
c3RSZXNvcnQgaXMgZ3VhcmFudGVlZCB0byBiZSBub24tbnVsbC4KLSNpZiAoUExBVEZPUk0oSU9T
X0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKSB8
fCBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUMpIHx8IFBM
QVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGF1dG8gZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENU
Rm9udERlc2NyaXB0b3JDcmVhdGVMYXN0UmVzb3J0KCkpOwogICAgIGF1dG8gZm9udCA9IGFkb3B0
Q0YoQ1RGb250Q3JlYXRlV2l0aEZvbnREZXNjcmlwdG9yKGZvbnREZXNjcmlwdG9yLmdldCgpLCBm
b250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwgbnVsbHB0cikpOwogI2Vsc2UKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlv
bkNvY29hLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHAJKHJldmlzaW9uIDI1NDUxMCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29h
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBzdGF0aWMgaW5saW5lIE9wdGlv
bmFsPFN5c3RlbUZvbnRLaW5kPiBtCiAgICAgICAgIGtDVFVJRm9udFRleHRTdHlsZVNob3J0Rm9v
dG5vdGUsCiAgICAgICAgIGtDVFVJRm9udFRleHRTdHlsZVNob3J0Q2FwdGlvbjEsCiAgICAgICAg
IGtDVFVJRm9udFRleHRTdHlsZVRhbGxCb2R5LAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FU
QUxZU1QpCiAgICAgICAgIGtDVFVJRm9udFRleHRTdHlsZVRpdGxlMCwKICAgICAgICAga0NUVUlG
b250VGV4dFN0eWxlVGl0bGU0LAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9pb3MvRm9udENhY2hlSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9Gb250Q2FjaGVJT1MubW0JKHJldmlzaW9uIDI1NDUx
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9Gb250Q2FjaGVJT1Mu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTE1Niw3ICsxNTYsNyBAQCBSZXRhaW5QdHI8Q1RGb250UmVm
PiBwbGF0Zm9ybUZvbnRXaXRoRmFtCiAgICAgfQogCiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKGZhbWlseSwgImxhc3RyZXNvcnQiKSkgewotI2lmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZP
Uk0oTUFDQ0FUQUxZU1QpCiAgICAgICAgIHN0YXRpYyBjb25zdCBDVEZvbnREZXNjcmlwdG9yUmVm
IGxhc3RSZXNvcnQgPSBDVEZvbnREZXNjcmlwdG9yQ3JlYXRlTGFzdFJlc29ydCgpOwogICAgICAg
ICByZXR1cm4gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IobGFzdFJlc29y
dCwgc2l6ZSwgbnVsbHB0cikpOwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5jcHAJKHJldmlzaW9uIDI1NDUxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYs
NyArNTYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gCiAgICAg
UmV0YWluUHRyPENGRGF0YVJlZj4gYnVmZmVyRGF0YSA9IGJ1ZmZlci5jcmVhdGVDRkRhdGEoKTsK
IAogICAgIFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPiBmb250RGVzY3JpcHRvcjsKLSNp
ZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFU
Rk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGF1dG8gYXJyYXkgPSBhZG9w
dENGKENURm9udE1hbmFnZXJDcmVhdGVGb250RGVzY3JpcHRvcnNGcm9tRGF0YShidWZmZXJEYXRh
LmdldCgpKSk7CiAgICAgaWYgKCFhcnJheSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlk
ZXJQYXN0ZWJvYXJkLmgJKHJldmlzaW9uIDI1NDUxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDggKzI3LDYgQEAKIAogI2ltcG9ydCA8V2ViQ29yZS9BYnN0cmFjdFBhc3RlYm9hcmQuaD4KIAot
I2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAotCiBzdHJ1Y3Qg
Q0dTaXplOwogCiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXZWJQcmVmZXJyZWRQcmVzZW50
YXRpb25TdHlsZSkgewpAQCAtMTE0LDUgKzExMiw0IEBAIFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZh
Y2UgV2ViSXRlbVByb3ZpZGUKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECiAKLSNlbmRpZiAvLyBf
X0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKICNlbmRpZiAvLyBUQVJH
RVRfT1NfSVBIT05FCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0J
KHJldmlzaW9uIDI1NDUxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTQxLDcg
KzQxLDcgQEAgQGludGVyZmFjZSBOU1VSTCAoKQogLSAoQ0ZVUkxSZWYpX2NmdXJsOwogQGVuZAog
Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDE0MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKElPUykgfHwgUExB
VEZPUk0oTUFDQ0FUQUxZU1QpCiBAaW50ZXJmYWNlIE5TSFRUUENvb2tpZVN0b3JhZ2UgKFN0YWdp
bmcpCiAtICh2b2lkKV9nZXRDb29raWVzRm9yVVJMOihOU1VSTCAqKXVybCBtYWluRG9jdW1lbnRV
Ukw6KE5TVVJMICopbWFpbkRvY3VtZW50VVJMIHBhcnRpdGlvbjooTlNTdHJpbmcgKilwYXJ0aXRp
b24gcG9saWN5UHJvcGVydGllczooTlNEaWN0aW9uYXJ5Kilwcm9wcyBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikoTlNBcnJheSAqKSljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpX3NldENv
b2tpZXM6KE5TQXJyYXkgKiljb29raWVzIGZvclVSTDooTlNVUkwgKilVUkwgbWFpbkRvY3VtZW50
VVJMOihOU1VSTCAqKW1haW5Eb2N1bWVudFVSTCBwb2xpY3lQcm9wZXJ0aWVzOihOU0RpY3Rpb25h
cnkqKSBwcm9wczsKQEAgLTIwMCw3ICsyMDAsNyBAQCBzdGF0aWMgdm9pZCBkZWxldGVIVFRQQ29v
a2llKENGSFRUUENvb2tpCiAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZURlbGV0ZUNvb2tpZShjb29r
aWVTdG9yYWdlLCBbY29va2llIF9HZXRJbnRlcm5hbENGSFRUUENvb2tpZV0pOwogfQogCi0jaWYg
KFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0
MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMjAwMDApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0o
TUFDQ0FUQUxZU1QpCiBzdGF0aWMgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gcG9saWN5UHJvcGVy
dGllcyhjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgTlNVUkwgKnVybCkKIHsKICAg
ICBzdGF0aWMgTlNVUkwgKmVtcHR5VVJMID0gW1tOU1VSTCBhbGxvY10gaW5pdFdpdGhTdHJpbmc6
QCIiXTsKQEAgLTIxOSw3ICsyMTksNyBAQCBzdGF0aWMgTlNBcnJheSAqY29va2llc0ZvclVSTChO
U0hUVFBDb29rCiAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFsmY29va2llc1B0cl0gKE5T
QXJyYXkgKmNvb2tpZXMpIHsKICAgICAgICAgY29va2llc1B0ciA9IHJldGFpblB0cihjb29raWVz
KTsKICAgICB9OwotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKQorI2lmIChQTEFURk9STShNQUMpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShJ
T1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGlmIChbc3RvcmFnZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF9nZXRDb29raWVzRm9yVVJMOm1haW5Eb2N1bWVudFVSTDpwYXJ0
aXRpb246cG9saWN5UHJvcGVydGllczpjb21wbGV0aW9uSGFuZGxlcjopXSkKICAgICAgICAgW3N0
b3JhZ2UgX2dldENvb2tpZXNGb3JVUkw6dXJsIG1haW5Eb2N1bWVudFVSTDptYWluRG9jdW1lbnRV
UkwgcGFydGl0aW9uOnBhcnRpdGlvbiBwb2xpY3lQcm9wZXJ0aWVzOnNhbWVTaXRlSW5mbyA/IHBv
bGljeVByb3BlcnRpZXMoc2FtZVNpdGVJbmZvLnZhbHVlKCksIHVybCkuZ2V0KCkgOiBudWxscHRy
IGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKICAgICBlbHNlCkBAIC0yMzYs
NyArMjM2LDcgQEAgc3RhdGljIHZvaWQgc2V0SFRUUENvb2tpZXNGb3JVUkwoQ0ZIVFRQQwogewog
ICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vz
c1Jhd0Nvb2tpZXMpKTsKICAgICBpZiAoIWNvb2tpZVN0b3JhZ2UpIHsKLSNpZiAoUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBM
QVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEyMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlT
VCkKICAgICAgICAgaWYgKFtOU0hUVFBDb29raWVTdG9yYWdlIGluc3RhbmNlc1Jlc3BvbmRUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihfc2V0Q29va2llczpmb3JVUkw6bWFpbkRvY3VtZW50VVJMOnBvbGlj
eVByb3BlcnRpZXM6KV0pCiAgICAgICAgICAgICBbW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVk
SFRUUENvb2tpZVN0b3JhZ2VdIF9zZXRDb29raWVzOmNvb2tpZXMgZm9yVVJMOnVybCBtYWluRG9j
dW1lbnRVUkw6bWFpbkRvY3VtZW50VVJMIHBvbGljeVByb3BlcnRpZXM6cG9saWN5UHJvcGVydGll
cyhzYW1lU2l0ZUluZm8sIHVybCkuZ2V0KCldOwogICAgICAgICBlbHNlCkBAIC0yNDQsNyArMjQ0
LDcgQEAgc3RhdGljIHZvaWQgc2V0SFRUUENvb2tpZXNGb3JVUkwoQ0ZIVFRQQwogICAgICAgICAg
ICAgW1tOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXSBzZXRDb29r
aWVzOmNvb2tpZXMgZm9yVVJMOnVybCBtYWluRG9jdW1lbnRVUkw6bWFpbkRvY3VtZW50VVJMXTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkKKyNpZiAoUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkg
fHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBpZiAoW05TSFRU
UENvb2tpZVN0b3JhZ2UgaW5zdGFuY2VzUmVzcG9uZFRvU2VsZWN0b3I6QHNlbGVjdG9yKF9zZXRD
b29raWVzOmZvclVSTDptYWluRG9jdW1lbnRVUkw6cG9saWN5UHJvcGVydGllczopXSkgewogICAg
ICAgICAvLyBGSVhNRTogU3RvcCBjcmVhdGluZyBhIG5ldyBOU0hUVFBDb29raWVTdG9yYWdlIG9i
amVjdCBlYWNoIHRpbWUgd2Ugd2FudCB0byBxdWVyeSB0aGUgY29va2llIGphci4KICAgICAgICAg
Ly8gTmV0d29ya1N0b3JhZ2VTZXNzaW9uIGNvdWxkIGluc3RlYWQga2VlcCBhIE5TSFRUUENvb2tp
ZVN0b3JhZ2Ugb2JqZWN0IGZvciB1cy4KQEAgLTI1NCw3ICsyNTQsNyBAQCBzdGF0aWMgdm9pZCBz
ZXRIVFRQQ29va2llc0ZvclVSTChDRkhUVFBDCiAjZW5kaWYKICAgICAgICAgYXV0byBjZkNvb2tp
ZXMgPSBhZG9wdENGKFtOU0hUVFBDb29raWUgX25zMmNmQ29va2llczpjb29raWVzXSk7CiAgICAg
ICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVzKGNvb2tpZVN0b3JhZ2UsIGNmQ29va2ll
cy5nZXQoKSwgW3VybCBfY2Z1cmxdLCBbbWFpbkRvY3VtZW50VVJMIF9jZnVybF0pOwotI2lmIChQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAw
KSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTIwMDAwKQorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1B
Q0NBVEFMWVNUKQogICAgIH0KICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHNhbWVTaXRlSW5mbyk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCShyZXZp
c2lvbiAyNTQ1MTApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1Mu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTExNjMsMTMgKzExNjMsMTMgQEAgRm9udENhc2NhZGVEZXNj
cmlwdGlvbiYgUmVuZGVyVGhlbWVJT1M6OgogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGb250
Q2FzY2FkZURlc2NyaXB0aW9uPiBzaG9ydEZvb3Rub3RlRm9udDsKICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gc2hvcnRDYXB0aW9uMUZvbnQ7CiAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IHRhbGxCb2R5Rm9u
dDsKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiBQ
TEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiB0aXRsZTBGb250OwogI2VuZGlmCiAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IHRpdGxlMUZvbnQ7
CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IHRpdGxl
MkZvbnQ7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+
IHRpdGxlM0ZvbnQ7Ci0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEw
MDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gdGl0bGU0Rm9udDsKICNl
bmRpZgogCkBAIC0xMTk3LDcgKzExOTcsNyBAQCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBSZW5k
ZXJUaGVtZUlPUzo6CiAgICAgICAgIHJldHVybiBoZWFkbGluZUZvbnQ7CiAgICAgY2FzZSBDU1NW
YWx1ZUFwcGxlU3lzdGVtQm9keToKICAgICAgICAgcmV0dXJuIGJvZHlGb250OwotI2lmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRGT1JNKElPUykg
fHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtVGl0
bGUwOgogICAgICAgICByZXR1cm4gdGl0bGUwRm9udDsKICNlbmRpZgpAQCAtMTIwNyw3ICsxMjA3
LDcgQEAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgUmVuZGVyVGhlbWVJT1M6OgogICAgICAgICBy
ZXR1cm4gdGl0bGUyRm9udDsKICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1UaXRsZTM6CiAg
ICAgICAgIHJldHVybiB0aXRsZTNGb250OwotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZ
U1QpCiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtVGl0bGU0OgogICAgICAgICByZXR1cm4g
dGl0bGU0Rm9udDsKICNlbmRpZgpAQCAtMTI2Niw3ICsxMjY2LDcgQEAgdm9pZCBSZW5kZXJUaGVt
ZUlPUzo6dXBkYXRlQ2FjaGVkU3lzdGVtRgogICAgICAgICB0ZXh0U3R5bGUgPSBrQ1RVSUZvbnRU
ZXh0U3R5bGVCb2R5OwogICAgICAgICBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVz
Y3JpcHRvckNyZWF0ZVdpdGhUZXh0U3R5bGUodGV4dFN0eWxlLCBjb250ZW50U2l6ZUNhdGVnb3J5
KCksIG51bGxwdHIpKTsKICAgICAgICAgYnJlYWs7Ci0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUND
QVRBTFlTVCkKICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1UaXRsZTA6CiAgICAgICAgIHRl
eHRTdHlsZSA9IGtDVFVJRm9udFRleHRTdHlsZVRpdGxlMDsKICAgICAgICAgZm9udERlc2NyaXB0
b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoVGV4dFN0eWxlKHRleHRTdHls
ZSwgY29udGVudFNpemVDYXRlZ29yeSgpLCBudWxscHRyKSk7CkBAIC0xMjg0LDcgKzEyODQsNyBA
QCB2b2lkIFJlbmRlclRoZW1lSU9TOjp1cGRhdGVDYWNoZWRTeXN0ZW1GCiAgICAgICAgIHRleHRT
dHlsZSA9IGtDVFVJRm9udFRleHRTdHlsZVRpdGxlMzsKICAgICAgICAgZm9udERlc2NyaXB0b3Ig
PSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoVGV4dFN0eWxlKHRleHRTdHlsZSwg
Y29udGVudFNpemVDYXRlZ29yeSgpLCBudWxscHRyKSk7CiAgICAgICAgIGJyZWFrOwotI2lmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRGT1JNKElP
UykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVt
VGl0bGU0OgogICAgICAgICB0ZXh0U3R5bGUgPSBrQ1RVSUZvbnRUZXh0U3R5bGVUaXRsZTQ7CiAg
ICAgICAgIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0
aFRleHRTdHlsZSh0ZXh0U3R5bGUsIGNvbnRlbnRTaXplQ2F0ZWdvcnkoKSwgbnVsbHB0cikpOwpJ
bmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDUxMCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjAtMDEtMTQgIEpvbmF0aGFuIEJl
ZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBvbGQgaU9TIHZlcnNp
b24gbWFjcm9zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDYwOTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4NDkxNjc1PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0FjdGl2aXR5VHJhY2tlci5oOiBSZW1vdmUgaU9TIDEyIHZlcnNpb24gY2hlY2tzLgorICAg
ICAgICAqIFBsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaDogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9u
IGNoZWNrcy4KKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmg6
IFJlbW92ZSBpT1MgMTIgdmVyc2lvbiBjaGVja3MuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9BUElBdHRhY2htZW50Q29jb2EubW06IFJlbW92ZSBpT1MgMTIgdmVyc2lvbiBjaGVja3Mu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tOgorICAgICAgICAo
Y29udGVudE9mZnNldEJvdW5kZWRJblZhbGlkUmFuZ2UpOiBSZW1vdmUgaU9TIDExIHZlcnNpb24g
Y2hlY2tzLgorICAgICAgICAoLVtXS1dlYlZpZXcgYWN0aXZlVmlld0xheW91dFNpemU6XSk6IERp
dHRvLgorICAgICAgICAoLVtXS1dlYlZpZXcgc2FmZUFyZWFJbnNldHNEaWRDaGFuZ2VdKTogRGl0
dG8uCisgICAgICAgICgtW1dLV2ViVmlldyBfdXBkYXRlU2Nyb2xsVmlld0luc2V0QWRqdXN0bWVu
dEJlaGF2aW9yXSk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLm1tOgorICAgICAgICAoLVtXS0NoaWxkU2Nyb2xsVmll
dyBpbml0V2l0aEZyYW1lOl0pOiBSZW1vdmUgaU9TIDExIHZlcnNpb24gY2hlY2tzLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IGdlc3R1cmVSZWNvZ25pemVyOmNhbkJlUHJldmVudGVkQnlHZXN0dXJl
UmVjb2duaXplcjpdKTogUmVtb3ZlIGlPUyAxMiB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBnZXN0dXJlUmVjb2duaXplcjpzaG91bGRSZWNvZ25pemVTaW11bHRhbmVv
dXNseVdpdGhHZXN0dXJlUmVjb2duaXplcjpdKTogRGl0dG8uCisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX3Nob3dQbGF5YmFja1RhcmdldFBpY2tlcjpmcm9tUmVjdDpyb3V0ZVNoYXJpbmdQb2xp
Y3k6cm91dGluZ0NvbnRleHRVSUQ6XSk6IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3MuCisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgdW5vY2NsdWRlZFdpbmRvd0JvdW5kc0ZvckFjdGlvblNo
ZWV0QXNzaXN0YW50Ol0pOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLU2Nyb2xs
Vmlldy5oOiBSZW1vdmUgaU9TIDExIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV0tTY3JvbGxWaWV3Lm1tOgorICAgICAgICAoLVtXS1Njcm9sbFZpZXcgaW5pdFdpdGhG
cmFtZTpdKTogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL2Zvcm1zL1dLQWlyUGxheVJvdXRlUGlja2VyLmg6IFJlbW92ZSBpT1MgMTEgdmVyc2lv
biBjaGVja3MuCisKIDIwMjAtMDEtMTQgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBNZWRpYVN0cmVhbSBhdWRpbyB0cmFjayByZW5k
ZXJpbmcgaW4gR1BVUHJvY2VzcwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQWN0aXZpdHlUcmFja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQWN0aXZpdHlUcmFja2VyLmgJKHJldmlzaW9uIDI1NDUxMCkKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0FjdGl2aXR5VHJhY2tlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgVVNF
KEFQUExFX0lOVEVSTkFMX1NESykgJiYgKChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKSB8fCBQTEFURk9STShX
QVRDSE9TKSkKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKSAmJiAoKFBMQVRGT1JNKE1BQykg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JN
KElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpIHx8IFBMQVRGT1JNKFdBVENIT1MpKQogI2Rl
ZmluZSBIQVZFX05XX0FDVElWSVRZIDEKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAkocmV2aXNpb24gMjU0NTEwKQorKysgU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3NCw3
ICs0NzQsNyBAQCB0eXBlZGVmIGVudW0gewogQHByb3BlcnR5IChyZWFkb25seSkgTlNTdHJpbmcg
Kl9ob3N0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyOwogQGVuZAogCi0jaWYgX19JUEhPTkVf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQ
TEFURk9STShNQUNDQVRBTFlTVCkKIEBpbnRlcmZhY2UgTlNVUkwgKCkKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCBjb3B5LCBzZXR0ZXI9X3NldFRpdGxlOikgTlNTdHJpbmcgKl90aXRsZTsKIEBlbmQK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVs
dFZhbHVlcy5oCShyZXZpc2lvbiAyNTQ1MTApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
cmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjI2LDcgKzIyNiw3
IEBACiAjZGVmaW5lIERFRkFVTFRfUFJPQ0VTU19TV0FQX09OX0NST1NTX1NJVEVfTkFWSUdBVElP
Tl9FTkFCTEVEIGZhbHNlCiAjZW5kaWYKIAotI2lmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBf
X0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApIHx8IChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFU
Rk9STShXQVRDSE9TKQorI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKFdBVENI
T1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogI2RlZmluZSBERUZBVUxUX0NPTklDX0dSQURJ
RU5UX0VOQUJMRUQgdHJ1ZQogI2Vsc2UKICNkZWZpbmUgREVGQVVMVF9DT05JQ19HUkFESUVOVF9F
TkFCTEVEIGZhbHNlCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJ
QXR0YWNobWVudENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0JKHJldmlzaW9uIDI1NDUxMCkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0JKHdv
cmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKICNlbmRpZgogI2ltcG9ydCA8cGFsL3NwaS9j
b2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KIAotI2RlZmluZSBDQU5fU0VDVVJFTFlfQVJDSElW
RV9GSUxFX1dSQVBQRVIgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCisjZGVmaW5lIENBTl9TRUNVUkVMWV9B
UkNISVZFX0ZJTEVfV1JBUFBFUiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUND
QVRBTFlTVCkKIAogbmFtZXNwYWNlIEFQSSB7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCShyZXZpc2lvbiAyNTQ1MTApCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQkod29ya2luZyBj
b3B5KQpAQCAtNzA1LDcgKzcwNSw3IEBAIC0gKHZvaWQpX2RpZENvbW1pdExvYWRGb3JNYWluRnJh
bWUKIAogc3RhdGljIENHUG9pbnQgY29udGVudE9mZnNldEJvdW5kZWRJblZhbGlkUmFuZ2UoVUlT
Y3JvbGxWaWV3ICpzY3JvbGxWaWV3LCBDR1BvaW50IGNvbnRlbnRPZmZzZXQpCiB7Ci0jaWYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9T
KSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBVSUVkZ2VJbnNldHMgY29udGVudEluc2V0
cyA9IHNjcm9sbFZpZXcuYWRqdXN0ZWRDb250ZW50SW5zZXQ7CiAjZWxzZQogICAgIFVJRWRnZUlu
c2V0cyBjb250ZW50SW5zZXRzID0gc2Nyb2xsVmlldy5jb250ZW50SW5zZXQ7CkBAIC0xNzEyLDcg
KzE3MTIsNyBAQCAtIChXZWJDb3JlOjpGbG9hdFNpemUpYWN0aXZlVmlld0xheW91dFNpCiAgICAg
aWYgKF92aWV3TGF5b3V0U2l6ZU92ZXJyaWRlKQogICAgICAgICByZXR1cm4gV2ViQ29yZTo6Rmxv
YXRTaXplKF92aWV3TGF5b3V0U2l6ZU92ZXJyaWRlLnZhbHVlKCkpOwogCi0jaWYgX19JUEhPTkVf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQ
TEFURk9STShNQUNDQVRBTFlTVCkKICAgICByZXR1cm4gV2ViQ29yZTo6RmxvYXRTaXplKFVJRWRn
ZUluc2V0c0luc2V0UmVjdChDR1JlY3RNYWtlKDAsIDAsIGJvdW5kcy5zaXplLndpZHRoLCBib3Vu
ZHMuc2l6ZS5oZWlnaHQpLCBzZWxmLl9zY3JvbGxWaWV3U3lzdGVtQ29udGVudEluc2V0KS5zaXpl
KTsKICNlbHNlCiAgICAgcmV0dXJuIFdlYkNvcmU6OkZsb2F0U2l6ZSB7IGJvdW5kcy5zaXplIH07
CkBAIC0xNzkwLDcgKzE3OTAsNyBAQCAtIChCT09MKV9zY3JvbGxWaWV3SXNSdWJiZXJCYW5kaW5n
CiAgICAgcmV0dXJuICFwb2ludHNFcXVhbEluRGV2aWNlUGl4ZWxzKGNvbnRlbnRPZmZzZXQsIGJv
dW5kZWRPZmZzZXQsIGRldmljZVNjYWxlRmFjdG9yKTsKIH0KIAotI2lmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZP
Uk0oTUFDQ0FUQUxZU1QpCiAtICh2b2lkKXNhZmVBcmVhSW5zZXRzRGlkQ2hhbmdlCiB7CiAgICAg
W3N1cGVyIHNhZmVBcmVhSW5zZXRzRGlkQ2hhbmdlXTsKQEAgLTIzMTMsNyArMjMxMyw3IEBAIC0g
KFdLUGFzc3dvcmRWaWV3ICopX3Bhc3N3b3JkVmlldwogCiAtICh2b2lkKV91cGRhdGVTY3JvbGxW
aWV3SW5zZXRBZGp1c3RtZW50QmVoYXZpb3IKIHsKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NB
VEFMWVNUKQogICAgIGlmICghW19zY3JvbGxWaWV3IF9jb250ZW50SW5zZXRBZGp1c3RtZW50QmVo
YXZpb3JXYXNFeHRlcm5hbGx5T3ZlcnJpZGRlbl0pCiAgICAgICAgIFtfc2Nyb2xsVmlldyBfc2V0
Q29udGVudEluc2V0QWRqdXN0bWVudEJlaGF2aW9ySW50ZXJuYWw6c2VsZi5fc2FmZUFyZWFTaG91
bGRBZmZlY3RPYnNjdXJlZEluc2V0cyA/IFVJU2Nyb2xsVmlld0NvbnRlbnRJbnNldEFkanVzdG1l
bnRBbHdheXMgOiBVSVNjcm9sbFZpZXdDb250ZW50SW5zZXRBZGp1c3RtZW50TmV2ZXJdOwogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Jl
bW90ZUxheWVyVHJlZVZpZXdzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlVmlld3MubW0JKHJldmlzaW9u
IDI1NDUxMCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3Mv
UmVtb3RlTGF5ZXJUcmVlVmlld3MubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxMCw3ICszMTAsNyBA
QCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyCiAgICAgaWYgKCFzZWxm
KQogICAgICAgICByZXR1cm4gbmlsOwogCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlT
VCkKICAgICBzZWxmLmNvbnRlbnRJbnNldEFkanVzdG1lbnRCZWhhdmlvciA9IFVJU2Nyb2xsVmll
d0NvbnRlbnRJbnNldEFkanVzdG1lbnROZXZlcjsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0JKHJldmlzaW9uIDI1NDUxMCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTE5OTMsOSArMTk5Mywx
MCBAQCAtIChCT09MKWdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvCiAtIChCT09MKWdl
c3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvZ25pemVyICopcHJldmVudGVkR2VzdHVyZVJl
Y29nbml6ZXIgY2FuQmVQcmV2ZW50ZWRCeUdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNv
Z25pemVyICopcHJldmVudGluZ0dlc3R1cmVSZWNvZ25pemVyIHsKICAgICAvLyBEb24ndCBhbGxv
dyB0aGUgaGlnaGxpZ2h0IHRvIGJlIHByZXZlbnRlZCBieSBhIHNlbGVjdGlvbiBnZXN0dXJlLiBQ
cmVzcy1hbmQtaG9sZCBvbiBhIGxpbmsgc2hvdWxkIGhpZ2hsaWdodCB0aGUgbGluaywgbm90IHNl
bGVjdCBpdC4KICAgICBib29sIGlzRm9yY2VQcmVzc0dlc3R1cmUgPSBOTzsKLSNpZiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAKKyNpZiBQTEFURk9STShJT1MpIHx8
IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGlzRm9yY2VQcmVzc0dlc3R1cmUgPSAocHJldmVu
dGluZ0dlc3R1cmVSZWNvZ25pemVyID09IF90ZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQuZ2V0KCku
Zm9yY2VQcmVzc0dlc3R1cmUpOwogI2VuZGlmCisKICNpZiBQTEFURk9STShNQUNDQVRBTFlTVCkK
ICAgICBpZiAoKHByZXZlbnRpbmdHZXN0dXJlUmVjb2duaXplciA9PSBfdGV4dEludGVyYWN0aW9u
QXNzaXN0YW50LmdldCgpLmxvdXBlR2VzdHVyZSkgJiYgKHByZXZlbnRlZEdlc3R1cmVSZWNvZ25p
emVyID09IF9oaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciB8fCBwcmV2ZW50ZWRH
ZXN0dXJlUmVjb2duaXplciA9PSBfbG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgfHwgcHJldmVu
dGVkR2VzdHVyZVJlY29nbml6ZXIgPT0gX3RleHRJbnRlcmFjdGlvbkFzc2lzdGFudC5nZXQoKS5m
b3JjZVByZXNzR2VzdHVyZSkpCiAgICAgICAgIHJldHVybiBZRVM7CkBAIC0yMDMzLDggKzIwMzQs
NyBAQCAtIChCT09MKWdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvCiAgICAgICAgIHJl
dHVybiBZRVM7CiAjZW5kaWYKIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEyMDAwMAotI2lmIFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorI2lmIFBMQVRGT1JNKElPUykg
fHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgaWYgKGlzU2FtZVBhaXIoZ2VzdHVyZVJlY29n
bml6ZXIsIG90aGVyR2VzdHVyZVJlY29nbml6ZXIsIF90ZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQu
Z2V0KCkubG91cGVHZXN0dXJlLCBfdGV4dEludGVyYWN0aW9uQXNzaXN0YW50LmdldCgpLmZvcmNl
UHJlc3NHZXN0dXJlKSkKICAgICAgICAgcmV0dXJuIFlFUzsKIApAQCAtMjA0MywxMCArMjA0Mywx
MSBAQCAtIChCT09MKWdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvCiAKICAgICBpZiAo
KFtnZXN0dXJlUmVjb2duaXplciBpc0tpbmRPZkNsYXNzOltfVUlMb29rdXBHZXN0dXJlUmVjb2du
aXplciBjbGFzc11dICYmIFtvdGhlckdlc3R1cmVSZWNvZ25pemVyIGlzS2luZE9mQ2xhc3M6W1VJ
TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgY2xhc3NdXSkgfHwgKFtvdGhlckdlc3R1cmVSZWNv
Z25pemVyIGlzS2luZE9mQ2xhc3M6W1VJTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgY2xhc3Nd
XSAmJiBbZ2VzdHVyZVJlY29nbml6ZXIgaXNLaW5kT2ZDbGFzczpbX1VJTG9va3VwR2VzdHVyZVJl
Y29nbml6ZXIgY2xhc3NdXSkpCiAgICAgICAgIHJldHVybiBZRVM7Ci0jZW5kaWYKKwogICAgIGlm
IChpc1NhbWVQYWlyKGdlc3R1cmVSZWNvZ25pemVyLCBvdGhlckdlc3R1cmVSZWNvZ25pemVyLCBf
aGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCksIF90ZXh0SW50ZXJhY3Rp
b25Bc3Npc3RhbnQuZ2V0KCkuZm9yY2VQcmVzc0dlc3R1cmUpKQogICAgICAgICByZXR1cm4gWUVT
OwogI2VuZGlmCisKICAgICBpZiAoaXNTYW1lUGFpcihnZXN0dXJlUmVjb2duaXplciwgb3RoZXJH
ZXN0dXJlUmVjb2duaXplciwgX3NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpLCBfdGV4
dEludGVyYWN0aW9uQXNzaXN0YW50LmdldCgpLnNpbmdsZVRhcEdlc3R1cmUpKQogICAgICAgICBy
ZXR1cm4gWUVTOwogCkBAIC02NDI4LDcgKzY0MjksNyBAQCAtICh2b2lkKXVwZGF0ZVRleHRTdWdn
ZXN0aW9uc0ZvcklucHV0RGVsCiAtICh2b2lkKV9zaG93UGxheWJhY2tUYXJnZXRQaWNrZXI6KEJP
T0wpaGFzVmlkZW8gZnJvbVJlY3Q6KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKWVsZW1lbnRSZWN0
IHJvdXRlU2hhcmluZ1BvbGljeTooV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5KXJvdXRlU2hh
cmluZ1BvbGljeSByb3V0aW5nQ29udGV4dFVJRDooTlNTdHJpbmcgKilyb3V0aW5nQ29udGV4dFVJ
RAogewogI2lmIEVOQUJMRShBSVJQTEFZX1BJQ0tFUikKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMTAwMDAgJiYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9S
TShBUFBMRVRWKQorI2lmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikK
ICAgICBpZiAoIV9haXJQbGF5Um91dGVQaWNrZXIpCiAgICAgICAgIF9haXJQbGF5Um91dGVQaWNr
ZXIgPSBhZG9wdE5TKFtbV0tBaXJQbGF5Um91dGVQaWNrZXIgYWxsb2NdIGluaXRdKTsKICAgICBb
X2FpclBsYXlSb3V0ZVBpY2tlciBzaG93RnJvbVZpZXc6c2VsZiByb3V0ZVNoYXJpbmdQb2xpY3k6
cm91dGVTaGFyaW5nUG9saWN5IHJvdXRpbmdDb250ZXh0VUlEOnJvdXRpbmdDb250ZXh0VUlEIGhh
c1ZpZGVvOmhhc1ZpZGVvXTsKQEAgLTY2MjMsNyArNjYyNCw3IEBAIC0gKEJPT0wpYWN0aW9uU2hl
ZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2gKICAgICByZXR1cm4gTk87CiB9CiAKLSNpZiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiBQTEFURk9STShJT1MpIHx8
IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogLSAoQ0dSZWN0KXVub2NjbHVkZWRXaW5kb3dCb3VuZHNG
b3JBY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFu
dAogewogICAgIFVJRWRnZUluc2V0cyBjb250ZW50SW5zZXQgPSBbW193ZWJWaWV3IHNjcm9sbFZp
ZXddIGFkanVzdGVkQ29udGVudEluc2V0XTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS1Njcm9sbFZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tTY3JvbGxWaWV3LmgJKHJldmlzaW9uIDI1NDUxMCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcs
NyBAQAogLSAodm9pZClfc2V0U2Nyb2xsRW5hYmxlZEludGVybmFsOihCT09MKWVuYWJsZWQ7CiAt
ICh2b2lkKV9zZXRab29tRW5hYmxlZEludGVybmFsOihCT09MKWVuYWJsZWQ7CiAKLSNpZiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiBQTEFURk9STShJT1Mp
IHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbiwg
cmVhZG9ubHkpIEJPT0wgX2NvbnRlbnRJbnNldEFkanVzdG1lbnRCZWhhdmlvcldhc0V4dGVybmFs
bHlPdmVycmlkZGVuOwogLSAodm9pZClfc2V0Q29udGVudEluc2V0QWRqdXN0bWVudEJlaGF2aW9y
SW50ZXJuYWw6KFVJU2Nyb2xsVmlld0NvbnRlbnRJbnNldEFkanVzdG1lbnRCZWhhdmlvcilpbnNl
dEFkanVzdG1lbnRCZWhhdmlvcjsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLU2Nyb2xsVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tTY3JvbGxWaWV3Lm1tCShyZXZpc2lvbiAyNTQ1MTApCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tTY3JvbGxWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcs
NyArMTI3LDcgQEAgLSAoaWQpZm9yd2FyZGluZ1RhcmdldEZvclNlbGVjdG9yOihTRUwpYQogICAg
IFdlYWtPYmpDUHRyPGlkIDxVSVNjcm9sbFZpZXdEZWxlZ2F0ZT4+IF9leHRlcm5hbERlbGVnYXRl
OwogICAgIFdLU2Nyb2xsVmlld0RlbGVnYXRlRm9yd2FyZGVyICpfZGVsZWdhdGVGb3J3YXJkZXI7
CiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiBQ
TEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIEJPT0wgX2NvbnRlbnRJ
bnNldEFkanVzdG1lbnRCZWhhdmlvcldhc0V4dGVybmFsbHlPdmVycmlkZGVuOwogI2VuZGlmCiAg
ICAgQ0dGbG9hdCBfa2V5Ym9hcmRCb3R0b21JbnNldEFkanVzdG1lbnQ7CkBAIC0xNTMsNyArMTUz
LDcgQEAgLSAoaWQpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lCiAgICAgc2VsZi5kaXJlY3Rp
b25hbExvY2tFbmFibGVkID0gWUVTOwogICAgIFtzZWxmIF9zZXRJbmRpY2F0b3JJbnNldEFkanVz
dG1lbnRCZWhhdmlvcjpVSVNjcm9sbFZpZXdJbmRpY2F0b3JJbnNldEFkanVzdG1lbnRBbHdheXNd
OwogCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYg
UExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBfY29udGVudEluc2V0
QWRqdXN0bWVudEJlaGF2aW9yV2FzRXh0ZXJuYWxseU92ZXJyaWRkZW4gPSAoc2VsZi5jb250ZW50
SW5zZXRBZGp1c3RtZW50QmVoYXZpb3IgIT0gVUlTY3JvbGxWaWV3Q29udGVudEluc2V0QWRqdXN0
bWVudEF1dG9tYXRpYyk7CiAjZW5kaWYKICAgICAKQEAgLTI3OCw3ICsyNzgsNyBAQCAtICh2b2lk
KXNldENvbnRlbnRJbnNldDooVUlFZGdlSW5zZXRzKWNvCiAgICAgW19pbnRlcm5hbERlbGVnYXRl
IF9zY2hlZHVsZVZpc2libGVDb250ZW50UmVjdFVwZGF0ZV07CiB9CiAKLSNpZiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiBQTEFURk9STShJT1MpIHx8IFBM
QVRGT1JNKE1BQ0NBVEFMWVNUKQogCiAtIChCT09MKV9jb250ZW50SW5zZXRBZGp1c3RtZW50QmVo
YXZpb3JXYXNFeHRlcm5hbGx5T3ZlcnJpZGRlbgogewpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLQWlyUGxheVJvdXRlUGlja2VyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLQWlyUGxheVJvdXRlUGlja2VyLmgJKHJl
dmlzaW9uIDI1NDUxMCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Fp
clBsYXlSb3V0ZVBpY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoQUlSUExBWV9QSUNLRVIpCiAKLSNpZiBf
X0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAgJiYgIVBMQVRGT1JNKFdB
VENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQorI2lmICFQTEFURk9STShXQVRDSE9TKSAmJiAh
UExBVEZPUk0oQVBQTEVUVikKIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDUxMCkKKysrIFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE2IEBACisyMDIwLTAxLTE0ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4K
KworICAgICAgICBSZW1vdmUgb2xkIGlPUyB2ZXJzaW9uIG1hY3JvcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MDk2CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81ODQ5MTY3NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbTogUmVtb3ZlIGlP
UyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2
YXRlLmg6IERpdHRvLgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbTogRGl0dG8uCisgICAg
ICAgICogV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oOiBEaXR0by4KKwogMjAyMC0wMS0xNCAgQW50
dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRp
b25dIFN1cHBvcnQgdGhlIGZlYXR1cmUgZmxhZyBpbiBEdW1wUmVuZGVyVHJlZQpJbmRleDogU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5tbQkocmV2aXNpb24gMjU0NTEwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00
MTgsNyArNDE4LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcgog
ICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KIAotI2lmIChQ
TEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMTAwMDApIHx8IFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JN
KE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAKIC8vIEZJWE1FOiBSZW1vdmUgYm90aCB0
aGlzIHN0dWIgYW5kIHRoZSByZWFsIHZlcnNpb24gb2YgdGhpcyBmdW5jdGlvbiBiZWxvdyBvbmNl
IHdlIGRvbid0IG5lZWQgdGhlIHJlYWwgdmVyc2lvbiBvbiBhbnkgc3VwcG9ydGVkIHBsYXRmb3Jt
LgogLy8gVGhpcyBzdHViIGlzIG5vdCB1c2VkIG91dHNpZGUgV2ViS2l0LCBidXQgaXQncyBoZXJl
IHNvIHdlIHdvbid0IGdldCBhIGxpbmtlciBlcnJvci4KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmgJKHJldmlz
aW9uIDI1NDUxMCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVUlEZWxl
Z2F0ZVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQAogI2VuZGlmCiAj
ZW5kaWYKIAotI2lmIFRBUkdFVF9PU19JUEhPTkUgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgVEFSR0VUX09TX0lQSE9ORQogQHByb3RvY29sIFVJRHJv
cFNlc3Npb247CiAjZW5kaWYKIApAQCAtMjk5LDcgKzI5OSw2IEBAIEBpbnRlcmZhY2UgTlNPYmpl
Y3QgKFdlYlVJRGVsZWdhdGVQcml2YXQKIAogLSAoQk9PTCl3ZWJWaWV3Q2FuQ2hlY2tHZW9sb2Nh
dGlvbkF1dGhvcml6YXRpb25TdGF0dXM6KFdlYlZpZXcgKilzZW5kZXI7CiAKLSNpZiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKIC8qIQogIEBtZXRob2Qgd2ViVmll
dzpkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yU2Vzc2lvbjoKICBAcGFyYW0gc2VuZGVyIFRo
ZSBXZWJWaWV3IHNlbmRpbmcgdGhlIGRlbGVnYXRlIG1ldGhvZApAQCAtMzA4LDcgKzMwNyw2IEBA
IEBpbnRlcmZhY2UgTlNPYmplY3QgKFdlYlVJRGVsZWdhdGVQcml2YXQKICAqLwogLSAoV2ViRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uTWFza0ZvclNlc3Npb246KGlkIDxVSURyb3BTZXNzaW9uPilzZXNzaW9uOwogI2Vu
ZGlmCi0jZW5kaWYKIAogLSAoTlNEYXRhICopd2ViQ3J5cHRvTWFzdGVyS2V5Rm9yV2ViVmlldzoo
V2ViVmlldyAqKXNlbmRlcjsKIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMjU0NTEwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTY2LDcgKzE5NjYsNyBA
QCAtICh2b2lkKV9kaWRDb25jbHVkZUVkaXREcmFnCiAgICAgfQogfQogCi0jZWxpZiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNlbGlmIFBMQVRGT1JNKElPUykg
fHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAKIC0gKEJPT0wpX3JlcXVlc3RTdGFydERhdGFJbnRl
cmFjdGlvbjooQ0dQb2ludCljbGllbnRQb3NpdGlvbiBnbG9iYWxQb3NpdGlvbjooQ0dQb2ludCln
bG9iYWxQb3NpdGlvbgogewpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJWaWV3UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlld1ByaXZhdGUuaAkocmV2aXNpb24gMjU0NTEwKQorKysgU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTcsNyArMTE3LDcgQEAgZXh0ZXJuIE5TU3RyaW5nICpXZWJRdWlja0xvb2tGaWxlTmFtZUtleQog
ZXh0ZXJuIE5TU3RyaW5nICpXZWJRdWlja0xvb2tVVElLZXk7CiAjZW5kaWYKIAotI2lmIFRBUkdF
VF9PU19JUEhPTkUgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAw
CisjaWYgVEFSR0VUX09TX0lQSE9ORQogQHByb3RvY29sIFVJRHJvcFNlc3Npb247CiAjZW5kaWYK
IApAQCAtNDc5LDcgKzQ3OSw2IEBAIENvdWxkIGJlIHdvcnRoIGFkZGluZyB0byB0aGUgQVBJLgog
CiAtICh2b2lkKV9yZXBsYWNlQ3VycmVudEhpc3RvcnlJdGVtOihXZWJIaXN0b3J5SXRlbSAqKWl0
ZW07CiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKIC0g
KEJPT0wpX3JlcXVlc3RTdGFydERhdGFJbnRlcmFjdGlvbjooQ0dQb2ludCljbGllbnRQb3NpdGlv
biBnbG9iYWxQb3NpdGlvbjooQ0dQb2ludClnbG9iYWxQb3NpdGlvbjsKIC0gKFdlYlVJVGV4dElu
ZGljYXRvckRhdGEgKilfZ2V0RGF0YUludGVyYWN0aW9uRGF0YTsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSwgc3Ryb25nLCBnZXR0ZXI9X2RhdGFPcGVyYXRpb25UZXh0SW5kaWNhdG9y
KSBXZWJVSVRleHRJbmRpY2F0b3JEYXRhICpkYXRhT3BlcmF0aW9uVGV4dEluZGljYXRvcjsKQEAg
LTQ5NSw3ICs0OTQsNiBAQCBDb3VsZCBiZSB3b3J0aCBhZGRpbmcgdG8gdGhlIEFQSS4KIC0gKHZv
aWQpX2VuZGVkRGF0YUludGVyYWN0aW9uOihDR1BvaW50KWNsaWVudFBvc2l0aW9uIGdsb2JhbDoo
Q0dQb2ludClnbG9iYWxQb3NpdGlvbjsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
LCBnZXR0ZXI9X2RhdGFJbnRlcmFjdGlvbkNhcmV0UmVjdCkgQ0dSZWN0IGRhdGFJbnRlcmFjdGlv
bkNhcmV0UmVjdDsKLSNlbmRpZgogCiAvLyBEZXByZWNhdGVkLiBVc2UgLVtXZWJEYXRhU291cmNl
IF9xdWlja0xvb2tDb250ZW50XSBpbnN0ZWFkLgogLSAoTlNEaWN0aW9uYXJ5ICopcXVpY2tMb29r
Q29udGVudEZvclVSTDooTlNVUkwgKil1cmw7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTQ1MTApCisrKyBUb29scy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0wMS0xNCAgSm9uYXRo
YW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIG9sZCBpT1Mg
dmVyc2lvbiBtYWNyb3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNjA5NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTg0OTE2NzU+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmtUZXN0Lm1tOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3MuCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2
aWdhdGlvbi5tbTogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tOiBEaXR0by4K
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSFRUUENvb2tpZVN0
b3JlLm1tOiBSZW1vdmUgaU9TIDEyIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5tbToKKyAgICAgICAgKC1bVGVzdFJ1
bm5lcldLV2ViVmlldyBzZXRPdmVycmlkZVNhZmVBcmVhSW5zZXRzOl0pOiBSZW1vdmUgaU9TIDEx
IHZlcnNpb24gY2hlY2tzLgorCiAyMDIwLTAxLTE0ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFw
cGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gU3VwcG9ydCB0aGUgZmVhdHVy
ZSBmbGFnIGluIER1bXBSZW5kZXJUcmVlCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmtUZXN0Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0
TGlua1Rlc3QubW0JKHJldmlzaW9uIDI1NDUxMCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGlua1Rlc3QubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTE0MSwxMiArMTQxLDEyIEBAIFRFU1QoQVZGb3VuZGF0aW9uU29mdExpbmssIENvbnN0
YW50cykKICAgICBpZiAoUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVlNhbXBsZVJhdGVLZXko
KSkKICAgICAgICAgRVhQRUNUX1RSVUUoW0FWU2FtcGxlUmF0ZUtleSBpc0VxdWFsVG9TdHJpbmc6
QCJBVlNhbXBsZVJhdGVLZXkiXSk7CiAKLSNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShJ
T1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkgfHwgUExB
VEZPUk0oV0FUQ0hPUykgfHwgUExBVEZPUk0oQVBQTEVUVikKKyNpZiBQTEFURk9STShNQUMpIHx8
IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oV0FUQ0hPUykgfHwgUExBVEZPUk0oQVBQTEVUVikK
ICAgICBFWFBFQ1RfVFJVRShQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWVVJMQXNzZXRPdXRP
ZkJhbmRNSU1FVHlwZUtleSgpKTsKICAgICBFWFBFQ1RfVFJVRShbQVZVUkxBc3NldE91dE9mQmFu
ZE1JTUVUeXBlS2V5IGlzRXF1YWxUb1N0cmluZzpAIkFWVVJMQXNzZXRPdXRPZkJhbmRNSU1FVHlw
ZUtleSJdKTsKICNlbmRpZgogCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkgfHwgUExBVEZPUk0oV0FUQ0hPUykg
fHwgUExBVEZPUk0oQVBQTEVUVikKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9S
TShXQVRDSE9TKSB8fCBQTEFURk9STShBUFBMRVRWKQogICAgIEVYUEVDVF9UUlVFKFBBTDo6Y2Fu
TG9hZF9BVkZvdW5kYXRpb25fQVZVUkxBc3NldFVzZUNsaWVudFVSTExvYWRpbmdFeGNsdXNpdmVs
eSgpKTsKICAgICBFWFBFQ1RfVFJVRShbQVZVUkxBc3NldFVzZUNsaWVudFVSTExvYWRpbmdFeGNs
dXNpdmVseSBpc0VxdWFsVG9TdHJpbmc6QCJBVlVSTEFzc2V0VXNlQ2xpZW50VVJMTG9hZGluZ0V4
Y2x1c2l2ZWx5Il0pOwogI2VuZGlmCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24u
bW0JKHJldmlzaW9uIDI1NDUxMCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTYzOTIs
NyArNjM5Miw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIFBhZ2VPdmVybGF5TGF5ZXJQZXJzaXMKICNl
bmRpZgogfQogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMTAwMDAKKyNpZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFM
WVNUKQogCiBURVNUKFByb2Nlc3NTd2FwLCBRdWlja0xvb2tSZXF1ZXN0c1Bhc3N3b3JkQWZ0ZXJT
d2FwKQogewpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0
dGFjaG1lbnRUZXN0cy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCShyZXZpc2lvbiAyNTQ1MTApCisrKyBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIC0gKF9XS0F0dGFjaG1lbnQgKilfYXR0
YWNobWVudFdpdGhOYW1lOigKIH0KIEBlbmQKIAotI2RlZmluZSBVU0VTX01PREVSTl9BVFRSSUJV
VEVEX1NUUklOR19DT05WRVJTSU9OICgoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKSB8fCBQTEFURk9STShNQUMpKQorI2Rl
ZmluZSBVU0VTX01PREVSTl9BVFRSSUJVVEVEX1NUUklOR19DT05WRVJTSU9OIChQTEFURk9STShJ
T1MpIHx8IFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpKQogCiBAaW50ZXJm
YWNlIEF0dGFjaG1lbnRVcGRhdGVPYnNlcnZlciA6IE5TT2JqZWN0IDxXS1VJRGVsZWdhdGVQcml2
YXRlPgogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0FycmF5ICppbnNlcnRlZDsK
SW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tIVFRQQ29va2ll
U3RvcmUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQkocmV2aXNpb24gMjU0NTEwKQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzQ3LDcgKzM0Nyw3IEBAIFRFU1QoV2ViS2l0LCBXS0hUVFBDb29raWVTdG9y
ZUh0dHBPbmx5KSAKICAgICBbY29va2llcyByZWxlYXNlXTsKIH0KIAotI2lmIChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTIwMDAwKQorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNU
KQogVEVTVChXZWJLaXQsIFdLSFRUUENvb2tpZVN0b3JlQ3JlYXRpb25UaW1lKSAKIHsgICAKICAg
ICBhdXRvIGRhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV07
CkBAIC00MDEsNyArNDAxLDcgQEAgVEVTVChXZWJLaXQsIFdLSFRUUENvb2tpZVN0b3JlQ3JlYXRp
b25UaQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290RmxhZyk7CiAgICAgZ290Rmxh
ZyA9IGZhbHNlOwogfQotI2VuZGlmIC8vIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKQorI2VuZGlmIC8vIChQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAw
KSB8fCBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogCiAvLyBGSVhNRTog
VGhpcyAjaWYgc2hvdWxkIGJlIHJlbW92ZWQgb25jZSA8cmRhcjovL3Byb2JsZW0vMzUzNDQyMDI+
IGlzIHJlc29sdmVkIGFuZCBib3RzIGFyZSB1cGRhdGVkLgogI2lmIFBMQVRGT1JNKE1BQykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEIDw9IDEwMTMwMQpJbmRleDogVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5tbQkocmV2
aXNpb24gMjU0NTEwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVy
V0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MjUsNyArNDI1LDcgQEAgLSAodm9pZClh
Y2Nlc3NpYmlsaXR5UmV0cmlldmVTcGVha1NlbGVjdAogLSAodm9pZClzZXRPdmVycmlkZVNhZmVB
cmVhSW5zZXRzOihVSUVkZ2VJbnNldHMpaW5zZXRzCiB7CiAgICAgX292ZXJyaWRlU2FmZUFyZWFJ
bnNldHMgPSBpbnNldHM7Ci0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBb
c2VsZiBfdXBkYXRlU2FmZUFyZWFJbnNldHNdOwogI2VuZGlmCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387676</attachid>
            <date>2020-01-14 10:51:27 -0800</date>
            <delta_ts>2020-01-16 14:58:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206096-20200114105126.patch</filename>
            <type>text/plain</type>
            <size>47744</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNTQ1MTApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAxLTE0ICBKb25hdGhhbiBCZWRhcmQgIDxq
YmVkYXJkQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgb2xkIGlPUyB2ZXJzaW9uIG1hY3Jv
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MDk2
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODQ5MTY3NT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9GZWF0dXJlRGVmaW5lcy5oOiBSZW1v
dmUgaU9TIDEyIHZlcnNpb24gbWFjcm8uCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6IERpdHRv
LgorCiAyMDIwLTAxLTE0ICBBbGljaWEgQm95YSBHYXJjw61hICA8YWJveWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbV1RGXSBNYWtlIE1lZGlhVGltZSBjb25zdHJ1Y3RvciBjb25zdGV4cHIKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvRmVhdHVyZURlZmluZXMuaAkocmV2aXNpb24gMjU0NTEwKQorKysgU291cmNlL1dU
Ri93dGYvRmVhdHVyZURlZmluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTgyLDcgKzE4Miw3IEBA
IHRoZSBwdWJsaWMgaU9TIFNESy4gU2VlIDxodHRwczovL3dlYmtpdC4KICNlbmRpZgogCiAjaWYg
IWRlZmluZWQoRU5BQkxFX1dLUERGVklFVykKLSNpZiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBM
QVRGT1JNKEFQUExFVFYpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkgJiYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwCisjaWYgUExBVEZPUk0oSU9TKQogI2RlZmlu
ZSBFTkFCTEVfV0tQREZWSUVXIDEKICNlbmRpZgogI2VuZGlmCkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHJl
dmlzaW9uIDI1NDUxMCkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTg3Nyw3ICs4NzcsNyBAQAogI2RlZmluZSBIQVZFX0FVVEhPUklaQVRJT05fU1RBVFVT
X0ZPUl9NRURJQV9UWVBFIDEKICNlbmRpZgogCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgKF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NQVhfQUxMT1dFRCA+PSAxMDE0MDQpKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
QVhfQUxMT1dFRCA+PSAxMjAyMDApIHx8IFBMQVRGT1JNKFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQ
UExFVFYpCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxNDAwICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMDE0
MDQpKSB8fCBQTEFURk9STShXQVRDSE9TKSB8fCBQTEFURk9STShBUFBMRVRWKQogI2RlZmluZSBI
QVZFX0NGTkVUV09SS19PVkVSUklERV9TRVNTSU9OX0NPT0tJRV9BQ0NFUFRfUE9MSUNZIDEKICNl
bmRpZgogCkBAIC05NTMsNyArOTUzLDcgQEAKICNkZWZpbmUgSEFWRV9ST1VURV9TSEFSSU5HX1BP
TElDWV9MT05HX0ZPUk1fVklERU8gMQogI2VuZGlmCiAKLSNpZiAoUExBVEZPUk0oSU9TKSAmJiBf
X0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAgJiYgIVBMQVRGT1JNKElP
U19TSU1VTEFUT1IpKQorI2lmIChQTEFURk9STShJT1MpICYmICFQTEFURk9STShJT1NfU0lNVUxB
VE9SKSkKICNkZWZpbmUgSEFWRV9ERVZJQ0VfTUFOQUdFTUVOVCAxCiAjZW5kaWYKIApAQCAtOTY5
LDcgKzk2OSw3IEBACiAjZGVmaW5lIEhBVkVfQVZQTEFZRVJfUkVTT1VSQ0VfQ09OU0VSVkFUSU9O
X0xFVkVMIDEKICNlbmRpZgogCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkgfHwgUExBVEZPUk0oV0FUQ0hPUykg
fHwgUExBVEZPUk0oQVBQTEVUVikKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9S
TShXQVRDSE9TKSB8fCBQTEFURk9STShBUFBMRVRWKQogI2RlZmluZSBIQVZFX0NPUkVURVhUX0FV
VE9fT1BUSUNBTF9TSVpJTkcgMQogI2VuZGlmCiAKQEAgLTEwMDEsNyArMTAwMSw3IEBACiAjZGVm
aW5lIEhBVkVfU1VCVklFV1NfSVZBUl9ERUNMQVJFRF9CWV9TREsgMQogI2VuZGlmCiAKLSNpZiBQ
TEFURk9STShNQUMpIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApIHx8IFBMQVRGT1JNKFdBVENIT1MpIHx8IFBMQVRG
T1JNKEFQUExFVFYpCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQog
I2RlZmluZSBVU0VfUExBVEZPUk1fU1lTVEVNX0ZBTExCQUNLX0xJU1QgMQogI2VuZGlmCiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDUxMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDIwLTAxLTE0ICBKb25hdGhhbiBC
ZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgb2xkIGlPUyB2ZXJz
aW9uIG1hY3JvcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA2MDk2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODQ5MTY3NT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuCisKKyAg
ICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbTogUmVtb3ZlIGlP
UyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBwYWdlL1NldHRpbmdzRGVmYXVsdFZhbHVl
cy5oOiBSZW1vdmUgaU9TIDEyIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6OnBh
aW50KTogUmVtb3ZlIGlPUyAxMiB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9QYXRoQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6cGxhdGZvcm1B
ZGRQYXRoRm9yUm91bmRlZFJlY3QpOiBSZW1vdmUgaU9TIDEyIHZlcnNpb24gY2hlY2tzLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnZhcmlhdGlvbkNhcGFiaWxpdGllc0ZvckZvbnREZXNjcmlwdG9yKTog
UmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNo
ZTo6bGFzdFJlc29ydEZhbGxiYWNrRm9udCk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Om1hdGNoU3lzdGVtRm9udFVzZSk6IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVjay4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvRm9udENhY2hlSU9TLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6cGxhdGZvcm1Gb250V2l0aEZhbWlseVNwZWNpYWxDYXNlKTogUmVtb3ZlIGlPUyAxMSB2
ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKTogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oOiBSZW1vdmUgaU9TIDExIHZlcnNp
b24gY2hlY2tzLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpjb29raWVzRm9yVVJMKTogUmVt
b3ZlIGlPUyAxMiB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKFdlYkNvcmU6OnNldEhUVFBDb29r
aWVzRm9yVVJMKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1t
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OmNhY2hlZFN5c3RlbUZvbnREZXNj
cmlwdGlvbiBjb25zdCk6IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3MuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6dXBkYXRlQ2FjaGVkU3lzdGVtRm9udERlc2NyaXB0aW9u
IGNvbnN0KTogRGl0dG8uCisKIDIwMjAtMDEtMTQgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFu
ZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIFVucmV2aWV3ZWQgYnVpbGQgd2Fy
bmluZyBmaXggYWZ0ZXIgcjI1NDUwMwpJbmRleDogU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
NTQ1MTApCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMjAtMDEtMTQgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBw
bGUuY29tPgorCisgICAgICAgIFJlbW92ZSBvbGQgaU9TIHZlcnNpb24gbWFjcm9zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYwOTYKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzU4NDkxNjc1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaDogUmVtb3ZlIGlP
UyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQ
SS5oOiBSZW1vdmUgaU9TIDEyIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAqIHBhbC9zcGkvY29j
b2EvTlNLZXllZEFyY2hpdmVyU1BJLmg6IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3MuCisg
ICAgICAgICogcGFsL3NwaS9pb3MvTWVkaWFQbGF5ZXJTUEkuaDogUmVtb3ZlIGlPUyAxMSBhbmQg
MTIgdmVyc2lvbiBjaGVja3MuCisKIDIwMjAtMDEtMDkgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2Fy
bHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgRG9uJ3Qgc29mdGxpbmsgQVZDYXB0dXJlIGNsYXNz
ZXMgb24gd2F0Y2hPUyBvciB0dk9TCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9j
Zi9DRk5ldHdvcmtTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9jZi9DRk5ldHdvcmtTUEkuaAkocmV2aXNpb24gMjU0NTEwKQorKysgU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMyw3ICsy
MTMsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBOU1VSTFNlc3Npb25DCiBAcHJvcGVy
dHkgKG51bGxhYmxlLCByZWFkd3JpdGUsIHJldGFpbikgTlNVUkwgKl9zaXRlRm9yQ29va2llczsK
IEBwcm9wZXJ0eSAocmVhZHdyaXRlKSBCT09MIF9pc1RvcExldmVsTmF2aWdhdGlvbjsKICNlbmRp
ZgotI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKKyNpZiBQTEFURk9STShNQUMpIHx8
IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiBAcHJvcGVydHkgKG5vbmF0
b21pYywgYXNzaWduKSBCT09MIF9wcmVjb25uZWN0OwogI2VuZGlmCiBAZW5kCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaAkocmV2aXNp
b24gMjU0NTEwKQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNz
U1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIENHQ29udGV4dFNl
dFN0eWxlKENHQ29udGV4dFJlZiwgQ0dTCiAKIHZvaWQgQ0dDb250ZXh0RHJhd0NvbmljR3JhZGll
bnQoQ0dDb250ZXh0UmVmLCBDR0dyYWRpZW50UmVmLCBDR1BvaW50IGNlbnRlciwgQ0dGbG9hdCBh
bmdsZSk7CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9T
KSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKIHZvaWQgQ0dQYXRoQWRkVW5ldmVuQ29ybmVyc1Jv
dW5kZWRSZWN0KENHTXV0YWJsZVBhdGhSZWYsIGNvbnN0IENHQWZmaW5lVHJhbnNmb3JtICosIENH
UmVjdCwgY29uc3QgQ0dTaXplIGNvcm5lcnNbNF0pOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5o
CShyZXZpc2lvbiAyNTQ1MTApCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9O
U0tleWVkQXJjaGl2ZXJTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2lt
cG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAotI2Rl
ZmluZSBVU0VfU0VDVVJFX0FSQ0hJVkVSX0FQSSAoUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0o
SU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMjAw
KSB8fCBQTEFURk9STShXQVRDSE9TKSB8fCBQTEFURk9STShBUFBMRVRWKSkKKyNkZWZpbmUgVVNF
X1NFQ1VSRV9BUkNISVZFUl9BUEkgKFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlM
WSkpCiAKICNkZWZpbmUgVVNFX1NFQ1VSRV9BUkNISVZFUl9GT1JfQVRUUklCVVRFRF9TVFJJTkcg
KFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEzMDAwMCkgfHwgUExBVEZPUk0oV0FUQ0hPUykgfHwgUExB
VEZPUk0oQVBQTEVUVikpCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2lvcy9N
ZWRpYVBsYXllclNQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3Bp
L2lvcy9NZWRpYVBsYXllclNQSS5oCShyZXZpc2lvbiAyNTQ1MTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL3NwaS9pb3MvTWVkaWFQbGF5ZXJTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMzQs
MTEgKzM0LDExIEBACiAKICNpbXBvcnQgPE1lZGlhUGxheWVyL01QQVZSb3V0aW5nQ29udHJvbGxl
ci5oPgogCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwCisj
aWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICNpbXBvcnQgPE1lZGlh
UGxheWVyL01QTWVkaWFDb250cm9sc0NvbmZpZ3VyYXRpb24uaD4KICNlbmRpZgogCi0jaWYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwICYmICFQTEFURk9STShXQVRD
SE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikKKyNpZiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBM
QVRGT1JNKEFQUExFVFYpCiAjaW1wb3J0IDxNZWRpYVBsYXllci9NUE1lZGlhQ29udHJvbHNWaWV3
Q29udHJvbGxlci5oPgogI2Vsc2UKICNpbXBvcnQgPE1lZGlhUGxheWVyL01QQVZSb3V0aW5nU2hl
ZXQuaD4KQEAgLTY0LDcgKzY0LDcgQEAgdHlwZWRlZiBOU0ludGVnZXIgTVBSb3V0ZURpc2NvdmVy
eU1vZGU7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBNUFJvdXRlRGlzY292ZXJ5TW9k
ZSBkaXNjb3ZlcnlNb2RlOwogQGVuZAogCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTEwMDAwICYmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQTEVU
VikKKyNpZiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCiAKIEBpbnRl
cmZhY2UgTVBNZWRpYUNvbnRyb2xzVmlld0NvbnRyb2xsZXIgOiBVSVZpZXdDb250cm9sbGVyCiBA
cHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgbnVsbGFibGUpIHZvaWQgKF5kaWREaXNtaXNzSGFu
ZGxlcikodm9pZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRl
bnRSZWFkZXJDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQkocmV2aXNpb24gMjU0NTEwKQorKysgU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTczLDcgKzczLDcgQEAKICNpbmNsdWRlICJMb2NhbERlZmF1bHRTeXN0ZW1BcHBl
YXJhbmNlLmgiCiAjZW5kaWYKIAotI2lmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApIHx8IFBMQVRGT1JNKE1BQykKKyNp
ZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1Qp
CiBAaW50ZXJmYWNlIE5TQXR0cmlidXRlZFN0cmluZyAoKQogLSAoTlNTdHJpbmcgKilfaHRtbERv
Y3VtZW50RnJhZ21lbnRTdHJpbmc6KE5TUmFuZ2UpcmFuZ2UgZG9jdW1lbnRBdHRyaWJ1dGVzOihO
U0RpY3Rpb25hcnkgKilkaWN0IHN1YnJlc291cmNlczooTlNBcnJheSAqKilzdWJyZXNvdXJjZXM7
CiBAZW5kCkBAIC04Myw3ICs4Myw3IEBAIFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhXZWJL
aXRMZWdhY3kKIFNPRlRfTElOS19GUkFNRVdPUktfSU5fVU1CUkVMTEEoV2ViS2l0LCBXZWJLaXRM
ZWdhY3kpCiAjZW5kaWYKIAotI2lmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMCkKKyNpZiBQTEFURk9STShXQVRDSE9TKSB8
fCBQTEFURk9STShUVk9TKQogU09GVF9MSU5LKFdlYktpdExlZ2FjeSwgX1dlYkNyZWF0ZUZyYWdt
ZW50LCB2b2lkLCAoV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBOU0F0dHJpYnV0ZWRTdHJp
bmcgKnN0cmluZywgV2ViQ29yZTo6RnJhZ21lbnRBbmRSZXNvdXJjZXMmIHJlc3VsdCksIChkb2N1
bWVudCwgc3RyaW5nLCByZXN1bHQpKQogI2VuZGlmCiAKQEAgLTk2LDcgKzk2LDcgQEAgc3RhdGlj
IEZyYWdtZW50QW5kUmVzb3VyY2VzIGNyZWF0ZUZyYWdtZQogICAgIHJldHVybiB7IH07CiB9CiAK
LSNlbGlmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMTAwMDApIHx8IFBMQVRGT1JNKE1BQykKKyNlbGlmIFBMQVRGT1JNKElPUykg
fHwgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKIAogc3RhdGljIE5TRGlj
dGlvbmFyeSAqYXR0cmlidXRlc0ZvckF0dHJpYnV0ZWRTdHJpbmdDb252ZXJzaW9uKCkKIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NEZWZhdWx0VmFsdWVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0RlZmF1bHRWYWx1ZXMuaAkocmV2aXNp
b24gMjU0NTEwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0RlZmF1bHRWYWx1ZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBjb25zdCBib29sIGRl
ZmF1bHRNZWRpYUVuYWJsZWQgPSAKIHN0YXRpYyBjb25zdCBib29sIGRlZmF1bHRNZWRpYUVuYWJs
ZWQgPSBmYWxzZTsKICNlbmRpZgogICAgIAotI2lmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBf
X0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApIHx8IChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFU
Rk9STShXQVRDSE9TKQorI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKFdBVENI
T1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogc3RhdGljIGNvbnN0IGJvb2wgZGVmYXVsdENv
bmljR3JhZGllbnQgPSB0cnVlOwogI2Vsc2UKIHN0YXRpYyBjb25zdCBib29sIGRlZmF1bHRDb25p
Y0dyYWRpZW50ID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFkaWVudENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9HcmFkaWVudENHLmNwcAkocmV2aXNpb24gMjU0NTEwKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIEdyYWRpZW50OjpwYWludChDR0NvbnRleHRSZWYg
cGxhdGZvCiAgICAgICAgICAgICAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShwbGF0Zm9ybUNv
bnRleHQpOwogICAgICAgICB9LAogICAgICAgICBbJl0gKGNvbnN0IENvbmljRGF0YSYgZGF0YSkg
ewotI2lmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMjAwMDApIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShXQVRDSE9TKQorI2lmIFBMQVRG
T1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKFdBVENIT1MpCiAgICAgICAgICAgICBDR0NvbnRl
eHRTYXZlR1N0YXRlKHBsYXRmb3JtQ29udGV4dCk7CiAgICAgICAgICAgICBDR0NvbnRleHRUcmFu
c2xhdGVDVE0ocGxhdGZvcm1Db250ZXh0LCBkYXRhLnBvaW50MC54KCksIGRhdGEucG9pbnQwLnko
KSk7CiAgICAgICAgICAgICBDR0NvbnRleHRSb3RhdGVDVE0ocGxhdGZvcm1Db250ZXh0LCAoQ0dG
bG9hdCktTV9QSV8yKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BhdGhDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUGF0aENHLmNwcAkocmV2aXNpb24gMjU0NTEwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE0LDcgKzMx
NCw3IEBAIHZvaWQgUGF0aDo6cGxhdGZvcm1BZGRQYXRoRm9yUm91bmRlZFJlY3QKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKQorI2lmIChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFU
Rk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIENHUmVjdCByZWN0VG9EcmF3
ID0gcmVjdDsKICAgICAKICAgICBlbnVtIENvcm5lcnMgewpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVU
ZXh0LmNwcAkocmV2aXNpb24gMjU0NTEwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3
ICszOSw3IEBACiAjaW5jbHVkZSA8d3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oPgogI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCi0jZGVmaW5lIEhBU19DT1JFX1RFWFRfV0lEVEhf
QVRUUklCVVRFIChQTEFURk9STShNQUMpIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApKQorI2RlZmluZSBIQVNfQ09S
RV9URVhUX1dJRFRIX0FUVFJJQlVURSAoUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpIHx8
IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKSkKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDY0
LDcgKzEwNjQsNyBAQCBzdGF0aWMgVmFyaWF0aW9uQ2FwYWJpbGl0aWVzIHZhcmlhdGlvbkNhCiAg
ICAgfQogCiAgICAgYm9vbCBvcHRPdXRGcm9tR1hOb3JtYWxpemF0aW9uID0gZmFsc2U7Ci0jaWYg
KFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkpCisjaWYgKFBMQVRGT1JNKE1BQykgfHwgUExB
VEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkpCiAgICAgb3B0T3V0RnJvbUdYTm9y
bWFsaXphdGlvbiA9IENURm9udERlc2NyaXB0b3JJc1N5c3RlbVVJRm9udChmb250RGVzY3JpcHRv
cik7CiAjZW5kaWYKIApAQCAtMTYzOSw3ICsxNjM5LDcgQEAgUmVmPEZvbnQ+IEZvbnRDYWNoZTo6
bGFzdFJlc29ydEZhbGxiYWNrRgogICAgICAgICByZXR1cm4gKnJlc3VsdDsKIAogICAgIC8vIExh
c3RSZXNvcnQgaXMgZ3VhcmFudGVlZCB0byBiZSBub24tbnVsbC4KLSNpZiAoUExBVEZPUk0oSU9T
X0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKSB8
fCBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUMpIHx8IFBM
QVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGF1dG8gZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENU
Rm9udERlc2NyaXB0b3JDcmVhdGVMYXN0UmVzb3J0KCkpOwogICAgIGF1dG8gZm9udCA9IGFkb3B0
Q0YoQ1RGb250Q3JlYXRlV2l0aEZvbnREZXNjcmlwdG9yKGZvbnREZXNjcmlwdG9yLmdldCgpLCBm
b250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwgbnVsbHB0cikpOwogI2Vsc2UKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlv
bkNvY29hLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHAJKHJldmlzaW9uIDI1NDUxMCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29h
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBzdGF0aWMgaW5saW5lIE9wdGlv
bmFsPFN5c3RlbUZvbnRLaW5kPiBtCiAgICAgICAgIGtDVFVJRm9udFRleHRTdHlsZVNob3J0Rm9v
dG5vdGUsCiAgICAgICAgIGtDVFVJRm9udFRleHRTdHlsZVNob3J0Q2FwdGlvbjEsCiAgICAgICAg
IGtDVFVJRm9udFRleHRTdHlsZVRhbGxCb2R5LAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FU
QUxZU1QpCiAgICAgICAgIGtDVFVJRm9udFRleHRTdHlsZVRpdGxlMCwKICAgICAgICAga0NUVUlG
b250VGV4dFN0eWxlVGl0bGU0LAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9pb3MvRm9udENhY2hlSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9Gb250Q2FjaGVJT1MubW0JKHJldmlzaW9uIDI1NDUx
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9Gb250Q2FjaGVJT1Mu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTE1Niw3ICsxNTYsNyBAQCBSZXRhaW5QdHI8Q1RGb250UmVm
PiBwbGF0Zm9ybUZvbnRXaXRoRmFtCiAgICAgfQogCiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKGZhbWlseSwgImxhc3RyZXNvcnQiKSkgewotI2lmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZP
Uk0oTUFDQ0FUQUxZU1QpCiAgICAgICAgIHN0YXRpYyBjb25zdCBDVEZvbnREZXNjcmlwdG9yUmVm
IGxhc3RSZXNvcnQgPSBDVEZvbnREZXNjcmlwdG9yQ3JlYXRlTGFzdFJlc29ydCgpOwogICAgICAg
ICByZXR1cm4gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IobGFzdFJlc29y
dCwgc2l6ZSwgbnVsbHB0cikpOwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5jcHAJKHJldmlzaW9uIDI1NDUxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYs
NyArNTYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gCiAgICAg
UmV0YWluUHRyPENGRGF0YVJlZj4gYnVmZmVyRGF0YSA9IGJ1ZmZlci5jcmVhdGVDRkRhdGEoKTsK
IAogICAgIFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPiBmb250RGVzY3JpcHRvcjsKLSNp
ZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFU
Rk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGF1dG8gYXJyYXkgPSBhZG9w
dENGKENURm9udE1hbmFnZXJDcmVhdGVGb250RGVzY3JpcHRvcnNGcm9tRGF0YShidWZmZXJEYXRh
LmdldCgpKSk7CiAgICAgaWYgKCFhcnJheSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlk
ZXJQYXN0ZWJvYXJkLmgJKHJldmlzaW9uIDI1NDUxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDggKzI3LDYgQEAKIAogI2ltcG9ydCA8V2ViQ29yZS9BYnN0cmFjdFBhc3RlYm9hcmQuaD4KIAot
I2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAotCiBzdHJ1Y3Qg
Q0dTaXplOwogCiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXZWJQcmVmZXJyZWRQcmVzZW50
YXRpb25TdHlsZSkgewpAQCAtMTE0LDUgKzExMiw0IEBAIFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZh
Y2UgV2ViSXRlbVByb3ZpZGUKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECiAKLSNlbmRpZiAvLyBf
X0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKICNlbmRpZiAvLyBUQVJH
RVRfT1NfSVBIT05FCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0J
KHJldmlzaW9uIDI1NDUxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTQxLDcg
KzQxLDcgQEAgQGludGVyZmFjZSBOU1VSTCAoKQogLSAoQ0ZVUkxSZWYpX2NmdXJsOwogQGVuZAog
Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDE0MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKElPUykgfHwgUExB
VEZPUk0oTUFDQ0FUQUxZU1QpCiBAaW50ZXJmYWNlIE5TSFRUUENvb2tpZVN0b3JhZ2UgKFN0YWdp
bmcpCiAtICh2b2lkKV9nZXRDb29raWVzRm9yVVJMOihOU1VSTCAqKXVybCBtYWluRG9jdW1lbnRV
Ukw6KE5TVVJMICopbWFpbkRvY3VtZW50VVJMIHBhcnRpdGlvbjooTlNTdHJpbmcgKilwYXJ0aXRp
b24gcG9saWN5UHJvcGVydGllczooTlNEaWN0aW9uYXJ5Kilwcm9wcyBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikoTlNBcnJheSAqKSljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpX3NldENv
b2tpZXM6KE5TQXJyYXkgKiljb29raWVzIGZvclVSTDooTlNVUkwgKilVUkwgbWFpbkRvY3VtZW50
VVJMOihOU1VSTCAqKW1haW5Eb2N1bWVudFVSTCBwb2xpY3lQcm9wZXJ0aWVzOihOU0RpY3Rpb25h
cnkqKSBwcm9wczsKQEAgLTIwMCw3ICsyMDAsNyBAQCBzdGF0aWMgdm9pZCBkZWxldGVIVFRQQ29v
a2llKENGSFRUUENvb2tpCiAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZURlbGV0ZUNvb2tpZShjb29r
aWVTdG9yYWdlLCBbY29va2llIF9HZXRJbnRlcm5hbENGSFRUUENvb2tpZV0pOwogfQogCi0jaWYg
KFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0
MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMjAwMDApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0o
TUFDQ0FUQUxZU1QpCiBzdGF0aWMgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gcG9saWN5UHJvcGVy
dGllcyhjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgTlNVUkwgKnVybCkKIHsKICAg
ICBzdGF0aWMgTlNVUkwgKmVtcHR5VVJMID0gW1tOU1VSTCBhbGxvY10gaW5pdFdpdGhTdHJpbmc6
QCIiXTsKQEAgLTIxOSw3ICsyMTksNyBAQCBzdGF0aWMgTlNBcnJheSAqY29va2llc0ZvclVSTChO
U0hUVFBDb29rCiAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFsmY29va2llc1B0cl0gKE5T
QXJyYXkgKmNvb2tpZXMpIHsKICAgICAgICAgY29va2llc1B0ciA9IHJldGFpblB0cihjb29raWVz
KTsKICAgICB9OwotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKQorI2lmIChQTEFURk9STShNQUMpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShJ
T1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGlmIChbc3RvcmFnZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF9nZXRDb29raWVzRm9yVVJMOm1haW5Eb2N1bWVudFVSTDpwYXJ0
aXRpb246cG9saWN5UHJvcGVydGllczpjb21wbGV0aW9uSGFuZGxlcjopXSkKICAgICAgICAgW3N0
b3JhZ2UgX2dldENvb2tpZXNGb3JVUkw6dXJsIG1haW5Eb2N1bWVudFVSTDptYWluRG9jdW1lbnRV
UkwgcGFydGl0aW9uOnBhcnRpdGlvbiBwb2xpY3lQcm9wZXJ0aWVzOnNhbWVTaXRlSW5mbyA/IHBv
bGljeVByb3BlcnRpZXMoc2FtZVNpdGVJbmZvLnZhbHVlKCksIHVybCkuZ2V0KCkgOiBudWxscHRy
IGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKICAgICBlbHNlCkBAIC0yMzYs
NyArMjM2LDcgQEAgc3RhdGljIHZvaWQgc2V0SFRUUENvb2tpZXNGb3JVUkwoQ0ZIVFRQQwogewog
ICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vz
c1Jhd0Nvb2tpZXMpKTsKICAgICBpZiAoIWNvb2tpZVN0b3JhZ2UpIHsKLSNpZiAoUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBM
QVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEyMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlT
VCkKICAgICAgICAgaWYgKFtOU0hUVFBDb29raWVTdG9yYWdlIGluc3RhbmNlc1Jlc3BvbmRUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihfc2V0Q29va2llczpmb3JVUkw6bWFpbkRvY3VtZW50VVJMOnBvbGlj
eVByb3BlcnRpZXM6KV0pCiAgICAgICAgICAgICBbW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVk
SFRUUENvb2tpZVN0b3JhZ2VdIF9zZXRDb29raWVzOmNvb2tpZXMgZm9yVVJMOnVybCBtYWluRG9j
dW1lbnRVUkw6bWFpbkRvY3VtZW50VVJMIHBvbGljeVByb3BlcnRpZXM6cG9saWN5UHJvcGVydGll
cyhzYW1lU2l0ZUluZm8sIHVybCkuZ2V0KCldOwogICAgICAgICBlbHNlCkBAIC0yNDQsNyArMjQ0
LDcgQEAgc3RhdGljIHZvaWQgc2V0SFRUUENvb2tpZXNGb3JVUkwoQ0ZIVFRQQwogICAgICAgICAg
ICAgW1tOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXSBzZXRDb29r
aWVzOmNvb2tpZXMgZm9yVVJMOnVybCBtYWluRG9jdW1lbnRVUkw6bWFpbkRvY3VtZW50VVJMXTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkKKyNpZiAoUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkg
fHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBpZiAoW05TSFRU
UENvb2tpZVN0b3JhZ2UgaW5zdGFuY2VzUmVzcG9uZFRvU2VsZWN0b3I6QHNlbGVjdG9yKF9zZXRD
b29raWVzOmZvclVSTDptYWluRG9jdW1lbnRVUkw6cG9saWN5UHJvcGVydGllczopXSkgewogICAg
ICAgICAvLyBGSVhNRTogU3RvcCBjcmVhdGluZyBhIG5ldyBOU0hUVFBDb29raWVTdG9yYWdlIG9i
amVjdCBlYWNoIHRpbWUgd2Ugd2FudCB0byBxdWVyeSB0aGUgY29va2llIGphci4KICAgICAgICAg
Ly8gTmV0d29ya1N0b3JhZ2VTZXNzaW9uIGNvdWxkIGluc3RlYWQga2VlcCBhIE5TSFRUUENvb2tp
ZVN0b3JhZ2Ugb2JqZWN0IGZvciB1cy4KQEAgLTI1NCw3ICsyNTQsNyBAQCBzdGF0aWMgdm9pZCBz
ZXRIVFRQQ29va2llc0ZvclVSTChDRkhUVFBDCiAjZW5kaWYKICAgICAgICAgYXV0byBjZkNvb2tp
ZXMgPSBhZG9wdENGKFtOU0hUVFBDb29raWUgX25zMmNmQ29va2llczpjb29raWVzXSk7CiAgICAg
ICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVzKGNvb2tpZVN0b3JhZ2UsIGNmQ29va2ll
cy5nZXQoKSwgW3VybCBfY2Z1cmxdLCBbbWFpbkRvY3VtZW50VVJMIF9jZnVybF0pOwotI2lmIChQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAw
KSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTIwMDAwKQorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1B
Q0NBVEFMWVNUKQogICAgIH0KICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHNhbWVTaXRlSW5mbyk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCShyZXZp
c2lvbiAyNTQ1MTApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1Mu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTExNjMsMTMgKzExNjMsMTMgQEAgRm9udENhc2NhZGVEZXNj
cmlwdGlvbiYgUmVuZGVyVGhlbWVJT1M6OgogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGb250
Q2FzY2FkZURlc2NyaXB0aW9uPiBzaG9ydEZvb3Rub3RlRm9udDsKICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gc2hvcnRDYXB0aW9uMUZvbnQ7CiAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IHRhbGxCb2R5Rm9u
dDsKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiBQ
TEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiB0aXRsZTBGb250OwogI2VuZGlmCiAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IHRpdGxlMUZvbnQ7
CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IHRpdGxl
MkZvbnQ7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+
IHRpdGxlM0ZvbnQ7Ci0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEw
MDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gdGl0bGU0Rm9udDsKICNl
bmRpZgogCkBAIC0xMTk3LDcgKzExOTcsNyBAQCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBSZW5k
ZXJUaGVtZUlPUzo6CiAgICAgICAgIHJldHVybiBoZWFkbGluZUZvbnQ7CiAgICAgY2FzZSBDU1NW
YWx1ZUFwcGxlU3lzdGVtQm9keToKICAgICAgICAgcmV0dXJuIGJvZHlGb250OwotI2lmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRGT1JNKElPUykg
fHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtVGl0
bGUwOgogICAgICAgICByZXR1cm4gdGl0bGUwRm9udDsKICNlbmRpZgpAQCAtMTIwNyw3ICsxMjA3
LDcgQEAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgUmVuZGVyVGhlbWVJT1M6OgogICAgICAgICBy
ZXR1cm4gdGl0bGUyRm9udDsKICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1UaXRsZTM6CiAg
ICAgICAgIHJldHVybiB0aXRsZTNGb250OwotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZ
U1QpCiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtVGl0bGU0OgogICAgICAgICByZXR1cm4g
dGl0bGU0Rm9udDsKICNlbmRpZgpAQCAtMTI2Niw3ICsxMjY2LDcgQEAgdm9pZCBSZW5kZXJUaGVt
ZUlPUzo6dXBkYXRlQ2FjaGVkU3lzdGVtRgogICAgICAgICB0ZXh0U3R5bGUgPSBrQ1RVSUZvbnRU
ZXh0U3R5bGVCb2R5OwogICAgICAgICBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVz
Y3JpcHRvckNyZWF0ZVdpdGhUZXh0U3R5bGUodGV4dFN0eWxlLCBjb250ZW50U2l6ZUNhdGVnb3J5
KCksIG51bGxwdHIpKTsKICAgICAgICAgYnJlYWs7Ci0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUND
QVRBTFlTVCkKICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1UaXRsZTA6CiAgICAgICAgIHRl
eHRTdHlsZSA9IGtDVFVJRm9udFRleHRTdHlsZVRpdGxlMDsKICAgICAgICAgZm9udERlc2NyaXB0
b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoVGV4dFN0eWxlKHRleHRTdHls
ZSwgY29udGVudFNpemVDYXRlZ29yeSgpLCBudWxscHRyKSk7CkBAIC0xMjg0LDcgKzEyODQsNyBA
QCB2b2lkIFJlbmRlclRoZW1lSU9TOjp1cGRhdGVDYWNoZWRTeXN0ZW1GCiAgICAgICAgIHRleHRT
dHlsZSA9IGtDVFVJRm9udFRleHRTdHlsZVRpdGxlMzsKICAgICAgICAgZm9udERlc2NyaXB0b3Ig
PSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoVGV4dFN0eWxlKHRleHRTdHlsZSwg
Y29udGVudFNpemVDYXRlZ29yeSgpLCBudWxscHRyKSk7CiAgICAgICAgIGJyZWFrOwotI2lmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRGT1JNKElP
UykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVt
VGl0bGU0OgogICAgICAgICB0ZXh0U3R5bGUgPSBrQ1RVSUZvbnRUZXh0U3R5bGVUaXRsZTQ7CiAg
ICAgICAgIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0
aFRleHRTdHlsZSh0ZXh0U3R5bGUsIGNvbnRlbnRTaXplQ2F0ZWdvcnkoKSwgbnVsbHB0cikpOwpJ
bmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDUxMCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjAtMDEtMTQgIEpvbmF0aGFuIEJl
ZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBvbGQgaU9TIHZlcnNp
b24gbWFjcm9zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDYwOTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4NDkxNjc1PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0FjdGl2aXR5VHJhY2tlci5oOiBSZW1vdmUgaU9TIDEyIHZlcnNpb24gY2hlY2tzLgorICAg
ICAgICAqIFBsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaDogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9u
IGNoZWNrcy4KKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmg6
IFJlbW92ZSBpT1MgMTIgdmVyc2lvbiBjaGVja3MuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9BUElBdHRhY2htZW50Q29jb2EubW06IFJlbW92ZSBpT1MgMTIgdmVyc2lvbiBjaGVja3Mu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tOgorICAgICAgICAo
Y29udGVudE9mZnNldEJvdW5kZWRJblZhbGlkUmFuZ2UpOiBSZW1vdmUgaU9TIDExIHZlcnNpb24g
Y2hlY2tzLgorICAgICAgICAoLVtXS1dlYlZpZXcgYWN0aXZlVmlld0xheW91dFNpemU6XSk6IERp
dHRvLgorICAgICAgICAoLVtXS1dlYlZpZXcgc2FmZUFyZWFJbnNldHNEaWRDaGFuZ2VdKTogRGl0
dG8uCisgICAgICAgICgtW1dLV2ViVmlldyBfdXBkYXRlU2Nyb2xsVmlld0luc2V0QWRqdXN0bWVu
dEJlaGF2aW9yXSk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLm1tOgorICAgICAgICAoLVtXS0NoaWxkU2Nyb2xsVmll
dyBpbml0V2l0aEZyYW1lOl0pOiBSZW1vdmUgaU9TIDExIHZlcnNpb24gY2hlY2tzLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IGdlc3R1cmVSZWNvZ25pemVyOmNhbkJlUHJldmVudGVkQnlHZXN0dXJl
UmVjb2duaXplcjpdKTogUmVtb3ZlIGlPUyAxMiB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBnZXN0dXJlUmVjb2duaXplcjpzaG91bGRSZWNvZ25pemVTaW11bHRhbmVv
dXNseVdpdGhHZXN0dXJlUmVjb2duaXplcjpdKTogRGl0dG8uCisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX3Nob3dQbGF5YmFja1RhcmdldFBpY2tlcjpmcm9tUmVjdDpyb3V0ZVNoYXJpbmdQb2xp
Y3k6cm91dGluZ0NvbnRleHRVSUQ6XSk6IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3MuCisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgdW5vY2NsdWRlZFdpbmRvd0JvdW5kc0ZvckFjdGlvblNo
ZWV0QXNzaXN0YW50Ol0pOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLU2Nyb2xs
Vmlldy5oOiBSZW1vdmUgaU9TIDExIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV0tTY3JvbGxWaWV3Lm1tOgorICAgICAgICAoLVtXS1Njcm9sbFZpZXcgaW5pdFdpdGhG
cmFtZTpdKTogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL2Zvcm1zL1dLQWlyUGxheVJvdXRlUGlja2VyLmg6IFJlbW92ZSBpT1MgMTEgdmVyc2lv
biBjaGVja3MuCisKIDIwMjAtMDEtMTQgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBNZWRpYVN0cmVhbSBhdWRpbyB0cmFjayByZW5k
ZXJpbmcgaW4gR1BVUHJvY2VzcwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQWN0aXZpdHlUcmFja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQWN0aXZpdHlUcmFja2VyLmgJKHJldmlzaW9uIDI1NDUxMCkKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0FjdGl2aXR5VHJhY2tlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgVVNF
KEFQUExFX0lOVEVSTkFMX1NESykgJiYgKChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKSB8fCBQTEFURk9STShX
QVRDSE9TKSkKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKSAmJiAoKFBMQVRGT1JNKE1BQykg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JN
KElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpIHx8IFBMQVRGT1JNKFdBVENIT1MpKQogI2Rl
ZmluZSBIQVZFX05XX0FDVElWSVRZIDEKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAkocmV2aXNpb24gMjU0NTEwKQorKysgU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3NCw3
ICs0NzQsNyBAQCB0eXBlZGVmIGVudW0gewogQHByb3BlcnR5IChyZWFkb25seSkgTlNTdHJpbmcg
Kl9ob3N0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyOwogQGVuZAogCi0jaWYgX19JUEhPTkVf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQ
TEFURk9STShNQUNDQVRBTFlTVCkKIEBpbnRlcmZhY2UgTlNVUkwgKCkKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCBjb3B5LCBzZXR0ZXI9X3NldFRpdGxlOikgTlNTdHJpbmcgKl90aXRsZTsKIEBlbmQK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVs
dFZhbHVlcy5oCShyZXZpc2lvbiAyNTQ1MTApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
cmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjI2LDcgKzIyNiw3
IEBACiAjZGVmaW5lIERFRkFVTFRfUFJPQ0VTU19TV0FQX09OX0NST1NTX1NJVEVfTkFWSUdBVElP
Tl9FTkFCTEVEIGZhbHNlCiAjZW5kaWYKIAotI2lmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBf
X0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApIHx8IChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFU
Rk9STShXQVRDSE9TKQorI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKFdBVENI
T1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogI2RlZmluZSBERUZBVUxUX0NPTklDX0dSQURJ
RU5UX0VOQUJMRUQgdHJ1ZQogI2Vsc2UKICNkZWZpbmUgREVGQVVMVF9DT05JQ19HUkFESUVOVF9F
TkFCTEVEIGZhbHNlCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJ
QXR0YWNobWVudENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0JKHJldmlzaW9uIDI1NDUxMCkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0JKHdv
cmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKICNlbmRpZgogI2ltcG9ydCA8cGFsL3NwaS9j
b2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KIAotI2RlZmluZSBDQU5fU0VDVVJFTFlfQVJDSElW
RV9GSUxFX1dSQVBQRVIgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCisjZGVmaW5lIENBTl9TRUNVUkVMWV9B
UkNISVZFX0ZJTEVfV1JBUFBFUiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUND
QVRBTFlTVCkKIAogbmFtZXNwYWNlIEFQSSB7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCShyZXZpc2lvbiAyNTQ1MTApCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQkod29ya2luZyBj
b3B5KQpAQCAtNzA1LDcgKzcwNSw3IEBAIC0gKHZvaWQpX2RpZENvbW1pdExvYWRGb3JNYWluRnJh
bWUKIAogc3RhdGljIENHUG9pbnQgY29udGVudE9mZnNldEJvdW5kZWRJblZhbGlkUmFuZ2UoVUlT
Y3JvbGxWaWV3ICpzY3JvbGxWaWV3LCBDR1BvaW50IGNvbnRlbnRPZmZzZXQpCiB7Ci0jaWYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9T
KSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBVSUVkZ2VJbnNldHMgY29udGVudEluc2V0
cyA9IHNjcm9sbFZpZXcuYWRqdXN0ZWRDb250ZW50SW5zZXQ7CiAjZWxzZQogICAgIFVJRWRnZUlu
c2V0cyBjb250ZW50SW5zZXRzID0gc2Nyb2xsVmlldy5jb250ZW50SW5zZXQ7CkBAIC0xNzEyLDcg
KzE3MTIsNyBAQCAtIChXZWJDb3JlOjpGbG9hdFNpemUpYWN0aXZlVmlld0xheW91dFNpCiAgICAg
aWYgKF92aWV3TGF5b3V0U2l6ZU92ZXJyaWRlKQogICAgICAgICByZXR1cm4gV2ViQ29yZTo6Rmxv
YXRTaXplKF92aWV3TGF5b3V0U2l6ZU92ZXJyaWRlLnZhbHVlKCkpOwogCi0jaWYgX19JUEhPTkVf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQ
TEFURk9STShNQUNDQVRBTFlTVCkKICAgICByZXR1cm4gV2ViQ29yZTo6RmxvYXRTaXplKFVJRWRn
ZUluc2V0c0luc2V0UmVjdChDR1JlY3RNYWtlKDAsIDAsIGJvdW5kcy5zaXplLndpZHRoLCBib3Vu
ZHMuc2l6ZS5oZWlnaHQpLCBzZWxmLl9zY3JvbGxWaWV3U3lzdGVtQ29udGVudEluc2V0KS5zaXpl
KTsKICNlbHNlCiAgICAgcmV0dXJuIFdlYkNvcmU6OkZsb2F0U2l6ZSB7IGJvdW5kcy5zaXplIH07
CkBAIC0xNzkwLDcgKzE3OTAsNyBAQCAtIChCT09MKV9zY3JvbGxWaWV3SXNSdWJiZXJCYW5kaW5n
CiAgICAgcmV0dXJuICFwb2ludHNFcXVhbEluRGV2aWNlUGl4ZWxzKGNvbnRlbnRPZmZzZXQsIGJv
dW5kZWRPZmZzZXQsIGRldmljZVNjYWxlRmFjdG9yKTsKIH0KIAotI2lmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZP
Uk0oTUFDQ0FUQUxZU1QpCiAtICh2b2lkKXNhZmVBcmVhSW5zZXRzRGlkQ2hhbmdlCiB7CiAgICAg
W3N1cGVyIHNhZmVBcmVhSW5zZXRzRGlkQ2hhbmdlXTsKQEAgLTIzMTMsNyArMjMxMyw3IEBAIC0g
KFdLUGFzc3dvcmRWaWV3ICopX3Bhc3N3b3JkVmlldwogCiAtICh2b2lkKV91cGRhdGVTY3JvbGxW
aWV3SW5zZXRBZGp1c3RtZW50QmVoYXZpb3IKIHsKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NB
VEFMWVNUKQogICAgIGlmICghW19zY3JvbGxWaWV3IF9jb250ZW50SW5zZXRBZGp1c3RtZW50QmVo
YXZpb3JXYXNFeHRlcm5hbGx5T3ZlcnJpZGRlbl0pCiAgICAgICAgIFtfc2Nyb2xsVmlldyBfc2V0
Q29udGVudEluc2V0QWRqdXN0bWVudEJlaGF2aW9ySW50ZXJuYWw6c2VsZi5fc2FmZUFyZWFTaG91
bGRBZmZlY3RPYnNjdXJlZEluc2V0cyA/IFVJU2Nyb2xsVmlld0NvbnRlbnRJbnNldEFkanVzdG1l
bnRBbHdheXMgOiBVSVNjcm9sbFZpZXdDb250ZW50SW5zZXRBZGp1c3RtZW50TmV2ZXJdOwogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Jl
bW90ZUxheWVyVHJlZVZpZXdzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlVmlld3MubW0JKHJldmlzaW9u
IDI1NDUxMCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3Mv
UmVtb3RlTGF5ZXJUcmVlVmlld3MubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxMCw3ICszMTAsNyBA
QCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyCiAgICAgaWYgKCFzZWxm
KQogICAgICAgICByZXR1cm4gbmlsOwogCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlT
VCkKICAgICBzZWxmLmNvbnRlbnRJbnNldEFkanVzdG1lbnRCZWhhdmlvciA9IFVJU2Nyb2xsVmll
d0NvbnRlbnRJbnNldEFkanVzdG1lbnROZXZlcjsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0JKHJldmlzaW9uIDI1NDUxMCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTE5OTMsOSArMTk5Mywx
MCBAQCAtIChCT09MKWdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvCiAtIChCT09MKWdl
c3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvZ25pemVyICopcHJldmVudGVkR2VzdHVyZVJl
Y29nbml6ZXIgY2FuQmVQcmV2ZW50ZWRCeUdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNv
Z25pemVyICopcHJldmVudGluZ0dlc3R1cmVSZWNvZ25pemVyIHsKICAgICAvLyBEb24ndCBhbGxv
dyB0aGUgaGlnaGxpZ2h0IHRvIGJlIHByZXZlbnRlZCBieSBhIHNlbGVjdGlvbiBnZXN0dXJlLiBQ
cmVzcy1hbmQtaG9sZCBvbiBhIGxpbmsgc2hvdWxkIGhpZ2hsaWdodCB0aGUgbGluaywgbm90IHNl
bGVjdCBpdC4KICAgICBib29sIGlzRm9yY2VQcmVzc0dlc3R1cmUgPSBOTzsKLSNpZiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAKKyNpZiBQTEFURk9STShJT1MpIHx8
IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGlzRm9yY2VQcmVzc0dlc3R1cmUgPSAocHJldmVu
dGluZ0dlc3R1cmVSZWNvZ25pemVyID09IF90ZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQuZ2V0KCku
Zm9yY2VQcmVzc0dlc3R1cmUpOwogI2VuZGlmCisKICNpZiBQTEFURk9STShNQUNDQVRBTFlTVCkK
ICAgICBpZiAoKHByZXZlbnRpbmdHZXN0dXJlUmVjb2duaXplciA9PSBfdGV4dEludGVyYWN0aW9u
QXNzaXN0YW50LmdldCgpLmxvdXBlR2VzdHVyZSkgJiYgKHByZXZlbnRlZEdlc3R1cmVSZWNvZ25p
emVyID09IF9oaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciB8fCBwcmV2ZW50ZWRH
ZXN0dXJlUmVjb2duaXplciA9PSBfbG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgfHwgcHJldmVu
dGVkR2VzdHVyZVJlY29nbml6ZXIgPT0gX3RleHRJbnRlcmFjdGlvbkFzc2lzdGFudC5nZXQoKS5m
b3JjZVByZXNzR2VzdHVyZSkpCiAgICAgICAgIHJldHVybiBZRVM7CkBAIC0yMDMzLDcgKzIwMzQs
NiBAQCAtIChCT09MKWdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvCiAgICAgICAgIHJl
dHVybiBZRVM7CiAjZW5kaWYKIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEyMDAwMAogI2lmIFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGlmIChpc1NhbWVQYWly
KGdlc3R1cmVSZWNvZ25pemVyLCBvdGhlckdlc3R1cmVSZWNvZ25pemVyLCBfdGV4dEludGVyYWN0
aW9uQXNzaXN0YW50LmdldCgpLmxvdXBlR2VzdHVyZSwgX3RleHRJbnRlcmFjdGlvbkFzc2lzdGFu
dC5nZXQoKS5mb3JjZVByZXNzR2VzdHVyZSkpCiAgICAgICAgIHJldHVybiBZRVM7CkBAIC0yMDQ0
LDkgKzIwNDQsMTIgQEAgLSAoQk9PTClnZXN0dXJlUmVjb2duaXplcjooVUlHZXN0dXJlUmVjbwog
ICAgIGlmICgoW2dlc3R1cmVSZWNvZ25pemVyIGlzS2luZE9mQ2xhc3M6W19VSUxvb2t1cEdlc3R1
cmVSZWNvZ25pemVyIGNsYXNzXV0gJiYgW290aGVyR2VzdHVyZVJlY29nbml6ZXIgaXNLaW5kT2ZD
bGFzczpbVUlMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciBjbGFzc11dKSB8fCAoW290aGVyR2Vz
dHVyZVJlY29nbml6ZXIgaXNLaW5kT2ZDbGFzczpbVUlMb25nUHJlc3NHZXN0dXJlUmVjb2duaXpl
ciBjbGFzc11dICYmIFtnZXN0dXJlUmVjb2duaXplciBpc0tpbmRPZkNsYXNzOltfVUlMb29rdXBH
ZXN0dXJlUmVjb2duaXplciBjbGFzc11dKSkKICAgICAgICAgcmV0dXJuIFlFUzsKICNlbmRpZgor
CisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBpZiAoaXNT
YW1lUGFpcihnZXN0dXJlUmVjb2duaXplciwgb3RoZXJHZXN0dXJlUmVjb2duaXplciwgX2hpZ2hs
aWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyLmdldCgpLCBfdGV4dEludGVyYWN0aW9uQXNz
aXN0YW50LmdldCgpLmZvcmNlUHJlc3NHZXN0dXJlKSkKICAgICAgICAgcmV0dXJuIFlFUzsKICNl
bmRpZgorCiAgICAgaWYgKGlzU2FtZVBhaXIoZ2VzdHVyZVJlY29nbml6ZXIsIG90aGVyR2VzdHVy
ZVJlY29nbml6ZXIsIF9zaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKSwgX3RleHRJbnRl
cmFjdGlvbkFzc2lzdGFudC5nZXQoKS5zaW5nbGVUYXBHZXN0dXJlKSkKICAgICAgICAgcmV0dXJu
IFlFUzsKIApAQCAtNjQyOCw3ICs2NDMxLDcgQEAgLSAodm9pZCl1cGRhdGVUZXh0U3VnZ2VzdGlv
bnNGb3JJbnB1dERlbAogLSAodm9pZClfc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyOihCT09MKWhh
c1ZpZGVvIGZyb21SZWN0Oihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JillbGVtZW50UmVjdCByb3V0
ZVNoYXJpbmdQb2xpY3k6KFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSlyb3V0ZVNoYXJpbmdQ
b2xpY3kgcm91dGluZ0NvbnRleHRVSUQ6KE5TU3RyaW5nICopcm91dGluZ0NvbnRleHRVSUQKIHsK
ICNpZiBFTkFCTEUoQUlSUExBWV9QSUNLRVIpCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTEwMDAwICYmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQ
TEVUVikKKyNpZiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCiAgICAg
aWYgKCFfYWlyUGxheVJvdXRlUGlja2VyKQogICAgICAgICBfYWlyUGxheVJvdXRlUGlja2VyID0g
YWRvcHROUyhbW1dLQWlyUGxheVJvdXRlUGlja2VyIGFsbG9jXSBpbml0XSk7CiAgICAgW19haXJQ
bGF5Um91dGVQaWNrZXIgc2hvd0Zyb21WaWV3OnNlbGYgcm91dGVTaGFyaW5nUG9saWN5OnJvdXRl
U2hhcmluZ1BvbGljeSByb3V0aW5nQ29udGV4dFVJRDpyb3V0aW5nQ29udGV4dFVJRCBoYXNWaWRl
bzpoYXNWaWRlb107CkBAIC02NjIzLDcgKzY2MjYsNyBAQCAtIChCT09MKWFjdGlvblNoZWV0QXNz
aXN0YW50OihXS0FjdGlvblNoCiAgICAgcmV0dXJuIE5POwogfQogCi0jaWYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFU
Rk9STShNQUNDQVRBTFlTVCkKIC0gKENHUmVjdCl1bm9jY2x1ZGVkV2luZG93Qm91bmRzRm9yQWN0
aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQKIHsK
ICAgICBVSUVkZ2VJbnNldHMgY29udGVudEluc2V0ID0gW1tfd2ViVmlldyBzY3JvbGxWaWV3XSBh
ZGp1c3RlZENvbnRlbnRJbnNldF07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tTY3JvbGxWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLU2Nyb2xsVmlldy5oCShyZXZpc2lvbiAyNTQ1MTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tTY3JvbGxWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAK
IC0gKHZvaWQpX3NldFNjcm9sbEVuYWJsZWRJbnRlcm5hbDooQk9PTCllbmFibGVkOwogLSAodm9p
ZClfc2V0Wm9vbUVuYWJsZWRJbnRlcm5hbDooQk9PTCllbmFibGVkOwogCi0jaWYgX19JUEhPTkVf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQ
TEFURk9STShNQUNDQVRBTFlTVCkKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24sIHJlYWRv
bmx5KSBCT09MIF9jb250ZW50SW5zZXRBZGp1c3RtZW50QmVoYXZpb3JXYXNFeHRlcm5hbGx5T3Zl
cnJpZGRlbjsKIC0gKHZvaWQpX3NldENvbnRlbnRJbnNldEFkanVzdG1lbnRCZWhhdmlvckludGVy
bmFsOihVSVNjcm9sbFZpZXdDb250ZW50SW5zZXRBZGp1c3RtZW50QmVoYXZpb3IpaW5zZXRBZGp1
c3RtZW50QmVoYXZpb3I7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS1Njcm9sbFZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLU2Nyb2xsVmlldy5tbQkocmV2aXNpb24gMjU0NTEwKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLU2Nyb2xsVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTI3LDcgKzEy
Nyw3IEBAIC0gKGlkKWZvcndhcmRpbmdUYXJnZXRGb3JTZWxlY3RvcjooU0VMKWEKICAgICBXZWFr
T2JqQ1B0cjxpZCA8VUlTY3JvbGxWaWV3RGVsZWdhdGU+PiBfZXh0ZXJuYWxEZWxlZ2F0ZTsKICAg
ICBXS1Njcm9sbFZpZXdEZWxlZ2F0ZUZvcndhcmRlciAqX2RlbGVnYXRlRm9yd2FyZGVyOwogCi0j
aWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZP
Uk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBCT09MIF9jb250ZW50SW5zZXRB
ZGp1c3RtZW50QmVoYXZpb3JXYXNFeHRlcm5hbGx5T3ZlcnJpZGRlbjsKICNlbmRpZgogICAgIENH
RmxvYXQgX2tleWJvYXJkQm90dG9tSW5zZXRBZGp1c3RtZW50OwpAQCAtMTUzLDcgKzE1Myw3IEBA
IC0gKGlkKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZQogICAgIHNlbGYuZGlyZWN0aW9uYWxM
b2NrRW5hYmxlZCA9IFlFUzsKICAgICBbc2VsZiBfc2V0SW5kaWNhdG9ySW5zZXRBZGp1c3RtZW50
QmVoYXZpb3I6VUlTY3JvbGxWaWV3SW5kaWNhdG9ySW5zZXRBZGp1c3RtZW50QWx3YXlzXTsKIAot
I2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRG
T1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgX2NvbnRlbnRJbnNldEFkanVz
dG1lbnRCZWhhdmlvcldhc0V4dGVybmFsbHlPdmVycmlkZGVuID0gKHNlbGYuY29udGVudEluc2V0
QWRqdXN0bWVudEJlaGF2aW9yICE9IFVJU2Nyb2xsVmlld0NvbnRlbnRJbnNldEFkanVzdG1lbnRB
dXRvbWF0aWMpOwogI2VuZGlmCiAgICAgCkBAIC0yNzgsNyArMjc4LDcgQEAgLSAodm9pZClzZXRD
b250ZW50SW5zZXQ6KFVJRWRnZUluc2V0cyljbwogICAgIFtfaW50ZXJuYWxEZWxlZ2F0ZSBfc2No
ZWR1bGVWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVdOwogfQogCi0jaWYgX19JUEhPTkVfT1NfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9S
TShNQUNDQVRBTFlTVCkKIAogLSAoQk9PTClfY29udGVudEluc2V0QWRqdXN0bWVudEJlaGF2aW9y
V2FzRXh0ZXJuYWxseU92ZXJyaWRkZW4KIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9mb3Jtcy9XS0FpclBsYXlSb3V0ZVBpY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0FpclBsYXlSb3V0ZVBpY2tlci5oCShyZXZpc2lv
biAyNTQ1MTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tBaXJQbGF5
Um91dGVQaWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKEFJUlBMQVlfUElDS0VSKQogCi0jaWYgX19JUEhP
TkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwICYmICFQTEFURk9STShXQVRDSE9T
KSAmJiAhUExBVEZPUk0oQVBQTEVUVikKKyNpZiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRG
T1JNKEFQUExFVFYpCiAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTQ1MTApCisrKyBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBA
QAorMjAyMC0wMS0xNCAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVtb3ZlIG9sZCBpT1MgdmVyc2lvbiBtYWNyb3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjA5NgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNTg0OTE2NzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06IFJlbW92ZSBpT1MgMTEg
dmVyc2lvbiBjaGVja3MuCisgICAgICAgICogV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5o
OiBEaXR0by4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06IERpdHRvLgorICAgICAgICAq
IFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDogRGl0dG8uCisKIDIwMjAtMDEtMTQgIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0ludGVncmF0aW9uXSBT
dXBwb3J0IHRoZSBmZWF0dXJlIGZsYWcgaW4gRHVtcFJlbmRlclRyZWUKSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQubW0JKHJldmlzaW9uIDI1NDUxMCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDE4LDcg
KzQxOCw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXIKICAgICAv
LyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9CiAKLSNpZiAoUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEw
MDAwKSB8fCBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUMp
IHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogCiAvLyBGSVhNRTogUmVtb3ZlIGJvdGggdGhpcyBz
dHViIGFuZCB0aGUgcmVhbCB2ZXJzaW9uIG9mIHRoaXMgZnVuY3Rpb24gYmVsb3cgb25jZSB3ZSBk
b24ndCBuZWVkIHRoZSByZWFsIHZlcnNpb24gb24gYW55IHN1cHBvcnRlZCBwbGF0Zm9ybS4KIC8v
IFRoaXMgc3R1YiBpcyBub3QgdXNlZCBvdXRzaWRlIFdlYktpdCwgYnV0IGl0J3MgaGVyZSBzbyB3
ZSB3b24ndCBnZXQgYSBsaW5rZXIgZXJyb3IuCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oCShyZXZpc2lvbiAy
NTQ1MTApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQ
cml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAKICNlbmRpZgogI2VuZGlm
CiAKLSNpZiBUQVJHRVRfT1NfSVBIT05FICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDExMDAwMAorI2lmIFRBUkdFVF9PU19JUEhPTkUKIEBwcm90b2NvbCBVSURyb3BTZXNz
aW9uOwogI2VuZGlmCiAKQEAgLTI5OSw3ICsyOTksNiBAQCBAaW50ZXJmYWNlIE5TT2JqZWN0IChX
ZWJVSURlbGVnYXRlUHJpdmF0CiAKIC0gKEJPT0wpd2ViVmlld0NhbkNoZWNrR2VvbG9jYXRpb25B
dXRob3JpemF0aW9uU3RhdHVzOihXZWJWaWV3ICopc2VuZGVyOwogCi0jaWYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCiAvKiEKICBAbWV0aG9kIHdlYlZpZXc6ZHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvclNlc3Npb246CiAgQHBhcmFtIHNlbmRlciBUaGUgV2Vi
VmlldyBzZW5kaW5nIHRoZSBkZWxlZ2F0ZSBtZXRob2QKQEAgLTMwOCw3ICszMDcsNiBAQCBAaW50
ZXJmYWNlIE5TT2JqZWN0IChXZWJVSURlbGVnYXRlUHJpdmF0CiAgKi8KIC0gKFdlYkRyYWdEZXN0
aW5hdGlvbkFjdGlvbil3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRyYWdEZXN0aW5hdGlvbkFj
dGlvbk1hc2tGb3JTZXNzaW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbjsKICNlbmRpZgot
I2VuZGlmCiAKIC0gKE5TRGF0YSAqKXdlYkNyeXB0b01hc3RlcktleUZvcldlYlZpZXc6KFdlYlZp
ZXcgKilzZW5kZXI7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0JKHJldmlzaW9uIDI1NDUxMCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTk2Niw3ICsxOTY2LDcgQEAgLSAo
dm9pZClfZGlkQ29uY2x1ZGVFZGl0RHJhZwogICAgIH0KIH0KIAotI2VsaWYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjZWxpZiBQTEFURk9STShJT1MpIHx8IFBM
QVRGT1JNKE1BQ0NBVEFMWVNUKQogCiAtIChCT09MKV9yZXF1ZXN0U3RhcnREYXRhSW50ZXJhY3Rp
b246KENHUG9pbnQpY2xpZW50UG9zaXRpb24gZ2xvYmFsUG9zaXRpb246KENHUG9pbnQpZ2xvYmFs
UG9zaXRpb24KIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
d1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXdQcml2YXRlLmgJKHJldmlzaW9uIDI1NDUxMCkKKysrIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDcg
KzExNyw3IEBAIGV4dGVybiBOU1N0cmluZyAqV2ViUXVpY2tMb29rRmlsZU5hbWVLZXkKIGV4dGVy
biBOU1N0cmluZyAqV2ViUXVpY2tMb29rVVRJS2V5OwogI2VuZGlmCiAKLSNpZiBUQVJHRVRfT1Nf
SVBIT05FICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lm
IFRBUkdFVF9PU19JUEhPTkUKIEBwcm90b2NvbCBVSURyb3BTZXNzaW9uOwogI2VuZGlmCiAKQEAg
LTQ3OSw3ICs0NzksNiBAQCBDb3VsZCBiZSB3b3J0aCBhZGRpbmcgdG8gdGhlIEFQSS4KIAogLSAo
dm9pZClfcmVwbGFjZUN1cnJlbnRIaXN0b3J5SXRlbTooV2ViSGlzdG9yeUl0ZW0gKilpdGVtOwog
Ci0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCiAtIChCT09M
KV9yZXF1ZXN0U3RhcnREYXRhSW50ZXJhY3Rpb246KENHUG9pbnQpY2xpZW50UG9zaXRpb24gZ2xv
YmFsUG9zaXRpb246KENHUG9pbnQpZ2xvYmFsUG9zaXRpb247CiAtIChXZWJVSVRleHRJbmRpY2F0
b3JEYXRhICopX2dldERhdGFJbnRlcmFjdGlvbkRhdGE7CiBAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHksIHN0cm9uZywgZ2V0dGVyPV9kYXRhT3BlcmF0aW9uVGV4dEluZGljYXRvcikgV2Vi
VUlUZXh0SW5kaWNhdG9yRGF0YSAqZGF0YU9wZXJhdGlvblRleHRJbmRpY2F0b3I7CkBAIC00OTUs
NyArNDk0LDYgQEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBBUEkuCiAtICh2b2lkKV9l
bmRlZERhdGFJbnRlcmFjdGlvbjooQ0dQb2ludCljbGllbnRQb3NpdGlvbiBnbG9iYWw6KENHUG9p
bnQpZ2xvYmFsUG9zaXRpb247CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgZ2V0
dGVyPV9kYXRhSW50ZXJhY3Rpb25DYXJldFJlY3QpIENHUmVjdCBkYXRhSW50ZXJhY3Rpb25DYXJl
dFJlY3Q7Ci0jZW5kaWYKIAogLy8gRGVwcmVjYXRlZC4gVXNlIC1bV2ViRGF0YVNvdXJjZSBfcXVp
Y2tMb29rQ29udGVudF0gaW5zdGVhZC4KIC0gKE5TRGljdGlvbmFyeSAqKXF1aWNrTG9va0NvbnRl
bnRGb3JVUkw6KE5TVVJMICopdXJsOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjU0NTEwKQorKysgVG9vbHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDEtMTQgIEpvbmF0aGFuIEJl
ZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBvbGQgaU9TIHZlcnNp
b24gbWFjcm9zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDYwOTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4NDkxNjc1PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rVGVzdC5tbToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOiBSZW1vdmUgaU9TIDExIHZlcnNpb24gY2hlY2tzLgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRp
b24ubW06IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3MuCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbTogRGl0dG8uCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0hUVFBDb29raWVTdG9yZS5t
bTogUmVtb3ZlIGlPUyAxMiB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcubW06CisgICAgICAgICgtW1Rlc3RSdW5uZXJX
S1dlYlZpZXcgc2V0T3ZlcnJpZGVTYWZlQXJlYUluc2V0czpdKTogUmVtb3ZlIGlPUyAxMSB2ZXJz
aW9uIGNoZWNrcy4KKwogMjAyMC0wMS0xNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5j
b20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIFN1cHBvcnQgdGhlIGZlYXR1cmUgZmxh
ZyBpbiBEdW1wUmVuZGVyVHJlZQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rVGVzdC5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmtU
ZXN0Lm1tCShyZXZpc2lvbiAyNTQ1MTApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmtUZXN0Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDEsMTIgKzE0MSwxMiBAQCBURVNUKEFWRm91bmRhdGlvblNvZnRMaW5rLCBDb25zdGFudHMp
CiAgICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZTYW1wbGVSYXRlS2V5KCkpCiAg
ICAgICAgIEVYUEVDVF9UUlVFKFtBVlNhbXBsZVJhdGVLZXkgaXNFcXVhbFRvU3RyaW5nOkAiQVZT
YW1wbGVSYXRlS2V5Il0pOwogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oSU9TKSAm
JiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApIHx8IFBMQVRGT1JN
KFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQUExFVFYpCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFU
Rk9STShJT1MpIHx8IFBMQVRGT1JNKFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQUExFVFYpCiAgICAg
RVhQRUNUX1RSVUUoUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVlVSTEFzc2V0T3V0T2ZCYW5k
TUlNRVR5cGVLZXkoKSk7CiAgICAgRVhQRUNUX1RSVUUoW0FWVVJMQXNzZXRPdXRPZkJhbmRNSU1F
VHlwZUtleSBpc0VxdWFsVG9TdHJpbmc6QCJBVlVSTEFzc2V0T3V0T2ZCYW5kTUlNRVR5cGVLZXki
XSk7CiAjZW5kaWYKIAotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApIHx8IFBMQVRGT1JNKFdBVENIT1MpIHx8IFBM
QVRGT1JNKEFQUExFVFYpCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oV0FU
Q0hPUykgfHwgUExBVEZPUk0oQVBQTEVUVikKICAgICBFWFBFQ1RfVFJVRShQQUw6OmNhbkxvYWRf
QVZGb3VuZGF0aW9uX0FWVVJMQXNzZXRVc2VDbGllbnRVUkxMb2FkaW5nRXhjbHVzaXZlbHkoKSk7
CiAgICAgRVhQRUNUX1RSVUUoW0FWVVJMQXNzZXRVc2VDbGllbnRVUkxMb2FkaW5nRXhjbHVzaXZl
bHkgaXNFcXVhbFRvU3RyaW5nOkAiQVZVUkxBc3NldFVzZUNsaWVudFVSTExvYWRpbmdFeGNsdXNp
dmVseSJdKTsKICNlbmRpZgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCShy
ZXZpc2lvbiAyNTQ1MTApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MzkyLDcgKzYz
OTIsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBQYWdlT3ZlcmxheUxheWVyUGVyc2lzCiAjZW5kaWYK
IH0KIAotI2lmIFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkK
IAogVEVTVChQcm9jZXNzU3dhcCwgUXVpY2tMb29rUmVxdWVzdHNQYXNzd29yZEFmdGVyU3dhcCkK
IHsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2ht
ZW50VGVzdHMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQkocmV2aXNpb24gMjU0NTEwKQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQkod29y
a2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCAtIChfV0tBdHRhY2htZW50ICopX2F0dGFjaG1l
bnRXaXRoTmFtZTooCiB9CiBAZW5kCiAKLSNkZWZpbmUgVVNFU19NT0RFUk5fQVRUUklCVVRFRF9T
VFJJTkdfQ09OVkVSU0lPTiAoKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkgfHwgUExBVEZPUk0oTUFDKSkKKyNkZWZpbmUg
VVNFU19NT0RFUk5fQVRUUklCVVRFRF9TVFJJTkdfQ09OVkVSU0lPTiAoUExBVEZPUk0oSU9TKSB8
fCBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKSkKIAogQGludGVyZmFjZSBB
dHRhY2htZW50VXBkYXRlT2JzZXJ2ZXIgOiBOU09iamVjdCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4K
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNBcnJheSAqaW5zZXJ0ZWQ7CkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSFRUUENvb2tpZVN0b3Jl
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V0tIVFRQQ29va2llU3RvcmUubW0JKHJldmlzaW9uIDI1NDUxMCkKKysrIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTM0Nyw3ICszNDcsNyBAQCBURVNUKFdlYktpdCwgV0tIVFRQQ29va2llU3RvcmVIdHRw
T25seSkgCiAgICAgW2Nvb2tpZXMgcmVsZWFzZV07CiB9CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAm
JiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JN
KElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAw
MCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKIFRF
U1QoV2ViS2l0LCBXS0hUVFBDb29raWVTdG9yZUNyZWF0aW9uVGltZSkgCiB7ICAgCiAgICAgYXV0
byBkYXRhU3RvcmUgPSBbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdOwpAQCAt
NDAxLDcgKzQwMSw3IEBAIFRFU1QoV2ViS2l0LCBXS0hUVFBDb29raWVTdG9yZUNyZWF0aW9uVGkK
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdEZsYWcpOwogICAgIGdvdEZsYWcgPSBm
YWxzZTsKIH0KLSNlbmRpZiAvLyAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkKKyNlbmRpZiAvLyAoUExBVEZP
Uk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwg
UExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKIAogLy8gRklYTUU6IFRoaXMg
I2lmIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzM1MzQ0MjAyPiBpcyBy
ZXNvbHZlZCBhbmQgYm90cyBhcmUgdXBkYXRlZC4KICNpZiBQTEFURk9STShNQUMpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA8PSAxMDEzMDEKSW5kZXg6IFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcubW0JKHJldmlzaW9u
IDI1NDUxMCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2Vi
Vmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDI1LDcgKzQyNSw3IEBAIC0gKHZvaWQpYWNjZXNz
aWJpbGl0eVJldHJpZXZlU3BlYWtTZWxlY3QKIC0gKHZvaWQpc2V0T3ZlcnJpZGVTYWZlQXJlYUlu
c2V0czooVUlFZGdlSW5zZXRzKWluc2V0cwogewogICAgIF9vdmVycmlkZVNhZmVBcmVhSW5zZXRz
ID0gaW5zZXRzOwotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAw
MAorI2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgW3NlbGYg
X3VwZGF0ZVNhZmVBcmVhSW5zZXRzXTsKICNlbmRpZgogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387965</attachid>
            <date>2020-01-16 14:58:23 -0800</date>
            <delta_ts>2020-01-17 08:37:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206096-20200116145822.patch</filename>
            <type>text/plain</type>
            <size>59404</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNTQ3MDUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIwLTAxLTE2ICBKb25hdGhhbiBCZWRhcmQgIDxq
YmVkYXJkQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgb2xkIGlPUyB2ZXJzaW9uIG1hY3Jv
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MDk2
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODQ5MTY3NT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZS5oOiBSZW1v
dmUgaU9TIDEyIHZlcnNpb24gbWFjcm8uCisgICAgICAgICogd3RmL1BsYXRmb3JtSGF2ZS5oOiBE
aXR0by4KKyAgICAgICAgKiB3dGYvUGxhdGZvcm1Vc2UuaDogRGl0dG8uCisKIDIwMjAtMDEtMTYg
IFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFBsYXRmb3JtLmggaXMg
b3V0IG9mIGNvbnRyb2wgUGFydCA2OiBTcGxpdCBVU0VfKiBtYWNybyBkZWZpbml0aW9ucyBvdXQg
b2YgUGxhdGZvcm0uaCBhbmQgaW50byBhIG5ldyBQbGF0Zm9ybVVzZS5oCkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtRW5hYmxlLmgJKHJldmlzaW9uIDI1NDcwNSkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtRW5hYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5OCw3ICsxOTgsNyBAQCB0aGUgcHVibGlj
IGlPUyBTREsuIFNlZSA8aHR0cHM6Ly93ZWJraXQuCiAjZW5kaWYKIAogI2lmICFkZWZpbmVkKEVO
QUJMRV9XS1BERlZJRVcpCi0jaWYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBM
RVRWKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEyMDAwMAorI2lmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0o
QVBQTEVUVikgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogI2RlZmluZSBFTkFCTEVfV0tQREZW
SUVXIDEKICNlbmRpZgogI2VuZGlmCkBAIC0xMDI3LDcgKzEwMjcsNyBAQCB0aGUgcHVibGljIGlP
UyBTREsuIFNlZSA8aHR0cHM6Ly93ZWJraXQuCiAjZGVmaW5lIEVOQUJMRV9LSU5FVElDX1NDUk9M
TElORyAxCiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKEVOQUJMRV9NT05PU1BBQ0VfRk9OVF9FWENF
UFRJT04pICYmICgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEIDwgMTAxNTAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPCAxMzAwMDApKQorI2lmICFkZWZpbmVkKEVOQUJMRV9NT05PU1BB
Q0VfRk9OVF9FWENFUFRJT04pICYmICgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEIDwgMTAxNTAwKSB8fCBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1B
Q0NBVEFMWVNUKSkKICNkZWZpbmUgRU5BQkxFX01PTk9TUEFDRV9GT05UX0VYQ0VQVElPTiAxCiAj
ZW5kaWYKIApJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgJKHJldmlzaW9uIDI1NDcwNSkKKysrIFNv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNTAsNyArMzUw
LDcgQEAKICNkZWZpbmUgSEFWRV9UT1VDSF9CQVIgMQogI2VuZGlmCiAKLSNpZiAoUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTUwMCkgfHwgKFBM
QVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEzMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTUwMCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlT
VCkKICNkZWZpbmUgSEFWRV9IU1RTX1NUT1JBR0VfUEFUSCAxCiAjZW5kaWYKIApAQCAtMzg4LDcg
KzM4OCw3IEBACiAjZGVmaW5lIEhBVkVfQ0ZORVRXT1JLX1dJVEhfQ09OVEVOVF9FTkNPRElOR19T
TklGRklOR19PVkVSUklERSAxCiAjZW5kaWYKIAotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTMwMDAwKSB8fCBQ
TEFURk9STShHVEspCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FU
QUxZU1QpIHx8IFBMQVRGT1JNKEdUSykKICNkZWZpbmUgSEFWRV9PU19EQVJLX01PREVfU1VQUE9S
VCAxCiAjZW5kaWYKIApAQCAtNDM3LDExICs0MzcsMTEgQEAKICNkZWZpbmUgSEFWRV9BVVRIT1JJ
WkFUSU9OX1NUQVRVU19GT1JfTUVESUFfVFlQRSAxCiAjZW5kaWYKIAotI2lmIChQTEFURk9STShN
QUMpICYmIChfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCAmJiBfX01B
Q19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTAxNDA0KSkgfHwgKFBMQVRGT1JNKElPUykg
JiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwICYmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTIwMjAwKSB8fCBQTEFURk9STShXQVRDSE9TKSB8
fCBQTEFURk9STShBUFBMRVRWKQorI2lmIChQTEFURk9STShNQUMpICYmIChfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FM
TE9XRUQgPj0gMTAxNDA0KSkgfHwgUExBVEZPUk0oV0FUQ0hPUykgfHwgUExBVEZPUk0oQVBQTEVU
VikKICNkZWZpbmUgSEFWRV9DRk5FVFdPUktfT1ZFUlJJREVfU0VTU0lPTl9DT09LSUVfQUNDRVBU
X1BPTElDWSAxCiAjZW5kaWYKIAotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNTAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTMwMDAwKQorI2lmIChQTEFURk9S
TShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNTAwKSB8fCBQ
TEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogI2RlZmluZSBIQVZFX0NGTkVU
V09SS19OU1VSTFNFU1NJT05fU1RSSUNUUlVTVEVWQUxVQVRFIDEKICNlbmRpZgogCkBAIC00NjUs
NyArNDY1LDcgQEAKICNkZWZpbmUgSEFWRV9TQU5EQk9YX0lTU1VFX1JFQURfRVhURU5TSU9OX1RP
X1BST0NFU1NfQllfQVVESVRfVE9LRU4gMQogI2VuZGlmCiAKLSNpZiAoUExBVEZPUk0oTUFDKSAm
JiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTUwMCkgfHwgKFBMQVRGT1JN
KElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEzMDAw
MCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTUwMCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICNk
ZWZpbmUgSEFWRV9NRE5TX0ZBU1RfUkVHSVNUUkFUSU9OIDEKICNlbmRpZgogCkBAIC00NzMsMTkg
KzQ3MywxOSBAQAogI2RlZmluZSBIQVZFX0RJU0FMTE9XQUJMRV9VU0VSX0lOU1RBTExFRF9GT05U
UyAxCiAjZW5kaWYKIAotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTAxNTAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhP
TkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTMwMDAwKQorI2lmIChQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNTAwKSB8fCBQTEFURk9S
TShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogI2RlZmluZSBIQVZFX0NURk9OVENSRUFU
RUZPUkNIQVJBQ1RFUlNXSVRITEFOR1VBR0VBTkRPUFRJT04gMQogI2VuZGlmCiAKLSNpZiAoUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTUwMCkg
fHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEzMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTUwMCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUND
QVRBTFlTVCkKICNkZWZpbmUgSEFWRV9DVEZPTlRUUkFOU0ZPUk1HTFlQSFNXSVRITEFOR1VBR0Ug
MQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMzAwMDAKKyNpZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JN
KE1BQ0NBVEFMWVNUKQogI2RlZmluZSBIQVZFX0FSS0lUX1FVSUNLX0xPT0tfUFJFVklFV19JVEVN
IDEKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTMwMDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9S
TShNQUNDQVRBTFlTVCkKICNkZWZpbmUgSEFWRV9VSV9XS19ET0NVTUVOVF9DT05URVhUIDEKICNl
bmRpZgogCkBAIC01MDUsMzUgKzUwNSwzNSBAQAogI2RlZmluZSBIQVZFX0ZBSVJQTEFZU1RSRUFN
SU5HX0NFTkNfSU5JVERBVEEgMQogI2VuZGlmCiAKLSNpZiAoUExBVEZPUk0oSU9TKSAmJiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMzAwMDApIHx8IFBMQVRGT1JNKFdBVENI
T1MpIHx8IFBMQVRGT1JNKEFQUExFVFYpCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShX
QVRDSE9TKSB8fCBQTEFURk9STShBUFBMRVRWKQogI2RlZmluZSBIQVZFX1VJX1NDUk9MTF9WSUVX
X0lORElDQVRPUl9GTEFTSElOR19TUEkgMQogI2VuZGlmCiAKLSNpZiAoUExBVEZPUk0oSU9TKSAm
JiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMzAwMDApIHx8IFBMQVRGT1JN
KFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQUExFVFYpCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFU
Rk9STShXQVRDSE9TKSB8fCBQTEFURk9STShBUFBMRVRWKQogI2RlZmluZSBIQVZFX0FQUF9MSU5L
U19XSVRIX0lTRU5BQkxFRCAxCiAjZW5kaWYKIAotI2lmIChQTEFURk9STShJT1MpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEzMDAwMCkKKyNpZiBQTEFURk9STShJT1Mp
CiAjZGVmaW5lIEhBVkVfUk9VVEVfU0hBUklOR19QT0xJQ1lfTE9OR19GT1JNX1ZJREVPIDEKICNl
bmRpZgogCi0jaWYgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTIwMDAwICYmICFQTEFURk9STShJT1NfU0lNVUxBVE9SKSkKKyNpZiBQTEFURk9S
TShJT1MpICYmICFQTEFURk9STShJT1NfU0lNVUxBVE9SKQogI2RlZmluZSBIQVZFX0RFVklDRV9N
QU5BR0VNRU5UIDEKICNlbmRpZgogCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE1MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAm
JiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMzAwMDApIHx8IFBMQVRGT1JN
KFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQUExFVFYpCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE1MDApIHx8IFBMQVRGT1JNKElPU19G
QU1JTFkpCiAjZGVmaW5lIEhBVkVfTlNVUkxTRVNTSU9OX1dFQlNPQ0tFVCAxCiAjZW5kaWYKIAot
I2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTAxNTAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMzAwMDApIHx8IFBMQVRGT1JNKFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQUExFVFYp
CisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDE1MDApIHx8IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oV0FUQ0hPUykgfHwgUExBVEZP
Uk0oQVBQTEVUVikKICNkZWZpbmUgSEFWRV9BVlBMQVlFUl9SRVNPVVJDRV9DT05TRVJWQVRJT05f
TEVWRUwgMQogI2VuZGlmCiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKSB8fCBQTEFURk9STShXQVRDSE9TKSB8
fCBQTEFURk9STShBUFBMRVRWKQorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JN
KFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQUExFVFYpCiAjZGVmaW5lIEhBVkVfQ09SRVRFWFRfQVVU
T19PUFRJQ0FMX1NJWklORyAxCiAjZW5kaWYKIAotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDE1MDApIHx8IChQTEFURk9STShJT1MpICYm
IF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTMwMDAwKQorI2lmIChQTEFURk9S
TShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDE1MDApIHx8IFBM
QVRGT1JNKElPUykKICNkZWZpbmUgSEFWRV9OU0ZPTlRfV0lUSF9PUFRJQ0FMX1NJWklOR19CVUcg
MQogI2VuZGlmCiAKQEAgLTU0MSw3ICs1NDEsNyBAQAogI2RlZmluZSBIQVZFX0FQUF9TU08gMQog
I2VuZGlmCiAKLSNpZiAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMzAwMDAgfHwgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTUwMCkgfHwgUExBVEZPUk0oV0FUQ0hPUykgfHwgUExBVEZPUk0o
QVBQTEVUVikgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisjaWYgUExBVEZPUk0oSU9TKSB8fCAo
UExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTUw
MCkgfHwgUExBVEZPUk0oV0FUQ0hPUykgfHwgUExBVEZPUk0oQVBQTEVUVikgfHwgUExBVEZPUk0o
TUFDQ0FUQUxZU1QpCiAjZGVmaW5lIEhBVkVfVExTX1BST1RPQ09MX1ZFUlNJT05fVCAxCiAjZW5k
aWYKIApAQCAtNTYxLDcgKzU2MSw3IEBACiAjZGVmaW5lIEhBVkVfQVhfQ0xJRU5UX1RZUEUgMQog
I2VuZGlmCiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTUwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTMwMDAwKSB8fCBQTEFURk9STShXQVRDSE9TKSB8fCBQTEFURk9S
TShBUFBMRVRWKQorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxNTAwKSB8fCBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKFdBVENIT1Mp
IHx8IFBMQVRGT1JNKEFQUExFVFYpCiAjZGVmaW5lIEhBVkVfREVTSUdOX1NZU1RFTV9VSV9GT05U
UyAxCiAjZW5kaWYKIApJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCShyZXZpc2lvbiAyNTQ3MDUpCisr
KyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTksNyAr
MzE5LDcgQEAKICNkZWZpbmUgVVNFX1VJQ09OVEVYVE1FTlUgMQogI2VuZGlmCiAKLSNpZiBQTEFU
Rk9STShNQUMpIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMTAwMDApIHx8IFBMQVRGT1JNKFdBVENIT1MpIHx8IFBMQVRGT1JN
KEFQUExFVFYpCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogI2Rl
ZmluZSBVU0VfUExBVEZPUk1fU1lTVEVNX0ZBTExCQUNLX0xJU1QgMQogI2VuZGlmCiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI1NDcwNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDIwLTAxLTE2ICBKb25hdGhhbiBCZWRh
cmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgb2xkIGlPUyB2ZXJzaW9u
IG1hY3JvcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA2MDk2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODQ5MTY3NT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuCisKKyAgICAg
ICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbTogUmVtb3ZlIGlPUyAx
MSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBwYWdlL1NldHRpbmdzRGVmYXVsdFZhbHVlcy5o
OiBSZW1vdmUgaU9TIDEyIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYWRpZW50Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6OnBhaW50
KTogUmVtb3ZlIGlPUyAxMiB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9QYXRoQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6cGxhdGZvcm1BZGRQ
YXRoRm9yUm91bmRlZFJlY3QpOiBSZW1vdmUgaU9TIDEyIHZlcnNpb24gY2hlY2tzLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnZhcmlhdGlvbkNhcGFiaWxpdGllc0ZvckZvbnREZXNjcmlwdG9yKTogUmVt
b3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6
bGFzdFJlc29ydEZhbGxiYWNrRm9udCk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1h
dGNoU3lzdGVtRm9udFVzZSk6IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVjay4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvRm9udENhY2hlSU9TLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6cGxhdGZvcm1Gb250V2l0aEZhbWlseVNwZWNpYWxDYXNlKTogUmVtb3ZlIGlPUyAxMSB2ZXJz
aW9uIGNoZWNrcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKTogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oOiBSZW1vdmUgaU9TIDExIHZlcnNpb24g
Y2hlY2tzLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpjb29raWVzRm9yVVJMKTogUmVtb3Zl
IGlPUyAxMiB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKFdlYkNvcmU6OnNldEhUVFBDb29raWVz
Rm9yVVJMKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OmNhY2hlZFN5c3RlbUZvbnREZXNjcmlw
dGlvbiBjb25zdCk6IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3MuCisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZUlPUzo6dXBkYXRlQ2FjaGVkU3lzdGVtRm9udERlc2NyaXB0aW9uIGNv
bnN0KTogRGl0dG8uCisKIDIwMjAtMDEtMTYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIE1ha2UgdGhlIGNhbGxBc3luY0phdmFTY3JpcHRGdW5jdGlvbiBmdW5j
dGlvbiBhY3R1YWxseSBiZSBhc3luYyAoc28gYXdhaXQgd29ya3MpLgpJbmRleDogU291cmNlL1dl
YkNvcmUvUEFML0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNTQ3MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDEtMTYgIEpvbmF0aGFuIEJl
ZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBvbGQgaU9TIHZlcnNp
b24gbWFjcm9zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDYwOTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4NDkxNjc1PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFsL3NwaS9jZi9DRk5ldHdv
cmtTUEkuaDogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBwYWwvc3Bp
L2NnL0NvcmVHcmFwaGljc1NQSS5oOiBSZW1vdmUgaU9TIDEyIHZlcnNpb24gY2hlY2tzLgorICAg
ICAgICAqIHBhbC9zcGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg6IFJlbW92ZSBpT1MgMTEg
dmVyc2lvbiBjaGVja3MuCisgICAgICAgICogcGFsL3NwaS9pb3MvTWVkaWFQbGF5ZXJTUEkuaDog
UmVtb3ZlIGlPUyAxMSBhbmQgMTIgdmVyc2lvbiBjaGVja3MuCisKIDIwMjAtMDEtMTYgIERhdmlk
IEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBBdHRlbXB0IHRvIGZpeCBp
bnRlcm5hbCBpT1MgRGVidWcgYnVpbGRzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2Nv
Y29hL0FWRm91bmRhdGlvblNvZnRMaW5rLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsubW0JKHJldmlzaW9uIDI1NDcwNSkK
KysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsubW0J
KHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9B
VkZvdW5kYXRpb24uaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCi0jaWYgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE1MDApIHx8
IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMzAwMDApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDE1MDApIHx8IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FU
QUxZU1QpCiBTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBB
VkZvdW5kYXRpb24sIFBBTF9FWFBPUlQpCiAjZWxzZQogQGludGVyZmFjZSBBVlBsYXllckl0ZW0g
KERpc2FibGVLVk9PblN1cHJlc3Nlc1ZpZGVvTGF5ZXJzKQpJbmRleDogU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgJKHJldmlzaW9uIDI1NDcwNSkKKysrIFNv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTMsNyArMjEzLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgTlNVUkxTZXNz
aW9uQwogQHByb3BlcnR5IChudWxsYWJsZSwgcmVhZHdyaXRlLCByZXRhaW4pIE5TVVJMICpfc2l0
ZUZvckNvb2tpZXM7CiBAcHJvcGVydHkgKHJlYWR3cml0ZSkgQk9PTCBfaXNUb3BMZXZlbE5hdmln
YXRpb247CiAjZW5kaWYKLSNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShJT1NfRkFNSUxZ
KSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCisjaWYgUExB
VEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogQHBy
b3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgQk9PTCBfcHJlY29ubmVjdDsKICNlbmRpZgogQGVu
ZApJbmRleDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNz
U1BJLmgJKHJldmlzaW9uIDI1NDcwNSkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2Nn
L0NvcmVHcmFwaGljc1NQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yODIsNyArMjgyLDcgQEAgdm9p
ZCBDR0NvbnRleHRTZXRTdHlsZShDR0NvbnRleHRSZWYsIENHUwogCiB2b2lkIENHQ29udGV4dERy
YXdDb25pY0dyYWRpZW50KENHQ29udGV4dFJlZiwgQ0dHcmFkaWVudFJlZiwgQ0dQb2ludCBjZW50
ZXIsIENHRmxvYXQgYW5nbGUpOwogCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAm
JiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCisjaWYgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8
IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiB2b2lkIENHUGF0aEFkZFVu
ZXZlbkNvcm5lcnNSb3VuZGVkUmVjdChDR011dGFibGVQYXRoUmVmLCBjb25zdCBDR0FmZmluZVRy
YW5zZm9ybSAqLCBDR1JlY3QsIGNvbnN0IENHU2l6ZSBjb3JuZXJzWzRdKTsKICNlbmRpZgogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9JT1N1cmZhY2VTUEkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9JT1N1cmZhY2VTUEku
aAkocmV2aXNpb24gMjU0NzA1KQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2Ev
SU9TdXJmYWNlU1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsNyBAQCBXVEZfRVhU
RVJOX0NfRU5ECiAKICNlbHNlCiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA8IDExMDAwMAorI2lmIFBMQVRGT1JNKFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQUExFVFYpCiB0
eXBlZGVmIHVpbnQzMl90IElPU3VyZmFjZUlEOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5oCShy
ZXZpc2lvbiAyNTQ3MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9OU0tl
eWVkQXJjaGl2ZXJTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMjksOSArMjksOSBAQAogI2ltcG9y
dCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAotI2RlZmlu
ZSBVU0VfU0VDVVJFX0FSQ0hJVkVSX0FQSSAoUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oSU9T
X0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMjAwKSB8
fCBQTEFURk9STShXQVRDSE9TKSB8fCBQTEFURk9STShBUFBMRVRWKSkKKyNkZWZpbmUgVVNFX1NF
Q1VSRV9BUkNISVZFUl9BUEkgKFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkp
CiAKLSNkZWZpbmUgVVNFX1NFQ1VSRV9BUkNISVZFUl9GT1JfQVRUUklCVVRFRF9TVFJJTkcgKFBM
QVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEzMDAwMCkgfHwgUExBVEZPUk0oV0FUQ0hPUykgfHwgUExBVEZP
Uk0oQVBQTEVUVikpCisjZGVmaW5lIFVTRV9TRUNVUkVfQVJDSElWRVJfRk9SX0FUVFJJQlVURURf
U1RSSU5HIChQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpZiBVU0Uo
U0VDVVJFX0FSQ0hJVkVSX0FQSSkKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQpJbmRleDog
U291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvTlNQcm9ncmVzc1NQSS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL05TUHJvZ3Jlc3NTUEkuaAko
cmV2aXNpb24gMjU0NzA1KQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvTlNQ
cm9ncmVzc1NQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBVU0Uo
QVBQTEVfSU5URVJOQUxfU0RLKQogCi0jZGVmaW5lIFVTRV9OU1BST0dSRVNTX1BVQkxJU0hJTkdf
U1BJIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEIDwgMTMwMDAwCisjZGVmaW5lIFVTRV9OU1BST0dSRVNTX1BVQkxJU0hJTkdfU1BJIFBMQVRG
T1JNKElPU19GQU1JTFkpICYmIChQTEFURk9STShXQVRDSE9TKSB8fCBQTEFURk9STShBUFBMRVRW
KSkKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNQcm9ncmVzc19Qcml2YXRlLmg+CiAKICNlbHNlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9pb3MvTWVkaWFQbGF5ZXJTUEkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9pb3MvTWVkaWFQbGF5ZXJTUEku
aAkocmV2aXNpb24gMjU0NzA1KQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvaW9zL01l
ZGlhUGxheWVyU1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDExICszNCwxMSBAQAogCiAjaW1w
b3J0IDxNZWRpYVBsYXllci9NUEFWUm91dGluZ0NvbnRyb2xsZXIuaD4KIAotI2lmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMAorI2lmIFBMQVRGT1JNKElPUykgfHwg
UExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAjaW1wb3J0IDxNZWRpYVBsYXllci9NUE1lZGlhQ29udHJv
bHNDb25maWd1cmF0aW9uLmg+CiAjZW5kaWYKIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDExMDAwMCAmJiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQ
UExFVFYpCisjaWYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQogI2lt
cG9ydCA8TWVkaWFQbGF5ZXIvTVBNZWRpYUNvbnRyb2xzVmlld0NvbnRyb2xsZXIuaD4KICNlbHNl
CiAjaW1wb3J0IDxNZWRpYVBsYXllci9NUEFWUm91dGluZ1NoZWV0Lmg+CkBAIC02NCw3ICs2NCw3
IEBAIHR5cGVkZWYgTlNJbnRlZ2VyIE1QUm91dGVEaXNjb3ZlcnlNb2RlOwogQHByb3BlcnR5IChu
b25hdG9taWMsIGFzc2lnbikgTVBSb3V0ZURpc2NvdmVyeU1vZGUgZGlzY292ZXJ5TW9kZTsKIEBl
bmQKIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCAmJiAh
UExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCisjaWYgIVBMQVRGT1JNKFdB
VENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQogCiBAaW50ZXJmYWNlIE1QTWVkaWFDb250cm9s
c1ZpZXdDb250cm9sbGVyIDogVUlWaWV3Q29udHJvbGxlcgogQHByb3BlcnR5IChub25hdG9taWMs
IGNvcHksIG51bGxhYmxlKSB2b2lkICheZGlkRGlzbWlzc0hhbmRsZXIpKHZvaWQpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVy
Q29jb2EubW0JKHJldmlzaW9uIDI1NDcwNSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3
IEBACiAjaW5jbHVkZSAiTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oIgogI2VuZGlmCiAK
LSNpZiAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTEwMDAwKSB8fCBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQ
TEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogQGludGVyZmFjZSBOU0F0dHJp
YnV0ZWRTdHJpbmcgKCkKIC0gKE5TU3RyaW5nICopX2h0bWxEb2N1bWVudEZyYWdtZW50U3RyaW5n
OihOU1JhbmdlKXJhbmdlIGRvY3VtZW50QXR0cmlidXRlczooTlNEaWN0aW9uYXJ5ICopZGljdCBz
dWJyZXNvdXJjZXM6KE5TQXJyYXkgKiopc3VicmVzb3VyY2VzOwogQGVuZApAQCAtODMsNyArODMs
NyBAQCBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUksoV2ViS2l0TGVnYWN5CiBTT0ZUX0xJTktf
RlJBTUVXT1JLX0lOX1VNQlJFTExBKFdlYktpdCwgV2ViS2l0TGVnYWN5KQogI2VuZGlmCiAKLSNp
ZiAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPCAxMTAwMDApCisjaWYgUExBVEZPUk0oV0FUQ0hPUykgfHwgUExBVEZPUk0oQVBQTEVUVikK
IFNPRlRfTElOSyhXZWJLaXRMZWdhY3ksIF9XZWJDcmVhdGVGcmFnbWVudCwgdm9pZCwgKFdlYkNv
cmU6OkRvY3VtZW50JiBkb2N1bWVudCwgTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFdlYkNv
cmU6OkZyYWdtZW50QW5kUmVzb3VyY2VzJiByZXN1bHQpLCAoZG9jdW1lbnQsIHN0cmluZywgcmVz
dWx0KSkKICNlbmRpZgogCkBAIC05Niw3ICs5Niw3IEBAIHN0YXRpYyBGcmFnbWVudEFuZFJlc291
cmNlcyBjcmVhdGVGcmFnbWUKICAgICByZXR1cm4geyB9OwogfQogCi0jZWxpZiAoUExBVEZPUk0o
SU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAw
KSB8fCBQTEFURk9STShNQUMpCisjZWxpZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQykg
fHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAKIHN0YXRpYyBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0
ZXNGb3JBdHRyaWJ1dGVkU3RyaW5nQ29udmVyc2lvbigpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzRGVmYXVsdFZhbHVlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3NEZWZhdWx0VmFsdWVzLmgJKHJldmlzaW9uIDI1NDcwNSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NEZWZhdWx0VmFsdWVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgY29uc3QgYm9vbCBkZWZhdWx0TWVkaWFFbmFibGVk
ID0gCiBzdGF0aWMgY29uc3QgYm9vbCBkZWZhdWx0TWVkaWFFbmFibGVkID0gZmFsc2U7CiAjZW5k
aWYKICAgICAKLSNpZiAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oV0FUQ0hPUykKKyNp
ZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShXQVRDSE9TKSB8fCBQTEFURk9STShN
QUNDQVRBTFlTVCkKIHN0YXRpYyBjb25zdCBib29sIGRlZmF1bHRDb25pY0dyYWRpZW50ID0gdHJ1
ZTsKICNlbHNlCiBzdGF0aWMgY29uc3QgYm9vbCBkZWZhdWx0Q29uaWNHcmFkaWVudCA9IGZhbHNl
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
ZGllbnRDRy5jcHAJKHJldmlzaW9uIDI1NDcwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsNyArMTgy
LDcgQEAgdm9pZCBHcmFkaWVudDo6cGFpbnQoQ0dDb250ZXh0UmVmIHBsYXRmbwogICAgICAgICAg
ICAgICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUocGxhdGZvcm1Db250ZXh0KTsKICAgICAgICAg
fSwKICAgICAgICAgWyZdIChjb25zdCBDb25pY0RhdGEmIGRhdGEpIHsKLSNpZiAoUExBVEZPUk0o
SU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAw
KSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTQwMCkgfHwgUExBVEZPUk0oV0FUQ0hPUykKKyNpZiBQTEFURk9STShJT1MpIHx8IChQTEFU
Rk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8
fCBQTEFURk9STShXQVRDSE9TKQogICAgICAgICAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShwbGF0
Zm9ybUNvbnRleHQpOwogICAgICAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKHBsYXRmb3Jt
Q29udGV4dCwgZGF0YS5wb2ludDAueCgpLCBkYXRhLnBvaW50MC55KCkpOwogICAgICAgICAgICAg
Q0dDb250ZXh0Um90YXRlQ1RNKHBsYXRmb3JtQ29udGV4dCwgKENHRmxvYXQpLU1fUElfMik7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAJ
KHJldmlzaW9uIDI1NDcwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BhdGhDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNCw3ICszMTQsNyBAQCB2b2lkIFBhdGg6
OnBsYXRmb3JtQWRkUGF0aEZvclJvdW5kZWRSZWN0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEyMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFU
Rk9STShNQUNDQVRBTFlTVCkKICAgICBDR1JlY3QgcmVjdFRvRHJhdyA9IHJlY3Q7CiAgICAgCiAg
ICAgZW51bSBDb3JuZXJzIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAJKHJldmlzaW9u
IDI1NDcwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRD
YWNoZUNvcmVUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQAogI2luY2x1
ZGUgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KIAotI2RlZmluZSBIQVNfQ09SRV9URVhUX1dJRFRIX0FUVFJJQlVURSAoUExBVEZP
Uk0oTUFDKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTEwMDAwKSkKKyNkZWZpbmUgSEFTX0NPUkVfVEVYVF9XSURUSF9BVFRS
SUJVVEUgKFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRB
TFlTVCkpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTA2NCw3ICsxMDY0LDcgQEAgc3Rh
dGljIFZhcmlhdGlvbkNhcGFiaWxpdGllcyB2YXJpYXRpb25DYQogICAgIH0KIAogICAgIGJvb2wg
b3B0T3V0RnJvbUdYTm9ybWFsaXphdGlvbiA9IGZhbHNlOwotI2lmIChQTEFURk9STShNQUMpIHx8
IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMTAwMDApKQorI2lmIChQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykgfHwgUExB
VEZPUk0oTUFDQ0FUQUxZU1QpKQogICAgIG9wdE91dEZyb21HWE5vcm1hbGl6YXRpb24gPSBDVEZv
bnREZXNjcmlwdG9ySXNTeXN0ZW1VSUZvbnQoZm9udERlc2NyaXB0b3IpOwogI2VuZGlmCiAKQEAg
LTE2MzksNyArMTYzOSw3IEBAIFJlZjxGb250PiBGb250Q2FjaGU6Omxhc3RSZXNvcnRGYWxsYmFj
a0YKICAgICAgICAgcmV0dXJuICpyZXN1bHQ7CiAKICAgICAvLyBMYXN0UmVzb3J0IGlzIGd1YXJh
bnRlZWQgdG8gYmUgbm9uLW51bGwuCi0jaWYgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkgfHwgUExBVEZPUk0oTUFDKQor
I2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlT
VCkKICAgICBhdXRvIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3Jl
YXRlTGFzdFJlc29ydCgpKTsKICAgICBhdXRvIGZvbnQgPSBhZG9wdENGKENURm9udENyZWF0ZVdp
dGhGb250RGVzY3JpcHRvcihmb250RGVzY3JpcHRvci5nZXQoKSwgZm9udERlc2NyaXB0aW9uLmNv
bXB1dGVkUGl4ZWxTaXplKCksIG51bGxwdHIpKTsKICNlbHNlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2Ny
aXB0aW9uQ29jb2EuY3BwCShyZXZpc2lvbiAyNTQ3MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTgyLDcgKzgyLDcgQEAgc3RhdGljIGlubGluZSBPcHRpb25hbDxTeXN0ZW1Gb250S2lu
ZD4gbQogICAgICAgICBrQ1RVSUZvbnRUZXh0U3R5bGVTaG9ydEZvb3Rub3RlLAogICAgICAgICBr
Q1RVSUZvbnRUZXh0U3R5bGVTaG9ydENhcHRpb24xLAogICAgICAgICBrQ1RVSUZvbnRUZXh0U3R5
bGVUYWxsQm9keSwKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAw
MDAKKyNpZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgICAgICBr
Q1RVSUZvbnRUZXh0U3R5bGVUaXRsZTAsCiAgICAgICAgIGtDVFVJRm9udFRleHRTdHlsZVRpdGxl
NCwKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
Rm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQkocmV2aXNpb24g
MjU0NzA1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBs
YXRmb3JtRGF0YUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNyArMTI0LDcgQEAgc3Rh
dGljIENGRGljdGlvbmFyeVJlZiBjYXNjYWRlVG9MYXN0UmVzbwogc3RhdGljIFJldGFpblB0cjxD
VEZvbnREZXNjcmlwdG9yUmVmPiBjYXNjYWRlVG9MYXN0UmVzb3J0QW5kVmFyaWF0aW9uc0ZvbnRE
ZXNjcmlwdG9yKENURm9udFJlZiBvcmlnaW5hbEZvbnQpCiB7CiAvLyBGSVhNRTogUmVtb3ZlIHRo
aXMgd2hlbiA8cmRhcjovL3Byb2JsZW0vMjg0NDk0NDE+IGlzIGZpeGVkLiBOT1RFOiBUaGF0IHJh
ZGFyIHdhcyBmaXhlZCAxMS8xNi8xNiwgc28gdGhpcyBjYW4gYmUgcmVtb3ZlZC4gVEJELgotI2Rl
ZmluZSBXT1JLQVJPVU5EX0NPUkVURVhUX1ZBUklBVElPTlNfV0lUSF9GQUxMQkFDS19MSVNUX0JV
RyAoRU5BQkxFKFZBUklBVElPTl9GT05UUykgJiYgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAwKSkKKyNkZWZpbmUgV09SS0FS
T1VORF9DT1JFVEVYVF9WQVJJQVRJT05TX1dJVEhfRkFMTEJBQ0tfTElTVF9CVUcgKEVOQUJMRShW
QVJJQVRJT05fRk9OVFMpICYmIChQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNU
KSkKIAogICAgIENGRGljdGlvbmFyeVJlZiBhdHRyaWJ1dGVzID0gY2FzY2FkZVRvTGFzdFJlc29y
dEF0dHJpYnV0ZXNEaWN0aW9uYXJ5KCk7CiAjaWYgV09SS0FST1VORF9DT1JFVEVYVF9WQVJJQVRJ
T05TX1dJVEhfRkFMTEJBQ0tfTElTVF9CVUcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2lvcy9Gb250Q2FjaGVJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ZvbnRDYWNoZUlPUy5tbQkocmV2aXNpb24gMjU0NzA1
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ZvbnRDYWNoZUlPUy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMTU2LDcgKzE1Niw3IEBAIFJldGFpblB0cjxDVEZvbnRSZWY+
IHBsYXRmb3JtRm9udFdpdGhGYW0KICAgICB9CiAKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UoZmFtaWx5LCAibGFzdHJlc29ydCIpKSB7Ci0jaWYgX19JUEhPTkVfT1NfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9S
TShNQUNDQVRBTFlTVCkKICAgICAgICAgc3RhdGljIGNvbnN0IENURm9udERlc2NyaXB0b3JSZWYg
bGFzdFJlc29ydCA9IENURm9udERlc2NyaXB0b3JDcmVhdGVMYXN0UmVzb3J0KCk7CiAgICAgICAg
IHJldHVybiBhZG9wdENGKENURm9udENyZWF0ZVdpdGhGb250RGVzY3JpcHRvcihsYXN0UmVzb3J0
LCBzaXplLCBudWxscHRyKSk7CiAjZWxzZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmNwcAkocmV2aXNpb24gMjU0NzA1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3
ICs1Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiAKICAgICBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBidWZmZXJEYXRhID0gYnVmZmVyLmNyZWF0ZUNGRGF0YSgpOwog
CiAgICAgUmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+IGZvbnREZXNjcmlwdG9yOwotI2lm
IFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRG
T1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgYXV0byBhcnJheSA9IGFkb3B0
Q0YoQ1RGb250TWFuYWdlckNyZWF0ZUZvbnREZXNjcmlwdG9yc0Zyb21EYXRhKGJ1ZmZlckRhdGEu
Z2V0KCkpKTsKICAgICBpZiAoIWFycmF5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRl
clBhc3RlYm9hcmQuaAkocmV2aXNpb24gMjU0NzA1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcs
OCArMjcsNiBAQAogCiAjaW1wb3J0IDxXZWJDb3JlL0Fic3RyYWN0UGFzdGVib2FyZC5oPgogCi0j
aWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCi0KIHN0cnVjdCBD
R1NpemU7CiAKIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdlYlByZWZlcnJlZFByZXNlbnRh
dGlvblN0eWxlKSB7CkBAIC0xMTQsNSArMTEyLDQgQEAgV0VCQ09SRV9FWFBPUlQgQGludGVyZmFj
ZSBXZWJJdGVtUHJvdmlkZQogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKIAotI2VuZGlmIC8vIF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAogI2VuZGlmIC8vIFRBUkdF
VF9PU19JUEhPTkUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
TmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQko
cmV2aXNpb24gMjU0NzA1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDEsNyAr
NDEsNyBAQCBAaW50ZXJmYWNlIE5TVVJMICgpCiAtIChDRlVSTFJlZilfY2Z1cmw7CiBAZW5kCiAK
LSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEyMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFU
Rk9STShNQUNDQVRBTFlTVCkKIEBpbnRlcmZhY2UgTlNIVFRQQ29va2llU3RvcmFnZSAoU3RhZ2lu
ZykKIC0gKHZvaWQpX2dldENvb2tpZXNGb3JVUkw6KE5TVVJMICopdXJsIG1haW5Eb2N1bWVudFVS
TDooTlNVUkwgKiltYWluRG9jdW1lbnRVUkwgcGFydGl0aW9uOihOU1N0cmluZyAqKXBhcnRpdGlv
biBwb2xpY3lQcm9wZXJ0aWVzOihOU0RpY3Rpb25hcnkqKXByb3BzIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShOU0FycmF5ICopKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClfc2V0Q29v
a2llczooTlNBcnJheSAqKWNvb2tpZXMgZm9yVVJMOihOU1VSTCAqKVVSTCBtYWluRG9jdW1lbnRV
Ukw6KE5TVVJMICopbWFpbkRvY3VtZW50VVJMIHBvbGljeVByb3BlcnRpZXM6KE5TRGljdGlvbmFy
eSopIHByb3BzOwpAQCAtMjAwLDcgKzIwMCw3IEBAIHN0YXRpYyB2b2lkIGRlbGV0ZUhUVFBDb29r
aWUoQ0ZIVFRQQ29va2kKICAgICBDRkhUVFBDb29raWVTdG9yYWdlRGVsZXRlQ29va2llKGNvb2tp
ZVN0b3JhZ2UsIFtjb29raWUgX0dldEludGVybmFsQ0ZIVFRQQ29va2llXSk7CiB9CiAKLSNpZiAo
UExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQw
MCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEyMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShN
QUNDQVRBTFlTVCkKIHN0YXRpYyBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBwb2xpY3lQcm9wZXJ0
aWVzKGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBOU1VSTCAqdXJsKQogewogICAg
IHN0YXRpYyBOU1VSTCAqZW1wdHlVUkwgPSBbW05TVVJMIGFsbG9jXSBpbml0V2l0aFN0cmluZzpA
IiJdOwpAQCAtMjE5LDcgKzIxOSw3IEBAIHN0YXRpYyBOU0FycmF5ICpjb29raWVzRm9yVVJMKE5T
SFRUUENvb2sKICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gWyZjb29raWVzUHRyXSAoTlNB
cnJheSAqY29va2llcykgewogICAgICAgICBjb29raWVzUHRyID0gcmV0YWluUHRyKGNvb2tpZXMp
OwogICAgIH07Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKElP
UykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgaWYgKFtzdG9yYWdlIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoX2dldENvb2tpZXNGb3JVUkw6bWFpbkRvY3VtZW50VVJMOnBhcnRp
dGlvbjpwb2xpY3lQcm9wZXJ0aWVzOmNvbXBsZXRpb25IYW5kbGVyOildKQogICAgICAgICBbc3Rv
cmFnZSBfZ2V0Q29va2llc0ZvclVSTDp1cmwgbWFpbkRvY3VtZW50VVJMOm1haW5Eb2N1bWVudFVS
TCBwYXJ0aXRpb246cGFydGl0aW9uIHBvbGljeVByb3BlcnRpZXM6c2FtZVNpdGVJbmZvID8gcG9s
aWN5UHJvcGVydGllcyhzYW1lU2l0ZUluZm8udmFsdWUoKSwgdXJsKS5nZXQoKSA6IG51bGxwdHIg
Y29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOwogICAgIGVsc2UKQEAgLTIzNiw3
ICsyMzYsNyBAQCBzdGF0aWMgdm9pZCBzZXRIVFRQQ29va2llc0ZvclVSTChDRkhUVFBDCiB7CiAg
ICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNz
UmF3Q29va2llcykpOwogICAgIGlmICghY29va2llU3RvcmFnZSkgewotI2lmIChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTIwMDAwKQorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNU
KQogICAgICAgICBpZiAoW05TSFRUUENvb2tpZVN0b3JhZ2UgaW5zdGFuY2VzUmVzcG9uZFRvU2Vs
ZWN0b3I6QHNlbGVjdG9yKF9zZXRDb29raWVzOmZvclVSTDptYWluRG9jdW1lbnRVUkw6cG9saWN5
UHJvcGVydGllczopXSkKICAgICAgICAgICAgIFtbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRI
VFRQQ29va2llU3RvcmFnZV0gX3NldENvb2tpZXM6Y29va2llcyBmb3JVUkw6dXJsIG1haW5Eb2N1
bWVudFVSTDptYWluRG9jdW1lbnRVUkwgcG9saWN5UHJvcGVydGllczpwb2xpY3lQcm9wZXJ0aWVz
KHNhbWVTaXRlSW5mbywgdXJsKS5nZXQoKV07CiAgICAgICAgIGVsc2UKQEAgLTI0NCw3ICsyNDQs
NyBAQCBzdGF0aWMgdm9pZCBzZXRIVFRQQ29va2llc0ZvclVSTChDRkhUVFBDCiAgICAgICAgICAg
ICBbW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdIHNldENvb2tp
ZXM6Y29va2llcyBmb3JVUkw6dXJsIG1haW5Eb2N1bWVudFVSTDptYWluRG9jdW1lbnRVUkxdOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkg
JiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKQorI2lmIChQTEFU
Rk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8
fCBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGlmIChbTlNIVFRQ
Q29va2llU3RvcmFnZSBpbnN0YW5jZXNSZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3NldENv
b2tpZXM6Zm9yVVJMOm1haW5Eb2N1bWVudFVSTDpwb2xpY3lQcm9wZXJ0aWVzOildKSB7CiAgICAg
ICAgIC8vIEZJWE1FOiBTdG9wIGNyZWF0aW5nIGEgbmV3IE5TSFRUUENvb2tpZVN0b3JhZ2Ugb2Jq
ZWN0IGVhY2ggdGltZSB3ZSB3YW50IHRvIHF1ZXJ5IHRoZSBjb29raWUgamFyLgogICAgICAgICAv
LyBOZXR3b3JrU3RvcmFnZVNlc3Npb24gY291bGQgaW5zdGVhZCBrZWVwIGEgTlNIVFRQQ29va2ll
U3RvcmFnZSBvYmplY3QgZm9yIHVzLgpAQCAtMjU0LDcgKzI1NCw3IEBAIHN0YXRpYyB2b2lkIHNl
dEhUVFBDb29raWVzRm9yVVJMKENGSFRUUEMKICNlbmRpZgogICAgICAgICBhdXRvIGNmQ29va2ll
cyA9IGFkb3B0Q0YoW05TSFRUUENvb2tpZSBfbnMyY2ZDb29raWVzOmNvb2tpZXNdKTsKICAgICAg
ICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZXMoY29va2llU3RvcmFnZSwgY2ZDb29raWVz
LmdldCgpLCBbdXJsIF9jZnVybF0sIFttYWluRG9jdW1lbnRVUkwgX2NmdXJsXSk7Ci0jaWYgKFBM
QVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDAp
IHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMjAwMDApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFD
Q0FUQUxZU1QpCiAgICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc2FtZVNpdGVJbmZvKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0JKHJldmlz
aW9uIDI1NDcwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMTE2MywxMyArMTE2MywxMyBAQCBGb250Q2FzY2FkZURlc2Ny
aXB0aW9uJiBSZW5kZXJUaGVtZUlPUzo6CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRD
YXNjYWRlRGVzY3JpcHRpb24+IHNob3J0Rm9vdG5vdGVGb250OwogICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBzaG9ydENhcHRpb24xRm9udDsKICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gdGFsbEJvZHlGb250
OwotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lmIFBM
QVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IHRpdGxlMEZvbnQ7CiAjZW5kaWYKICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gdGl0bGUxRm9udDsK
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gdGl0bGUy
Rm9udDsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4g
dGl0bGUzRm9udDsKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAw
MDAKKyNpZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiB0aXRsZTRGb250OwogI2Vu
ZGlmCiAKQEAgLTExOTcsNyArMTE5Nyw3IEBAIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIFJlbmRl
clRoZW1lSU9TOjoKICAgICAgICAgcmV0dXJuIGhlYWRsaW5lRm9udDsKICAgICBjYXNlIENTU1Zh
bHVlQXBwbGVTeXN0ZW1Cb2R5OgogICAgICAgICByZXR1cm4gYm9keUZvbnQ7Ci0jaWYgX19JUEhP
TkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKSB8
fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1UaXRs
ZTA6CiAgICAgICAgIHJldHVybiB0aXRsZTBGb250OwogI2VuZGlmCkBAIC0xMjA3LDcgKzEyMDcs
NyBAQCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBSZW5kZXJUaGVtZUlPUzo6CiAgICAgICAgIHJl
dHVybiB0aXRsZTJGb250OwogICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVRpdGxlMzoKICAg
ICAgICAgcmV0dXJuIHRpdGxlM0ZvbnQ7Ci0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlT
VCkKICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1UaXRsZTQ6CiAgICAgICAgIHJldHVybiB0
aXRsZTRGb250OwogI2VuZGlmCkBAIC0xMjY2LDcgKzEyNjYsNyBAQCB2b2lkIFJlbmRlclRoZW1l
SU9TOjp1cGRhdGVDYWNoZWRTeXN0ZW1GCiAgICAgICAgIHRleHRTdHlsZSA9IGtDVFVJRm9udFRl
eHRTdHlsZUJvZHk7CiAgICAgICAgIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNj
cmlwdG9yQ3JlYXRlV2l0aFRleHRTdHlsZSh0ZXh0U3R5bGUsIGNvbnRlbnRTaXplQ2F0ZWdvcnko
KSwgbnVsbHB0cikpOwogICAgICAgICBicmVhazsKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NB
VEFMWVNUKQogICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVRpdGxlMDoKICAgICAgICAgdGV4
dFN0eWxlID0ga0NUVUlGb250VGV4dFN0eWxlVGl0bGUwOwogICAgICAgICBmb250RGVzY3JpcHRv
ciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZVdpdGhUZXh0U3R5bGUodGV4dFN0eWxl
LCBjb250ZW50U2l6ZUNhdGVnb3J5KCksIG51bGxwdHIpKTsKQEAgLTEyODQsNyArMTI4NCw3IEBA
IHZvaWQgUmVuZGVyVGhlbWVJT1M6OnVwZGF0ZUNhY2hlZFN5c3RlbUYKICAgICAgICAgdGV4dFN0
eWxlID0ga0NUVUlGb250VGV4dFN0eWxlVGl0bGUzOwogICAgICAgICBmb250RGVzY3JpcHRvciA9
IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZVdpdGhUZXh0U3R5bGUodGV4dFN0eWxlLCBj
b250ZW50U2l6ZUNhdGVnb3J5KCksIG51bGxwdHIpKTsKICAgICAgICAgYnJlYWs7Ci0jaWYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9T
KSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1U
aXRsZTQ6CiAgICAgICAgIHRleHRTdHlsZSA9IGtDVFVJRm9udFRleHRTdHlsZVRpdGxlNDsKICAg
ICAgICAgZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRo
VGV4dFN0eWxlKHRleHRTdHlsZSwgY29udGVudFNpemVDYXRlZ29yeSgpLCBudWxscHRyKSk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwkocmV2aXNpb24gMjU0NzA1KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMiBAQAorMjAyMC0wMS0xNiAgSm9uYXRoYW4gQmVk
YXJkICA8amJlZGFyZEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIG9sZCBpT1MgdmVyc2lv
biBtYWNyb3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNjA5NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTg0OTE2NzU+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQWN0aXZpdHlUcmFja2VyLmg6IFJlbW92ZSBpT1MgMTIgdmVyc2lvbiBjaGVja3MuCisgICAg
ICAgICogUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oOiBSZW1vdmUgaU9TIDExIHZlcnNpb24g
Y2hlY2tzLgorICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaDog
UmVtb3ZlIGlPUyAxMiB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbTogUmVtb3ZlIGlPUyAxMiB2ZXJzaW9uIGNoZWNrcy4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW06CisgICAgICAgIChj
b250ZW50T2Zmc2V0Qm91bmRlZEluVmFsaWRSYW5nZSk6IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBj
aGVja3MuCisgICAgICAgICgtW1dLV2ViVmlldyBhY3RpdmVWaWV3TGF5b3V0U2l6ZTpdKTogRGl0
dG8uCisgICAgICAgICgtW1dLV2ViVmlldyBzYWZlQXJlYUluc2V0c0RpZENoYW5nZV0pOiBEaXR0
by4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF91cGRhdGVTY3JvbGxWaWV3SW5zZXRBZGp1c3RtZW50
QmVoYXZpb3JdKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9p
b3MvUmVtb3RlTGF5ZXJUcmVlVmlld3MubW06CisgICAgICAgICgtW1dLQ2hpbGRTY3JvbGxWaWV3
IGluaXRXaXRoRnJhbWU6XSk6IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3MuCisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgZ2VzdHVyZVJlY29nbml6ZXI6Y2FuQmVQcmV2ZW50ZWRCeUdlc3R1cmVS
ZWNvZ25pemVyOl0pOiBSZW1vdmUgaU9TIDEyIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IGdlc3R1cmVSZWNvZ25pemVyOnNob3VsZFJlY29nbml6ZVNpbXVsdGFuZW91
c2x5V2l0aEdlc3R1cmVSZWNvZ25pemVyOl0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBfc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyOmZyb21SZWN0OnJvdXRlU2hhcmluZ1BvbGlj
eTpyb3V0aW5nQ29udGV4dFVJRDpdKTogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyB1bm9jY2x1ZGVkV2luZG93Qm91bmRzRm9yQWN0aW9uU2hl
ZXRBc3Npc3RhbnQ6XSk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tTY3JvbGxW
aWV3Lmg6IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3MuCisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XS1Njcm9sbFZpZXcubW06CisgICAgICAgICgtW1dLU2Nyb2xsVmlldyBpbml0V2l0aEZy
YW1lOl0pOiBSZW1vdmUgaU9TIDExIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvZm9ybXMvV0tBaXJQbGF5Um91dGVQaWNrZXIuaDogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9u
IGNoZWNrcy4KKwogMjAyMC0wMS0xNiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CiAKICAgICAgICAgTWFrZSB0aGUgY2FsbEFzeW5jSmF2YVNjcmlwdEZ1bmN0aW9uIGZ1bmN0aW9u
IGFjdHVhbGx5IGJlIGFzeW5jIChzbyBhd2FpdCB3b3JrcykuCkluZGV4OiBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtBY3Rpdml0eVRyYWNrZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtBY3Rpdml0eVRyYWNrZXIuaAkocmV2
aXNpb24gMjU0NzA1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQWN0
aXZpdHlUcmFja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKSAmJiAoKFBMQVRGT1JNKE1BQykg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9S
TShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAw
MDApIHx8IFBMQVRGT1JNKFdBVENIT1MpKQorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspICYm
ICgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
MTQwMCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkgfHwgUExBVEZP
Uk0oV0FUQ0hPUykpCiAjZGVmaW5lIEhBVkVfTldfQUNUSVZJVFkgMQogI2VuZGlmCiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCShyZXZpc2lvbiAyNTQ3
MDUpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDc0LDcgKzQ3NCw3IEBAIHR5cGVkZWYgZW51bSB7CiBAcHJvcGVydHkgKHJl
YWRvbmx5KSBOU1N0cmluZyAqX2hvc3RBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI7CiBAZW5k
CiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiBQ
TEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogQGludGVyZmFjZSBOU1VSTCAo
KQogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHNldHRlcj1fc2V0VGl0bGU6KSBOU1N0cmlu
ZyAqX3RpdGxlOwogQGVuZApAQCAtNzI3LDcgKzcyNyw3IEBAIHN0cnVjdCBfVUlXZWJUb3VjaFBv
aW50IHsKICAgICBDR1BvaW50IGxvY2F0aW9uSW5Eb2N1bWVudENvb3JkaW5hdGVzOwogICAgIHVu
c2lnbmVkIGlkZW50aWZpZXI7CiAgICAgVUlUb3VjaFBoYXNlIHBoYXNlOwotI2lmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID4gMTAwMDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQ
TEFURk9STShNQUNDQVRBTFlTVCkKICAgICBDR0Zsb2F0IG1ham9yUmFkaXVzSW5TY3JlZW5Db29y
ZGluYXRlczsKICAgICBDR0Zsb2F0IGZvcmNlOwogICAgIENHRmxvYXQgYWx0aXR1ZGVBbmdsZTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVs
dFZhbHVlcy5oCShyZXZpc2lvbiAyNTQ3MDUpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
cmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjI2LDcgKzIyNiw3
IEBACiAjZGVmaW5lIERFRkFVTFRfUFJPQ0VTU19TV0FQX09OX0NST1NTX1NJVEVfTkFWSUdBVElP
Tl9FTkFCTEVEIGZhbHNlCiAjZW5kaWYKIAotI2lmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBf
X0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApIHx8IChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFU
Rk9STShXQVRDSE9TKQorI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKFdBVENI
T1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogI2RlZmluZSBERUZBVUxUX0NPTklDX0dSQURJ
RU5UX0VOQUJMRUQgdHJ1ZQogI2Vsc2UKICNkZWZpbmUgREVGQVVMVF9DT05JQ19HUkFESUVOVF9F
TkFCTEVEIGZhbHNlCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJ
QXR0YWNobWVudENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0JKHJldmlzaW9uIDI1NDcwNSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0JKHdv
cmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKICNlbmRpZgogI2ltcG9ydCA8cGFsL3NwaS9j
b2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KIAotI2RlZmluZSBDQU5fU0VDVVJFTFlfQVJDSElW
RV9GSUxFX1dSQVBQRVIgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCisjZGVmaW5lIENBTl9TRUNVUkVMWV9B
UkNISVZFX0ZJTEVfV1JBUFBFUiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUND
QVRBTFlTVCkKIAogbmFtZXNwYWNlIEFQSSB7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCShyZXZpc2lvbiAyNTQ3MDUpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQkod29ya2luZyBj
b3B5KQpAQCAtNzA1LDcgKzcwNSw3IEBAIC0gKHZvaWQpX2RpZENvbW1pdExvYWRGb3JNYWluRnJh
bWUKIAogc3RhdGljIENHUG9pbnQgY29udGVudE9mZnNldEJvdW5kZWRJblZhbGlkUmFuZ2UoVUlT
Y3JvbGxWaWV3ICpzY3JvbGxWaWV3LCBDR1BvaW50IGNvbnRlbnRPZmZzZXQpCiB7Ci0jaWYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9T
KSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBVSUVkZ2VJbnNldHMgY29udGVudEluc2V0
cyA9IHNjcm9sbFZpZXcuYWRqdXN0ZWRDb250ZW50SW5zZXQ7CiAjZWxzZQogICAgIFVJRWRnZUlu
c2V0cyBjb250ZW50SW5zZXRzID0gc2Nyb2xsVmlldy5jb250ZW50SW5zZXQ7CkBAIC0xNzEyLDcg
KzE3MTIsNyBAQCAtIChXZWJDb3JlOjpGbG9hdFNpemUpYWN0aXZlVmlld0xheW91dFNpCiAgICAg
aWYgKF92aWV3TGF5b3V0U2l6ZU92ZXJyaWRlKQogICAgICAgICByZXR1cm4gV2ViQ29yZTo6Rmxv
YXRTaXplKF92aWV3TGF5b3V0U2l6ZU92ZXJyaWRlLnZhbHVlKCkpOwogCi0jaWYgX19JUEhPTkVf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQ
TEFURk9STShNQUNDQVRBTFlTVCkKICAgICByZXR1cm4gV2ViQ29yZTo6RmxvYXRTaXplKFVJRWRn
ZUluc2V0c0luc2V0UmVjdChDR1JlY3RNYWtlKDAsIDAsIGJvdW5kcy5zaXplLndpZHRoLCBib3Vu
ZHMuc2l6ZS5oZWlnaHQpLCBzZWxmLl9zY3JvbGxWaWV3U3lzdGVtQ29udGVudEluc2V0KS5zaXpl
KTsKICNlbHNlCiAgICAgcmV0dXJuIFdlYkNvcmU6OkZsb2F0U2l6ZSB7IGJvdW5kcy5zaXplIH07
CkBAIC0xNzkwLDcgKzE3OTAsNyBAQCAtIChCT09MKV9zY3JvbGxWaWV3SXNSdWJiZXJCYW5kaW5n
CiAgICAgcmV0dXJuICFwb2ludHNFcXVhbEluRGV2aWNlUGl4ZWxzKGNvbnRlbnRPZmZzZXQsIGJv
dW5kZWRPZmZzZXQsIGRldmljZVNjYWxlRmFjdG9yKTsKIH0KIAotI2lmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZP
Uk0oTUFDQ0FUQUxZU1QpCiAtICh2b2lkKXNhZmVBcmVhSW5zZXRzRGlkQ2hhbmdlCiB7CiAgICAg
W3N1cGVyIHNhZmVBcmVhSW5zZXRzRGlkQ2hhbmdlXTsKQEAgLTIzMTMsNyArMjMxMyw3IEBAIC0g
KFdLUGFzc3dvcmRWaWV3ICopX3Bhc3N3b3JkVmlldwogCiAtICh2b2lkKV91cGRhdGVTY3JvbGxW
aWV3SW5zZXRBZGp1c3RtZW50QmVoYXZpb3IKIHsKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NB
VEFMWVNUKQogICAgIGlmICghW19zY3JvbGxWaWV3IF9jb250ZW50SW5zZXRBZGp1c3RtZW50QmVo
YXZpb3JXYXNFeHRlcm5hbGx5T3ZlcnJpZGRlbl0pCiAgICAgICAgIFtfc2Nyb2xsVmlldyBfc2V0
Q29udGVudEluc2V0QWRqdXN0bWVudEJlaGF2aW9ySW50ZXJuYWw6c2VsZi5fc2FmZUFyZWFTaG91
bGRBZmZlY3RPYnNjdXJlZEluc2V0cyA/IFVJU2Nyb2xsVmlld0NvbnRlbnRJbnNldEFkanVzdG1l
bnRBbHdheXMgOiBVSVNjcm9sbFZpZXdDb250ZW50SW5zZXRBZGp1c3RtZW50TmV2ZXJdOwogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Jl
bW90ZUxheWVyVHJlZVZpZXdzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlVmlld3MubW0JKHJldmlzaW9u
IDI1NDcwNSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3Mv
UmVtb3RlTGF5ZXJUcmVlVmlld3MubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxMCw3ICszMTAsNyBA
QCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyCiAgICAgaWYgKCFzZWxm
KQogICAgICAgICByZXR1cm4gbmlsOwogCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlT
VCkKICAgICBzZWxmLmNvbnRlbnRJbnNldEFkanVzdG1lbnRCZWhhdmlvciA9IFVJU2Nyb2xsVmll
d0NvbnRlbnRJbnNldEFkanVzdG1lbnROZXZlcjsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0JKHJldmlzaW9uIDI1NDcwNSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTIwMDgsOSArMjAwOCwx
MCBAQCAtIChCT09MKWdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvCiAtIChCT09MKWdl
c3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvZ25pemVyICopcHJldmVudGVkR2VzdHVyZVJl
Y29nbml6ZXIgY2FuQmVQcmV2ZW50ZWRCeUdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNv
Z25pemVyICopcHJldmVudGluZ0dlc3R1cmVSZWNvZ25pemVyIHsKICAgICAvLyBEb24ndCBhbGxv
dyB0aGUgaGlnaGxpZ2h0IHRvIGJlIHByZXZlbnRlZCBieSBhIHNlbGVjdGlvbiBnZXN0dXJlLiBQ
cmVzcy1hbmQtaG9sZCBvbiBhIGxpbmsgc2hvdWxkIGhpZ2hsaWdodCB0aGUgbGluaywgbm90IHNl
bGVjdCBpdC4KICAgICBib29sIGlzRm9yY2VQcmVzc0dlc3R1cmUgPSBOTzsKLSNpZiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAKKyNpZiBQTEFURk9STShJT1MpIHx8
IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGlzRm9yY2VQcmVzc0dlc3R1cmUgPSAocHJldmVu
dGluZ0dlc3R1cmVSZWNvZ25pemVyID09IF90ZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQuZ2V0KCku
Zm9yY2VQcmVzc0dlc3R1cmUpOwogI2VuZGlmCisKICNpZiBQTEFURk9STShNQUNDQVRBTFlTVCkK
ICAgICBpZiAoKHByZXZlbnRpbmdHZXN0dXJlUmVjb2duaXplciA9PSBfdGV4dEludGVyYWN0aW9u
QXNzaXN0YW50LmdldCgpLmxvdXBlR2VzdHVyZSkgJiYgKHByZXZlbnRlZEdlc3R1cmVSZWNvZ25p
emVyID09IF9oaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciB8fCBwcmV2ZW50ZWRH
ZXN0dXJlUmVjb2duaXplciA9PSBfbG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgfHwgcHJldmVu
dGVkR2VzdHVyZVJlY29nbml6ZXIgPT0gX3RleHRJbnRlcmFjdGlvbkFzc2lzdGFudC5nZXQoKS5m
b3JjZVByZXNzR2VzdHVyZSkpCiAgICAgICAgIHJldHVybiBZRVM7CkBAIC0yMDQ4LDcgKzIwNDks
NiBAQCAtIChCT09MKWdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvCiAgICAgICAgIHJl
dHVybiBZRVM7CiAjZW5kaWYKIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEyMDAwMAogI2lmIFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGlmIChpc1NhbWVQYWly
KGdlc3R1cmVSZWNvZ25pemVyLCBvdGhlckdlc3R1cmVSZWNvZ25pemVyLCBfdGV4dEludGVyYWN0
aW9uQXNzaXN0YW50LmdldCgpLmxvdXBlR2VzdHVyZSwgX3RleHRJbnRlcmFjdGlvbkFzc2lzdGFu
dC5nZXQoKS5mb3JjZVByZXNzR2VzdHVyZSkpCiAgICAgICAgIHJldHVybiBZRVM7CkBAIC0yMDU5
LDkgKzIwNTksMTIgQEAgLSAoQk9PTClnZXN0dXJlUmVjb2duaXplcjooVUlHZXN0dXJlUmVjbwog
ICAgIGlmICgoW2dlc3R1cmVSZWNvZ25pemVyIGlzS2luZE9mQ2xhc3M6W19VSUxvb2t1cEdlc3R1
cmVSZWNvZ25pemVyIGNsYXNzXV0gJiYgW290aGVyR2VzdHVyZVJlY29nbml6ZXIgaXNLaW5kT2ZD
bGFzczpbVUlMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciBjbGFzc11dKSB8fCAoW290aGVyR2Vz
dHVyZVJlY29nbml6ZXIgaXNLaW5kT2ZDbGFzczpbVUlMb25nUHJlc3NHZXN0dXJlUmVjb2duaXpl
ciBjbGFzc11dICYmIFtnZXN0dXJlUmVjb2duaXplciBpc0tpbmRPZkNsYXNzOltfVUlMb29rdXBH
ZXN0dXJlUmVjb2duaXplciBjbGFzc11dKSkKICAgICAgICAgcmV0dXJuIFlFUzsKICNlbmRpZgor
CisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBpZiAoaXNT
YW1lUGFpcihnZXN0dXJlUmVjb2duaXplciwgb3RoZXJHZXN0dXJlUmVjb2duaXplciwgX2hpZ2hs
aWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyLmdldCgpLCBfdGV4dEludGVyYWN0aW9uQXNz
aXN0YW50LmdldCgpLmZvcmNlUHJlc3NHZXN0dXJlKSkKICAgICAgICAgcmV0dXJuIFlFUzsKICNl
bmRpZgorCiAgICAgaWYgKGlzU2FtZVBhaXIoZ2VzdHVyZVJlY29nbml6ZXIsIG90aGVyR2VzdHVy
ZVJlY29nbml6ZXIsIF9zaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKSwgX3RleHRJbnRl
cmFjdGlvbkFzc2lzdGFudC5nZXQoKS5zaW5nbGVUYXBHZXN0dXJlKSkKICAgICAgICAgcmV0dXJu
IFlFUzsKIApAQCAtNjQ0Myw3ICs2NDQ2LDcgQEAgLSAodm9pZCl1cGRhdGVUZXh0U3VnZ2VzdGlv
bnNGb3JJbnB1dERlbAogLSAodm9pZClfc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyOihCT09MKWhh
c1ZpZGVvIGZyb21SZWN0Oihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JillbGVtZW50UmVjdCByb3V0
ZVNoYXJpbmdQb2xpY3k6KFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSlyb3V0ZVNoYXJpbmdQ
b2xpY3kgcm91dGluZ0NvbnRleHRVSUQ6KE5TU3RyaW5nICopcm91dGluZ0NvbnRleHRVSUQKIHsK
ICNpZiBFTkFCTEUoQUlSUExBWV9QSUNLRVIpCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTEwMDAwICYmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQ
TEVUVikKKyNpZiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCiAgICAg
aWYgKCFfYWlyUGxheVJvdXRlUGlja2VyKQogICAgICAgICBfYWlyUGxheVJvdXRlUGlja2VyID0g
YWRvcHROUyhbW1dLQWlyUGxheVJvdXRlUGlja2VyIGFsbG9jXSBpbml0XSk7CiAgICAgW19haXJQ
bGF5Um91dGVQaWNrZXIgc2hvd0Zyb21WaWV3OnNlbGYgcm91dGVTaGFyaW5nUG9saWN5OnJvdXRl
U2hhcmluZ1BvbGljeSByb3V0aW5nQ29udGV4dFVJRDpyb3V0aW5nQ29udGV4dFVJRCBoYXNWaWRl
bzpoYXNWaWRlb107CkBAIC02NjM4LDcgKzY2NDEsNyBAQCAtIChCT09MKWFjdGlvblNoZWV0QXNz
aXN0YW50OihXS0FjdGlvblNoCiAgICAgcmV0dXJuIE5POwogfQogCi0jaWYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFU
Rk9STShNQUNDQVRBTFlTVCkKIC0gKENHUmVjdCl1bm9jY2x1ZGVkV2luZG93Qm91bmRzRm9yQWN0
aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQKIHsK
ICAgICBVSUVkZ2VJbnNldHMgY29udGVudEluc2V0ID0gW1tfd2ViVmlldyBzY3JvbGxWaWV3XSBh
ZGp1c3RlZENvbnRlbnRJbnNldF07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tTY3JvbGxWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLU2Nyb2xsVmlldy5oCShyZXZpc2lvbiAyNTQ3MDUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tTY3JvbGxWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAK
IC0gKHZvaWQpX3NldFNjcm9sbEVuYWJsZWRJbnRlcm5hbDooQk9PTCllbmFibGVkOwogLSAodm9p
ZClfc2V0Wm9vbUVuYWJsZWRJbnRlcm5hbDooQk9PTCllbmFibGVkOwogCi0jaWYgX19JUEhPTkVf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQ
TEFURk9STShNQUNDQVRBTFlTVCkKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24sIHJlYWRv
bmx5KSBCT09MIF9jb250ZW50SW5zZXRBZGp1c3RtZW50QmVoYXZpb3JXYXNFeHRlcm5hbGx5T3Zl
cnJpZGRlbjsKIC0gKHZvaWQpX3NldENvbnRlbnRJbnNldEFkanVzdG1lbnRCZWhhdmlvckludGVy
bmFsOihVSVNjcm9sbFZpZXdDb250ZW50SW5zZXRBZGp1c3RtZW50QmVoYXZpb3IpaW5zZXRBZGp1
c3RtZW50QmVoYXZpb3I7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS1Njcm9sbFZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLU2Nyb2xsVmlldy5tbQkocmV2aXNpb24gMjU0NzA1KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLU2Nyb2xsVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTI3LDcgKzEy
Nyw3IEBAIC0gKGlkKWZvcndhcmRpbmdUYXJnZXRGb3JTZWxlY3RvcjooU0VMKWEKICAgICBXZWFr
T2JqQ1B0cjxpZCA8VUlTY3JvbGxWaWV3RGVsZWdhdGU+PiBfZXh0ZXJuYWxEZWxlZ2F0ZTsKICAg
ICBXS1Njcm9sbFZpZXdEZWxlZ2F0ZUZvcndhcmRlciAqX2RlbGVnYXRlRm9yd2FyZGVyOwogCi0j
aWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZP
Uk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBCT09MIF9jb250ZW50SW5zZXRB
ZGp1c3RtZW50QmVoYXZpb3JXYXNFeHRlcm5hbGx5T3ZlcnJpZGRlbjsKICNlbmRpZgogICAgIENH
RmxvYXQgX2tleWJvYXJkQm90dG9tSW5zZXRBZGp1c3RtZW50OwpAQCAtMTUzLDcgKzE1Myw3IEBA
IC0gKGlkKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZQogICAgIHNlbGYuZGlyZWN0aW9uYWxM
b2NrRW5hYmxlZCA9IFlFUzsKICAgICBbc2VsZiBfc2V0SW5kaWNhdG9ySW5zZXRBZGp1c3RtZW50
QmVoYXZpb3I6VUlTY3JvbGxWaWV3SW5kaWNhdG9ySW5zZXRBZGp1c3RtZW50QWx3YXlzXTsKIAot
I2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRG
T1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgX2NvbnRlbnRJbnNldEFkanVz
dG1lbnRCZWhhdmlvcldhc0V4dGVybmFsbHlPdmVycmlkZGVuID0gKHNlbGYuY29udGVudEluc2V0
QWRqdXN0bWVudEJlaGF2aW9yICE9IFVJU2Nyb2xsVmlld0NvbnRlbnRJbnNldEFkanVzdG1lbnRB
dXRvbWF0aWMpOwogI2VuZGlmCiAgICAgCkBAIC0yNzgsNyArMjc4LDcgQEAgLSAodm9pZClzZXRD
b250ZW50SW5zZXQ6KFVJRWRnZUluc2V0cyljbwogICAgIFtfaW50ZXJuYWxEZWxlZ2F0ZSBfc2No
ZWR1bGVWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVdOwogfQogCi0jaWYgX19JUEhPTkVfT1NfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9S
TShNQUNDQVRBTFlTVCkKIAogLSAoQk9PTClfY29udGVudEluc2V0QWRqdXN0bWVudEJlaGF2aW9y
V2FzRXh0ZXJuYWxseU92ZXJyaWRkZW4KIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9mb3Jtcy9XS0FpclBsYXlSb3V0ZVBpY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0FpclBsYXlSb3V0ZVBpY2tlci5oCShyZXZpc2lv
biAyNTQ3MDUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tBaXJQbGF5
Um91dGVQaWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKEFJUlBMQVlfUElDS0VSKQogCi0jaWYgX19JUEhP
TkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwICYmICFQTEFURk9STShXQVRDSE9T
KSAmJiAhUExBVEZPUk0oQVBQTEVUVikKKyNpZiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRG
T1JNKEFQUExFVFYpCiAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTQ3MDUpCisrKyBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBA
QAorMjAyMC0wMS0xNiAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVtb3ZlIG9sZCBpT1MgdmVyc2lvbiBtYWNyb3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjA5NgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNTg0OTE2NzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06IFJlbW92ZSBpT1MgMTEg
dmVyc2lvbiBjaGVja3MuCisgICAgICAgICogV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5o
OiBEaXR0by4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06IERpdHRvLgorICAgICAgICAq
IFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDogRGl0dG8uCisKIDIwMjAtMDEtMTYgIERhdmlkIEtp
bHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgLVdjb25kaXRpb25h
bC11bmluaXRpYWxpemVkIGluIFdlYkluc3BlY3RvclVJLCBXZWJLaXRMZWdhY3ksIFdlYktpdCBw
cm9qZWN0cwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQkocmV2aXNpb24gMjU0NzA1KQorKysgU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDIsNyArMTAyLDcgQEAgLSAoTlNTdHJpbmcgKilsYW5ndWFnZUZv
cldvcmRSYW5nZTooTlNSYQogQGVuZAogI2VuZGlmCiAKLSNpZiAoUExBVEZPUk0oSU9TX0ZBTUlM
WSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMTAwMDApCisjaWYgUExB
VEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKIEBpbnRlcmZhY2UgTlNBdHRyaWJ1
dGVkU3RyaW5nIChXZWJOU0F0dHJpYnV0ZWRTdHJpbmdEZXRhaWxzKQogLSAoRE9NRG9jdW1lbnRG
cmFnbWVudCAqKV9kb2N1bWVudEZyb21SYW5nZTooTlNSYW5nZSlyYW5nZSBkb2N1bWVudDooRE9N
RG9jdW1lbnQgKilkb2N1bWVudCBkb2N1bWVudEF0dHJpYnV0ZXM6KE5TRGljdGlvbmFyeSAqKWF0
dHJpYnV0ZXMgc3VicmVzb3VyY2VzOihOU0FycmF5ICoqKXN1YnJlc291cmNlczsKIEBlbmQKQEAg
LTQxOCw3ICs0MTgsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2Fy
CiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwgb25seSBXZWJLaXQyLgogfQogCi0jaWYg
KFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDExMDAwMCkgfHwgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZP
Uk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKIAogLy8gRklYTUU6IFJlbW92ZSBib3Ro
IHRoaXMgc3R1YiBhbmQgdGhlIHJlYWwgdmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uIGJlbG93IG9u
Y2Ugd2UgZG9uJ3QgbmVlZCB0aGUgcmVhbCB2ZXJzaW9uIG9uIGFueSBzdXBwb3J0ZWQgcGxhdGZv
cm0uCiAvLyBUaGlzIHN0dWIgaXMgbm90IHVzZWQgb3V0c2lkZSBXZWJLaXQsIGJ1dCBpdCdzIGhl
cmUgc28gd2Ugd29uJ3QgZ2V0IGEgbGlua2VyIGVycm9yLgpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaAkocmV2
aXNpb24gMjU0NzA1KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJVSURl
bGVnYXRlUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBACiAjZW5kaWYK
ICNlbmRpZgogCi0jaWYgVEFSR0VUX09TX0lQSE9ORSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiBUQVJHRVRfT1NfSVBIT05FCiBAcHJvdG9jb2wgVUlE
cm9wU2Vzc2lvbjsKICNlbmRpZgogCkBAIC0yOTksNyArMjk5LDYgQEAgQGludGVyZmFjZSBOU09i
amVjdCAoV2ViVUlEZWxlZ2F0ZVByaXZhdAogCiAtIChCT09MKXdlYlZpZXdDYW5DaGVja0dlb2xv
Y2F0aW9uQXV0aG9yaXphdGlvblN0YXR1czooV2ViVmlldyAqKXNlbmRlcjsKIAotI2lmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAogLyohCiAgQG1ldGhvZCB3ZWJW
aWV3OmRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JTZXNzaW9uOgogIEBwYXJhbSBzZW5kZXIg
VGhlIFdlYlZpZXcgc2VuZGluZyB0aGUgZGVsZWdhdGUgbWV0aG9kCkBAIC0zMDgsNyArMzA3LDYg
QEAgQGludGVyZmFjZSBOU09iamVjdCAoV2ViVUlEZWxlZ2F0ZVByaXZhdAogICovCiAtIChXZWJE
cmFnRGVzdGluYXRpb25BY3Rpb24pd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkcmFnRGVzdGlu
YXRpb25BY3Rpb25NYXNrRm9yU2Vzc2lvbjooaWQgPFVJRHJvcFNlc3Npb24+KXNlc3Npb247CiAj
ZW5kaWYKLSNlbmRpZgogCiAtIChOU0RhdGEgKil3ZWJDcnlwdG9NYXN0ZXJLZXlGb3JXZWJWaWV3
OihXZWJWaWV3ICopc2VuZGVyOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAyNTQ3MDUpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTE5NjYsNyArMTk2Niw3
IEBAIC0gKHZvaWQpX2RpZENvbmNsdWRlRWRpdERyYWcKICAgICB9CiB9CiAKLSNlbGlmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2VsaWYgUExBVEZPUk0oSU9T
KSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKIAogLSAoQk9PTClfcmVxdWVzdFN0YXJ0RGF0YUlu
dGVyYWN0aW9uOihDR1BvaW50KWNsaWVudFBvc2l0aW9uIGdsb2JhbFBvc2l0aW9uOihDR1BvaW50
KWdsb2JhbFBvc2l0aW9uCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXdQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCShyZXZpc2lvbiAyNTQ3MDUpCisrKyBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTExNyw3ICsxMTcsNyBAQCBleHRlcm4gTlNTdHJpbmcgKldlYlF1aWNrTG9va0ZpbGVOYW1lS2V5
CiBleHRlcm4gTlNTdHJpbmcgKldlYlF1aWNrTG9va1VUSUtleTsKICNlbmRpZgogCi0jaWYgVEFS
R0VUX09TX0lQSE9ORSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAw
MDAKKyNpZiBUQVJHRVRfT1NfSVBIT05FCiBAcHJvdG9jb2wgVUlEcm9wU2Vzc2lvbjsKICNlbmRp
ZgogCkBAIC00NzksNyArNDc5LDYgQEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBBUEku
CiAKIC0gKHZvaWQpX3JlcGxhY2VDdXJyZW50SGlzdG9yeUl0ZW06KFdlYkhpc3RvcnlJdGVtICop
aXRlbTsKIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAog
LSAoQk9PTClfcmVxdWVzdFN0YXJ0RGF0YUludGVyYWN0aW9uOihDR1BvaW50KWNsaWVudFBvc2l0
aW9uIGdsb2JhbFBvc2l0aW9uOihDR1BvaW50KWdsb2JhbFBvc2l0aW9uOwogLSAoV2ViVUlUZXh0
SW5kaWNhdG9yRGF0YSAqKV9nZXREYXRhSW50ZXJhY3Rpb25EYXRhOwogQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5LCBzdHJvbmcsIGdldHRlcj1fZGF0YU9wZXJhdGlvblRleHRJbmRpY2F0
b3IpIFdlYlVJVGV4dEluZGljYXRvckRhdGEgKmRhdGFPcGVyYXRpb25UZXh0SW5kaWNhdG9yOwpA
QCAtNDk1LDcgKzQ5NCw2IEBAIENvdWxkIGJlIHdvcnRoIGFkZGluZyB0byB0aGUgQVBJLgogLSAo
dm9pZClfZW5kZWREYXRhSW50ZXJhY3Rpb246KENHUG9pbnQpY2xpZW50UG9zaXRpb24gZ2xvYmFs
OihDR1BvaW50KWdsb2JhbFBvc2l0aW9uOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHksIGdldHRlcj1fZGF0YUludGVyYWN0aW9uQ2FyZXRSZWN0KSBDR1JlY3QgZGF0YUludGVyYWN0
aW9uQ2FyZXRSZWN0OwotI2VuZGlmCiAKIC8vIERlcHJlY2F0ZWQuIFVzZSAtW1dlYkRhdGFTb3Vy
Y2UgX3F1aWNrTG9va0NvbnRlbnRdIGluc3RlYWQuCiAtIChOU0RpY3Rpb25hcnkgKilxdWlja0xv
b2tDb250ZW50Rm9yVVJMOihOU1VSTCAqKXVybDsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDcwOSkKKysrIFRvb2xzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDIwLTAxLTE2ICBKb25h
dGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgb2xkIGlP
UyB2ZXJzaW9uIG1hY3JvcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA2MDk2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODQ5MTY3NT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGlua1Rlc3QubW06CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKTogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4K
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25O
YXZpZ2F0aW9uLm1tOiBSZW1vdmUgaU9TIDExIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW06IERpdHRv
LgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tIVFRQQ29va2ll
U3RvcmUubW06IFJlbW92ZSBpT1MgMTIgdmVyc2lvbiBjaGVja3MuCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9pb3MvT3ZlcmZsb3dTY3JvbGxWaWV3VGVzdHMubW06IFJlbW92ZSBpT1Mg
MTMgdmVyc2lvbiBjaGVja3MuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0
UnVubmVyV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtUZXN0UnVubmVyV0tXZWJWaWV3IHNldE92
ZXJyaWRlU2FmZUFyZWFJbnNldHM6XSk6IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3MuCisK
IDIwMjAtMDEtMTYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbYm1hbGxvY10gSXNvSGVhcCdzIGluaXRpYWwgc2V0dXAgc2hvdWxkIGJlIHNtYWxsCkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvQVZGb3VuZGF0aW9uU29m
dExpbmtUZXN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGlua1Rlc3QubW0JKHJldmlzaW9uIDI1NDcwNSkK
KysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9BVkZvdW5kYXRpb25T
b2Z0TGlua1Rlc3QubW0JKHdvcmtpbmcgY29weSkKQEAgLTE0MSwxMiArMTQxLDEyIEBAIFRFU1Qo
QVZGb3VuZGF0aW9uU29mdExpbmssIENvbnN0YW50cykKICAgICBpZiAoUEFMOjpjYW5Mb2FkX0FW
Rm91bmRhdGlvbl9BVlNhbXBsZVJhdGVLZXkoKSkKICAgICAgICAgRVhQRUNUX1RSVUUoW0FWU2Ft
cGxlUmF0ZUtleSBpc0VxdWFsVG9TdHJpbmc6QCJBVlNhbXBsZVJhdGVLZXkiXSk7CiAKLSNpZiBQ
TEFURk9STShNQUMpIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDExMDAwMCkgfHwgUExBVEZPUk0oV0FUQ0hPUykgfHwgUExBVEZPUk0oQVBQ
TEVUVikKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oV0FU
Q0hPUykgfHwgUExBVEZPUk0oQVBQTEVUVikKICAgICBFWFBFQ1RfVFJVRShQQUw6OmNhbkxvYWRf
QVZGb3VuZGF0aW9uX0FWVVJMQXNzZXRPdXRPZkJhbmRNSU1FVHlwZUtleSgpKTsKICAgICBFWFBF
Q1RfVFJVRShbQVZVUkxBc3NldE91dE9mQmFuZE1JTUVUeXBlS2V5IGlzRXF1YWxUb1N0cmluZzpA
IkFWVVJMQXNzZXRPdXRPZkJhbmRNSU1FVHlwZUtleSJdKTsKICNlbmRpZgogCi0jaWYgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8
IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEy
MDAwMCkgfHwgUExBVEZPUk0oV0FUQ0hPUykgfHwgUExBVEZPUk0oQVBQTEVUVikKKyNpZiAoUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkg
fHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShXQVRDSE9TKSB8fCBQTEFURk9STShBUFBMRVRW
KQogICAgIEVYUEVDVF9UUlVFKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZVUkxBc3NldFVz
ZUNsaWVudFVSTExvYWRpbmdFeGNsdXNpdmVseSgpKTsKICAgICBFWFBFQ1RfVFJVRShbQVZVUkxB
c3NldFVzZUNsaWVudFVSTExvYWRpbmdFeGNsdXNpdmVseSBpc0VxdWFsVG9TdHJpbmc6QCJBVlVS
TEFzc2V0VXNlQ2xpZW50VVJMTG9hZGluZ0V4Y2x1c2l2ZWx5Il0pOwogI2VuZGlmCkBAIC0xNjEs
NyArMTYxLDcgQEAgVEVTVChBVkZvdW5kYXRpb25Tb2Z0TGluaywgQ29uc3RhbnRzKQogICAgIEVY
UEVDVF9UUlVFKFtBVkNvbnRlbnRLZXlSZXF1ZXN0UHJvdG9jb2xWZXJzaW9uc0tleSBpc0VxdWFs
VG9TdHJpbmc6QCJQcm90b2NvbFZlcnNpb25zS2V5Il0pOwogI2VuZGlmCiAKLSNpZiAoUExBVEZP
Uk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTUwMCkgfHwg
KFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTMw
MDAwKSB8fCBQTEFURk9STShXQVRDSE9TKSB8fCBQTEFURk9STShBUFBMRVRWKQorI2lmIChQTEFU
Rk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNTAwKSB8
fCBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQUExFVFYp
CiAgICAgRVhQRUNUX1RSVUUoUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVlZpZGVvQ29kZWNU
eXBlSEVWQ1dpdGhBbHBoYSgpKTsKICAgICBFWFBFQ1RfVFJVRShbQVZWaWRlb0NvZGVjVHlwZUhF
VkNXaXRoQWxwaGEgaXNFcXVhbFRvU3RyaW5nOkAibXV4YSJdKTsKICNlbmRpZgpJbmRleDogVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGF0YURldGVj
dGlvbi5tbQkocmV2aXNpb24gMjU0NzA1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsMTIgKzE0
NSw5IEBAIFRFU1QoV2ViS2l0LCBBZGRBbmRSZW1vdmVEYXRhRGV0ZWN0b3JzKQogICAgICAgICBF
WFBFQ1RfV0tfU1RSRVEoIkRlY2VtYmVyIDIxLCAyMDIxIiwgcmVzdWx0c1sxXS52YWx1ZSk7CiAg
ICAgICAgIEVYUEVDVF9XS19TVFJFUSgiRmxpZ2h0SW5mb3JtYXRpb24iLCByZXN1bHRzWzJdLnR5
cGUpOwogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoIkFDNzgwIiwgcmVzdWx0c1syXS52YWx1ZSk7
Ci0KLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMzAwMDAKICAgICAg
ICAgRVhQRUNUX0VRKEREUmVzdWx0Q2F0ZWdvcnlVbmtub3duLCByZXN1bHRzWzBdLmNhdGVnb3J5
KTsKICAgICAgICAgRVhQRUNUX0VRKEREUmVzdWx0Q2F0ZWdvcnlDYWxlbmRhckV2ZW50LCByZXN1
bHRzWzFdLmNhdGVnb3J5KTsKICAgICAgICAgRVhQRUNUX0VRKEREUmVzdWx0Q2F0ZWdvcnlNaXNj
LCByZXN1bHRzWzJdLmNhdGVnb3J5KTsKLSNlbmRpZgogICAgIH07CiAKICAgICBbd2ViVmlldyBz
eW5jaHJvbm91c2x5RGV0ZWN0RGF0YVdpdGhUeXBlczpXS0RhdGFEZXRlY3RvclR5cGVBbGxdOwpJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9u
TmF2aWdhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCShyZXZpc2lvbiAyNTQ3MDUpCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZp
Z2F0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MzkyLDcgKzYzOTIsNyBAQCBURVNUKFByb2Nl
c3NTd2FwLCBQYWdlT3ZlcmxheUxheWVyUGVyc2lzCiAjZW5kaWYKIH0KIAotI2lmIFBMQVRGT1JN
KElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYg
UExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKIAogVEVTVChQcm9jZXNzU3dh
cCwgUXVpY2tMb29rUmVxdWVzdHNQYXNzd29yZEFmdGVyU3dhcCkKIHsKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1l
bnRUZXN0cy5tbQkocmV2aXNpb24gMjU0NzA1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjks
NyArNjksNyBAQCAtIChfV0tBdHRhY2htZW50ICopX2F0dGFjaG1lbnRXaXRoTmFtZTooCiB9CiBA
ZW5kCiAKLSNkZWZpbmUgVVNFU19NT0RFUk5fQVRUUklCVVRFRF9TVFJJTkdfQ09OVkVSU0lPTiAo
KFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDExMDAwMCkgfHwgUExBVEZPUk0oTUFDKSkKKyNkZWZpbmUgVVNFU19NT0RFUk5fQVRUUklC
VVRFRF9TVFJJTkdfQ09OVkVSU0lPTiAoUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUMpIHx8
IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKSkKIAogQGludGVyZmFjZSBBdHRhY2htZW50VXBkYXRlT2Jz
ZXJ2ZXIgOiBOU09iamVjdCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4KIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgTlNBcnJheSAqaW5zZXJ0ZWQ7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tIVFRQQ29va2llU3RvcmUu
bW0JKHJldmlzaW9uIDI1NDcwNSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0Nyw3ICszNDcs
NyBAQCBURVNUKFdlYktpdCwgV0tIVFRQQ29va2llU3RvcmVIdHRwT25seSkgCiAgICAgW2Nvb2tp
ZXMgcmVsZWFzZV07CiB9CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkKKyNpZiAoUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExB
VEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKIFRFU1QoV2ViS2l0LCBXS0hUVFBD
b29raWVTdG9yZUNyZWF0aW9uVGltZSkgCiB7ICAgCiAgICAgYXV0byBkYXRhU3RvcmUgPSBbV0tX
ZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdOwpAQCAtNDAxLDcgKzQwMSw3IEBAIFRF
U1QoV2ViS2l0LCBXS0hUVFBDb29raWVTdG9yZUNyZWF0aW9uVGkKICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmdvdEZsYWcpOwogICAgIGdvdEZsYWcgPSBmYWxzZTsKIH0KLSNlbmRpZiAv
LyAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
MTQwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEyMDAwMCkKKyNlbmRpZiAvLyAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQ
TEFURk9STShNQUNDQVRBTFlTVCkKIAogLy8gRklYTUU6IFRoaXMgI2lmIHNob3VsZCBiZSByZW1v
dmVkIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzM1MzQ0MjAyPiBpcyByZXNvbHZlZCBhbmQgYm90cyBh
cmUgdXBkYXRlZC4KICNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhf
QUxMT1dFRCA8PSAxMDEzMDEKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL092
ZXJmbG93U2Nyb2xsVmlld1Rlc3RzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvaW9zL092ZXJmbG93U2Nyb2xsVmlld1Rlc3RzLm1tCShyZXZpc2lvbiAyNTQ3MDUp
CisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9PdmVyZmxvd1Njcm9sbFZpZXdUZXN0
cy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2ltcG9ydCAiVUlLaXRTUEku
aCIKICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CiAKLSNpZiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMzAwMDAKKyNpZiBQTEFURk9STShJT1MpIHx8IFBM
QVRGT1JNKE1BQ0NBVEFMWVNUKQogc3RhdGljIE5TU3RyaW5nICpjb25zdCBVSVNjcm9sbFZpZXdJ
bmRpY2F0b3JDbGFzcyA9IEAiX1VJU2Nyb2xsVmlld1Njcm9sbEluZGljYXRvciI7CiAjZWxzZQog
c3RhdGljIE5TU3RyaW5nICpjb25zdCBVSVNjcm9sbFZpZXdJbmRpY2F0b3JDbGFzcyA9IEAiVUlJ
bWFnZVZpZXciOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVy
V0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2Ev
VGVzdFJ1bm5lcldLV2ViVmlldy5tbQkocmV2aXNpb24gMjU0NzA1KQorKysgVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC00MjUsNyArNDI1LDcgQEAgLSAodm9pZClhY2Nlc3NpYmlsaXR5UmV0cmlldmVTcGVha1NlbGVj
dAogLSAodm9pZClzZXRPdmVycmlkZVNhZmVBcmVhSW5zZXRzOihVSUVkZ2VJbnNldHMpaW5zZXRz
CiB7CiAgICAgX292ZXJyaWRlU2FmZUFyZWFJbnNldHMgPSBpbnNldHM7Ci0jaWYgX19JUEhPTkVf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQ
TEFURk9STShNQUNDQVRBTFlTVCkKICAgICBbc2VsZiBfdXBkYXRlU2FmZUFyZWFJbnNldHNdOwog
I2VuZGlmCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388042</attachid>
            <date>2020-01-17 08:37:55 -0800</date>
            <delta_ts>2020-01-22 11:42:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206096-20200117083754.patch</filename>
            <type>text/plain</type>
            <size>60093</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNTQ3NDQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIwLTAxLTE3ICBKb25hdGhhbiBCZWRhcmQgIDxq
YmVkYXJkQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgb2xkIGlPUyB2ZXJzaW9uIG1hY3Jv
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MDk2
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODQ5MTY3NT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZS5oOiBSZW1v
dmUgaU9TIDEyIHZlcnNpb24gbWFjcm8uCisgICAgICAgICogd3RmL1BsYXRmb3JtSGF2ZS5oOiBE
aXR0by4KKyAgICAgICAgKiB3dGYvUGxhdGZvcm1Vc2UuaDogRGl0dG8uCisKIDIwMjAtMDEtMTYg
IEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVsYW5k
IGJ5dGVjb2RlIGNoZWNrcG9pbnRzIHNpbmNlIGJ1Z3MgaGF2ZSBiZWVuIGZpeGVkCkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtRW5hYmxlLmgJKHJldmlzaW9uIDI1NDc0NCkKKysrIFNvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtRW5hYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNSw3ICsyMDUsNyBAQCB0aGUg
cHVibGljIGlPUyBTREsuIFNlZSA8aHR0cHM6Ly93ZWJraXQuCiAjZW5kaWYKIAogI2lmICFkZWZp
bmVkKEVOQUJMRV9XS1BERlZJRVcpCi0jaWYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9S
TShBUFBMRVRWKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpICYmIF9fSVBIT05FX09TX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEyMDAwMAorI2lmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExB
VEZPUk0oQVBQTEVUVikgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogI2RlZmluZSBFTkFCTEVf
V0tQREZWSUVXIDEKICNlbmRpZgogI2VuZGlmCkBAIC0xMDM0LDcgKzEwMzQsNyBAQCB0aGUgcHVi
bGljIGlPUyBTREsuIFNlZSA8aHR0cHM6Ly93ZWJraXQuCiAjZGVmaW5lIEVOQUJMRV9LSU5FVElD
X1NDUk9MTElORyAxCiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKEVOQUJMRV9NT05PU1BBQ0VfRk9O
VF9FWENFUFRJT04pICYmICgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEIDwgMTAxNTAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMzAwMDApKQorI2lmICFkZWZpbmVkKEVOQUJMRV9N
T05PU1BBQ0VfRk9OVF9FWENFUFRJT04pICYmICgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxNTAwKSB8fCBQTEFURk9STShJT1MpIHx8IFBMQVRG
T1JNKE1BQ0NBVEFMWVNUKSkKICNkZWZpbmUgRU5BQkxFX01PTk9TUEFDRV9GT05UX0VYQ0VQVElP
TiAxCiAjZW5kaWYKIApJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgJKHJldmlzaW9uIDI1NDc0NCkK
KysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNTUs
NyArMzU1LDcgQEAKICNkZWZpbmUgSEFWRV9UT1VDSF9CQVIgMQogI2VuZGlmCiAKLSNpZiAoUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTUwMCkg
fHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEzMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTUwMCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUND
QVRBTFlTVCkKICNkZWZpbmUgSEFWRV9IU1RTX1NUT1JBR0VfUEFUSCAxCiAjZW5kaWYKIApAQCAt
MzkzLDcgKzM5Myw3IEBACiAjZGVmaW5lIEhBVkVfQ0ZORVRXT1JLX1dJVEhfQ09OVEVOVF9FTkNP
RElOR19TTklGRklOR19PVkVSUklERSAxCiAjZW5kaWYKIAotI2lmIChQTEFURk9STShNQUMpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0o
SU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTMwMDAw
KSB8fCBQTEFURk9STShHVEspCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0o
TUFDQ0FUQUxZU1QpIHx8IFBMQVRGT1JNKEdUSykKICNkZWZpbmUgSEFWRV9PU19EQVJLX01PREVf
U1VQUE9SVCAxCiAjZW5kaWYKIApAQCAtNDQyLDExICs0NDIsMTEgQEAKICNkZWZpbmUgSEFWRV9B
VVRIT1JJWkFUSU9OX1NUQVRVU19GT1JfTUVESUFfVFlQRSAxCiAjZW5kaWYKIAotI2lmIChQTEFU
Rk9STShNQUMpICYmIChfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCAm
JiBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTAxNDA0KSkgfHwgKFBMQVRGT1JN
KElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwICYmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTIwMjAwKSB8fCBQTEFURk9STShXQVRD
SE9TKSB8fCBQTEFURk9STShBUFBMRVRWKQorI2lmIChQTEFURk9STShNQUMpICYmIChfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUFYX0FMTE9XRUQgPj0gMTAxNDA0KSkgfHwgUExBVEZPUk0oV0FUQ0hPUykgfHwgUExBVEZPUk0o
QVBQTEVUVikKICNkZWZpbmUgSEFWRV9DRk5FVFdPUktfT1ZFUlJJREVfU0VTU0lPTl9DT09LSUVf
QUNDRVBUX1BPTElDWSAxCiAjZW5kaWYKIAotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNTAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlM
WSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTMwMDAwKQorI2lmIChQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNTAw
KSB8fCBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogI2RlZmluZSBIQVZF
X0NGTkVUV09SS19OU1VSTFNFU1NJT05fU1RSSUNUUlVTVEVWQUxVQVRFIDEKICNlbmRpZgogCkBA
IC00NzAsNyArNDcwLDcgQEAKICNkZWZpbmUgSEFWRV9TQU5EQk9YX0lTU1VFX1JFQURfRVhURU5T
SU9OX1RPX1BST0NFU1NfQllfQVVESVRfVE9LRU4gMQogI2VuZGlmCiAKLSNpZiAoUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTUwMCkgfHwgKFBM
QVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEzMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTUwMCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlT
VCkKICNkZWZpbmUgSEFWRV9NRE5TX0ZBU1RfUkVHSVNUUkFUSU9OIDEKICNlbmRpZgogCkBAIC00
NzgsMTkgKzQ3OCwxOSBAQAogI2RlZmluZSBIQVZFX0RJU0FMTE9XQUJMRV9VU0VSX0lOU1RBTExF
RF9GT05UUyAxCiAjZW5kaWYKIAotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNTAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTMwMDAwKQorI2lmIChQTEFURk9S
TShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNTAwKSB8fCBQ
TEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogI2RlZmluZSBIQVZFX0NURk9O
VENSRUFURUZPUkNIQVJBQ1RFUlNXSVRITEFOR1VBR0VBTkRPUFRJT04gMQogI2VuZGlmCiAKLSNp
ZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
MTUwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEzMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTUwMCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9S
TShNQUNDQVRBTFlTVCkKICNkZWZpbmUgSEFWRV9DVEZPTlRUUkFOU0ZPUk1HTFlQSFNXSVRITEFO
R1VBR0UgMQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMzAwMDAKKyNpZiBQTEFURk9STShJT1MpIHx8IFBM
QVRGT1JNKE1BQ0NBVEFMWVNUKQogI2RlZmluZSBIQVZFX0FSS0lUX1FVSUNLX0xPT0tfUFJFVklF
V19JVEVNIDEKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTMwMDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQ
TEFURk9STShNQUNDQVRBTFlTVCkKICNkZWZpbmUgSEFWRV9VSV9XS19ET0NVTUVOVF9DT05URVhU
IDEKICNlbmRpZgogCkBAIC01MTAsMzUgKzUxMCwzNSBAQAogI2RlZmluZSBIQVZFX0ZBSVJQTEFZ
U1RSRUFNSU5HX0NFTkNfSU5JVERBVEEgMQogI2VuZGlmCiAKLSNpZiAoUExBVEZPUk0oSU9TKSAm
JiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMzAwMDApIHx8IFBMQVRGT1JN
KFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQUExFVFYpCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFU
Rk9STShXQVRDSE9TKSB8fCBQTEFURk9STShBUFBMRVRWKQogI2RlZmluZSBIQVZFX1VJX1NDUk9M
TF9WSUVXX0lORElDQVRPUl9GTEFTSElOR19TUEkgMQogI2VuZGlmCiAKLSNpZiAoUExBVEZPUk0o
SU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMzAwMDApIHx8IFBM
QVRGT1JNKFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQUExFVFYpCisjaWYgUExBVEZPUk0oSU9TKSB8
fCBQTEFURk9STShXQVRDSE9TKSB8fCBQTEFURk9STShBUFBMRVRWKQogI2RlZmluZSBIQVZFX0FQ
UF9MSU5LU19XSVRIX0lTRU5BQkxFRCAxCiAjZW5kaWYKIAotI2lmIChQTEFURk9STShJT1MpICYm
IF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEzMDAwMCkKKyNpZiBQTEFURk9S
TShJT1MpCiAjZGVmaW5lIEhBVkVfUk9VVEVfU0hBUklOR19QT0xJQ1lfTE9OR19GT1JNX1ZJREVP
IDEKICNlbmRpZgogCi0jaWYgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTIwMDAwICYmICFQTEFURk9STShJT1NfU0lNVUxBVE9SKSkKKyNpZiBQ
TEFURk9STShJT1MpICYmICFQTEFURk9STShJT1NfU0lNVUxBVE9SKQogI2RlZmluZSBIQVZFX0RF
VklDRV9NQU5BR0VNRU5UIDEKICNlbmRpZgogCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE1MDApIHx8IChQTEFURk9STShJT1NfRkFN
SUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMzAwMDApIHx8IFBM
QVRGT1JNKFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQUExFVFYpCisjaWYgKFBMQVRGT1JNKE1BQykg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE1MDApIHx8IFBMQVRGT1JN
KElPU19GQU1JTFkpCiAjZGVmaW5lIEhBVkVfTlNVUkxTRVNTSU9OX1dFQlNPQ0tFVCAxCiAjZW5k
aWYKIAotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTAxNTAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMzAwMDApIHx8IFBMQVRGT1JNKFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQ
UExFVFYpCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDE1MDApIHx8IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oV0FUQ0hPUykgfHwg
UExBVEZPUk0oQVBQTEVUVikKICNkZWZpbmUgSEFWRV9BVlBMQVlFUl9SRVNPVVJDRV9DT05TRVJW
QVRJT05fTEVWRUwgMQogI2VuZGlmCiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKSB8fCBQTEFURk9STShXQVRD
SE9TKSB8fCBQTEFURk9STShBUFBMRVRWKQorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShJT1MpIHx8IFBM
QVRGT1JNKFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQUExFVFYpCiAjZGVmaW5lIEhBVkVfQ09SRVRF
WFRfQVVUT19PUFRJQ0FMX1NJWklORyAxCiAjZW5kaWYKIAotI2lmIChQTEFURk9STShNQUMpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDE1MDApIHx8IChQTEFURk9STShJ
T1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTMwMDAwKQorI2lmIChQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDE1MDAp
IHx8IFBMQVRGT1JNKElPUykKICNkZWZpbmUgSEFWRV9OU0ZPTlRfV0lUSF9PUFRJQ0FMX1NJWklO
R19CVUcgMQogI2VuZGlmCiAKQEAgLTU0Niw3ICs1NDYsNyBAQAogI2RlZmluZSBIQVZFX0FQUF9T
U08gMQogI2VuZGlmCiAKLSNpZiAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMzAwMDAgfHwgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTUwMCkgfHwgUExBVEZPUk0oV0FUQ0hPUykgfHwgUExB
VEZPUk0oQVBQTEVUVikgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisjaWYgUExBVEZPUk0oSU9T
KSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTUwMCkgfHwgUExBVEZPUk0oV0FUQ0hPUykgfHwgUExBVEZPUk0oQVBQTEVUVikgfHwgUExB
VEZPUk0oTUFDQ0FUQUxZU1QpCiAjZGVmaW5lIEhBVkVfVExTX1BST1RPQ09MX1ZFUlNJT05fVCAx
CiAjZW5kaWYKIApAQCAtNTY2LDcgKzU2Niw3IEBACiAjZGVmaW5lIEhBVkVfQVhfQ0xJRU5UX1RZ
UEUgMQogI2VuZGlmCiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTUwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTMwMDAwKSB8fCBQTEFURk9STShXQVRDSE9TKSB8fCBQ
TEFURk9STShBUFBMRVRWKQorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxNTAwKSB8fCBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKFdB
VENIT1MpIHx8IFBMQVRGT1JNKEFQUExFVFYpCiAjZGVmaW5lIEhBVkVfREVTSUdOX1NZU1RFTV9V
SV9GT05UUyAxCiAjZW5kaWYKIApJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCShyZXZpc2lvbiAyNTQ3
NDQpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MTksNyArMzE5LDcgQEAKICNkZWZpbmUgVVNFX1VJQ09OVEVYVE1FTlUgMQogI2VuZGlmCiAKLSNp
ZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApIHx8IFBMQVRGT1JNKFdBVENIT1MpIHx8IFBM
QVRGT1JNKEFQUExFVFYpCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZ
KQogI2RlZmluZSBVU0VfUExBVEZPUk1fU1lTVEVNX0ZBTExCQUNLX0xJU1QgMQogI2VuZGlmCiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDc0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDIwLTAxLTE3ICBKb25hdGhh
biBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgb2xkIGlPUyB2
ZXJzaW9uIG1hY3JvcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA2MDk2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODQ5MTY3NT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuCisK
KyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbTogUmVtb3Zl
IGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBwYWdlL1NldHRpbmdzRGVmYXVsdFZh
bHVlcy5oOiBSZW1vdmUgaU9TIDEyIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6
OnBhaW50KTogUmVtb3ZlIGlPUyAxMiB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6cGxhdGZv
cm1BZGRQYXRoRm9yUm91bmRlZFJlY3QpOiBSZW1vdmUgaU9TIDEyIHZlcnNpb24gY2hlY2tzLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnZhcmlhdGlvbkNhcGFiaWxpdGllc0ZvckZvbnREZXNjcmlwdG9y
KTogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRD
YWNoZTo6bGFzdFJlc29ydEZhbGxiYWNrRm9udCk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Om1hdGNoU3lzdGVtRm9udFVzZSk6IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVjay4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvRm9udENhY2hlSU9TLm1tOgorICAgICAgICAo
V2ViQ29yZTo6cGxhdGZvcm1Gb250V2l0aEZhbWlseVNwZWNpYWxDYXNlKTogUmVtb3ZlIGlPUyAx
MSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKTogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oOiBSZW1vdmUgaU9TIDExIHZl
cnNpb24gY2hlY2tzLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpjb29raWVzRm9yVVJMKTog
UmVtb3ZlIGlPUyAxMiB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKFdlYkNvcmU6OnNldEhUVFBD
b29raWVzRm9yVVJMKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OmNhY2hlZFN5c3RlbUZvbnRE
ZXNjcmlwdGlvbiBjb25zdCk6IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3MuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6dXBkYXRlQ2FjaGVkU3lzdGVtRm9udERlc2NyaXB0
aW9uIGNvbnN0KTogRGl0dG8uCisKIDIwMjAtMDEtMTcgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIE9wdGltaXplIG5leHRXcmFwT3Bwb3J0dW5p
dHkvaXNBdFNvZnRXcmFwT3Bwb3J0dW5pdHkgZm9yIHRoZSBtb3N0IGNvbW1vbiBpbmxpbmUgY29u
dGVudApJbmRleDogU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTQ3NDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9QQUwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MjAtMDEtMTcgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgorCisgICAgICAg
IFJlbW92ZSBvbGQgaU9TIHZlcnNpb24gbWFjcm9zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYwOTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4
NDkxNjc1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaDogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNr
cy4KKyAgICAgICAgKiBwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oOiBSZW1vdmUgaU9TIDEy
IHZlcnNpb24gY2hlY2tzLgorICAgICAgICAqIHBhbC9zcGkvY29jb2EvTlNLZXllZEFyY2hpdmVy
U1BJLmg6IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3MuCisgICAgICAgICogcGFsL3NwaS9p
b3MvTWVkaWFQbGF5ZXJTUEkuaDogUmVtb3ZlIGlPUyAxMSBhbmQgMTIgdmVyc2lvbiBjaGVja3Mu
CisKIDIwMjAtMDEtMTYgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBdHRlbXB0IHRvIGZpeCBpbnRlcm5hbCBpT1MgRGVidWcgYnVpbGRzCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsu
bW0JKHJldmlzaW9uIDI1NDc0NCkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvQVZG
b3VuZGF0aW9uU29mdExpbmsubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNp
bXBvcnQgPEFWRm91bmRhdGlvbi9BVkZvdW5kYXRpb24uaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlu
a2luZy5oPgogCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDE1MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMzAwMDApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE1MDApIHx8IFBMQVRGT1JNKElP
UykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiBTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9TT1VS
Q0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIFBBTF9FWFBPUlQpCiAjZWxzZQogQGlu
dGVyZmFjZSBBVlBsYXllckl0ZW0gKERpc2FibGVLVk9PblN1cHJlc3Nlc1ZpZGVvTGF5ZXJzKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgJKHJl
dmlzaW9uIDI1NDc0NCkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29y
a1NQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTMsNyArMjEzLDcgQEAgdHlwZWRlZiBOU19FTlVN
KE5TSW50ZWdlciwgTlNVUkxTZXNzaW9uQwogQHByb3BlcnR5IChudWxsYWJsZSwgcmVhZHdyaXRl
LCByZXRhaW4pIE5TVVJMICpfc2l0ZUZvckNvb2tpZXM7CiBAcHJvcGVydHkgKHJlYWR3cml0ZSkg
Qk9PTCBfaXNUb3BMZXZlbE5hdmlnYXRpb247CiAjZW5kaWYKLSNpZiBQTEFURk9STShNQUMpIHx8
IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMTAwMDApCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpIHx8IFBMQVRG
T1JNKE1BQ0NBVEFMWVNUKQogQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgQk9PTCBfcHJl
Y29ubmVjdDsKICNlbmRpZgogQGVuZApJbmRleDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
Y2cvQ29yZUdyYXBoaWNzU1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgJKHJldmlzaW9uIDI1NDc0NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yODIsNyArMjgyLDcgQEAgdm9pZCBDR0NvbnRleHRTZXRTdHlsZShDR0NvbnRleHRSZWYsIENH
UwogCiB2b2lkIENHQ29udGV4dERyYXdDb25pY0dyYWRpZW50KENHQ29udGV4dFJlZiwgQ0dHcmFk
aWVudFJlZiwgQ0dQb2ludCBjZW50ZXIsIENHRmxvYXQgYW5nbGUpOwogCi0jaWYgKFBMQVRGT1JN
KE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQ
TEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMjAwMDApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZ
U1QpCiB2b2lkIENHUGF0aEFkZFVuZXZlbkNvcm5lcnNSb3VuZGVkUmVjdChDR011dGFibGVQYXRo
UmVmLCBjb25zdCBDR0FmZmluZVRyYW5zZm9ybSAqLCBDR1JlY3QsIGNvbnN0IENHU2l6ZSBjb3Ju
ZXJzWzRdKTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2Nv
YS9JT1N1cmZhY2VTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9jb2NvYS9JT1N1cmZhY2VTUEkuaAkocmV2aXNpb24gMjU0NzQ0KQorKysgU291cmNlL1dlYkNv
cmUvUEFML3BhbC9zcGkvY29jb2EvSU9TdXJmYWNlU1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTEw
Myw3ICsxMDMsNyBAQCBXVEZfRVhURVJOX0NfRU5ECiAKICNlbHNlCiAKLSNpZiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMAorI2lmIFBMQVRGT1JNKFdBVENIT1MpIHx8
IFBMQVRGT1JNKEFQUExFVFYpCiB0eXBlZGVmIHVpbnQzMl90IElPU3VyZmFjZUlEOwogI2VuZGlm
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZl
clNQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL05T
S2V5ZWRBcmNoaXZlclNQSS5oCShyZXZpc2lvbiAyNTQ3NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaAkod29ya2luZyBjb3B5KQpAQCAt
MjksOSArMjksOSBAQAogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KIAotI2RlZmluZSBVU0VfU0VDVVJFX0FSQ0hJVkVSX0FQSSAoUExBVEZPUk0o
TUFDKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTEwMjAwKSB8fCBQTEFURk9STShXQVRDSE9TKSB8fCBQTEFURk9STShBUFBM
RVRWKSkKKyNkZWZpbmUgVVNFX1NFQ1VSRV9BUkNISVZFUl9BUEkgKFBMQVRGT1JNKE1BQykgfHwg
UExBVEZPUk0oSU9TX0ZBTUlMWSkpCiAKLSNkZWZpbmUgVVNFX1NFQ1VSRV9BUkNISVZFUl9GT1Jf
QVRUUklCVVRFRF9TVFJJTkcgKFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEzMDAwMCkgfHwgUExBVEZP
Uk0oV0FUQ0hPUykgfHwgUExBVEZPUk0oQVBQTEVUVikpCisjZGVmaW5lIFVTRV9TRUNVUkVfQVJD
SElWRVJfRk9SX0FUVFJJQlVURURfU1RSSU5HIChQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElP
U19GQU1JTFkpKQogCiAjaWYgVVNFKFNFQ1VSRV9BUkNISVZFUl9BUEkpCiAjaWYgVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL05T
UHJvZ3Jlc3NTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9j
b2NvYS9OU1Byb2dyZXNzU1BJLmgJKHJldmlzaW9uIDI1NDc0NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvc3BpL2NvY29hL05TUHJvZ3Jlc3NTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NyArMjcsNyBAQAogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAotI2RlZmluZSBVU0Vf
TlNQUk9HUkVTU19QVUJMSVNISU5HX1NQSSBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEzMDAwMAorI2RlZmluZSBVU0VfTlNQUk9HUkVT
U19QVUJMSVNISU5HX1NQSSBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAoUExBVEZPUk0oV0FUQ0hP
UykgfHwgUExBVEZPUk0oQVBQTEVUVikpCiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TUHJvZ3Jlc3Nf
UHJpdmF0ZS5oPgogCiAjZWxzZQpJbmRleDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvaW9z
L01lZGlhUGxheWVyU1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
cGkvaW9zL01lZGlhUGxheWVyU1BJLmgJKHJldmlzaW9uIDI1NDc0NCkKKysrIFNvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL2lvcy9NZWRpYVBsYXllclNQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCwxMSArMzQsMTEgQEAKIAogI2ltcG9ydCA8TWVkaWFQbGF5ZXIvTVBBVlJvdXRpbmdDb250cm9s
bGVyLmg+CiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAK
KyNpZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogI2ltcG9ydCA8TWVk
aWFQbGF5ZXIvTVBNZWRpYUNvbnRyb2xzQ29uZmlndXJhdGlvbi5oPgogI2VuZGlmCiAKLSNpZiBf
X0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAgJiYgIVBMQVRGT1JNKFdB
VENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQorI2lmICFQTEFURk9STShXQVRDSE9TKSAmJiAh
UExBVEZPUk0oQVBQTEVUVikKICNpbXBvcnQgPE1lZGlhUGxheWVyL01QTWVkaWFDb250cm9sc1Zp
ZXdDb250cm9sbGVyLmg+CiAjZWxzZQogI2ltcG9ydCA8TWVkaWFQbGF5ZXIvTVBBVlJvdXRpbmdT
aGVldC5oPgpAQCAtNjQsNyArNjQsNyBAQCB0eXBlZGVmIE5TSW50ZWdlciBNUFJvdXRlRGlzY292
ZXJ5TW9kZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIE1QUm91dGVEaXNjb3ZlcnlN
b2RlIGRpc2NvdmVyeU1vZGU7CiBAZW5kCiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMTAwMDAgJiYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBM
RVRWKQorI2lmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikKIAogQGlu
dGVyZmFjZSBNUE1lZGlhQ29udHJvbHNWaWV3Q29udHJvbGxlciA6IFVJVmlld0NvbnRyb2xsZXIK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBudWxsYWJsZSkgdm9pZCAoXmRpZERpc21pc3NI
YW5kbGVyKSh2b2lkKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29u
dGVudFJlYWRlckNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCShyZXZpc2lvbiAyNTQ3NDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQAogI2luY2x1ZGUgIkxvY2FsRGVmYXVsdFN5c3RlbUFw
cGVhcmFuY2UuaCIKICNlbmRpZgogCi0jaWYgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkgfHwgUExBVEZPUk0oTUFDKQor
I2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlT
VCkKIEBpbnRlcmZhY2UgTlNBdHRyaWJ1dGVkU3RyaW5nICgpCiAtIChOU1N0cmluZyAqKV9odG1s
RG9jdW1lbnRGcmFnbWVudFN0cmluZzooTlNSYW5nZSlyYW5nZSBkb2N1bWVudEF0dHJpYnV0ZXM6
KE5TRGljdGlvbmFyeSAqKWRpY3Qgc3VicmVzb3VyY2VzOihOU0FycmF5ICoqKXN1YnJlc291cmNl
czsKIEBlbmQKQEAgLTgzLDcgKzgzLDcgQEAgU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKFdl
YktpdExlZ2FjeQogU09GVF9MSU5LX0ZSQU1FV09SS19JTl9VTUJSRUxMQShXZWJLaXQsIFdlYktp
dExlZ2FjeSkKICNlbmRpZgogCi0jaWYgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAwKQorI2lmIFBMQVRGT1JNKFdBVENIT1Mp
IHx8IFBMQVRGT1JNKEFQUExFVFYpCiBTT0ZUX0xJTksoV2ViS2l0TGVnYWN5LCBfV2ViQ3JlYXRl
RnJhZ21lbnQsIHZvaWQsIChXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIE5TQXR0cmlidXRl
ZFN0cmluZyAqc3RyaW5nLCBXZWJDb3JlOjpGcmFnbWVudEFuZFJlc291cmNlcyYgcmVzdWx0KSwg
KGRvY3VtZW50LCBzdHJpbmcsIHJlc3VsdCkpCiAjZW5kaWYKIApAQCAtOTYsNyArOTYsNyBAQCBz
dGF0aWMgRnJhZ21lbnRBbmRSZXNvdXJjZXMgY3JlYXRlRnJhZ21lCiAgICAgcmV0dXJuIHsgfTsK
IH0KIAotI2VsaWYgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDExMDAwMCkgfHwgUExBVEZPUk0oTUFDKQorI2VsaWYgUExBVEZPUk0o
SU9TKSB8fCBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogCiBzdGF0aWMg
TlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzRm9yQXR0cmlidXRlZFN0cmluZ0NvbnZlcnNpb24oKQog
ewpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0RlZmF1bHRWYWx1ZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzRGVmYXVsdFZhbHVlcy5oCShy
ZXZpc2lvbiAyNTQ3NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzRGVmYXVsdFZh
bHVlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIGNvbnN0IGJv
b2wgZGVmYXVsdE1lZGlhRW5hYmxlZCA9IAogc3RhdGljIGNvbnN0IGJvb2wgZGVmYXVsdE1lZGlh
RW5hYmxlZCA9IGZhbHNlOwogI2VuZGlmCiAgICAgCi0jaWYgKFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkgfHwgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8
IFBMQVRGT1JNKFdBVENIT1MpCisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAm
JiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0o
V0FUQ0hPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiBzdGF0aWMgY29uc3QgYm9vbCBkZWZh
dWx0Q29uaWNHcmFkaWVudCA9IHRydWU7CiAjZWxzZQogc3RhdGljIGNvbnN0IGJvb2wgZGVmYXVs
dENvbmljR3JhZGllbnQgPSBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwCShyZXZpc2lvbiAyNTQ3NDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENHLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgR3JhZGllbnQ6OnBhaW50KENHQ29udGV4
dFJlZiBwbGF0Zm8KICAgICAgICAgICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKHBsYXRm
b3JtQ29udGV4dCk7CiAgICAgICAgIH0sCiAgICAgICAgIFsmXSAoY29uc3QgQ29uaWNEYXRhJiBk
YXRhKSB7Ci0jaWYgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEyMDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKFdBVENIT1MpCisjaWYg
UExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oV0FUQ0hPUykKICAgICAgICAgICAgIENH
Q29udGV4dFNhdmVHU3RhdGUocGxhdGZvcm1Db250ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4
dFRyYW5zbGF0ZUNUTShwbGF0Zm9ybUNvbnRleHQsIGRhdGEucG9pbnQwLngoKSwgZGF0YS5wb2lu
dDAueSgpKTsKICAgICAgICAgICAgIENHQ29udGV4dFJvdGF0ZUNUTShwbGF0Zm9ybUNvbnRleHQs
IChDR0Zsb2F0KS1NX1BJXzIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUGF0aENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9QYXRoQ0cuY3BwCShyZXZpc2lvbiAyNTQ3NDQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTQs
NyArMzE0LDcgQEAgdm9pZCBQYXRoOjpwbGF0Zm9ybUFkZFBhdGhGb3JSb3VuZGVkUmVjdAogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAm
JiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCisjaWYgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8
IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgQ0dSZWN0IHJlY3RU
b0RyYXcgPSByZWN0OwogICAgIAogICAgIGVudW0gQ29ybmVycyB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hl
Q29yZVRleHQuY3BwCShyZXZpc2lvbiAyNTQ3NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDcgKzM5LDcgQEAKICNpbmNsdWRlIDx3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg+CiAj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKLSNkZWZpbmUgSEFTX0NPUkVfVEVYVF9X
SURUSF9BVFRSSUJVVEUgKFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYm
IF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkpCisjZGVmaW5lIEhB
U19DT1JFX1RFWFRfV0lEVEhfQVRUUklCVVRFIChQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElP
UykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTEwNjQsNyArMTA2NCw3IEBAIHN0YXRpYyBWYXJpYXRpb25DYXBhYmlsaXRpZXMgdmFyaWF0aW9u
Q2EKICAgICB9CiAKICAgICBib29sIG9wdE91dEZyb21HWE5vcm1hbGl6YXRpb24gPSBmYWxzZTsK
LSNpZiAoUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKSkKKyNpZiAoUExBVEZPUk0oTUFDKSB8
fCBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKSkKICAgICBvcHRPdXRGcm9t
R1hOb3JtYWxpemF0aW9uID0gQ1RGb250RGVzY3JpcHRvcklzU3lzdGVtVUlGb250KGZvbnREZXNj
cmlwdG9yKTsKICNlbmRpZgogCkBAIC0xNjM5LDcgKzE2MzksNyBAQCBSZWY8Rm9udD4gRm9udENh
Y2hlOjpsYXN0UmVzb3J0RmFsbGJhY2tGCiAgICAgICAgIHJldHVybiAqcmVzdWx0OwogCiAgICAg
Ly8gTGFzdFJlc29ydCBpcyBndWFyYW50ZWVkIHRvIGJlIG5vbi1udWxsLgotI2lmIChQTEFURk9S
TShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAw
MDApIHx8IFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQykg
fHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgYXV0byBmb250RGVzY3JpcHRvciA9IGFkb3B0
Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZUxhc3RSZXNvcnQoKSk7CiAgICAgYXV0byBmb250ID0g
YWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IoZm9udERlc2NyaXB0b3IuZ2V0
KCksIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpLCBudWxscHRyKSk7CiAjZWxz
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2Ny
aXB0aW9uQ29jb2EuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcAkocmV2aXNpb24gMjU0NzQ0KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9u
Q29jb2EuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHN0YXRpYyBpbmxpbmUg
T3B0aW9uYWw8U3lzdGVtRm9udEtpbmQ+IG0KICAgICAgICAga0NUVUlGb250VGV4dFN0eWxlU2hv
cnRGb290bm90ZSwKICAgICAgICAga0NUVUlGb250VGV4dFN0eWxlU2hvcnRDYXB0aW9uMSwKICAg
ICAgICAga0NUVUlGb250VGV4dFN0eWxlVGFsbEJvZHksCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShN
QUNDQVRBTFlTVCkKICAgICAgICAga0NUVUlGb250VGV4dFN0eWxlVGl0bGUwLAogICAgICAgICBr
Q1RVSUZvbnRUZXh0U3R5bGVUaXRsZTQsCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1E
YXRhQ29jb2EubW0JKHJldmlzaW9uIDI1NDc0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTI0LDcgKzEyNCw3IEBAIHN0YXRpYyBDRkRpY3Rpb25hcnlSZWYgY2FzY2FkZVRvTGFzdFJl
c28KIHN0YXRpYyBSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4gY2FzY2FkZVRvTGFzdFJl
c29ydEFuZFZhcmlhdGlvbnNGb250RGVzY3JpcHRvcihDVEZvbnRSZWYgb3JpZ2luYWxGb250KQog
ewogLy8gRklYTUU6IFJlbW92ZSB0aGlzIHdoZW4gPHJkYXI6Ly9wcm9ibGVtLzI4NDQ5NDQxPiBp
cyBmaXhlZC4gTk9URTogVGhhdCByYWRhciB3YXMgZml4ZWQgMTEvMTYvMTYsIHNvIHRoaXMgY2Fu
IGJlIHJlbW92ZWQuIFRCRC4KLSNkZWZpbmUgV09SS0FST1VORF9DT1JFVEVYVF9WQVJJQVRJT05T
X1dJVEhfRkFMTEJBQ0tfTElTVF9CVUcgKEVOQUJMRShWQVJJQVRJT05fRk9OVFMpICYmIChQTEFU
Rk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEx
MDAwMCkpCisjZGVmaW5lIFdPUktBUk9VTkRfQ09SRVRFWFRfVkFSSUFUSU9OU19XSVRIX0ZBTExC
QUNLX0xJU1RfQlVHIChFTkFCTEUoVkFSSUFUSU9OX0ZPTlRTKSAmJiAoUExBVEZPUk0oSU9TKSB8
fCBQTEFURk9STShNQUNDQVRBTFlTVCkpKQogCiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0
ZXMgPSBjYXNjYWRlVG9MYXN0UmVzb3J0QXR0cmlidXRlc0RpY3Rpb25hcnkoKTsKICNpZiBXT1JL
QVJPVU5EX0NPUkVURVhUX1ZBUklBVElPTlNfV0lUSF9GQUxMQkFDS19MSVNUX0JVRwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ZvbnRDYWNoZUlPUy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvRm9udENhY2hl
SU9TLm1tCShyZXZpc2lvbiAyNTQ3NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pb3MvRm9udENhY2hlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNyArMTU2LDcg
QEAgUmV0YWluUHRyPENURm9udFJlZj4gcGxhdGZvcm1Gb250V2l0aEZhbQogICAgIH0KIAogICAg
IGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShmYW1pbHksICJsYXN0cmVzb3J0Iikp
IHsKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiBQ
TEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgICAgICBzdGF0aWMgY29u
c3QgQ1RGb250RGVzY3JpcHRvclJlZiBsYXN0UmVzb3J0ID0gQ1RGb250RGVzY3JpcHRvckNyZWF0
ZUxhc3RSZXNvcnQoKTsKICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ1RGb250Q3JlYXRlV2l0aEZv
bnREZXNjcmlwdG9yKGxhc3RSZXNvcnQsIHNpemUsIG51bGxwdHIpKTsKICNlbHNlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCShyZXZpc2lvbiAyNTQ3NDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0
b21QbGF0Zm9ybURhdGE+IAogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGJ1ZmZlckRhdGEgPSBi
dWZmZXIuY3JlYXRlQ0ZEYXRhKCk7CiAKICAgICBSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJl
Zj4gZm9udERlc2NyaXB0b3I7Ci0jaWYgUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQorI2lm
IFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkK
ICAgICBhdXRvIGFycmF5ID0gYWRvcHRDRihDVEZvbnRNYW5hZ2VyQ3JlYXRlRm9udERlc2NyaXB0
b3JzRnJvbURhdGEoYnVmZmVyRGF0YS5nZXQoKSkpOwogICAgIGlmICghYXJyYXkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0
ZW1Qcm92aWRlclBhc3RlYm9hcmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oCShyZXZpc2lvbiAyNTQ3NDQpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw4ICsyNyw2IEBACiAKICNpbXBvcnQgPFdlYkNvcmUvQWJz
dHJhY3RQYXN0ZWJvYXJkLmg+CiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMTAwMDAKLQogc3RydWN0IENHU2l6ZTsKIAogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdl
ciwgV2ViUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUpIHsKQEAgLTExNCw1ICsxMTIsNCBAQCBX
RUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdlYkl0ZW1Qcm92aWRlCiAKIE5TX0FTU1VNRV9OT05O
VUxMX0VORAogCi0jZW5kaWYgLy8gX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTEwMDAwCiAjZW5kaWYgLy8gVEFSR0VUX09TX0lQSE9ORQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkNvY29hLm1tCShyZXZpc2lvbiAyNTQ3NDQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIEBpbnRlcmZhY2UgTlNVUkwgKCkKIC0gKENG
VVJMUmVmKV9jZnVybDsKIEBlbmQKIAotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkg
JiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKQorI2lmIChQTEFU
Rk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8
fCBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogQGludGVyZmFjZSBOU0hU
VFBDb29raWVTdG9yYWdlIChTdGFnaW5nKQogLSAodm9pZClfZ2V0Q29va2llc0ZvclVSTDooTlNV
UkwgKil1cmwgbWFpbkRvY3VtZW50VVJMOihOU1VSTCAqKW1haW5Eb2N1bWVudFVSTCBwYXJ0aXRp
b246KE5TU3RyaW5nICopcGFydGl0aW9uIHBvbGljeVByb3BlcnRpZXM6KE5TRGljdGlvbmFyeSop
cHJvcHMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXJyYXkgKikpY29tcGxldGlvbkhh
bmRsZXI7CiAtICh2b2lkKV9zZXRDb29raWVzOihOU0FycmF5ICopY29va2llcyBmb3JVUkw6KE5T
VVJMICopVVJMIG1haW5Eb2N1bWVudFVSTDooTlNVUkwgKiltYWluRG9jdW1lbnRVUkwgcG9saWN5
UHJvcGVydGllczooTlNEaWN0aW9uYXJ5KikgcHJvcHM7CkBAIC0yMDAsNyArMjAwLDcgQEAgc3Rh
dGljIHZvaWQgZGVsZXRlSFRUUENvb2tpZShDRkhUVFBDb29raQogICAgIENGSFRUUENvb2tpZVN0
b3JhZ2VEZWxldGVDb29raWUoY29va2llU3RvcmFnZSwgW2Nvb2tpZSBfR2V0SW50ZXJuYWxDRkhU
VFBDb29raWVdKTsKIH0KIAotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKQorI2lmIChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFU
Rk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogc3RhdGljIFJldGFpblB0cjxOU0Rp
Y3Rpb25hcnk+IHBvbGljeVByb3BlcnRpZXMoY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUlu
Zm8sIE5TVVJMICp1cmwpCiB7CiAgICAgc3RhdGljIE5TVVJMICplbXB0eVVSTCA9IFtbTlNVUkwg
YWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiIl07CkBAIC0yMTksNyArMjE5LDcgQEAgc3RhdGljIE5T
QXJyYXkgKmNvb2tpZXNGb3JVUkwoTlNIVFRQQ29vawogICAgIGF1dG8gY29tcGxldGlvbkhhbmRs
ZXIgPSBbJmNvb2tpZXNQdHJdIChOU0FycmF5ICpjb29raWVzKSB7CiAgICAgICAgIGNvb2tpZXNQ
dHIgPSByZXRhaW5QdHIoY29va2llcyk7CiAgICAgfTsKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElP
U19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkK
KyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBp
ZiAoW3N0b3JhZ2UgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfZ2V0Q29va2llc0ZvclVS
TDptYWluRG9jdW1lbnRVUkw6cGFydGl0aW9uOnBvbGljeVByb3BlcnRpZXM6Y29tcGxldGlvbkhh
bmRsZXI6KV0pCiAgICAgICAgIFtzdG9yYWdlIF9nZXRDb29raWVzRm9yVVJMOnVybCBtYWluRG9j
dW1lbnRVUkw6bWFpbkRvY3VtZW50VVJMIHBhcnRpdGlvbjpwYXJ0aXRpb24gcG9saWN5UHJvcGVy
dGllczpzYW1lU2l0ZUluZm8gPyBwb2xpY3lQcm9wZXJ0aWVzKHNhbWVTaXRlSW5mby52YWx1ZSgp
LCB1cmwpLmdldCgpIDogbnVsbHB0ciBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxl
cl07CiAgICAgZWxzZQpAQCAtMjM2LDcgKzIzNiw3IEBAIHN0YXRpYyB2b2lkIHNldEhUVFBDb29r
aWVzRm9yVVJMKENGSFRUUEMKIHsKICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9j
ZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CiAgICAgaWYgKCFjb29raWVTdG9y
YWdlKSB7Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKElPUykg
fHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgICAgIGlmIChbTlNIVFRQQ29va2llU3RvcmFn
ZSBpbnN0YW5jZXNSZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3NldENvb2tpZXM6Zm9yVVJM
Om1haW5Eb2N1bWVudFVSTDpwb2xpY3lQcm9wZXJ0aWVzOildKQogICAgICAgICAgICAgW1tOU0hU
VFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXSBfc2V0Q29va2llczpjb29r
aWVzIGZvclVSTDp1cmwgbWFpbkRvY3VtZW50VVJMOm1haW5Eb2N1bWVudFVSTCBwb2xpY3lQcm9w
ZXJ0aWVzOnBvbGljeVByb3BlcnRpZXMoc2FtZVNpdGVJbmZvLCB1cmwpLmdldCgpXTsKICAgICAg
ICAgZWxzZQpAQCAtMjQ0LDcgKzI0NCw3IEBAIHN0YXRpYyB2b2lkIHNldEhUVFBDb29raWVzRm9y
VVJMKENGSFRUUEMKICAgICAgICAgICAgIFtbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQ
Q29va2llU3RvcmFnZV0gc2V0Q29va2llczpjb29raWVzIGZvclVSTDp1cmwgbWFpbkRvY3VtZW50
VVJMOm1haW5Eb2N1bWVudFVSTF07CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0jaWYgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8
IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMjAwMDApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FU
QUxZU1QpCiAgICAgaWYgKFtOU0hUVFBDb29raWVTdG9yYWdlIGluc3RhbmNlc1Jlc3BvbmRUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihfc2V0Q29va2llczpmb3JVUkw6bWFpbkRvY3VtZW50VVJMOnBvbGlj
eVByb3BlcnRpZXM6KV0pIHsKICAgICAgICAgLy8gRklYTUU6IFN0b3AgY3JlYXRpbmcgYSBuZXcg
TlNIVFRQQ29va2llU3RvcmFnZSBvYmplY3QgZWFjaCB0aW1lIHdlIHdhbnQgdG8gcXVlcnkgdGhl
IGNvb2tpZSBqYXIuCiAgICAgICAgIC8vIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiBjb3VsZCBpbnN0
ZWFkIGtlZXAgYSBOU0hUVFBDb29raWVTdG9yYWdlIG9iamVjdCBmb3IgdXMuCkBAIC0yNTQsNyAr
MjU0LDcgQEAgc3RhdGljIHZvaWQgc2V0SFRUUENvb2tpZXNGb3JVUkwoQ0ZIVFRQQwogI2VuZGlm
CiAgICAgICAgIGF1dG8gY2ZDb29raWVzID0gYWRvcHRDRihbTlNIVFRQQ29va2llIF9uczJjZkNv
b2tpZXM6Y29va2llc10pOwogICAgICAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29va2llcyhj
b29raWVTdG9yYWdlLCBjZkNvb2tpZXMuZ2V0KCksIFt1cmwgX2NmdXJsXSwgW21haW5Eb2N1bWVu
dFVSTCBfY2Z1cmxdKTsKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFD
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZP
Uk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICB9CiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTShzYW1lU2l0ZUluZm8pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUlPUy5tbQkocmV2aXNpb24gMjU0NzQ0KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYzLDEzICsxMTYz
LDEzIEBAIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIFJlbmRlclRoZW1lSU9TOjoKICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gc2hvcnRGb290bm90ZUZv
bnQ7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IHNo
b3J0Q2FwdGlvbjFGb250OwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGb250Q2FzY2FkZURl
c2NyaXB0aW9uPiB0YWxsQm9keUZvbnQ7Ci0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlT
VCkKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gdGl0
bGUwRm9udDsKICNlbmRpZgogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGb250Q2FzY2FkZURl
c2NyaXB0aW9uPiB0aXRsZTFGb250OwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGb250Q2Fz
Y2FkZURlc2NyaXB0aW9uPiB0aXRsZTJGb250OwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxG
b250Q2FzY2FkZURlc2NyaXB0aW9uPiB0aXRsZTNGb250OwotI2lmIF9fSVBIT05FX09TX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0o
TUFDQ0FUQUxZU1QpCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRlRGVzY3Jp
cHRpb24+IHRpdGxlNEZvbnQ7CiAjZW5kaWYKIApAQCAtMTE5Nyw3ICsxMTk3LDcgQEAgRm9udENh
c2NhZGVEZXNjcmlwdGlvbiYgUmVuZGVyVGhlbWVJT1M6OgogICAgICAgICByZXR1cm4gaGVhZGxp
bmVGb250OwogICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbUJvZHk6CiAgICAgICAgIHJldHVy
biBib2R5Rm9udDsKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAw
MDAKKyNpZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGNhc2Ug
Q1NTVmFsdWVBcHBsZVN5c3RlbVRpdGxlMDoKICAgICAgICAgcmV0dXJuIHRpdGxlMEZvbnQ7CiAj
ZW5kaWYKQEAgLTEyMDcsNyArMTIwNyw3IEBAIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIFJlbmRl
clRoZW1lSU9TOjoKICAgICAgICAgcmV0dXJuIHRpdGxlMkZvbnQ7CiAgICAgY2FzZSBDU1NWYWx1
ZUFwcGxlU3lzdGVtVGl0bGUzOgogICAgICAgICByZXR1cm4gdGl0bGUzRm9udDsKLSNpZiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiBQTEFURk9STShJT1Mp
IHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVRp
dGxlNDoKICAgICAgICAgcmV0dXJuIHRpdGxlNEZvbnQ7CiAjZW5kaWYKQEAgLTEyNjYsNyArMTI2
Niw3IEBAIHZvaWQgUmVuZGVyVGhlbWVJT1M6OnVwZGF0ZUNhY2hlZFN5c3RlbUYKICAgICAgICAg
dGV4dFN0eWxlID0ga0NUVUlGb250VGV4dFN0eWxlQm9keTsKICAgICAgICAgZm9udERlc2NyaXB0
b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoVGV4dFN0eWxlKHRleHRTdHls
ZSwgY29udGVudFNpemVDYXRlZ29yeSgpLCBudWxscHRyKSk7CiAgICAgICAgIGJyZWFrOwotI2lm
IF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRGT1JN
KElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lz
dGVtVGl0bGUwOgogICAgICAgICB0ZXh0U3R5bGUgPSBrQ1RVSUZvbnRUZXh0U3R5bGVUaXRsZTA7
CiAgICAgICAgIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRl
V2l0aFRleHRTdHlsZSh0ZXh0U3R5bGUsIGNvbnRlbnRTaXplQ2F0ZWdvcnkoKSwgbnVsbHB0cikp
OwpAQCAtMTI4NCw3ICsxMjg0LDcgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6dXBkYXRlQ2FjaGVk
U3lzdGVtRgogICAgICAgICB0ZXh0U3R5bGUgPSBrQ1RVSUZvbnRUZXh0U3R5bGVUaXRsZTM7CiAg
ICAgICAgIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0
aFRleHRTdHlsZSh0ZXh0U3R5bGUsIGNvbnRlbnRTaXplQ2F0ZWdvcnkoKSwgbnVsbHB0cikpOwog
ICAgICAgICBicmVhazsKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MTAwMDAKKyNpZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGNh
c2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVRpdGxlNDoKICAgICAgICAgdGV4dFN0eWxlID0ga0NUVUlG
b250VGV4dFN0eWxlVGl0bGU0OwogICAgICAgICBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RG
b250RGVzY3JpcHRvckNyZWF0ZVdpdGhUZXh0U3R5bGUodGV4dFN0eWxlLCBjb250ZW50U2l6ZUNh
dGVnb3J5KCksIG51bGxwdHIpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTQ3NDQpCisrKyBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisy
MDIwLTAxLTE3ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZW1vdmUgb2xkIGlPUyB2ZXJzaW9uIG1hY3JvcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MDk2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81
ODQ5MTY3NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtBY3Rpdml0eVRyYWNrZXIuaDogUmVtb3ZlIGlPUyAx
MiB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmg6
IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3MuCisgICAgICAgICogU2hhcmVkL1dlYlByZWZl
cmVuY2VzRGVmYXVsdFZhbHVlcy5oOiBSZW1vdmUgaU9TIDEyIHZlcnNpb24gY2hlY2tzLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOiBSZW1vdmUg
aU9TIDEyIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLV2Vi
Vmlld0lPUy5tbToKKyAgICAgICAgKGNvbnRlbnRPZmZzZXRCb3VuZGVkSW5WYWxpZFJhbmdlKTog
UmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKC1bV0tXZWJWaWV3IGFjdGl2
ZVZpZXdMYXlvdXRTaXplOl0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tXZWJWaWV3IHNhZmVBcmVh
SW5zZXRzRGlkQ2hhbmdlXSk6IERpdHRvLgorICAgICAgICAoLVtXS1dlYlZpZXcgX3VwZGF0ZVNj
cm9sbFZpZXdJbnNldEFkanVzdG1lbnRCZWhhdmlvcl0pOiBEaXR0by4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVWaWV3cy5tbToKKyAgICAg
ICAgKC1bV0tDaGlsZFNjcm9sbFZpZXcgaW5pdFdpdGhGcmFtZTpdKTogUmVtb3ZlIGlPUyAxMSB2
ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBnZXN0dXJlUmVjb2duaXplcjpj
YW5CZVByZXZlbnRlZEJ5R2VzdHVyZVJlY29nbml6ZXI6XSk6IFJlbW92ZSBpT1MgMTIgdmVyc2lv
biBjaGVja3MuCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZ2VzdHVyZVJlY29nbml6ZXI6c2hv
dWxkUmVjb2duaXplU2ltdWx0YW5lb3VzbHlXaXRoR2VzdHVyZVJlY29nbml6ZXI6XSk6IERpdHRv
LgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zaG93UGxheWJhY2tUYXJnZXRQaWNrZXI6ZnJv
bVJlY3Q6cm91dGVTaGFyaW5nUG9saWN5OnJvdXRpbmdDb250ZXh0VUlEOl0pOiBSZW1vdmUgaU9T
IDExIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHVub2NjbHVkZWRX
aW5kb3dCb3VuZHNGb3JBY3Rpb25TaGVldEFzc2lzdGFudDpdKTogRGl0dG8uCisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZpZXcuaDogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNr
cy4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLU2Nyb2xsVmlldy5tbToKKyAgICAgICAgKC1b
V0tTY3JvbGxWaWV3IGluaXRXaXRoRnJhbWU6XSk6IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVj
a3MuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0FpclBsYXlSb3V0ZVBpY2tlci5o
OiBSZW1vdmUgaU9TIDExIHZlcnNpb24gY2hlY2tzLgorCiAyMDIwLTAxLTE3ICBDYXJsb3MgR2Fy
Y2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVdIENv
bXBvc2l0aW9uIHVuZGVybGluZSBjb2xvciBpcyBub3QgYXBwbGllZApJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQWN0aXZpdHlUcmFja2VyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQWN0aXZpdHlUcmFja2VyLmgJ
KHJldmlzaW9uIDI1NDc0NCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0FjdGl2aXR5VHJhY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNw
cmFnbWEgb25jZQogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykgJiYgKChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTIwMDAwKSB8fCBQTEFURk9STShXQVRDSE9TKSkKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KSAmJiAoKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDE0MDApIHx8IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpIHx8IFBM
QVRGT1JNKFdBVENIT1MpKQogI2RlZmluZSBIQVZFX05XX0FDVElWSVRZIDEKICNlbmRpZgogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAkocmV2aXNpb24g
MjU0NzQ0KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ3NCw3ICs0NzQsNyBAQCB0eXBlZGVmIGVudW0gewogQHByb3BlcnR5
IChyZWFkb25seSkgTlNTdHJpbmcgKl9ob3N0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyOwog
QGVuZAogCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisj
aWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKIEBpbnRlcmZhY2UgTlNV
UkwgKCkKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBzZXR0ZXI9X3NldFRpdGxlOikgTlNT
dHJpbmcgKl90aXRsZTsKIEBlbmQKQEAgLTcyNyw3ICs3MjcsNyBAQCBzdHJ1Y3QgX1VJV2ViVG91
Y2hQb2ludCB7CiAgICAgQ0dQb2ludCBsb2NhdGlvbkluRG9jdW1lbnRDb29yZGluYXRlczsKICAg
ICB1bnNpZ25lZCBpZGVudGlmaWVyOwogICAgIFVJVG91Y2hQaGFzZSBwaGFzZTsKLSNpZiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+IDEwMDAwMAorI2lmIFBMQVRGT1JNKElPUykg
fHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgQ0dGbG9hdCBtYWpvclJhZGl1c0luU2NyZWVu
Q29vcmRpbmF0ZXM7CiAgICAgQ0dGbG9hdCBmb3JjZTsKICAgICBDR0Zsb2F0IGFsdGl0dWRlQW5n
bGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0Rl
ZmF1bHRWYWx1ZXMuaAkocmV2aXNpb24gMjU0NzQ0KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyNiw3ICsy
MjYsNyBAQAogI2RlZmluZSBERUZBVUxUX1BST0NFU1NfU1dBUF9PTl9DUk9TU19TSVRFX05BVklH
QVRJT05fRU5BQkxFRCBmYWxzZQogI2VuZGlmCiAKLSNpZiAoUExBVEZPUk0oSU9TX0ZBTUlMWSkg
JiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKSB8fCAoUExBVEZP
Uk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwg
UExBVEZPUk0oV0FUQ0hPUykKKyNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShX
QVRDSE9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICNkZWZpbmUgREVGQVVMVF9DT05JQ19H
UkFESUVOVF9FTkFCTEVEIHRydWUKICNlbHNlCiAjZGVmaW5lIERFRkFVTFRfQ09OSUNfR1JBRElF
TlRfRU5BQkxFRCBmYWxzZQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L0FQSUF0dGFjaG1lbnRDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCShyZXZpc2lvbiAyNTQ3NDQpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBACiAjZW5kaWYKICNpbXBvcnQgPHBhbC9z
cGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg+CiAKLSNkZWZpbmUgQ0FOX1NFQ1VSRUxZX0FS
Q0hJVkVfRklMRV9XUkFQUEVSIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhP
TkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKQorI2RlZmluZSBDQU5fU0VDVVJF
TFlfQVJDSElWRV9GSUxFX1dSQVBQRVIgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0o
TUFDQ0FUQUxZU1QpCiAKIG5hbWVzcGFjZSBBUEkgewogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQkocmV2aXNpb24gMjU0NzQ0KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0JKHdvcmtp
bmcgY29weSkKQEAgLTcwNSw3ICs3MDUsNyBAQCAtICh2b2lkKV9kaWRDb21taXRMb2FkRm9yTWFp
bkZyYW1lCiAKIHN0YXRpYyBDR1BvaW50IGNvbnRlbnRPZmZzZXRCb3VuZGVkSW5WYWxpZFJhbmdl
KFVJU2Nyb2xsVmlldyAqc2Nyb2xsVmlldywgQ0dQb2ludCBjb250ZW50T2Zmc2V0KQogewotI2lm
IF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRGT1JN
KElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgVUlFZGdlSW5zZXRzIGNvbnRlbnRJ
bnNldHMgPSBzY3JvbGxWaWV3LmFkanVzdGVkQ29udGVudEluc2V0OwogI2Vsc2UKICAgICBVSUVk
Z2VJbnNldHMgY29udGVudEluc2V0cyA9IHNjcm9sbFZpZXcuY29udGVudEluc2V0OwpAQCAtMTcx
Miw3ICsxNzEyLDcgQEAgLSAoV2ViQ29yZTo6RmxvYXRTaXplKWFjdGl2ZVZpZXdMYXlvdXRTaQog
ICAgIGlmIChfdmlld0xheW91dFNpemVPdmVycmlkZSkKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6
OkZsb2F0U2l6ZShfdmlld0xheW91dFNpemVPdmVycmlkZS52YWx1ZSgpKTsKIAotI2lmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRGT1JNKElPUykg
fHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgcmV0dXJuIFdlYkNvcmU6OkZsb2F0U2l6ZShV
SUVkZ2VJbnNldHNJbnNldFJlY3QoQ0dSZWN0TWFrZSgwLCAwLCBib3VuZHMuc2l6ZS53aWR0aCwg
Ym91bmRzLnNpemUuaGVpZ2h0KSwgc2VsZi5fc2Nyb2xsVmlld1N5c3RlbUNvbnRlbnRJbnNldCku
c2l6ZSk7CiAjZWxzZQogICAgIHJldHVybiBXZWJDb3JlOjpGbG9hdFNpemUgeyBib3VuZHMuc2l6
ZSB9OwpAQCAtMTc5MCw3ICsxNzkwLDcgQEAgLSAoQk9PTClfc2Nyb2xsVmlld0lzUnViYmVyQmFu
ZGluZwogICAgIHJldHVybiAhcG9pbnRzRXF1YWxJbkRldmljZVBpeGVscyhjb250ZW50T2Zmc2V0
LCBib3VuZGVkT2Zmc2V0LCBkZXZpY2VTY2FsZUZhY3Rvcik7CiB9CiAKLSNpZiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiBQTEFURk9STShJT1MpIHx8IFBM
QVRGT1JNKE1BQ0NBVEFMWVNUKQogLSAodm9pZClzYWZlQXJlYUluc2V0c0RpZENoYW5nZQogewog
ICAgIFtzdXBlciBzYWZlQXJlYUluc2V0c0RpZENoYW5nZV07CkBAIC0yMzEzLDcgKzIzMTMsNyBA
QCAtIChXS1Bhc3N3b3JkVmlldyAqKV9wYXNzd29yZFZpZXcKIAogLSAodm9pZClfdXBkYXRlU2Ny
b2xsVmlld0luc2V0QWRqdXN0bWVudEJlaGF2aW9yCiB7Ci0jaWYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShN
QUNDQVRBTFlTVCkKICAgICBpZiAoIVtfc2Nyb2xsVmlldyBfY29udGVudEluc2V0QWRqdXN0bWVu
dEJlaGF2aW9yV2FzRXh0ZXJuYWxseU92ZXJyaWRkZW5dKQogICAgICAgICBbX3Njcm9sbFZpZXcg
X3NldENvbnRlbnRJbnNldEFkanVzdG1lbnRCZWhhdmlvckludGVybmFsOnNlbGYuX3NhZmVBcmVh
U2hvdWxkQWZmZWN0T2JzY3VyZWRJbnNldHMgPyBVSVNjcm9sbFZpZXdDb250ZW50SW5zZXRBZGp1
c3RtZW50QWx3YXlzIDogVUlTY3JvbGxWaWV3Q29udGVudEluc2V0QWRqdXN0bWVudE5ldmVyXTsK
ICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lv
cy9SZW1vdGVMYXllclRyZWVWaWV3cy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLm1tCShyZXZp
c2lvbiAyNTQ3NDQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMTAsNyArMzEw
LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcgogICAgIGlmICgh
c2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FU
QUxZU1QpCiAgICAgc2VsZi5jb250ZW50SW5zZXRBZGp1c3RtZW50QmVoYXZpb3IgPSBVSVNjcm9s
bFZpZXdDb250ZW50SW5zZXRBZGp1c3RtZW50TmV2ZXI7CiAjZW5kaWYKIApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCShyZXZpc2lvbiAyNTQ3NDQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMDA4LDkgKzIw
MDgsMTAgQEAgLSAoQk9PTClnZXN0dXJlUmVjb2duaXplcjooVUlHZXN0dXJlUmVjbwogLSAoQk9P
TClnZXN0dXJlUmVjb2duaXplcjooVUlHZXN0dXJlUmVjb2duaXplciAqKXByZXZlbnRlZEdlc3R1
cmVSZWNvZ25pemVyIGNhbkJlUHJldmVudGVkQnlHZXN0dXJlUmVjb2duaXplcjooVUlHZXN0dXJl
UmVjb2duaXplciAqKXByZXZlbnRpbmdHZXN0dXJlUmVjb2duaXplciB7CiAgICAgLy8gRG9uJ3Qg
YWxsb3cgdGhlIGhpZ2hsaWdodCB0byBiZSBwcmV2ZW50ZWQgYnkgYSBzZWxlY3Rpb24gZ2VzdHVy
ZS4gUHJlc3MtYW5kLWhvbGQgb24gYSBsaW5rIHNob3VsZCBoaWdobGlnaHQgdGhlIGxpbmssIG5v
dCBzZWxlY3QgaXQuCiAgICAgYm9vbCBpc0ZvcmNlUHJlc3NHZXN0dXJlID0gTk87Ci0jaWYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwCisjaWYgUExBVEZPUk0oSU9T
KSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBpc0ZvcmNlUHJlc3NHZXN0dXJlID0gKHBy
ZXZlbnRpbmdHZXN0dXJlUmVjb2duaXplciA9PSBfdGV4dEludGVyYWN0aW9uQXNzaXN0YW50Lmdl
dCgpLmZvcmNlUHJlc3NHZXN0dXJlKTsKICNlbmRpZgorCiAjaWYgUExBVEZPUk0oTUFDQ0FUQUxZ
U1QpCiAgICAgaWYgKChwcmV2ZW50aW5nR2VzdHVyZVJlY29nbml6ZXIgPT0gX3RleHRJbnRlcmFj
dGlvbkFzc2lzdGFudC5nZXQoKS5sb3VwZUdlc3R1cmUpICYmIChwcmV2ZW50ZWRHZXN0dXJlUmVj
b2duaXplciA9PSBfaGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgfHwgcHJldmVu
dGVkR2VzdHVyZVJlY29nbml6ZXIgPT0gX2xvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyIHx8IHBy
ZXZlbnRlZEdlc3R1cmVSZWNvZ25pemVyID09IF90ZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQuZ2V0
KCkuZm9yY2VQcmVzc0dlc3R1cmUpKQogICAgICAgICByZXR1cm4gWUVTOwpAQCAtMjA0OCw3ICsy
MDQ5LDYgQEAgLSAoQk9PTClnZXN0dXJlUmVjb2duaXplcjooVUlHZXN0dXJlUmVjbwogICAgICAg
ICByZXR1cm4gWUVTOwogI2VuZGlmCiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMjAwMDAKICNpZiBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBpZiAoaXNTYW1l
UGFpcihnZXN0dXJlUmVjb2duaXplciwgb3RoZXJHZXN0dXJlUmVjb2duaXplciwgX3RleHRJbnRl
cmFjdGlvbkFzc2lzdGFudC5nZXQoKS5sb3VwZUdlc3R1cmUsIF90ZXh0SW50ZXJhY3Rpb25Bc3Np
c3RhbnQuZ2V0KCkuZm9yY2VQcmVzc0dlc3R1cmUpKQogICAgICAgICByZXR1cm4gWUVTOwpAQCAt
MjA1OSw5ICsyMDU5LDEyIEBAIC0gKEJPT0wpZ2VzdHVyZVJlY29nbml6ZXI6KFVJR2VzdHVyZVJl
Y28KICAgICBpZiAoKFtnZXN0dXJlUmVjb2duaXplciBpc0tpbmRPZkNsYXNzOltfVUlMb29rdXBH
ZXN0dXJlUmVjb2duaXplciBjbGFzc11dICYmIFtvdGhlckdlc3R1cmVSZWNvZ25pemVyIGlzS2lu
ZE9mQ2xhc3M6W1VJTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgY2xhc3NdXSkgfHwgKFtvdGhl
ckdlc3R1cmVSZWNvZ25pemVyIGlzS2luZE9mQ2xhc3M6W1VJTG9uZ1ByZXNzR2VzdHVyZVJlY29n
bml6ZXIgY2xhc3NdXSAmJiBbZ2VzdHVyZVJlY29nbml6ZXIgaXNLaW5kT2ZDbGFzczpbX1VJTG9v
a3VwR2VzdHVyZVJlY29nbml6ZXIgY2xhc3NdXSkpCiAgICAgICAgIHJldHVybiBZRVM7CiAjZW5k
aWYKKworI2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgaWYg
KGlzU2FtZVBhaXIoZ2VzdHVyZVJlY29nbml6ZXIsIG90aGVyR2VzdHVyZVJlY29nbml6ZXIsIF9o
aWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplci5nZXQoKSwgX3RleHRJbnRlcmFjdGlv
bkFzc2lzdGFudC5nZXQoKS5mb3JjZVByZXNzR2VzdHVyZSkpCiAgICAgICAgIHJldHVybiBZRVM7
CiAjZW5kaWYKKwogICAgIGlmIChpc1NhbWVQYWlyKGdlc3R1cmVSZWNvZ25pemVyLCBvdGhlckdl
c3R1cmVSZWNvZ25pemVyLCBfc2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCksIF90ZXh0
SW50ZXJhY3Rpb25Bc3Npc3RhbnQuZ2V0KCkuc2luZ2xlVGFwR2VzdHVyZSkpCiAgICAgICAgIHJl
dHVybiBZRVM7CiAKQEAgLTY0NDMsNyArNjQ0Niw3IEBAIC0gKHZvaWQpdXBkYXRlVGV4dFN1Z2dl
c3Rpb25zRm9ySW5wdXREZWwKIC0gKHZvaWQpX3Nob3dQbGF5YmFja1RhcmdldFBpY2tlcjooQk9P
TCloYXNWaWRlbyBmcm9tUmVjdDooY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpZWxlbWVudFJlY3Qg
cm91dGVTaGFyaW5nUG9saWN5OihXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3kpcm91dGVTaGFy
aW5nUG9saWN5IHJvdXRpbmdDb250ZXh0VUlEOihOU1N0cmluZyAqKXJvdXRpbmdDb250ZXh0VUlE
CiB7CiAjaWYgRU5BQkxFKEFJUlBMQVlfUElDS0VSKQotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDExMDAwMCAmJiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JN
KEFQUExFVFYpCisjaWYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQog
ICAgIGlmICghX2FpclBsYXlSb3V0ZVBpY2tlcikKICAgICAgICAgX2FpclBsYXlSb3V0ZVBpY2tl
ciA9IGFkb3B0TlMoW1tXS0FpclBsYXlSb3V0ZVBpY2tlciBhbGxvY10gaW5pdF0pOwogICAgIFtf
YWlyUGxheVJvdXRlUGlja2VyIHNob3dGcm9tVmlldzpzZWxmIHJvdXRlU2hhcmluZ1BvbGljeTpy
b3V0ZVNoYXJpbmdQb2xpY3kgcm91dGluZ0NvbnRleHRVSUQ6cm91dGluZ0NvbnRleHRVSUQgaGFz
VmlkZW86aGFzVmlkZW9dOwpAQCAtNjYzOCw3ICs2NjQxLDcgQEAgLSAoQk9PTClhY3Rpb25TaGVl
dEFzc2lzdGFudDooV0tBY3Rpb25TaAogICAgIHJldHVybiBOTzsKIH0KIAotI2lmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRGT1JNKElPUykgfHwg
UExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAtIChDR1JlY3QpdW5vY2NsdWRlZFdpbmRvd0JvdW5kc0Zv
ckFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50
CiB7CiAgICAgVUlFZGdlSW5zZXRzIGNvbnRlbnRJbnNldCA9IFtbX3dlYlZpZXcgc2Nyb2xsVmll
d10gYWRqdXN0ZWRDb250ZW50SW5zZXRdOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLU2Nyb2xsVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS1Njcm9sbFZpZXcuaAkocmV2aXNpb24gMjU0NzQ0KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLU2Nyb2xsVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3
IEBACiAtICh2b2lkKV9zZXRTY3JvbGxFbmFibGVkSW50ZXJuYWw6KEJPT0wpZW5hYmxlZDsKIC0g
KHZvaWQpX3NldFpvb21FbmFibGVkSW50ZXJuYWw6KEJPT0wpZW5hYmxlZDsKIAotI2lmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRGT1JNKElPUykg
fHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiBAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduLCBy
ZWFkb25seSkgQk9PTCBfY29udGVudEluc2V0QWRqdXN0bWVudEJlaGF2aW9yV2FzRXh0ZXJuYWxs
eU92ZXJyaWRkZW47CiAtICh2b2lkKV9zZXRDb250ZW50SW5zZXRBZGp1c3RtZW50QmVoYXZpb3JJ
bnRlcm5hbDooVUlTY3JvbGxWaWV3Q29udGVudEluc2V0QWRqdXN0bWVudEJlaGF2aW9yKWluc2V0
QWRqdXN0bWVudEJlaGF2aW9yOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tTY3JvbGxWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS1Njcm9sbFZpZXcubW0JKHJldmlzaW9uIDI1NDc0NCkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyNyw3
ICsxMjcsNyBAQCAtIChpZClmb3J3YXJkaW5nVGFyZ2V0Rm9yU2VsZWN0b3I6KFNFTClhCiAgICAg
V2Vha09iakNQdHI8aWQgPFVJU2Nyb2xsVmlld0RlbGVnYXRlPj4gX2V4dGVybmFsRGVsZWdhdGU7
CiAgICAgV0tTY3JvbGxWaWV3RGVsZWdhdGVGb3J3YXJkZXIgKl9kZWxlZ2F0ZUZvcndhcmRlcjsK
IAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lmIFBM
QVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgQk9PTCBfY29udGVudElu
c2V0QWRqdXN0bWVudEJlaGF2aW9yV2FzRXh0ZXJuYWxseU92ZXJyaWRkZW47CiAjZW5kaWYKICAg
ICBDR0Zsb2F0IF9rZXlib2FyZEJvdHRvbUluc2V0QWRqdXN0bWVudDsKQEAgLTE1Myw3ICsxNTMs
NyBAQCAtIChpZClpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUKICAgICBzZWxmLmRpcmVjdGlv
bmFsTG9ja0VuYWJsZWQgPSBZRVM7CiAgICAgW3NlbGYgX3NldEluZGljYXRvckluc2V0QWRqdXN0
bWVudEJlaGF2aW9yOlVJU2Nyb2xsVmlld0luZGljYXRvckluc2V0QWRqdXN0bWVudEFsd2F5c107
CiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiBQ
TEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIF9jb250ZW50SW5zZXRB
ZGp1c3RtZW50QmVoYXZpb3JXYXNFeHRlcm5hbGx5T3ZlcnJpZGRlbiA9IChzZWxmLmNvbnRlbnRJ
bnNldEFkanVzdG1lbnRCZWhhdmlvciAhPSBVSVNjcm9sbFZpZXdDb250ZW50SW5zZXRBZGp1c3Rt
ZW50QXV0b21hdGljKTsKICNlbmRpZgogICAgIApAQCAtMjc4LDcgKzI3OCw3IEBAIC0gKHZvaWQp
c2V0Q29udGVudEluc2V0OihVSUVkZ2VJbnNldHMpY28KICAgICBbX2ludGVybmFsRGVsZWdhdGUg
X3NjaGVkdWxlVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlXTsKIH0KIAotI2lmIF9fSVBIT05FX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRGT1JNKElPUykgfHwgUExB
VEZPUk0oTUFDQ0FUQUxZU1QpCiAKIC0gKEJPT0wpX2NvbnRlbnRJbnNldEFkanVzdG1lbnRCZWhh
dmlvcldhc0V4dGVybmFsbHlPdmVycmlkZGVuCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tBaXJQbGF5Um91dGVQaWNrZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tBaXJQbGF5Um91dGVQaWNrZXIuaAkocmV2
aXNpb24gMjU0NzQ0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLQWly
UGxheVJvdXRlUGlja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShBSVJQTEFZX1BJQ0tFUikKIAotI2lmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCAmJiAhUExBVEZPUk0oV0FU
Q0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCisjaWYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQ
TEFURk9STShBUFBMRVRWKQogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIApJ
bmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjU0NzQ0KQorKysgU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMjAtMDEtMTcgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgor
CisgICAgICAgIFJlbW92ZSBvbGQgaU9TIHZlcnNpb24gbWFjcm9zCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYwOTYKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzU4NDkxNjc1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOiBSZW1vdmUgaU9T
IDExIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAqIFdlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZh
dGUuaDogRGl0dG8uCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOiBEaXR0by4KKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlZpZXdQcml2YXRlLmg6IERpdHRvLgorCiAyMDIwLTAxLTE2ICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIC1XY29uZGl0
aW9uYWwtdW5pbml0aWFsaXplZCBpbiBXZWJJbnNwZWN0b3JVSSwgV2ViS2l0TGVnYWN5LCBXZWJL
aXQgcHJvamVjdHMKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0JKHJldmlzaW9uIDI1NDc0NCkKKysr
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5t
bQkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBAIC0gKE5TU3RyaW5nICopbGFuZ3Vh
Z2VGb3JXb3JkUmFuZ2U6KE5TUmEKIEBlbmQKICNlbmRpZgogCi0jaWYgKFBMQVRGT1JNKElPU19G
QU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAwKQorI2lm
IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiBAaW50ZXJmYWNlIE5TQXR0
cmlidXRlZFN0cmluZyAoV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRGV0YWlscykKIC0gKERPTURvY3Vt
ZW50RnJhZ21lbnQgKilfZG9jdW1lbnRGcm9tUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UgZG9jdW1lbnQ6
KERPTURvY3VtZW50ICopZG9jdW1lbnQgZG9jdW1lbnRBdHRyaWJ1dGVzOihOU0RpY3Rpb25hcnkg
KilhdHRyaWJ1dGVzIHN1YnJlc291cmNlczooTlNBcnJheSAqKilzdWJyZXNvdXJjZXM7CiBAZW5k
CkBAIC00MTgsNyArNDE4LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3Rl
Ym9hcgogICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KIAot
I2lmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMTAwMDApIHx8IFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShJT1MpIHx8IFBM
QVRGT1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAKIC8vIEZJWE1FOiBSZW1vdmUg
Ym90aCB0aGlzIHN0dWIgYW5kIHRoZSByZWFsIHZlcnNpb24gb2YgdGhpcyBmdW5jdGlvbiBiZWxv
dyBvbmNlIHdlIGRvbid0IG5lZWQgdGhlIHJlYWwgdmVyc2lvbiBvbiBhbnkgc3VwcG9ydGVkIHBs
YXRmb3JtLgogLy8gVGhpcyBzdHViIGlzIG5vdCB1c2VkIG91dHNpZGUgV2ViS2l0LCBidXQgaXQn
cyBoZXJlIHNvIHdlIHdvbid0IGdldCBhIGxpbmtlciBlcnJvci4KSW5kZXg6IFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmgJ
KHJldmlzaW9uIDI1NDc0NCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
VUlEZWxlZ2F0ZVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQAogI2Vu
ZGlmCiAjZW5kaWYKIAotI2lmIFRBUkdFVF9PU19JUEhPTkUgJiYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgVEFSR0VUX09TX0lQSE9ORQogQHByb3RvY29s
IFVJRHJvcFNlc3Npb247CiAjZW5kaWYKIApAQCAtMjk5LDcgKzI5OSw2IEBAIEBpbnRlcmZhY2Ug
TlNPYmplY3QgKFdlYlVJRGVsZWdhdGVQcml2YXQKIAogLSAoQk9PTCl3ZWJWaWV3Q2FuQ2hlY2tH
ZW9sb2NhdGlvbkF1dGhvcml6YXRpb25TdGF0dXM6KFdlYlZpZXcgKilzZW5kZXI7CiAKLSNpZiBf
X0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKIC8qIQogIEBtZXRob2Qg
d2ViVmlldzpkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yU2Vzc2lvbjoKICBAcGFyYW0gc2Vu
ZGVyIFRoZSBXZWJWaWV3IHNlbmRpbmcgdGhlIGRlbGVnYXRlIG1ldGhvZApAQCAtMzA4LDcgKzMw
Nyw2IEBAIEBpbnRlcmZhY2UgTlNPYmplY3QgKFdlYlVJRGVsZWdhdGVQcml2YXQKICAqLwogLSAo
V2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uTWFza0ZvclNlc3Npb246KGlkIDxVSURyb3BTZXNzaW9uPilzZXNzaW9u
OwogI2VuZGlmCi0jZW5kaWYKIAogLSAoTlNEYXRhICopd2ViQ3J5cHRvTWFzdGVyS2V5Rm9yV2Vi
VmlldzooV2ViVmlldyAqKXNlbmRlcjsKIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMjU0NzQ0KQorKysgU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTY2LDcgKzE5
NjYsNyBAQCAtICh2b2lkKV9kaWRDb25jbHVkZUVkaXREcmFnCiAgICAgfQogfQogCi0jZWxpZiBf
X0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNlbGlmIFBMQVRGT1JN
KElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAKIC0gKEJPT0wpX3JlcXVlc3RTdGFydERh
dGFJbnRlcmFjdGlvbjooQ0dQb2ludCljbGllbnRQb3NpdGlvbiBnbG9iYWxQb3NpdGlvbjooQ0dQ
b2ludClnbG9iYWxQb3NpdGlvbgogewpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAkocmV2aXNpb24gMjU0NzQ0KQorKysgU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTcsNyArMTE3LDcgQEAgZXh0ZXJuIE5TU3RyaW5nICpXZWJRdWlja0xvb2tGaWxlTmFt
ZUtleQogZXh0ZXJuIE5TU3RyaW5nICpXZWJRdWlja0xvb2tVVElLZXk7CiAjZW5kaWYKIAotI2lm
IFRBUkdFVF9PU19JUEhPTkUgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTEwMDAwCisjaWYgVEFSR0VUX09TX0lQSE9ORQogQHByb3RvY29sIFVJRHJvcFNlc3Npb247CiAj
ZW5kaWYKIApAQCAtNDc5LDcgKzQ3OSw2IEBAIENvdWxkIGJlIHdvcnRoIGFkZGluZyB0byB0aGUg
QVBJLgogCiAtICh2b2lkKV9yZXBsYWNlQ3VycmVudEhpc3RvcnlJdGVtOihXZWJIaXN0b3J5SXRl
bSAqKWl0ZW07CiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAw
MDAKIC0gKEJPT0wpX3JlcXVlc3RTdGFydERhdGFJbnRlcmFjdGlvbjooQ0dQb2ludCljbGllbnRQ
b3NpdGlvbiBnbG9iYWxQb3NpdGlvbjooQ0dQb2ludClnbG9iYWxQb3NpdGlvbjsKIC0gKFdlYlVJ
VGV4dEluZGljYXRvckRhdGEgKilfZ2V0RGF0YUludGVyYWN0aW9uRGF0YTsKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSwgc3Ryb25nLCBnZXR0ZXI9X2RhdGFPcGVyYXRpb25UZXh0SW5k
aWNhdG9yKSBXZWJVSVRleHRJbmRpY2F0b3JEYXRhICpkYXRhT3BlcmF0aW9uVGV4dEluZGljYXRv
cjsKQEAgLTQ5NSw3ICs0OTQsNiBAQCBDb3VsZCBiZSB3b3J0aCBhZGRpbmcgdG8gdGhlIEFQSS4K
IC0gKHZvaWQpX2VuZGVkRGF0YUludGVyYWN0aW9uOihDR1BvaW50KWNsaWVudFBvc2l0aW9uIGds
b2JhbDooQ0dQb2ludClnbG9iYWxQb3NpdGlvbjsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5LCBnZXR0ZXI9X2RhdGFJbnRlcmFjdGlvbkNhcmV0UmVjdCkgQ0dSZWN0IGRhdGFJbnRl
cmFjdGlvbkNhcmV0UmVjdDsKLSNlbmRpZgogCiAvLyBEZXByZWNhdGVkLiBVc2UgLVtXZWJEYXRh
U291cmNlIF9xdWlja0xvb2tDb250ZW50XSBpbnN0ZWFkLgogLSAoTlNEaWN0aW9uYXJ5ICopcXVp
Y2tMb29rQ29udGVudEZvclVSTDooTlNVUkwgKil1cmw7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTQ3NDQpCisrKyBUb29s
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAyMC0wMS0xNyAg
Sm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIG9s
ZCBpT1MgdmVyc2lvbiBtYWNyb3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwNjA5NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTg0OTE2NzU+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmtUZXN0Lm1tOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVj
a3MuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dh
cE9uTmF2aWdhdGlvbi5tbTogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tOiBE
aXR0by4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSFRUUENv
b2tpZVN0b3JlLm1tOiBSZW1vdmUgaU9TIDEyIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvaW9zL092ZXJmbG93U2Nyb2xsVmlld1Rlc3RzLm1tOiBSZW1vdmUg
aU9TIDEzIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2Ev
VGVzdFJ1bm5lcldLV2ViVmlldy5tbToKKyAgICAgICAgKC1bVGVzdFJ1bm5lcldLV2ViVmlldyBz
ZXRPdmVycmlkZVNhZmVBcmVhSW5zZXRzOl0pOiBSZW1vdmUgaU9TIDExIHZlcnNpb24gY2hlY2tz
LgorCiAyMDIwLTAxLTE2ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIFJlbGFuZCBieXRlY29kZSBjaGVja3BvaW50cyBzaW5jZSBidWdzIGhhdmUgYmVl
biBmaXhlZApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0FW
Rm91bmRhdGlvblNvZnRMaW5rVGVzdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmtUZXN0Lm1tCShyZXZp
c2lvbiAyNTQ3NDQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2Ev
QVZGb3VuZGF0aW9uU29mdExpbmtUZXN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsMTIgKzE0
MSwxMiBAQCBURVNUKEFWRm91bmRhdGlvblNvZnRMaW5rLCBDb25zdGFudHMpCiAgICAgaWYgKFBB
TDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZTYW1wbGVSYXRlS2V5KCkpCiAgICAgICAgIEVYUEVD
VF9UUlVFKFtBVlNhbXBsZVJhdGVLZXkgaXNFcXVhbFRvU3RyaW5nOkAiQVZTYW1wbGVSYXRlS2V5
Il0pOwogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApIHx8IFBMQVRGT1JNKFdBVENIT1MpIHx8
IFBMQVRGT1JNKEFQUExFVFYpCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpIHx8
IFBMQVRGT1JNKFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQUExFVFYpCiAgICAgRVhQRUNUX1RSVUUo
UEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVlVSTEFzc2V0T3V0T2ZCYW5kTUlNRVR5cGVLZXko
KSk7CiAgICAgRVhQRUNUX1RSVUUoW0FWVVJMQXNzZXRPdXRPZkJhbmRNSU1FVHlwZUtleSBpc0Vx
dWFsVG9TdHJpbmc6QCJBVlVSTEFzc2V0T3V0T2ZCYW5kTUlNRVR5cGVLZXkiXSk7CiAjZW5kaWYK
IAotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMjAwMDApIHx8IFBMQVRGT1JNKFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQUExF
VFYpCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDE0MDApIHx8IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oV0FUQ0hPUykgfHwgUExB
VEZPUk0oQVBQTEVUVikKICAgICBFWFBFQ1RfVFJVRShQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9u
X0FWVVJMQXNzZXRVc2VDbGllbnRVUkxMb2FkaW5nRXhjbHVzaXZlbHkoKSk7CiAgICAgRVhQRUNU
X1RSVUUoW0FWVVJMQXNzZXRVc2VDbGllbnRVUkxMb2FkaW5nRXhjbHVzaXZlbHkgaXNFcXVhbFRv
U3RyaW5nOkAiQVZVUkxBc3NldFVzZUNsaWVudFVSTExvYWRpbmdFeGNsdXNpdmVseSJdKTsKICNl
bmRpZgpAQCAtMTYxLDcgKzE2MSw3IEBAIFRFU1QoQVZGb3VuZGF0aW9uU29mdExpbmssIENvbnN0
YW50cykKICAgICBFWFBFQ1RfVFJVRShbQVZDb250ZW50S2V5UmVxdWVzdFByb3RvY29sVmVyc2lv
bnNLZXkgaXNFcXVhbFRvU3RyaW5nOkAiUHJvdG9jb2xWZXJzaW9uc0tleSJdKTsKICNlbmRpZgog
Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDE1MDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEzMDAwMCkgfHwgUExBVEZPUk0oV0FUQ0hPUykgfHwgUExBVEZPUk0oQVBQTEVU
VikKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTUwMCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShXQVRDSE9TKSB8fCBQTEFU
Rk9STShBUFBMRVRWKQogICAgIEVYUEVDVF9UUlVFKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25f
QVZWaWRlb0NvZGVjVHlwZUhFVkNXaXRoQWxwaGEoKSk7CiAgICAgRVhQRUNUX1RSVUUoW0FWVmlk
ZW9Db2RlY1R5cGVIRVZDV2l0aEFscGhhIGlzRXF1YWxUb1N0cmluZzpAIm11eGEiXSk7CiAjZW5k
aWYKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGF0YURldGVj
dGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0RhdGFEZXRlY3Rpb24ubW0JKHJldmlzaW9uIDI1NDc0NCkKKysrIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGF0YURldGVjdGlvbi5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTQ1LDEyICsxNDUsOSBAQCBURVNUKFdlYktpdCwgQWRkQW5kUmVtb3ZlRGF0YURldGVjdG9y
cykKICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJEZWNlbWJlciAyMSwgMjAyMSIsIHJlc3VsdHNb
MV0udmFsdWUpOwogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoIkZsaWdodEluZm9ybWF0aW9uIiwg
cmVzdWx0c1syXS50eXBlKTsKICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJBQzc4MCIsIHJlc3Vs
dHNbMl0udmFsdWUpOwotCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTMwMDAwCiAgICAgICAgIEVYUEVDVF9FUShERFJlc3VsdENhdGVnb3J5VW5rbm93biwgcmVzdWx0
c1swXS5jYXRlZ29yeSk7CiAgICAgICAgIEVYUEVDVF9FUShERFJlc3VsdENhdGVnb3J5Q2FsZW5k
YXJFdmVudCwgcmVzdWx0c1sxXS5jYXRlZ29yeSk7CiAgICAgICAgIEVYUEVDVF9FUShERFJlc3Vs
dENhdGVnb3J5TWlzYywgcmVzdWx0c1syXS5jYXRlZ29yeSk7Ci0jZW5kaWYKICAgICB9OwogCiAg
ICAgW3dlYlZpZXcgc3luY2hyb25vdXNseURldGVjdERhdGFXaXRoVHlwZXM6V0tEYXRhRGV0ZWN0
b3JUeXBlQWxsXTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQkocmV2aXNp
b24gMjU0NzQ0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9j
ZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtNjM5Miw3ICs2MzkyLDcg
QEAgVEVTVChQcm9jZXNzU3dhcCwgUGFnZU92ZXJsYXlMYXllclBlcnNpcwogI2VuZGlmCiB9CiAK
LSNpZiBQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDExMDAwMAorI2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAKIFRF
U1QoUHJvY2Vzc1N3YXAsIFF1aWNrTG9va1JlcXVlc3RzUGFzc3dvcmRBZnRlclN3YXApCiB7Cklu
ZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRl
c3RzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV0tBdHRhY2htZW50VGVzdHMubW0JKHJldmlzaW9uIDI1NDc0NCkKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTY5LDcgKzY5LDcgQEAgLSAoX1dLQXR0YWNobWVudCAqKV9hdHRhY2htZW50V2l0
aE5hbWU6KAogfQogQGVuZAogCi0jZGVmaW5lIFVTRVNfTU9ERVJOX0FUVFJJQlVURURfU1RSSU5H
X0NPTlZFUlNJT04gKChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMTAwMDApIHx8IFBMQVRGT1JNKE1BQykpCisjZGVmaW5lIFVTRVNf
TU9ERVJOX0FUVFJJQlVURURfU1RSSU5HX0NPTlZFUlNJT04gKFBMQVRGT1JNKElPUykgfHwgUExB
VEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkpCiAKIEBpbnRlcmZhY2UgQXR0YWNo
bWVudFVwZGF0ZU9ic2VydmVyIDogTlNPYmplY3QgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+CiBAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQXJyYXkgKmluc2VydGVkOwpJbmRleDogVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSFRU
UENvb2tpZVN0b3JlLm1tCShyZXZpc2lvbiAyNTQ3NDQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zNDcsNyArMzQ3LDcgQEAgVEVTVChXZWJLaXQsIFdLSFRUUENvb2tpZVN0b3JlSHR0cE9ubHkp
IAogICAgIFtjb29raWVzIHJlbGVhc2VdOwogfQogCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1Nf
RkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCisj
aWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDE0MDApIHx8IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiBURVNUKFdl
YktpdCwgV0tIVFRQQ29va2llU3RvcmVDcmVhdGlvblRpbWUpIAogeyAgIAogICAgIGF1dG8gZGF0
YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKQEAgLTQwMSw3
ICs0MDEsNyBAQCBURVNUKFdlYktpdCwgV0tIVFRQQ29va2llU3RvcmVDcmVhdGlvblRpCiAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RGbGFnKTsKICAgICBnb3RGbGFnID0gZmFsc2U7
CiB9Ci0jZW5kaWYgLy8gKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCisjZW5kaWYgLy8gKFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBMQVRG
T1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAKIC8vIEZJWE1FOiBUaGlzICNpZiBz
aG91bGQgYmUgcmVtb3ZlZCBvbmNlIDxyZGFyOi8vcHJvYmxlbS8zNTM0NDIwMj4gaXMgcmVzb2x2
ZWQgYW5kIGJvdHMgYXJlIHVwZGF0ZWQuCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUFYX0FMTE9XRUQgPD0gMTAxMzAxCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL2lvcy9PdmVyZmxvd1Njcm9sbFZpZXdUZXN0cy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9PdmVyZmxvd1Njcm9sbFZpZXdUZXN0cy5tbQkocmV2
aXNpb24gMjU0NzQ0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvT3ZlcmZsb3dT
Y3JvbGxWaWV3VGVzdHMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICNpbXBv
cnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgogCi0j
aWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTMwMDAwCisjaWYgUExBVEZP
Uk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKIHN0YXRpYyBOU1N0cmluZyAqY29uc3Qg
VUlTY3JvbGxWaWV3SW5kaWNhdG9yQ2xhc3MgPSBAIl9VSVNjcm9sbFZpZXdTY3JvbGxJbmRpY2F0
b3IiOwogI2Vsc2UKIHN0YXRpYyBOU1N0cmluZyAqY29uc3QgVUlTY3JvbGxWaWV3SW5kaWNhdG9y
Q2xhc3MgPSBAIlVJSW1hZ2VWaWV3IjsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29j
b2EvVGVzdFJ1bm5lcldLV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0
UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcubW0JKHJldmlzaW9uIDI1NDc0NCkKKysr
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5tbQkod29y
a2luZyBjb3B5KQpAQCAtNDI1LDcgKzQyNSw3IEBAIC0gKHZvaWQpYWNjZXNzaWJpbGl0eVJldHJp
ZXZlU3BlYWtTZWxlY3QKIC0gKHZvaWQpc2V0T3ZlcnJpZGVTYWZlQXJlYUluc2V0czooVUlFZGdl
SW5zZXRzKWluc2V0cwogewogICAgIF9vdmVycmlkZVNhZmVBcmVhSW5zZXRzID0gaW5zZXRzOwot
I2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRG
T1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgW3NlbGYgX3VwZGF0ZVNhZmVB
cmVhSW5zZXRzXTsKICNlbmRpZgogfQpJbmRleDogV2ViS2l0Lnhjd29ya3NwYWNlL3hjc2hhcmVk
ZGF0YS94Y3NjaGVtZXMvQWxsIFNvdXJjZS54Y3NjaGVtZQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQu
eGN3b3Jrc3BhY2UveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9BbGwgU291cmNlLnhjc2NoZW1lCShy
ZXZpc2lvbiAyNTQ3NDQpCisrKyBXZWJLaXQueGN3b3Jrc3BhY2UveGNzaGFyZWRkYXRhL3hjc2No
ZW1lcy9BbGwgU291cmNlLnhjc2NoZW1lCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBA
CiAgICAgICAgICAgICA8QnVpbGRhYmxlUmVmZXJlbmNlCiAgICAgICAgICAgICAgICBCdWlsZGFi
bGVJZGVudGlmaWVyID0gInByaW1hcnkiCiAgICAgICAgICAgICAgICBCbHVlcHJpbnRJZGVudGlm
aWVyID0gIkZCMzlEMEQwMTIwMEYwRTMwMDA4OEU2OSIKLSAgICAgICAgICAgICAgIEJ1aWxkYWJs
ZU5hbWUgPSAibGliQU5HTEUtc2hhcmVkLmR5bGliIgorICAgICAgICAgICAgICAgQnVpbGRhYmxl
TmFtZSA9ICJsaWJBTkdMRS5hIgogICAgICAgICAgICAgICAgQmx1ZXByaW50TmFtZSA9ICJBTkdM
RSIKICAgICAgICAgICAgICAgIFJlZmVyZW5jZWRDb250YWluZXIgPSAiY29udGFpbmVyOlNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnhjb2RlcHJvaiI+CiAgICAgICAgICAgICA8L0J1aWxk
YWJsZVJlZmVyZW5jZT4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388451</attachid>
            <date>2020-01-22 11:42:22 -0800</date>
            <delta_ts>2020-01-22 11:42:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206096-20200122114221.patch</filename>
            <type>text/plain</type>
            <size>58861</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNTQ5MjcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIwLTAxLTIxICBKb25hdGhhbiBCZWRhcmQgIDxq
YmVkYXJkQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgb2xkIGlPUyB2ZXJzaW9uIG1hY3Jv
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MDk2
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODQ5MTY3NT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZS5oOiBSZW1v
dmUgaU9TIDEyIHZlcnNpb24gbWFjcm8uCisgICAgICAgICogd3RmL1BsYXRmb3JtSGF2ZS5oOiBE
aXR0by4KKyAgICAgICAgKiB3dGYvUGxhdGZvcm1Vc2UuaDogRGl0dG8uCisKIDIwMjAtMDEtMjEg
IFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIFtKU0Nd
IERhdGUgcGFyc2UgbG9naWMgc2hvdWxkIGJlIGxlc3MgcmVkdW5kYW50CkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtRW5hYmxlLmgJKHJldmlzaW9uIDI1NDkyNykKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtRW5hYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNCwyMSArMjA0LDE3IEBAIHRoZSBwdWJs
aWMgaU9TIFNESy4gU2VlIDxodHRwczovL3dlYmtpdC4KICNkZWZpbmUgRU5BQkxFX0RPV05MT0FE
X0FUVFJJQlVURSAxCiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKEVOQUJMRV9XS1BERlZJRVcpCi0j
aWYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKSAmJiAhUExBVEZPUk0o
TUFDQ0FUQUxZU1QpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAw
MAorI2lmICFkZWZpbmVkKEVOQUJMRV9XS1BERlZJRVcpICYmIFBMQVRGT1JNKElPUykKICNkZWZp
bmUgRU5BQkxFX1dLUERGVklFVyAxCiAjZW5kaWYKLSNlbmRpZgogCiAjaWYgIWRlZmluZWQoRU5B
QkxFX01FRElBX1NPVVJDRSkKICNkZWZpbmUgRU5BQkxFX01FRElBX1NPVVJDRSAwCiAjZW5kaWYK
IAotI2lmICFkZWZpbmVkKEVOQUJMRV9QUkVWSUVXX0NPTlZFUlRFUikKLSNpZiBQTEFURk9STShJ
T1MpCisjaWYgIWRlZmluZWQoRU5BQkxFX1BSRVZJRVdfQ09OVkVSVEVSKSAmJiBQTEFURk9STShJ
T1MpCiAjZGVmaW5lIEVOQUJMRV9QUkVWSUVXX0NPTlZFUlRFUiAxCiAjZW5kaWYKLSNlbmRpZgog
CiAjaWYgIWRlZmluZWQoRU5BQkxFX01FVEFfVklFV1BPUlQpCiAjZGVmaW5lIEVOQUJMRV9NRVRB
X1ZJRVdQT1JUIDEKQEAgLTEwMjQsNyArMTAyMCw3IEBAIHRoZSBwdWJsaWMgaU9TIFNESy4gU2Vl
IDxodHRwczovL3dlYmtpdC4KICNkZWZpbmUgRU5BQkxFX0tJTkVUSUNfU0NST0xMSU5HIDEKICNl
bmRpZgogCi0jaWYgIWRlZmluZWQoRU5BQkxFX01PTk9TUEFDRV9GT05UX0VYQ0VQVElPTikgJiYg
KChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDE1
MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA8IDEzMDAwMCkpCisjaWYgIWRlZmluZWQoRU5BQkxFX01PTk9TUEFDRV9GT05UX0VY
Q0VQVElPTikgJiYgKChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPCAxMDE1MDApIHx8IFBMQVRGT1JNKFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQUExFVFYp
KQogI2RlZmluZSBFTkFCTEVfTU9OT1NQQUNFX0ZPTlRfRVhDRVBUSU9OIDEKICNlbmRpZgogCklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAkocmV2aXNpb24gMjU0OTI3KQorKysgU291cmNlL1dURi93
dGYvUGxhdGZvcm1IYXZlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1NSw3ICszNTUsNyBAQAogI2Rl
ZmluZSBIQVZFX1RPVUNIX0JBUiAxCiAjZW5kaWYKIAotI2lmIChQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNTAwKSB8fCAoUExBVEZPUk0oSU9T
X0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTMwMDAwKQor
I2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA8IDEwMTUwMCkgJiYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFU
Rk9STShBUFBMRVRWKQogI2RlZmluZSBIQVZFX0hTVFNfU1RPUkFHRV9QQVRIIDEKICNlbmRpZgog
CkBAIC0zOTMsNyArMzkzLDcgQEAKICNkZWZpbmUgSEFWRV9DRk5FVFdPUktfV0lUSF9DT05URU5U
X0VOQ09ESU5HX1NOSUZGSU5HX09WRVJSSURFIDEKICNlbmRpZgogCi0jaWYgKFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFU
Rk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MzAwMDApIHx8IFBMQVRGT1JNKEdUSykKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFU
Rk9STShNQUNDQVRBTFlTVCkgfHwgUExBVEZPUk0oR1RLKQogI2RlZmluZSBIQVZFX09TX0RBUktf
TU9ERV9TVVBQT1JUIDEKICNlbmRpZgogCkBAIC00NDIsMTEgKzQ0MiwxMSBAQAogI2RlZmluZSBI
QVZFX0FVVEhPUklaQVRJT05fU1RBVFVTX0ZPUl9NRURJQV9UWVBFIDEKICNlbmRpZgogCi0jaWYg
KFBMQVRGT1JNKE1BQykgJiYgKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAx
NDAwICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMDE0MDQpKSB8fCAoUExB
VEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAg
JiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMjAyMDApIHx8IFBMQVRGT1JN
KFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQUExFVFYpCisjaWYgUExBVEZPUk0oQ09DT0EpICYmICEo
UExBVEZPUk0oTUFDKSAmJiAhKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAx
NDAwICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMDE0MDQpKQogI2RlZmlu
ZSBIQVZFX0NGTkVUV09SS19PVkVSUklERV9TRVNTSU9OX0NPT0tJRV9BQ0NFUFRfUE9MSUNZIDEK
ICNlbmRpZgogCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDE1MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMzAwMDApCisjaWYgUExBVEZPUk0oQ09DT0EpICYm
ICEoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAx
NTAwKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCiAjZGVmaW5l
IEhBVkVfQ0ZORVRXT1JLX05TVVJMU0VTU0lPTl9TVFJJQ1RSVVNURVZBTFVBVEUgMQogI2VuZGlm
CiAKQEAgLTQ3MCw3ICs0NzAsNyBAQAogI2RlZmluZSBIQVZFX1NBTkRCT1hfSVNTVUVfUkVBRF9F
WFRFTlNJT05fVE9fUFJPQ0VTU19CWV9BVURJVF9UT0tFTiAxCiAjZW5kaWYKIAotI2lmIChQTEFU
Rk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNTAwKSB8
fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTMwMDAwKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhKFBMQVRGT1JNKE1BQykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTUwMCkgJiYgIVBMQVRGT1JNKFdB
VENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQogI2RlZmluZSBIQVZFX01ETlNfRkFTVF9SRUdJ
U1RSQVRJT04gMQogI2VuZGlmCiAKQEAgLTQ3OCwxOSArNDc4LDE5IEBACiAjZGVmaW5lIEhBVkVf
RElTQUxMT1dBQkxFX1VTRVJfSU5TVEFMTEVEX0ZPTlRTIDEKICNlbmRpZgogCi0jaWYgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE1MDApIHx8
IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMzAwMDApCisjaWYgUExBVEZPUk0oQ09DT0EpICYmICEoUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxNTAwKSAmJiAhUExBVEZPUk0oV0FU
Q0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCiAjZGVmaW5lIEhBVkVfQ1RGT05UQ1JFQVRFRk9S
Q0hBUkFDVEVSU1dJVEhMQU5HVUFHRUFORE9QVElPTiAxCiAjZW5kaWYKIAotI2lmIChQTEFURk9S
TShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNTAwKSB8fCAo
UExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTMwMDAwKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhKFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTUwMCkgJiYgIVBMQVRGT1JNKFdBVENI
T1MpICYmICFQTEFURk9STShBUFBMRVRWKQogI2RlZmluZSBIQVZFX0NURk9OVFRSQU5TRk9STUdM
WVBIU1dJVEhMQU5HVUFHRSAxCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYm
IF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEzMDAwMAorI2lmIFBMQVRGT1JN
KElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAjZGVmaW5lIEhBVkVfQVJLSVRfUVVJQ0tf
TE9PS19QUkVWSUVXX0lURU0gMQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAm
JiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMzAwMDAKKyNpZiBQTEFURk9S
TShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogI2RlZmluZSBIQVZFX1VJX1dLX0RPQ1VN
RU5UX0NPTlRFWFQgMQogI2VuZGlmCiAKQEAgLTUxMCwzNSArNTEwLDM1IEBACiAjZGVmaW5lIEhB
VkVfRkFJUlBMQVlTVFJFQU1JTkdfQ0VOQ19JTklUREFUQSAxCiAjZW5kaWYKIAotI2lmIChQTEFU
Rk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEzMDAwMCkg
fHwgUExBVEZPUk0oV0FUQ0hPUykgfHwgUExBVEZPUk0oQVBQTEVUVikKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAjZGVmaW5lIEhBVkVfVUlfU0NS
T0xMX1ZJRVdfSU5ESUNBVE9SX0ZMQVNISU5HX1NQSSAxCiAjZW5kaWYKIAotI2lmIChQTEFURk9S
TShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEzMDAwMCkgfHwg
UExBVEZPUk0oV0FUQ0hPUykgfHwgUExBVEZPUk0oQVBQTEVUVikKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAjZGVmaW5lIEhBVkVfQVBQX0xJTktT
X1dJVEhfSVNFTkFCTEVEIDEKICNlbmRpZgogCi0jaWYgKFBMQVRGT1JNKElPUykgJiYgX19JUEhP
TkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTMwMDAwKQorI2lmIFBMQVRGT1JNKElPUykK
ICNkZWZpbmUgSEFWRV9ST1VURV9TSEFSSU5HX1BPTElDWV9MT05HX0ZPUk1fVklERU8gMQogI2Vu
ZGlmCiAKLSNpZiAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMjAwMDAgJiYgIVBMQVRGT1JNKElPU19TSU1VTEFUT1IpKQorI2lmIFBMQVRGT1JN
KElPUykgJiYgIVBMQVRGT1JNKElPU19TSU1VTEFUT1IpCiAjZGVmaW5lIEhBVkVfREVWSUNFX01B
TkFHRU1FTlQgMQogI2VuZGlmCiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTUwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYm
IF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEzMDAwMCkgfHwgUExBVEZPUk0o
V0FUQ0hPUykgfHwgUExBVEZPUk0oQVBQTEVUVikKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgIShQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDE1MDAp
CiAjZGVmaW5lIEhBVkVfTlNVUkxTRVNTSU9OX1dFQlNPQ0tFVCAxCiAjZW5kaWYKIAotI2lmIChQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNTAw
KSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMzAwMDApIHx8IFBMQVRGT1JNKFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQUExFVFYpCisjaWYg
UExBVEZPUk0oQ09DT0EpICYmICEoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEIDwgMTAxNTAwKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAjZGVmaW5l
IEhBVkVfQVZQTEFZRVJfUkVTT1VSQ0VfQ09OU0VSVkFUSU9OX0xFVkVMIDEKICNlbmRpZgogCi0j
aWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDE0MDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEyMDAwMCkgfHwgUExBVEZPUk0oV0FUQ0hPUykgfHwgUExBVEZPUk0oQVBQTEVUVikK
KyNpZiBQTEFURk9STShDT0NPQSkgJiYgIShQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPCAxMDE1MDApICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkKICNk
ZWZpbmUgSEFWRV9DT1JFVEVYVF9BVVRPX09QVElDQUxfU0laSU5HIDEKICNlbmRpZgogCi0jaWYg
KFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTUw
MCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
PCAxMzAwMDApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA8IDEwMTUwMCkKICNkZWZpbmUgSEFWRV9OU0ZPTlRfV0lUSF9PUFRJQ0FMX1NJWklO
R19CVUcgMQogI2VuZGlmCiAKQEAgLTU0Niw3ICs1NDYsNyBAQAogI2RlZmluZSBIQVZFX0FQUF9T
U08gMQogI2VuZGlmCiAKLSNpZiAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMzAwMDAgfHwgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTUwMCkgfHwgUExBVEZPUk0oV0FUQ0hPUykgfHwgUExB
VEZPUk0oQVBQTEVUVikgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisjaWYgUExBVEZPUk0oQ09D
T0EpICYmICEoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
IDwgMTAxNTAwKQogI2RlZmluZSBIQVZFX1RMU19QUk9UT0NPTF9WRVJTSU9OX1QgMQogI2VuZGlm
CiAKQEAgLTU2Niw3ICs1NjYsNyBAQAogI2RlZmluZSBIQVZFX0FYX0NMSUVOVF9UWVBFIDEKICNl
bmRpZgogCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDE1MDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEzMDAwMCkgfHwgUExBVEZPUk0oV0FUQ0hPUykgfHwgUExBVEZPUk0o
QVBQTEVUVikKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgIShQTEFURk9STShNQUMpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDE1MDApICYmICFQTEFURk9STShNQUNDQVRB
TFlTVCkKICNkZWZpbmUgSEFWRV9ERVNJR05fU1lTVEVNX1VJX0ZPTlRTIDEKICNlbmRpZgogCklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtVXNlLmgJKHJldmlzaW9uIDI1NDkyNykKKysrIFNvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtVXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxOSw3ICszMTksNyBAQAogI2RlZmlu
ZSBVU0VfVUlDT05URVhUTUVOVSAxCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBM
QVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDExMDAwMCkgfHwgUExBVEZPUk0oV0FUQ0hPUykgfHwgUExBVEZPUk0oQVBQTEVUVikKKyNpZiBQ
TEFURk9STShDT0NPQSkKICNkZWZpbmUgVVNFX1BMQVRGT1JNX1NZU1RFTV9GQUxMQkFDS19MSVNU
IDEKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTQ5MjcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNiBAQAorMjAyMC0w
MS0yMSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVt
b3ZlIG9sZCBpT1MgdmVyc2lvbiBtYWNyb3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwNjA5NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTg0OTE2
NzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLgorCisgICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29j
b2EubW06IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3MuCisgICAgICAgICogcGFnZS9TZXR0
aW5nc0RlZmF1bHRWYWx1ZXMuaDogUmVtb3ZlIGlPUyAxMiB2ZXJzaW9uIGNoZWNrcy4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENHLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYWRpZW50OjpwYWludCk6IFJlbW92ZSBpT1MgMTIgdmVyc2lvbiBjaGVja3MuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhdGg6OnBsYXRmb3JtQWRkUGF0aEZvclJvdW5kZWRSZWN0KTogUmVtb3ZlIGlPUyAxMiB2ZXJz
aW9uIGNoZWNrcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVD
b3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2YXJpYXRpb25DYXBhYmlsaXRpZXNGb3JG
b250RGVzY3JpcHRvcik6IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3MuCisgICAgICAgIChX
ZWJDb3JlOjpGb250Q2FjaGU6Omxhc3RSZXNvcnRGYWxsYmFja0ZvbnQpOiBEaXR0by4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjptYXRjaFN5c3RlbUZvbnRVc2UpOiBSZW1vdmUgaU9TIDExIHZlcnNp
b24gY2hlY2suCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ZvbnRDYWNoZUlPUy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtRm9udFdpdGhGYW1pbHlTcGVjaWFsQ2FzZSk6
IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3MuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3Mu
CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaDogUmVt
b3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29v
a2llc0ZvclVSTCk6IFJlbW92ZSBpT1MgMTIgdmVyc2lvbiBjaGVja3MuCisgICAgICAgIChXZWJD
b3JlOjpzZXRIVFRQQ29va2llc0ZvclVSTCk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUaGVtZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpjYWNo
ZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24gY29uc3QpOiBSZW1vdmUgaU9TIDExIHZlcnNpb24gY2hl
Y2tzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnVwZGF0ZUNhY2hlZFN5c3Rl
bUZvbnREZXNjcmlwdGlvbiBjb25zdCk6IERpdHRvLgorCiAyMDIwLTAxLTIyICBaYWxhbiBCdWp0
YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ10gRG8gbm90IGNyZWF0ZSBhIEZv
cm1hdHRpbmdDb250ZXh0IHVubGVzcyB0aGVyZSdzIGNvbnRlbnQgdG8gbGF5b3V0LgpJbmRleDog
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9QQUwvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTQ5MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDEtMjEgIEpv
bmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBvbGQg
aU9TIHZlcnNpb24gbWFjcm9zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDYwOTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4NDkxNjc1PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFsL3NwaS9j
Zi9DRk5ldHdvcmtTUEkuaDogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAg
KiBwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oOiBSZW1vdmUgaU9TIDEyIHZlcnNpb24gY2hl
Y2tzLgorICAgICAgICAqIHBhbC9zcGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg6IFJlbW92
ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3MuCisgICAgICAgICogcGFsL3NwaS9pb3MvTWVkaWFQbGF5
ZXJTUEkuaDogUmVtb3ZlIGlPUyAxMSBhbmQgMTIgdmVyc2lvbiBjaGVja3MuCisKIDIwMjAtMDEt
MjEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBBZGQgbWlzc2luZyBOU19OT0VTQ0FQRSB0byBDRk5ldHdvcmsgU1BJCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsubW0J
KHJldmlzaW9uIDI1NDkyNykKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvQVZGb3Vu
ZGF0aW9uU29mdExpbmsubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbXBv
cnQgPEFWRm91bmRhdGlvbi9BVkZvdW5kYXRpb24uaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2lu
Zy5oPgogCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDE1MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMzAwMDApCisjaWYgIShQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDE1MDApICYmICFQTEFURk9STShXQVRD
SE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikKIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJD
RV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgUEFMX0VYUE9SVCkKICNlbHNlCiBAaW50
ZXJmYWNlIEFWUGxheWVySXRlbSAoRGlzYWJsZUtWT09uU3VwcmVzc2VzVmlkZW9MYXllcnMpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAkocmV2
aXNpb24gMjU0OTI3KQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3Jr
U1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMyw3ICsyMTMsNyBAQCB0eXBlZGVmIE5TX0VOVU0o
TlNJbnRlZ2VyLCBOU1VSTFNlc3Npb25DCiBAcHJvcGVydHkgKG51bGxhYmxlLCByZWFkd3JpdGUs
IHJldGFpbikgTlNVUkwgKl9zaXRlRm9yQ29va2llczsKIEBwcm9wZXJ0eSAocmVhZHdyaXRlKSBC
T09MIF9pc1RvcExldmVsTmF2aWdhdGlvbjsKICNlbmRpZgotI2lmIFBMQVRGT1JNKE1BQykgfHwg
KFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDExMDAwMCkKKyNpZiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYp
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBCT09MIF9wcmVjb25uZWN0OwogI2VuZGlm
CiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NT
UEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9Db3JlR3Jh
cGhpY3NTUEkuaAkocmV2aXNpb24gMjU0OTI3KQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
cGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4Miw3ICsyODIsNyBA
QCB2b2lkIENHQ29udGV4dFNldFN0eWxlKENHQ29udGV4dFJlZiwgQ0dTCiAKIHZvaWQgQ0dDb250
ZXh0RHJhd0NvbmljR3JhZGllbnQoQ0dDb250ZXh0UmVmLCBDR0dyYWRpZW50UmVmLCBDR1BvaW50
IGNlbnRlciwgQ0dGbG9hdCBhbmdsZSk7CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1J
TFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkKKyNpZiAo
UExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQw
MCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKIHZvaWQgQ0dQYXRo
QWRkVW5ldmVuQ29ybmVyc1JvdW5kZWRSZWN0KENHTXV0YWJsZVBhdGhSZWYsIGNvbnN0IENHQWZm
aW5lVHJhbnNmb3JtICosIENHUmVjdCwgY29uc3QgQ0dTaXplIGNvcm5lcnNbNF0pOwogI2VuZGlm
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0lPU3VyZmFjZVNQSS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0lPU3VyZmFj
ZVNQSS5oCShyZXZpc2lvbiAyNTQ5MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9j
b2NvYS9JT1N1cmZhY2VTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBAIFdU
Rl9FWFRFUk5fQ19FTkQKIAogI2Vsc2UKIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEIDwgMTEwMDAwCisjaWYgUExBVEZPUk0oV0FUQ0hPUykgfHwgUExBVEZPUk0oQVBQTEVU
VikKIHR5cGVkZWYgdWludDMyX3QgSU9TdXJmYWNlSUQ7CiAjZW5kaWYKIApJbmRleDogU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJ
LmgJKHJldmlzaW9uIDI1NDkyNykKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29h
L05TS2V5ZWRBcmNoaXZlclNQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw5ICsyOSw5IEBACiAj
aW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi0j
ZGVmaW5lIFVTRV9TRUNVUkVfQVJDSElWRVJfQVBJIChQTEFURk9STShNQUMpIHx8IChQTEFURk9S
TShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAy
MDApIHx8IFBMQVRGT1JNKFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQUExFVFYpKQorI2RlZmluZSBV
U0VfU0VDVVJFX0FSQ0hJVkVSX0FQSSAoUExBVEZPUk0oQ09DT0EpKQogCi0jZGVmaW5lIFVTRV9T
RUNVUkVfQVJDSElWRVJfRk9SX0FUVFJJQlVURURfU1RSSU5HIChQTEFURk9STShNQUMpIHx8IChQ
TEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMzAwMDApIHx8IFBMQVRGT1JNKFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQUExFVFYpKQorI2Rl
ZmluZSBVU0VfU0VDVVJFX0FSQ0hJVkVSX0ZPUl9BVFRSSUJVVEVEX1NUUklORyAoUExBVEZPUk0o
TUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKSkKIAogI2lmIFVTRShTRUNVUkVfQVJDSElWRVJf
QVBJKQogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9jb2NvYS9OU1Byb2dyZXNzU1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvUEFML3BhbC9zcGkvY29jb2EvTlNQcm9ncmVzc1NQSS5oCShyZXZpc2lvbiAyNTQ5Mjcp
CisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9OU1Byb2dyZXNzU1BJLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDE1ICsyNSwxNCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2RlZmlu
ZSBVU0VfTlNQUk9HUkVTU19QVUJMSVNISU5HX1NQSSBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAh
UExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCisKICNpZiBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQogCi0jZGVmaW5lIFVTRV9OU1BST0dSRVNTX1BVQkxJU0hJTkdfU1BJIFBM
QVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwg
MTMwMDAwCiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TUHJvZ3Jlc3NfUHJpdmF0ZS5oPgogCiAjZWxz
ZQogCi0jZGVmaW5lIFVTRV9OU1BST0dSRVNTX1BVQkxJU0hJTkdfU1BJIFBMQVRGT1JNKElPU19G
QU1JTFkpIHx8IFBMQVRGT1JNKFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQUExFVFYpCi0KICNpZiBV
U0VfTlNQUk9HUkVTU19QVUJMSVNISU5HX1NQSQogCiBAaW50ZXJmYWNlIE5TUHJvZ3Jlc3MgKCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2lvcy9NZWRpYVBsYXllclNQSS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2lvcy9NZWRpYVBsYXllclNQ
SS5oCShyZXZpc2lvbiAyNTQ5MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9pb3Mv
TWVkaWFQbGF5ZXJTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTEgKzM0LDExIEBACiAKICNp
bXBvcnQgPE1lZGlhUGxheWVyL01QQVZSb3V0aW5nQ29udHJvbGxlci5oPgogCi0jaWYgX19JUEhP
TkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwCisjaWYgIVBMQVRGT1JNKFdBVENI
T1MpICYmICFQTEFURk9STShBUFBMRVRWKQogI2ltcG9ydCA8TWVkaWFQbGF5ZXIvTVBNZWRpYUNv
bnRyb2xzQ29uZmlndXJhdGlvbi5oPgogI2VuZGlmCiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMTAwMDAgJiYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9S
TShBUFBMRVRWKQorI2lmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikK
ICNpbXBvcnQgPE1lZGlhUGxheWVyL01QTWVkaWFDb250cm9sc1ZpZXdDb250cm9sbGVyLmg+CiAj
ZWxzZQogI2ltcG9ydCA8TWVkaWFQbGF5ZXIvTVBBVlJvdXRpbmdTaGVldC5oPgpAQCAtNjQsNyAr
NjQsNyBAQCB0eXBlZGVmIE5TSW50ZWdlciBNUFJvdXRlRGlzY292ZXJ5TW9kZTsKIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCBhc3NpZ24pIE1QUm91dGVEaXNjb3ZlcnlNb2RlIGRpc2NvdmVyeU1vZGU7
CiBAZW5kCiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAg
JiYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQorI2lmICFQTEFURk9S
TShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikKIAogQGludGVyZmFjZSBNUE1lZGlhQ29u
dHJvbHNWaWV3Q29udHJvbGxlciA6IFVJVmlld0NvbnRyb2xsZXIKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCBjb3B5LCBudWxsYWJsZSkgdm9pZCAoXmRpZERpc21pc3NIYW5kbGVyKSh2b2lkKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJl
YWRlckNvY29hLm1tCShyZXZpc2lvbiAyNTQ5MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNzMsNyAr
NzMsNyBAQAogI2luY2x1ZGUgIkxvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaCIKICNlbmRp
ZgogCi0jaWYgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDExMDAwMCkgfHwgUExBVEZPUk0oTUFDKQorI2lmICFQTEFURk9STShXQVRD
SE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikKIEBpbnRlcmZhY2UgTlNBdHRyaWJ1dGVkU3RyaW5n
ICgpCiAtIChOU1N0cmluZyAqKV9odG1sRG9jdW1lbnRGcmFnbWVudFN0cmluZzooTlNSYW5nZSly
YW5nZSBkb2N1bWVudEF0dHJpYnV0ZXM6KE5TRGljdGlvbmFyeSAqKWRpY3Qgc3VicmVzb3VyY2Vz
OihOU0FycmF5ICoqKXN1YnJlc291cmNlczsKIEBlbmQKQEAgLTgzLDcgKzgzLDcgQEAgU09GVF9M
SU5LX1BSSVZBVEVfRlJBTUVXT1JLKFdlYktpdExlZ2FjeQogU09GVF9MSU5LX0ZSQU1FV09SS19J
Tl9VTUJSRUxMQShXZWJLaXQsIFdlYktpdExlZ2FjeSkKICNlbmRpZgogCi0jaWYgKFBMQVRGT1JN
KElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAw
KQorI2lmIFBMQVRGT1JNKFdBVENIT1MpIHx8IFBMQVRGT1JNKEFQUExFVFYpCiBTT0ZUX0xJTkso
V2ViS2l0TGVnYWN5LCBfV2ViQ3JlYXRlRnJhZ21lbnQsIHZvaWQsIChXZWJDb3JlOjpEb2N1bWVu
dCYgZG9jdW1lbnQsIE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBXZWJDb3JlOjpGcmFnbWVu
dEFuZFJlc291cmNlcyYgcmVzdWx0KSwgKGRvY3VtZW50LCBzdHJpbmcsIHJlc3VsdCkpCiAjZW5k
aWYKIApAQCAtOTYsNyArOTYsNyBAQCBzdGF0aWMgRnJhZ21lbnRBbmRSZXNvdXJjZXMgY3JlYXRl
RnJhZ21lCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotI2VsaWYgKFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkgfHwgUExBVEZP
Uk0oTUFDKQorI2VsaWYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQog
CiBzdGF0aWMgTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzRm9yQXR0cmlidXRlZFN0cmluZ0NvbnZl
cnNpb24oKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0RlZmF1bHRWYWx1
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzRGVmYXVsdFZh
bHVlcy5oCShyZXZpc2lvbiAyNTQ5MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
RGVmYXVsdFZhbHVlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGlj
IGNvbnN0IGJvb2wgZGVmYXVsdE1lZGlhRW5hYmxlZCA9IAogc3RhdGljIGNvbnN0IGJvb2wgZGVm
YXVsdE1lZGlhRW5hYmxlZCA9IGZhbHNlOwogI2VuZGlmCiAgICAgCi0jaWYgKFBMQVRGT1JNKElP
U19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkg
fHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDE0MDApIHx8IFBMQVRGT1JNKFdBVENIT1MpCisjaWYgUExBVEZPUk0oQ09DT0EpICYmICEoUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxNDAwKSAm
JiAhUExBVEZPUk0oQVBQTEVUVikKIHN0YXRpYyBjb25zdCBib29sIGRlZmF1bHRDb25pY0dyYWRp
ZW50ID0gdHJ1ZTsKICNlbHNlCiBzdGF0aWMgY29uc3QgYm9vbCBkZWZhdWx0Q29uaWNHcmFkaWVu
dCA9IGZhbHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
ZGllbnRDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhZGllbnRDRy5jcHAJKHJldmlzaW9uIDI1NDkyNykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
ODIsNyArMTgyLDcgQEAgdm9pZCBHcmFkaWVudDo6cGFpbnQoQ0dDb250ZXh0UmVmIHBsYXRmbwog
ICAgICAgICAgICAgICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUocGxhdGZvcm1Db250ZXh0KTsK
ICAgICAgICAgfSwKICAgICAgICAgWyZdIChjb25zdCBDb25pY0RhdGEmIGRhdGEpIHsKLSNpZiAo
UExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTIwMDAwKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0oV0FUQ0hPUykKKyNpZiBQTEFURk9STShDT0NP
QSkgJiYgIShQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
PCAxMDE0MDApICYmICFQTEFURk9STShBUFBMRVRWKQogICAgICAgICAgICAgQ0dDb250ZXh0U2F2
ZUdTdGF0ZShwbGF0Zm9ybUNvbnRleHQpOwogICAgICAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRl
Q1RNKHBsYXRmb3JtQ29udGV4dCwgZGF0YS5wb2ludDAueCgpLCBkYXRhLnBvaW50MC55KCkpOwog
ICAgICAgICAgICAgQ0dDb250ZXh0Um90YXRlQ1RNKHBsYXRmb3JtQ29udGV4dCwgKENHRmxvYXQp
LU1fUElfMik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRo
Q0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BhdGhDRy5jcHAJKHJldmlzaW9uIDI1NDkyNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNCw3ICszMTQsNyBA
QCB2b2lkIFBhdGg6OnBsYXRmb3JtQWRkUGF0aEZvclJvdW5kZWRSZWN0CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAm
JiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgUExBVEZPUk0o
SU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBDR1JlY3QgcmVjdFRvRHJhdyA9IHJl
Y3Q7CiAgICAgCiAgICAgZW51bSBDb3JuZXJzIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5j
cHAJKHJldmlzaW9uIDI1NDkyNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzks
NyBAQAogI2luY2x1ZGUgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KICNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAotI2RlZmluZSBIQVNfQ09SRV9URVhUX1dJRFRIX0FUVFJJ
QlVURSAoUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKSkKKyNkZWZpbmUgSEFTX0NPUkVfVEVY
VF9XSURUSF9BVFRSSUJVVEUgKFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFU
Rk9STShNQUNDQVRBTFlTVCkpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTA2NCw3ICsx
MDY0LDcgQEAgc3RhdGljIFZhcmlhdGlvbkNhcGFiaWxpdGllcyB2YXJpYXRpb25DYQogICAgIH0K
IAogICAgIGJvb2wgb3B0T3V0RnJvbUdYTm9ybWFsaXphdGlvbiA9IGZhbHNlOwotI2lmIChQTEFU
Rk9STShNQUMpIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMTAwMDApKQorI2lmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExB
VEZPUk0oQVBQTEVUVikKICAgICBvcHRPdXRGcm9tR1hOb3JtYWxpemF0aW9uID0gQ1RGb250RGVz
Y3JpcHRvcklzU3lzdGVtVUlGb250KGZvbnREZXNjcmlwdG9yKTsKICNlbmRpZgogCkBAIC0xNjM5
LDcgKzE2MzksNyBAQCBSZWY8Rm9udD4gRm9udENhY2hlOjpsYXN0UmVzb3J0RmFsbGJhY2tGCiAg
ICAgICAgIHJldHVybiAqcmVzdWx0OwogCiAgICAgLy8gTGFzdFJlc29ydCBpcyBndWFyYW50ZWVk
IHRvIGJlIG5vbi1udWxsLgotI2lmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApIHx8IFBMQVRGT1JNKE1BQykKKyNpZiBQ
TEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAg
ICAgYXV0byBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZUxh
c3RSZXNvcnQoKSk7CiAgICAgYXV0byBmb250ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoRm9u
dERlc2NyaXB0b3IoZm9udERlc2NyaXB0b3IuZ2V0KCksIGZvbnREZXNjcmlwdGlvbi5jb21wdXRl
ZFBpeGVsU2l6ZSgpLCBudWxscHRyKSk7CiAjZWxzZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlv
bkNvY29hLmNwcAkocmV2aXNpb24gMjU0OTI3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04Miw3ICs4Miw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8U3lzdGVtRm9udEtpbmQ+IG0K
ICAgICAgICAga0NUVUlGb250VGV4dFN0eWxlU2hvcnRGb290bm90ZSwKICAgICAgICAga0NUVUlG
b250VGV4dFN0eWxlU2hvcnRDYXB0aW9uMSwKICAgICAgICAga0NUVUlGb250VGV4dFN0eWxlVGFs
bEJvZHksCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisj
aWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICAgICAga0NUVUlG
b250VGV4dFN0eWxlVGl0bGUwLAogICAgICAgICBrQ1RVSUZvbnRUZXh0U3R5bGVUaXRsZTQsCiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQ
bGF0Zm9ybURhdGFDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0JKHJldmlzaW9uIDI1NDky
NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9y
bURhdGFDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3IEBAIHN0YXRpYyBD
RkRpY3Rpb25hcnlSZWYgY2FzY2FkZVRvTGFzdFJlc28KIHN0YXRpYyBSZXRhaW5QdHI8Q1RGb250
RGVzY3JpcHRvclJlZj4gY2FzY2FkZVRvTGFzdFJlc29ydEFuZFZhcmlhdGlvbnNGb250RGVzY3Jp
cHRvcihDVEZvbnRSZWYgb3JpZ2luYWxGb250KQogewogLy8gRklYTUU6IFJlbW92ZSB0aGlzIHdo
ZW4gPHJkYXI6Ly9wcm9ibGVtLzI4NDQ5NDQxPiBpcyBmaXhlZC4gTk9URTogVGhhdCByYWRhciB3
YXMgZml4ZWQgMTEvMTYvMTYsIHNvIHRoaXMgY2FuIGJlIHJlbW92ZWQuIFRCRC4KLSNkZWZpbmUg
V09SS0FST1VORF9DT1JFVEVYVF9WQVJJQVRJT05TX1dJVEhfRkFMTEJBQ0tfTElTVF9CVUcgKEVO
QUJMRShWQVJJQVRJT05fRk9OVFMpICYmIChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMCkpCisjZGVmaW5lIFdPUktBUk9VTkRf
Q09SRVRFWFRfVkFSSUFUSU9OU19XSVRIX0ZBTExCQUNLX0xJU1RfQlVHIChFTkFCTEUoVkFSSUFU
SU9OX0ZPTlRTKSAmJiAoUExBVEZPUk0oV0FUQ0hPUykgfHwgUExBVEZPUk0oQVBQTEVUVikpKQog
CiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXMgPSBjYXNjYWRlVG9MYXN0UmVzb3J0QXR0
cmlidXRlc0RpY3Rpb25hcnkoKTsKICNpZiBXT1JLQVJPVU5EX0NPUkVURVhUX1ZBUklBVElPTlNf
V0lUSF9GQUxMQkFDS19MSVNUX0JVRwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaW9zL0ZvbnRDYWNoZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9pb3MvRm9udENhY2hlSU9TLm1tCShyZXZpc2lvbiAyNTQ5MjcpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvRm9udENhY2hlSU9TLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTYsNyArMTU2LDcgQEAgUmV0YWluUHRyPENURm9udFJlZj4gcGxh
dGZvcm1Gb250V2l0aEZhbQogICAgIH0KIAogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShmYW1pbHksICJsYXN0cmVzb3J0IikpIHsKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRG
T1JNKEFQUExFVFYpCiAgICAgICAgIHN0YXRpYyBjb25zdCBDVEZvbnREZXNjcmlwdG9yUmVmIGxh
c3RSZXNvcnQgPSBDVEZvbnREZXNjcmlwdG9yQ3JlYXRlTGFzdFJlc29ydCgpOwogICAgICAgICBy
ZXR1cm4gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IobGFzdFJlc29ydCwg
c2l6ZSwgbnVsbHB0cikpOwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5j
cHAJKHJldmlzaW9uIDI1NDkyNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyAr
NTYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gCiAgICAgUmV0
YWluUHRyPENGRGF0YVJlZj4gYnVmZmVyRGF0YSA9IGJ1ZmZlci5jcmVhdGVDRkRhdGEoKTsKIAog
ICAgIFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPiBmb250RGVzY3JpcHRvcjsKLSNpZiBQ
TEFURk9STShNQUMpIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCisjaWYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQ
TEFURk9STShBUFBMRVRWKQogICAgIGF1dG8gYXJyYXkgPSBhZG9wdENGKENURm9udE1hbmFnZXJD
cmVhdGVGb250RGVzY3JpcHRvcnNGcm9tRGF0YShidWZmZXJEYXRhLmdldCgpKSk7CiAgICAgaWYg
KCFhcnJheSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmgJKHJl
dmlzaW9uIDI1NDkyNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJv
dmlkZXJQYXN0ZWJvYXJkLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDggKzI3LDYgQEAKIAogI2lt
cG9ydCA8V2ViQ29yZS9BYnN0cmFjdFBhc3RlYm9hcmQuaD4KIAotI2lmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAotCiBzdHJ1Y3QgQ0dTaXplOwogCiB0eXBlZGVm
IE5TX0VOVU0oTlNJbnRlZ2VyLCBXZWJQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZSkgewpAQCAt
MTE0LDUgKzExMiw0IEBAIFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViSXRlbVByb3ZpZGUK
IAogTlNfQVNTVU1FX05PTk5VTExfRU5ECiAKLSNlbmRpZiAvLyBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKICNlbmRpZiAvLyBUQVJHRVRfT1NfSVBIT05FCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDI1NDkyNykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTE5Myw3ICsxOTMsNyBAQCBzdGF0aWMg
dm9pZCBkZWxldGVIVFRQQ29va2llKENGSFRUUENvb2tpCiAgICAgQ0ZIVFRQQ29va2llU3RvcmFn
ZURlbGV0ZUNvb2tpZShjb29raWVTdG9yYWdlLCBbY29va2llIF9HZXRJbnRlcm5hbENGSFRUUENv
b2tpZV0pOwogfQogCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCisjaWYgIShQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDE0MDApICYmICFQTEFURk9S
TShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikKIHN0YXRpYyBSZXRhaW5QdHI8TlNEaWN0
aW9uYXJ5PiBwb2xpY3lQcm9wZXJ0aWVzKGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBOU1VSTCAqdXJsKQogewogICAgIHN0YXRpYyBOU1VSTCAqZW1wdHlVUkwgPSBbW05TVVJMIGFs
bG9jXSBpbml0V2l0aFN0cmluZzpAIiJdOwpAQCAtMjEyLDcgKzIxMiw3IEBAIHN0YXRpYyBOU0Fy
cmF5ICpjb29raWVzRm9yVVJMKE5TSFRUUENvb2sKICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVy
ID0gWyZjb29raWVzUHRyXSAoTlNBcnJheSAqY29va2llcykgewogICAgICAgICBjb29raWVzUHRy
ID0gcmV0YWluUHRyKGNvb2tpZXMpOwogICAgIH07Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1Nf
RkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCisj
aWYgIShQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAx
MDE0MDApICYmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikKICAgICBp
ZiAoW3N0b3JhZ2UgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfZ2V0Q29va2llc0ZvclVS
TDptYWluRG9jdW1lbnRVUkw6cGFydGl0aW9uOnBvbGljeVByb3BlcnRpZXM6Y29tcGxldGlvbkhh
bmRsZXI6KV0pCiAgICAgICAgIFtzdG9yYWdlIF9nZXRDb29raWVzRm9yVVJMOnVybCBtYWluRG9j
dW1lbnRVUkw6bWFpbkRvY3VtZW50VVJMIHBhcnRpdGlvbjpwYXJ0aXRpb24gcG9saWN5UHJvcGVy
dGllczpzYW1lU2l0ZUluZm8gPyBwb2xpY3lQcm9wZXJ0aWVzKHNhbWVTaXRlSW5mby52YWx1ZSgp
LCB1cmwpLmdldCgpIDogbnVsbHB0ciBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxl
cl07CiAgICAgZWxzZQpAQCAtMjI5LDcgKzIyOSw3IEBAIHN0YXRpYyB2b2lkIHNldEhUVFBDb29r
aWVzRm9yVVJMKENGSFRUUEMKIHsKICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9j
ZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CiAgICAgaWYgKCFjb29raWVTdG9y
YWdlKSB7Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCisjaWYgIShQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDE0MDApICYmICFQTEFURk9STShXQVRD
SE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikKICAgICAgICAgaWYgKFtOU0hUVFBDb29raWVTdG9y
YWdlIGluc3RhbmNlc1Jlc3BvbmRUb1NlbGVjdG9yOkBzZWxlY3Rvcihfc2V0Q29va2llczpmb3JV
Ukw6bWFpbkRvY3VtZW50VVJMOnBvbGljeVByb3BlcnRpZXM6KV0pCiAgICAgICAgICAgICBbW05T
SFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdIF9zZXRDb29raWVzOmNv
b2tpZXMgZm9yVVJMOnVybCBtYWluRG9jdW1lbnRVUkw6bWFpbkRvY3VtZW50VVJMIHBvbGljeVBy
b3BlcnRpZXM6cG9saWN5UHJvcGVydGllcyhzYW1lU2l0ZUluZm8sIHVybCkuZ2V0KCldOwogICAg
ICAgICBlbHNlCkBAIC0yMzcsNyArMjM3LDcgQEAgc3RhdGljIHZvaWQgc2V0SFRUUENvb2tpZXNG
b3JVUkwoQ0ZIVFRQQwogICAgICAgICAgICAgW1tOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhU
VFBDb29raWVTdG9yYWdlXSBzZXRDb29raWVzOmNvb2tpZXMgZm9yVVJMOnVybCBtYWluRG9jdW1l
bnRVUkw6bWFpbkRvY3VtZW50VVJMXTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSNpZiAoUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkg
fHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEyMDAwMCkKKyNpZiAhKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA8IDEwMTQwMCkgJiYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9S
TShBUFBMRVRWKQogICAgIGlmIChbTlNIVFRQQ29va2llU3RvcmFnZSBpbnN0YW5jZXNSZXNwb25k
VG9TZWxlY3RvcjpAc2VsZWN0b3IoX3NldENvb2tpZXM6Zm9yVVJMOm1haW5Eb2N1bWVudFVSTDpw
b2xpY3lQcm9wZXJ0aWVzOildKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTdG9wIGNyZWF0aW5nIGEg
bmV3IE5TSFRUUENvb2tpZVN0b3JhZ2Ugb2JqZWN0IGVhY2ggdGltZSB3ZSB3YW50IHRvIHF1ZXJ5
IHRoZSBjb29raWUgamFyLgogICAgICAgICAvLyBOZXR3b3JrU3RvcmFnZVNlc3Npb24gY291bGQg
aW5zdGVhZCBrZWVwIGEgTlNIVFRQQ29va2llU3RvcmFnZSBvYmplY3QgZm9yIHVzLgpAQCAtMjQ3
LDcgKzI0Nyw3IEBAIHN0YXRpYyB2b2lkIHNldEhUVFBDb29raWVzRm9yVVJMKENGSFRUUEMKICNl
bmRpZgogICAgICAgICBhdXRvIGNmQ29va2llcyA9IGFkb3B0Q0YoW05TSFRUUENvb2tpZSBfbnMy
Y2ZDb29raWVzOmNvb2tpZXNdKTsKICAgICAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tp
ZXMoY29va2llU3RvcmFnZSwgY2ZDb29raWVzLmdldCgpLCBbdXJsIF9jZnVybF0sIFttYWluRG9j
dW1lbnRVUkwgX2NmdXJsXSk7Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBf
X0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCisjaWYgIShQTEFURk9S
TShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDE0MDApICYmICFQ
TEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikKICAgICB9CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShzYW1lU2l0ZUluZm8pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZUlPUy5tbQkocmV2aXNpb24gMjU0OTI3KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYzLDEz
ICsxMTYzLDEzIEBAIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIFJlbmRlclRoZW1lSU9TOjoKICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gc2hvcnRGb290
bm90ZUZvbnQ7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRlRGVzY3JpcHRp
b24+IHNob3J0Q2FwdGlvbjFGb250OwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGb250Q2Fz
Y2FkZURlc2NyaXB0aW9uPiB0YWxsQm9keUZvbnQ7Ci0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9S
TShBUFBMRVRWKQogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGb250Q2FzY2FkZURlc2NyaXB0
aW9uPiB0aXRsZTBGb250OwogI2VuZGlmCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRD
YXNjYWRlRGVzY3JpcHRpb24+IHRpdGxlMUZvbnQ7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IHRpdGxlMkZvbnQ7CiAgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IHRpdGxlM0ZvbnQ7Ci0jaWYgX19JUEhPTkVf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgIVBMQVRGT1JNKFdBVENIT1Mp
ICYmICFQTEFURk9STShBUFBMRVRWKQogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGb250Q2Fz
Y2FkZURlc2NyaXB0aW9uPiB0aXRsZTRGb250OwogI2VuZGlmCiAKQEAgLTExOTcsNyArMTE5Nyw3
IEBAIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIFJlbmRlclRoZW1lSU9TOjoKICAgICAgICAgcmV0
dXJuIGhlYWRsaW5lRm9udDsKICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1Cb2R5OgogICAg
ICAgICByZXR1cm4gYm9keUZvbnQ7Ci0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTEwMDAwCisjaWYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRW
KQogICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVRpdGxlMDoKICAgICAgICAgcmV0dXJuIHRp
dGxlMEZvbnQ7CiAjZW5kaWYKQEAgLTEyMDcsNyArMTIwNyw3IEBAIEZvbnRDYXNjYWRlRGVzY3Jp
cHRpb24mIFJlbmRlclRoZW1lSU9TOjoKICAgICAgICAgcmV0dXJuIHRpdGxlMkZvbnQ7CiAgICAg
Y2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtVGl0bGUzOgogICAgICAgICByZXR1cm4gdGl0bGUzRm9u
dDsKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiAh
UExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCiAgICAgY2FzZSBDU1NWYWx1
ZUFwcGxlU3lzdGVtVGl0bGU0OgogICAgICAgICByZXR1cm4gdGl0bGU0Rm9udDsKICNlbmRpZgpA
QCAtMTI2Niw3ICsxMjY2LDcgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6dXBkYXRlQ2FjaGVkU3lz
dGVtRgogICAgICAgICB0ZXh0U3R5bGUgPSBrQ1RVSUZvbnRUZXh0U3R5bGVCb2R5OwogICAgICAg
ICBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZVdpdGhUZXh0
U3R5bGUodGV4dFN0eWxlLCBjb250ZW50U2l6ZUNhdGVnb3J5KCksIG51bGxwdHIpKTsKICAgICAg
ICAgYnJlYWs7Ci0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAw
CisjaWYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQogICAgIGNhc2Ug
Q1NTVmFsdWVBcHBsZVN5c3RlbVRpdGxlMDoKICAgICAgICAgdGV4dFN0eWxlID0ga0NUVUlGb250
VGV4dFN0eWxlVGl0bGUwOwogICAgICAgICBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250
RGVzY3JpcHRvckNyZWF0ZVdpdGhUZXh0U3R5bGUodGV4dFN0eWxlLCBjb250ZW50U2l6ZUNhdGVn
b3J5KCksIG51bGxwdHIpKTsKQEAgLTEyODQsNyArMTI4NCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVJ
T1M6OnVwZGF0ZUNhY2hlZFN5c3RlbUYKICAgICAgICAgdGV4dFN0eWxlID0ga0NUVUlGb250VGV4
dFN0eWxlVGl0bGUzOwogICAgICAgICBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVz
Y3JpcHRvckNyZWF0ZVdpdGhUZXh0U3R5bGUodGV4dFN0eWxlLCBjb250ZW50U2l6ZUNhdGVnb3J5
KCksIG51bGxwdHIpKTsKICAgICAgICAgYnJlYWs7Ci0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9S
TShBUFBMRVRWKQogICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVRpdGxlNDoKICAgICAgICAg
dGV4dFN0eWxlID0ga0NUVUlGb250VGV4dFN0eWxlVGl0bGU0OwogICAgICAgICBmb250RGVzY3Jp
cHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZVdpdGhUZXh0U3R5bGUodGV4dFN0
eWxlLCBjb250ZW50U2l6ZUNhdGVnb3J5KCksIG51bGxwdHIpKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNTQ5MjcpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDMyIEBACisyMDIwLTAxLTIxICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFw
cGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgb2xkIGlPUyB2ZXJzaW9uIG1hY3JvcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MDk2CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS81ODQ5MTY3NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtBY3Rpdml0eVRyYWNr
ZXIuaDogUmVtb3ZlIGlPUyAxMiB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBQbGF0Zm9ybS9z
cGkvaW9zL1VJS2l0U1BJLmg6IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3MuCisgICAgICAg
ICogU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5oOiBSZW1vdmUgaU9TIDEyIHZl
cnNpb24gY2hlY2tzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVu
dENvY29hLm1tOiBSZW1vdmUgaU9TIDEyIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbToKKyAgICAgICAgKGNvbnRlbnRPZmZzZXRCb3Vu
ZGVkSW5WYWxpZFJhbmdlKTogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAg
KC1bV0tXZWJWaWV3IGFjdGl2ZVZpZXdMYXlvdXRTaXplOl0pOiBEaXR0by4KKyAgICAgICAgKC1b
V0tXZWJWaWV3IHNhZmVBcmVhSW5zZXRzRGlkQ2hhbmdlXSk6IERpdHRvLgorICAgICAgICAoLVtX
S1dlYlZpZXcgX3VwZGF0ZVNjcm9sbFZpZXdJbnNldEFkanVzdG1lbnRCZWhhdmlvcl0pOiBEaXR0
by4KKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRy
ZWVWaWV3cy5tbToKKyAgICAgICAgKC1bV0tDaGlsZFNjcm9sbFZpZXcgaW5pdFdpdGhGcmFtZTpd
KTogUmVtb3ZlIGlPUyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBn
ZXN0dXJlUmVjb2duaXplcjpjYW5CZVByZXZlbnRlZEJ5R2VzdHVyZVJlY29nbml6ZXI6XSk6IFJl
bW92ZSBpT1MgMTIgdmVyc2lvbiBjaGVja3MuCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZ2Vz
dHVyZVJlY29nbml6ZXI6c2hvdWxkUmVjb2duaXplU2ltdWx0YW5lb3VzbHlXaXRoR2VzdHVyZVJl
Y29nbml6ZXI6XSk6IERpdHRvLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zaG93UGxheWJh
Y2tUYXJnZXRQaWNrZXI6ZnJvbVJlY3Q6cm91dGVTaGFyaW5nUG9saWN5OnJvdXRpbmdDb250ZXh0
VUlEOl0pOiBSZW1vdmUgaU9TIDExIHZlcnNpb24gY2hlY2tzLgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IHVub2NjbHVkZWRXaW5kb3dCb3VuZHNGb3JBY3Rpb25TaGVldEFzc2lzdGFudDpdKTog
RGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZpZXcuaDogUmVtb3ZlIGlP
UyAxMSB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLU2Nyb2xsVmll
dy5tbToKKyAgICAgICAgKC1bV0tTY3JvbGxWaWV3IGluaXRXaXRoRnJhbWU6XSk6IFJlbW92ZSBp
T1MgMTEgdmVyc2lvbiBjaGVja3MuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Fp
clBsYXlSb3V0ZVBpY2tlci5oOiBSZW1vdmUgaU9TIDExIHZlcnNpb24gY2hlY2tzLgorCiAyMDIw
LTAxLTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW0lQQyBI
YXJkZW5pbmddIE9ubHkgcHJvY2VzcyBNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3MgbWVzc2FnZXMg
d2hlbiBzZW50IGJ5IHRoZSBVSVByb2Nlc3MKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0FjdGl2aXR5VHJhY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0FjdGl2aXR5VHJhY2tlci5oCShyZXZpc2lvbiAyNTQ5
MjcpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtBY3Rpdml0eVRyYWNr
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspICYmICgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1J
TFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkgfHwgUExB
VEZPUk0oV0FUQ0hPUykpCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykgJiYgIShQTEFURk9S
TShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDE0MDApICYmICFQ
TEFURk9STShBUFBMRVRWKQogI2RlZmluZSBIQVZFX05XX0FDVElWSVRZIDEKICNlbmRpZgogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAkocmV2aXNpb24g
MjU0OTI3KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ3NCw3ICs0NzQsNyBAQCB0eXBlZGVmIGVudW0gewogQHByb3BlcnR5
IChyZWFkb25seSkgTlNTdHJpbmcgKl9ob3N0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyOwog
QGVuZAogCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisj
aWYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQogQGludGVyZmFjZSBO
U1VSTCAoKQogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHNldHRlcj1fc2V0VGl0bGU6KSBO
U1N0cmluZyAqX3RpdGxlOwogQGVuZApAQCAtNzI3LDcgKzcyNyw3IEBAIHN0cnVjdCBfVUlXZWJU
b3VjaFBvaW50IHsKICAgICBDR1BvaW50IGxvY2F0aW9uSW5Eb2N1bWVudENvb3JkaW5hdGVzOwog
ICAgIHVuc2lnbmVkIGlkZW50aWZpZXI7CiAgICAgVUlUb3VjaFBoYXNlIHBoYXNlOwotI2lmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID4gMTAwMDAwCisjaWYgIVBMQVRGT1JNKFdB
VENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQogICAgIENHRmxvYXQgbWFqb3JSYWRpdXNJblNj
cmVlbkNvb3JkaW5hdGVzOwogICAgIENHRmxvYXQgZm9yY2U7CiAgICAgQ0dGbG9hdCBhbHRpdHVk
ZUFuZ2xlOwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0
VmFsdWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5j
ZXNEZWZhdWx0VmFsdWVzLmgJKHJldmlzaW9uIDI1NDkyNykKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjYs
NyArMjI2LDcgQEAKICNkZWZpbmUgREVGQVVMVF9QUk9DRVNTX1NXQVBfT05fQ1JPU1NfU0lURV9O
QVZJR0FUSU9OX0VOQUJMRUQgZmFsc2UKICNlbmRpZgogCi0jaWYgKFBMQVRGT1JNKElPU19GQU1J
TFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkgfHwgKFBM
QVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDAp
IHx8IFBMQVRGT1JNKFdBVENIT1MpCisjaWYgUExBVEZPUk0oQ09DT0EpICYmICEoUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxNDAwKSAmJiAhUExB
VEZPUk0oQVBQTEVUVikKICNkZWZpbmUgREVGQVVMVF9DT05JQ19HUkFESUVOVF9FTkFCTEVEIHRy
dWUKICNlbHNlCiAjZGVmaW5lIERFRkFVTFRfQ09OSUNfR1JBRElFTlRfRU5BQkxFRCBmYWxzZQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2Nv
YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJ
QXR0YWNobWVudENvY29hLm1tCShyZXZpc2lvbiAyNTQ5MjcpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw3ICszNiw3IEBACiAjZW5kaWYKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNLZXllZEFy
Y2hpdmVyU1BJLmg+CiAKLSNkZWZpbmUgQ0FOX1NFQ1VSRUxZX0FSQ0hJVkVfRklMRV9XUkFQUEVS
IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAx
NDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTIwMDAwKQorI2RlZmluZSBDQU5fU0VDVVJFTFlfQVJDSElWRV9GSUxFX1dS
QVBQRVIgIShQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
PCAxMDE0MDApICYmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikKIAog
bmFtZXNwYWNlIEFQSSB7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3Mv
V0tXZWJWaWV3SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9pb3MvV0tXZWJWaWV3SU9TLm1tCShyZXZpc2lvbiAyNTQ5MjcpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzA1
LDcgKzcwNSw3IEBAIC0gKHZvaWQpX2RpZENvbW1pdExvYWRGb3JNYWluRnJhbWUKIAogc3RhdGlj
IENHUG9pbnQgY29udGVudE9mZnNldEJvdW5kZWRJblZhbGlkUmFuZ2UoVUlTY3JvbGxWaWV3ICpz
Y3JvbGxWaWV3LCBDR1BvaW50IGNvbnRlbnRPZmZzZXQpCiB7Ci0jaWYgX19JUEhPTkVfT1NfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQ
TEFURk9STShBUFBMRVRWKQogICAgIFVJRWRnZUluc2V0cyBjb250ZW50SW5zZXRzID0gc2Nyb2xs
Vmlldy5hZGp1c3RlZENvbnRlbnRJbnNldDsKICNlbHNlCiAgICAgVUlFZGdlSW5zZXRzIGNvbnRl
bnRJbnNldHMgPSBzY3JvbGxWaWV3LmNvbnRlbnRJbnNldDsKQEAgLTE3MTIsNyArMTcxMiw3IEBA
IC0gKFdlYkNvcmU6OkZsb2F0U2l6ZSlhY3RpdmVWaWV3TGF5b3V0U2kKICAgICBpZiAoX3ZpZXdM
YXlvdXRTaXplT3ZlcnJpZGUpCiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpGbG9hdFNpemUoX3Zp
ZXdMYXlvdXRTaXplT3ZlcnJpZGUudmFsdWUoKSk7CiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRG
T1JNKEFQUExFVFYpCiAgICAgcmV0dXJuIFdlYkNvcmU6OkZsb2F0U2l6ZShVSUVkZ2VJbnNldHNJ
bnNldFJlY3QoQ0dSZWN0TWFrZSgwLCAwLCBib3VuZHMuc2l6ZS53aWR0aCwgYm91bmRzLnNpemUu
aGVpZ2h0KSwgc2VsZi5fc2Nyb2xsVmlld1N5c3RlbUNvbnRlbnRJbnNldCkuc2l6ZSk7CiAjZWxz
ZQogICAgIHJldHVybiBXZWJDb3JlOjpGbG9hdFNpemUgeyBib3VuZHMuc2l6ZSB9OwpAQCAtMTc5
MCw3ICsxNzkwLDcgQEAgLSAoQk9PTClfc2Nyb2xsVmlld0lzUnViYmVyQmFuZGluZwogICAgIHJl
dHVybiAhcG9pbnRzRXF1YWxJbkRldmljZVBpeGVscyhjb250ZW50T2Zmc2V0LCBib3VuZGVkT2Zm
c2V0LCBkZXZpY2VTY2FsZUZhY3Rvcik7CiB9CiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JN
KEFQUExFVFYpCiAtICh2b2lkKXNhZmVBcmVhSW5zZXRzRGlkQ2hhbmdlCiB7CiAgICAgW3N1cGVy
IHNhZmVBcmVhSW5zZXRzRGlkQ2hhbmdlXTsKQEAgLTIzMTMsNyArMjMxMyw3IEBAIC0gKFdLUGFz
c3dvcmRWaWV3ICopX3Bhc3N3b3JkVmlldwogCiAtICh2b2lkKV91cGRhdGVTY3JvbGxWaWV3SW5z
ZXRBZGp1c3RtZW50QmVoYXZpb3IKIHsKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMTAwMDAKKyNpZiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExF
VFYpCiAgICAgaWYgKCFbX3Njcm9sbFZpZXcgX2NvbnRlbnRJbnNldEFkanVzdG1lbnRCZWhhdmlv
cldhc0V4dGVybmFsbHlPdmVycmlkZGVuXSkKICAgICAgICAgW19zY3JvbGxWaWV3IF9zZXRDb250
ZW50SW5zZXRBZGp1c3RtZW50QmVoYXZpb3JJbnRlcm5hbDpzZWxmLl9zYWZlQXJlYVNob3VsZEFm
ZmVjdE9ic2N1cmVkSW5zZXRzID8gVUlTY3JvbGxWaWV3Q29udGVudEluc2V0QWRqdXN0bWVudEFs
d2F5cyA6IFVJU2Nyb2xsVmlld0NvbnRlbnRJbnNldEFkanVzdG1lbnROZXZlcl07CiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3Rl
TGF5ZXJUcmVlVmlld3MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVWaWV3cy5tbQkocmV2aXNpb24gMjU0
OTI3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1v
dGVMYXllclRyZWVWaWV3cy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEwLDcgKzMxMCw3IEBAIC0g
KGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnIKICAgICBpZiAoIXNlbGYpCiAg
ICAgICAgIHJldHVybiBuaWw7CiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMTAwMDAKKyNpZiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYp
CiAgICAgc2VsZi5jb250ZW50SW5zZXRBZGp1c3RtZW50QmVoYXZpb3IgPSBVSVNjcm9sbFZpZXdD
b250ZW50SW5zZXRBZGp1c3RtZW50TmV2ZXI7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CShyZXZpc2lvbiAyNTQ5MjcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMDA4LDkgKzIwMDgsMTAg
QEAgLSAoQk9PTClnZXN0dXJlUmVjb2duaXplcjooVUlHZXN0dXJlUmVjbwogLSAoQk9PTClnZXN0
dXJlUmVjb2duaXplcjooVUlHZXN0dXJlUmVjb2duaXplciAqKXByZXZlbnRlZEdlc3R1cmVSZWNv
Z25pemVyIGNhbkJlUHJldmVudGVkQnlHZXN0dXJlUmVjb2duaXplcjooVUlHZXN0dXJlUmVjb2du
aXplciAqKXByZXZlbnRpbmdHZXN0dXJlUmVjb2duaXplciB7CiAgICAgLy8gRG9uJ3QgYWxsb3cg
dGhlIGhpZ2hsaWdodCB0byBiZSBwcmV2ZW50ZWQgYnkgYSBzZWxlY3Rpb24gZ2VzdHVyZS4gUHJl
c3MtYW5kLWhvbGQgb24gYSBsaW5rIHNob3VsZCBoaWdobGlnaHQgdGhlIGxpbmssIG5vdCBzZWxl
Y3QgaXQuCiAgICAgYm9vbCBpc0ZvcmNlUHJlc3NHZXN0dXJlID0gTk87Ci0jaWYgX19JUEhPTkVf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwCisjaWYgIVBMQVRGT1JNKFdBVENIT1Mp
ICYmICFQTEFURk9STShBUFBMRVRWKQogICAgIGlzRm9yY2VQcmVzc0dlc3R1cmUgPSAocHJldmVu
dGluZ0dlc3R1cmVSZWNvZ25pemVyID09IF90ZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQuZ2V0KCku
Zm9yY2VQcmVzc0dlc3R1cmUpOwogI2VuZGlmCisKICNpZiBQTEFURk9STShNQUNDQVRBTFlTVCkK
ICAgICBpZiAoKHByZXZlbnRpbmdHZXN0dXJlUmVjb2duaXplciA9PSBfdGV4dEludGVyYWN0aW9u
QXNzaXN0YW50LmdldCgpLmxvdXBlR2VzdHVyZSkgJiYgKHByZXZlbnRlZEdlc3R1cmVSZWNvZ25p
emVyID09IF9oaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciB8fCBwcmV2ZW50ZWRH
ZXN0dXJlUmVjb2duaXplciA9PSBfbG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgfHwgcHJldmVu
dGVkR2VzdHVyZVJlY29nbml6ZXIgPT0gX3RleHRJbnRlcmFjdGlvbkFzc2lzdGFudC5nZXQoKS5m
b3JjZVByZXNzR2VzdHVyZSkpCiAgICAgICAgIHJldHVybiBZRVM7CkBAIC0yMDQ4LDcgKzIwNDks
NiBAQCAtIChCT09MKWdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvCiAgICAgICAgIHJl
dHVybiBZRVM7CiAjZW5kaWYKIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEyMDAwMAogI2lmIFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGlmIChpc1NhbWVQYWly
KGdlc3R1cmVSZWNvZ25pemVyLCBvdGhlckdlc3R1cmVSZWNvZ25pemVyLCBfdGV4dEludGVyYWN0
aW9uQXNzaXN0YW50LmdldCgpLmxvdXBlR2VzdHVyZSwgX3RleHRJbnRlcmFjdGlvbkFzc2lzdGFu
dC5nZXQoKS5mb3JjZVByZXNzR2VzdHVyZSkpCiAgICAgICAgIHJldHVybiBZRVM7CkBAIC0yMDU5
LDkgKzIwNTksMTIgQEAgLSAoQk9PTClnZXN0dXJlUmVjb2duaXplcjooVUlHZXN0dXJlUmVjbwog
ICAgIGlmICgoW2dlc3R1cmVSZWNvZ25pemVyIGlzS2luZE9mQ2xhc3M6W19VSUxvb2t1cEdlc3R1
cmVSZWNvZ25pemVyIGNsYXNzXV0gJiYgW290aGVyR2VzdHVyZVJlY29nbml6ZXIgaXNLaW5kT2ZD
bGFzczpbVUlMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciBjbGFzc11dKSB8fCAoW290aGVyR2Vz
dHVyZVJlY29nbml6ZXIgaXNLaW5kT2ZDbGFzczpbVUlMb25nUHJlc3NHZXN0dXJlUmVjb2duaXpl
ciBjbGFzc11dICYmIFtnZXN0dXJlUmVjb2duaXplciBpc0tpbmRPZkNsYXNzOltfVUlMb29rdXBH
ZXN0dXJlUmVjb2duaXplciBjbGFzc11dKSkKICAgICAgICAgcmV0dXJuIFlFUzsKICNlbmRpZgor
CisjaWYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQogICAgIGlmIChp
c1NhbWVQYWlyKGdlc3R1cmVSZWNvZ25pemVyLCBvdGhlckdlc3R1cmVSZWNvZ25pemVyLCBfaGln
aGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCksIF90ZXh0SW50ZXJhY3Rpb25B
c3Npc3RhbnQuZ2V0KCkuZm9yY2VQcmVzc0dlc3R1cmUpKQogICAgICAgICByZXR1cm4gWUVTOwog
I2VuZGlmCisKICAgICBpZiAoaXNTYW1lUGFpcihnZXN0dXJlUmVjb2duaXplciwgb3RoZXJHZXN0
dXJlUmVjb2duaXplciwgX3NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpLCBfdGV4dElu
dGVyYWN0aW9uQXNzaXN0YW50LmdldCgpLnNpbmdsZVRhcEdlc3R1cmUpKQogICAgICAgICByZXR1
cm4gWUVTOwogCkBAIC02NDM5LDcgKzY0NDIsNyBAQCAtICh2b2lkKXVwZGF0ZVRleHRTdWdnZXN0
aW9uc0ZvcklucHV0RGVsCiAtICh2b2lkKV9zaG93UGxheWJhY2tUYXJnZXRQaWNrZXI6KEJPT0wp
aGFzVmlkZW8gZnJvbVJlY3Q6KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKWVsZW1lbnRSZWN0IHJv
dXRlU2hhcmluZ1BvbGljeTooV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5KXJvdXRlU2hhcmlu
Z1BvbGljeSByb3V0aW5nQ29udGV4dFVJRDooTlNTdHJpbmcgKilyb3V0aW5nQ29udGV4dFVJRAog
ewogI2lmIEVOQUJMRShBSVJQTEFZX1BJQ0tFUikKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMTAwMDAgJiYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShB
UFBMRVRWKQorI2lmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikKICAg
ICBpZiAoIV9haXJQbGF5Um91dGVQaWNrZXIpCiAgICAgICAgIF9haXJQbGF5Um91dGVQaWNrZXIg
PSBhZG9wdE5TKFtbV0tBaXJQbGF5Um91dGVQaWNrZXIgYWxsb2NdIGluaXRdKTsKICAgICBbX2Fp
clBsYXlSb3V0ZVBpY2tlciBzaG93RnJvbVZpZXc6c2VsZiByb3V0ZVNoYXJpbmdQb2xpY3k6cm91
dGVTaGFyaW5nUG9saWN5IHJvdXRpbmdDb250ZXh0VUlEOnJvdXRpbmdDb250ZXh0VUlEIGhhc1Zp
ZGVvOmhhc1ZpZGVvXTsKQEAgLTY2MzQsNyArNjYzNyw3IEBAIC0gKEJPT0wpYWN0aW9uU2hlZXRB
c3Npc3RhbnQ6KFdLQWN0aW9uU2gKICAgICByZXR1cm4gTk87CiB9CiAKLSNpZiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiAhUExBVEZPUk0oV0FUQ0hPUykg
JiYgIVBMQVRGT1JNKEFQUExFVFYpCiAtIChDR1JlY3QpdW5vY2NsdWRlZFdpbmRvd0JvdW5kc0Zv
ckFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50
CiB7CiAgICAgVUlFZGdlSW5zZXRzIGNvbnRlbnRJbnNldCA9IFtbX3dlYlZpZXcgc2Nyb2xsVmll
d10gYWRqdXN0ZWRDb250ZW50SW5zZXRdOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLU2Nyb2xsVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS1Njcm9sbFZpZXcuaAkocmV2aXNpb24gMjU0OTI3KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLU2Nyb2xsVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3
IEBACiAtICh2b2lkKV9zZXRTY3JvbGxFbmFibGVkSW50ZXJuYWw6KEJPT0wpZW5hYmxlZDsKIC0g
KHZvaWQpX3NldFpvb21FbmFibGVkSW50ZXJuYWw6KEJPT0wpZW5hYmxlZDsKIAotI2lmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lmICFQTEFURk9STShXQVRD
SE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24s
IHJlYWRvbmx5KSBCT09MIF9jb250ZW50SW5zZXRBZGp1c3RtZW50QmVoYXZpb3JXYXNFeHRlcm5h
bGx5T3ZlcnJpZGRlbjsKIC0gKHZvaWQpX3NldENvbnRlbnRJbnNldEFkanVzdG1lbnRCZWhhdmlv
ckludGVybmFsOihVSVNjcm9sbFZpZXdDb250ZW50SW5zZXRBZGp1c3RtZW50QmVoYXZpb3IpaW5z
ZXRBZGp1c3RtZW50QmVoYXZpb3I7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS1Njcm9sbFZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLU2Nyb2xsVmlldy5tbQkocmV2aXNpb24gMjU0OTI3KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLU2Nyb2xsVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTI3
LDcgKzEyNyw3IEBAIC0gKGlkKWZvcndhcmRpbmdUYXJnZXRGb3JTZWxlY3RvcjooU0VMKWEKICAg
ICBXZWFrT2JqQ1B0cjxpZCA8VUlTY3JvbGxWaWV3RGVsZWdhdGU+PiBfZXh0ZXJuYWxEZWxlZ2F0
ZTsKICAgICBXS1Njcm9sbFZpZXdEZWxlZ2F0ZUZvcndhcmRlciAqX2RlbGVnYXRlRm9yd2FyZGVy
OwogCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYg
IVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQogICAgIEJPT0wgX2NvbnRl
bnRJbnNldEFkanVzdG1lbnRCZWhhdmlvcldhc0V4dGVybmFsbHlPdmVycmlkZGVuOwogI2VuZGlm
CiAgICAgQ0dGbG9hdCBfa2V5Ym9hcmRCb3R0b21JbnNldEFkanVzdG1lbnQ7CkBAIC0xNTMsNyAr
MTUzLDcgQEAgLSAoaWQpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lCiAgICAgc2VsZi5kaXJl
Y3Rpb25hbExvY2tFbmFibGVkID0gWUVTOwogICAgIFtzZWxmIF9zZXRJbmRpY2F0b3JJbnNldEFk
anVzdG1lbnRCZWhhdmlvcjpVSVNjcm9sbFZpZXdJbmRpY2F0b3JJbnNldEFkanVzdG1lbnRBbHdh
eXNdOwogCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisj
aWYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQogICAgIF9jb250ZW50
SW5zZXRBZGp1c3RtZW50QmVoYXZpb3JXYXNFeHRlcm5hbGx5T3ZlcnJpZGRlbiA9IChzZWxmLmNv
bnRlbnRJbnNldEFkanVzdG1lbnRCZWhhdmlvciAhPSBVSVNjcm9sbFZpZXdDb250ZW50SW5zZXRB
ZGp1c3RtZW50QXV0b21hdGljKTsKICNlbmRpZgogICAgIApAQCAtMjc4LDcgKzI3OCw3IEBAIC0g
KHZvaWQpc2V0Q29udGVudEluc2V0OihVSUVkZ2VJbnNldHMpY28KICAgICBbX2ludGVybmFsRGVs
ZWdhdGUgX3NjaGVkdWxlVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlXTsKIH0KIAotI2lmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lmICFQTEFURk9STShXQVRD
SE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikKIAogLSAoQk9PTClfY29udGVudEluc2V0QWRqdXN0
bWVudEJlaGF2aW9yV2FzRXh0ZXJuYWxseU92ZXJyaWRkZW4KIHsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0FpclBsYXlSb3V0ZVBpY2tlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0FpclBsYXlSb3V0ZVBpY2tl
ci5oCShyZXZpc2lvbiAyNTQ5MjcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9y
bXMvV0tBaXJQbGF5Um91dGVQaWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBA
QAogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKEFJUlBMQVlfUElDS0VSKQog
Ci0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwICYmICFQTEFU
Rk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikKKyNpZiAhUExBVEZPUk0oV0FUQ0hP
UykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCiAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlv
bi5oPgogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTQ5Mjcp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNiBAQAorMjAyMC0wMS0yMSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIG9sZCBpT1MgdmVyc2lvbiBtYWNyb3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjA5NgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNTg0OTE2NzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06IFJl
bW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVja3MuCisgICAgICAgICogV2ViVmlldy9XZWJVSURlbGVn
YXRlUHJpdmF0ZS5oOiBEaXR0by4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06IERpdHRv
LgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDogRGl0dG8uCisKIDIwMjAtMDEt
MjEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAg
ICBNYWtlIFJlbmRlcmluZ01vZGUgYW5kIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZW51bSBjbGFz
c2VzIGFuZCBtb3ZlIHRoZW0gdG8gc2VwYXJhdGUgaGVhZGVycwpJbmRleDogU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5tbQkocmV2aXNpb24gMjU0OTI3KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNyArMTAy
LDcgQEAgLSAoTlNTdHJpbmcgKilsYW5ndWFnZUZvcldvcmRSYW5nZTooTlNSYQogQGVuZAogI2Vu
ZGlmCiAKLSNpZiAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPCAxMTAwMDApCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUND
QVRBTFlTVCkKIEBpbnRlcmZhY2UgTlNBdHRyaWJ1dGVkU3RyaW5nIChXZWJOU0F0dHJpYnV0ZWRT
dHJpbmdEZXRhaWxzKQogLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKV9kb2N1bWVudEZyb21SYW5n
ZTooTlNSYW5nZSlyYW5nZSBkb2N1bWVudDooRE9NRG9jdW1lbnQgKilkb2N1bWVudCBkb2N1bWVu
dEF0dHJpYnV0ZXM6KE5TRGljdGlvbmFyeSAqKWF0dHJpYnV0ZXMgc3VicmVzb3VyY2VzOihOU0Fy
cmF5ICoqKXN1YnJlc291cmNlczsKIEBlbmQKQEAgLTQxOCw3ICs0MTgsNyBAQCB2b2lkIFdlYkVk
aXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyCiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdl
YktpdCwgb25seSBXZWJLaXQyLgogfQogCi0jaWYgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkgfHwgUExBVEZPUk0oTUFD
KQorI2lmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikKIAogLy8gRklY
TUU6IFJlbW92ZSBib3RoIHRoaXMgc3R1YiBhbmQgdGhlIHJlYWwgdmVyc2lvbiBvZiB0aGlzIGZ1
bmN0aW9uIGJlbG93IG9uY2Ugd2UgZG9uJ3QgbmVlZCB0aGUgcmVhbCB2ZXJzaW9uIG9uIGFueSBz
dXBwb3J0ZWQgcGxhdGZvcm0uCiAvLyBUaGlzIHN0dWIgaXMgbm90IHVzZWQgb3V0c2lkZSBXZWJL
aXQsIGJ1dCBpdCdzIGhlcmUgc28gd2Ugd29uJ3QgZ2V0IGEgbGlua2VyIGVycm9yLgpJbmRleDog
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0
ZVByaXZhdGUuaAkocmV2aXNpb24gMjU0OTI3KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0
NSw3IEBACiAjZW5kaWYKICNlbmRpZgogCi0jaWYgVEFSR0VUX09TX0lQSE9ORSAmJiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiBUQVJHRVRfT1NfSVBIT05F
CiBAcHJvdG9jb2wgVUlEcm9wU2Vzc2lvbjsKICNlbmRpZgogCkBAIC0yOTksNyArMjk5LDYgQEAg
QGludGVyZmFjZSBOU09iamVjdCAoV2ViVUlEZWxlZ2F0ZVByaXZhdAogCiAtIChCT09MKXdlYlZp
ZXdDYW5DaGVja0dlb2xvY2F0aW9uQXV0aG9yaXphdGlvblN0YXR1czooV2ViVmlldyAqKXNlbmRl
cjsKIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAogLyoh
CiAgQG1ldGhvZCB3ZWJWaWV3OmRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JTZXNzaW9uOgog
IEBwYXJhbSBzZW5kZXIgVGhlIFdlYlZpZXcgc2VuZGluZyB0aGUgZGVsZWdhdGUgbWV0aG9kCkBA
IC0zMDgsNyArMzA3LDYgQEAgQGludGVyZmFjZSBOU09iamVjdCAoV2ViVUlEZWxlZ2F0ZVByaXZh
dAogICovCiAtIChXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24pd2ViVmlldzooV2ViVmlldyAqKXNl
bmRlciBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yU2Vzc2lvbjooaWQgPFVJRHJvcFNlc3Np
b24+KXNlc3Npb247CiAjZW5kaWYKLSNlbmRpZgogCiAtIChOU0RhdGEgKil3ZWJDcnlwdG9NYXN0
ZXJLZXlGb3JXZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAyNTQ5MjcpCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAg
LTE5NjYsNyArMTk2Niw3IEBAIC0gKHZvaWQpX2RpZENvbmNsdWRlRWRpdERyYWcKICAgICB9CiB9
CiAKLSNlbGlmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2Vs
aWYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQogCiAtIChCT09MKV9y
ZXF1ZXN0U3RhcnREYXRhSW50ZXJhY3Rpb246KENHUG9pbnQpY2xpZW50UG9zaXRpb24gZ2xvYmFs
UG9zaXRpb246KENHUG9pbnQpZ2xvYmFsUG9zaXRpb24KIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgJKHJldmlzaW9uIDI1NDky
NykKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTE3LDcgKzExNyw3IEBAIGV4dGVybiBOU1N0cmluZyAqV2ViUXVp
Y2tMb29rRmlsZU5hbWVLZXkKIGV4dGVybiBOU1N0cmluZyAqV2ViUXVpY2tMb29rVVRJS2V5Owog
I2VuZGlmCiAKLSNpZiBUQVJHRVRfT1NfSVBIT05FICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDExMDAwMAorI2lmIFRBUkdFVF9PU19JUEhPTkUKIEBwcm90b2NvbCBVSURy
b3BTZXNzaW9uOwogI2VuZGlmCiAKQEAgLTQ3OSw3ICs0NzksNiBAQCBDb3VsZCBiZSB3b3J0aCBh
ZGRpbmcgdG8gdGhlIEFQSS4KIAogLSAodm9pZClfcmVwbGFjZUN1cnJlbnRIaXN0b3J5SXRlbToo
V2ViSGlzdG9yeUl0ZW0gKilpdGVtOwogCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTEwMDAwCiAtIChCT09MKV9yZXF1ZXN0U3RhcnREYXRhSW50ZXJhY3Rpb246KENH
UG9pbnQpY2xpZW50UG9zaXRpb24gZ2xvYmFsUG9zaXRpb246KENHUG9pbnQpZ2xvYmFsUG9zaXRp
b247CiAtIChXZWJVSVRleHRJbmRpY2F0b3JEYXRhICopX2dldERhdGFJbnRlcmFjdGlvbkRhdGE7
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIHN0cm9uZywgZ2V0dGVyPV9kYXRhT3Bl
cmF0aW9uVGV4dEluZGljYXRvcikgV2ViVUlUZXh0SW5kaWNhdG9yRGF0YSAqZGF0YU9wZXJhdGlv
blRleHRJbmRpY2F0b3I7CkBAIC00OTUsNyArNDk0LDYgQEAgQ291bGQgYmUgd29ydGggYWRkaW5n
IHRvIHRoZSBBUEkuCiAtICh2b2lkKV9lbmRlZERhdGFJbnRlcmFjdGlvbjooQ0dQb2ludCljbGll
bnRQb3NpdGlvbiBnbG9iYWw6KENHUG9pbnQpZ2xvYmFsUG9zaXRpb247CiAKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSwgZ2V0dGVyPV9kYXRhSW50ZXJhY3Rpb25DYXJldFJlY3QpIENH
UmVjdCBkYXRhSW50ZXJhY3Rpb25DYXJldFJlY3Q7Ci0jZW5kaWYKIAogLy8gRGVwcmVjYXRlZC4g
VXNlIC1bV2ViRGF0YVNvdXJjZSBfcXVpY2tMb29rQ29udGVudF0gaW5zdGVhZC4KIC0gKE5TRGlj
dGlvbmFyeSAqKXF1aWNrTG9va0NvbnRlbnRGb3JVUkw6KE5TVVJMICopdXJsOwpJbmRleDogVG9v
bHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjU0
OTI3KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMjAtMDEtMjEgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgorCisgICAg
ICAgIFJlbW92ZSBvbGQgaU9TIHZlcnNpb24gbWFjcm9zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYwOTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzU4NDkxNjc1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0FWRm91bmRhdGlvblNvZnRM
aW5rVGVzdC5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOiBSZW1vdmUgaU9TIDEx
IHZlcnNpb24gY2hlY2tzLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW06IFJlbW92ZSBpT1MgMTEgdmVyc2lvbiBjaGVj
a3MuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1l
bnRUZXN0cy5tbTogRGl0dG8uCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbTogUmVtb3ZlIGlPUyAxMiB2ZXJzaW9uIGNoZWNrcy4K
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9PdmVyZmxvd1Njcm9sbFZpZXdUZXN0
cy5tbTogUmVtb3ZlIGlPUyAxMyB2ZXJzaW9uIGNoZWNrcy4KKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcubW06CisgICAgICAgICgtW1Rlc3RSdW5u
ZXJXS1dlYlZpZXcgc2V0T3ZlcnJpZGVTYWZlQXJlYUluc2V0czpdKTogUmVtb3ZlIGlPUyAxMSB2
ZXJzaW9uIGNoZWNrcy4KKwogMjAyMC0wMS0yMSAgTWF0dCBMZXdpcyAgPGpsZXdpczNAYXBwbGUu
Y29tPgogCiAgICAgICAgIFRlc3QgaGlzdG9yeSBsaW5rcyBvbiB0aGUgZGFzaGJvYXJkIHNob3Vs
ZCBnbyB0byB0aGUgbmV3IHJlc3VsdHMgZGF0YWJhc2UKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGlua1Rlc3QubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0FWRm91bmRh
dGlvblNvZnRMaW5rVGVzdC5tbQkocmV2aXNpb24gMjU0OTI3KQorKysgVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rVGVzdC5tbQkod29y
a2luZyBjb3B5KQpAQCAtMTQxLDEyICsxNDEsMTIgQEAgVEVTVChBVkZvdW5kYXRpb25Tb2Z0TGlu
aywgQ29uc3RhbnRzKQogICAgIGlmIChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWU2FtcGxl
UmF0ZUtleSgpKQogICAgICAgICBFWFBFQ1RfVFJVRShbQVZTYW1wbGVSYXRlS2V5IGlzRXF1YWxU
b1N0cmluZzpAIkFWU2FtcGxlUmF0ZUtleSJdKTsKIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBM
QVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAw
KSB8fCBQTEFURk9STShXQVRDSE9TKSB8fCBQTEFURk9STShBUFBMRVRWKQorI2lmICFQTEFURk9S
TShNQUNDQVRBTFlTVCkKICAgICBFWFBFQ1RfVFJVRShQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9u
X0FWVVJMQXNzZXRPdXRPZkJhbmRNSU1FVHlwZUtleSgpKTsKICAgICBFWFBFQ1RfVFJVRShbQVZV
UkxBc3NldE91dE9mQmFuZE1JTUVUeXBlS2V5IGlzRXF1YWxUb1N0cmluZzpAIkFWVVJMQXNzZXRP
dXRPZkJhbmRNSU1FVHlwZUtleSJdKTsKICNlbmRpZgogCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJ
T1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkgfHwgUExB
VEZPUk0oV0FUQ0hPUykgfHwgUExBVEZPUk0oQVBQTEVUVikKKyNpZiAhKFBMQVRGT1JNKE1BQykg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTQwMCkgJiYgIVBMQVRGT1JN
KE1BQ0NBVEFMWVNUKQogICAgIEVYUEVDVF9UUlVFKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25f
QVZVUkxBc3NldFVzZUNsaWVudFVSTExvYWRpbmdFeGNsdXNpdmVseSgpKTsKICAgICBFWFBFQ1Rf
VFJVRShbQVZVUkxBc3NldFVzZUNsaWVudFVSTExvYWRpbmdFeGNsdXNpdmVseSBpc0VxdWFsVG9T
dHJpbmc6QCJBVlVSTEFzc2V0VXNlQ2xpZW50VVJMTG9hZGluZ0V4Y2x1c2l2ZWx5Il0pOwogI2Vu
ZGlmCkBAIC0xNjEsNyArMTYxLDcgQEAgVEVTVChBVkZvdW5kYXRpb25Tb2Z0TGluaywgQ29uc3Rh
bnRzKQogICAgIEVYUEVDVF9UUlVFKFtBVkNvbnRlbnRLZXlSZXF1ZXN0UHJvdG9jb2xWZXJzaW9u
c0tleSBpc0VxdWFsVG9TdHJpbmc6QCJQcm90b2NvbFZlcnNpb25zS2V5Il0pOwogI2VuZGlmCiAK
LSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTUwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTMwMDAwKSB8fCBQTEFURk9STShXQVRDSE9TKSB8fCBQTEFURk9STShBUFBMRVRW
KQorI2lmICEoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
IDwgMTAxNTAwKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgRVhQRUNUX1RSVUUoUEFM
OjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVlZpZGVvQ29kZWNUeXBlSEVWQ1dpdGhBbHBoYSgpKTsK
ICAgICBFWFBFQ1RfVFJVRShbQVZWaWRlb0NvZGVjVHlwZUhFVkNXaXRoQWxwaGEgaXNFcXVhbFRv
U3RyaW5nOkAibXV4YSJdKTsKICNlbmRpZgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGF0YURldGVjdGlvbi5tbQkocmV2aXNpb24gMjU0
OTI3KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EYXRhRGV0ZWN0
aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsMTIgKzE0NSw5IEBAIFRFU1QoV2ViS2l0LCBB
ZGRBbmRSZW1vdmVEYXRhRGV0ZWN0b3JzKQogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoIkRlY2Vt
YmVyIDIxLCAyMDIxIiwgcmVzdWx0c1sxXS52YWx1ZSk7CiAgICAgICAgIEVYUEVDVF9XS19TVFJF
USgiRmxpZ2h0SW5mb3JtYXRpb24iLCByZXN1bHRzWzJdLnR5cGUpOwogICAgICAgICBFWFBFQ1Rf
V0tfU1RSRVEoIkFDNzgwIiwgcmVzdWx0c1syXS52YWx1ZSk7Ci0KLSNpZiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMzAwMDAKICAgICAgICAgRVhQRUNUX0VRKEREUmVzdWx0
Q2F0ZWdvcnlVbmtub3duLCByZXN1bHRzWzBdLmNhdGVnb3J5KTsKICAgICAgICAgRVhQRUNUX0VR
KEREUmVzdWx0Q2F0ZWdvcnlDYWxlbmRhckV2ZW50LCByZXN1bHRzWzFdLmNhdGVnb3J5KTsKICAg
ICAgICAgRVhQRUNUX0VRKEREUmVzdWx0Q2F0ZWdvcnlNaXNjLCByZXN1bHRzWzJdLmNhdGVnb3J5
KTsKLSNlbmRpZgogICAgIH07CiAKICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5RGV0ZWN0RGF0
YVdpdGhUeXBlczpXS0RhdGFEZXRlY3RvclR5cGVBbGxdOwpJbmRleDogVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2Fw
T25OYXZpZ2F0aW9uLm1tCShyZXZpc2lvbiAyNTQ5MjcpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC02MzkyLDcgKzYzOTIsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBQYWdlT3ZlcmxheUxh
eWVyUGVyc2lzCiAjZW5kaWYKIH0KIAotI2lmIFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFU
Rk9STShNQUNDQVRBTFlTVCkKIAogVEVTVChQcm9jZXNzU3dhcCwgUXVpY2tMb29rUmVxdWVzdHNQ
YXNzd29yZEFmdGVyU3dhcCkKIHsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQkocmV2aXNpb24g
MjU0OTI3KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFj
aG1lbnRUZXN0cy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCAtIChfV0tBdHRh
Y2htZW50ICopX2F0dGFjaG1lbnRXaXRoTmFtZTooCiB9CiBAZW5kCiAKLSNkZWZpbmUgVVNFU19N
T0RFUk5fQVRUUklCVVRFRF9TVFJJTkdfQ09OVkVSU0lPTiAoKFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkgfHwgUExBVEZP
Uk0oTUFDKSkKKyNkZWZpbmUgVVNFU19NT0RFUk5fQVRUUklCVVRFRF9TVFJJTkdfQ09OVkVSU0lP
TiAoIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKSkKIAogQGludGVyZmFj
ZSBBdHRhY2htZW50VXBkYXRlT2JzZXJ2ZXIgOiBOU09iamVjdCA8V0tVSURlbGVnYXRlUHJpdmF0
ZT4KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNBcnJheSAqaW5zZXJ0ZWQ7Cklu
ZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSFRUUENvb2tpZVN0
b3JlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV0tIVFRQQ29va2llU3RvcmUubW0JKHJldmlzaW9uIDI1NDkyNykKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTM0Nyw3ICszNDcsNyBAQCBURVNUKFdlYktpdCwgV0tIVFRQQ29va2llU3RvcmVI
dHRwT25seSkgCiAgICAgW2Nvb2tpZXMgcmVsZWFzZV07CiB9CiAKLSNpZiAoUExBVEZPUk0oTUFD
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRG
T1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEy
MDAwMCkKKyNpZiAhKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA8IDEwMTQwMCkgJiYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRW
KQogVEVTVChXZWJLaXQsIFdLSFRUUENvb2tpZVN0b3JlQ3JlYXRpb25UaW1lKSAKIHsgICAKICAg
ICBhdXRvIGRhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV07
CkBAIC00MDEsNyArNDAxLDcgQEAgVEVTVChXZWJLaXQsIFdLSFRUUENvb2tpZVN0b3JlQ3JlYXRp
b25UaQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290RmxhZyk7CiAgICAgZ290Rmxh
ZyA9IGZhbHNlOwogfQotI2VuZGlmIC8vIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKQorI2VuZGlmIC8vICEo
UExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxNDAw
KSAmJiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCiAKIC8vIEZJWE1F
OiBUaGlzICNpZiBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIDxyZGFyOi8vcHJvYmxlbS8zNTM0NDIw
Mj4gaXMgcmVzb2x2ZWQgYW5kIGJvdHMgYXJlIHVwZGF0ZWQuCiAjaWYgUExBVEZPUk0oTUFDKSAm
JiBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPD0gMTAxMzAxCkluZGV4OiBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9PdmVyZmxvd1Njcm9sbFZpZXdUZXN0cy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9PdmVyZmxvd1Njcm9sbFZpZXdU
ZXN0cy5tbQkocmV2aXNpb24gMjU0OTI3KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9p
b3MvT3ZlcmZsb3dTY3JvbGxWaWV3VGVzdHMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0
LDcgQEAKICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJp
dmF0ZS5oPgogCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTMwMDAw
CisjaWYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQogc3RhdGljIE5T
U3RyaW5nICpjb25zdCBVSVNjcm9sbFZpZXdJbmRpY2F0b3JDbGFzcyA9IEAiX1VJU2Nyb2xsVmll
d1Njcm9sbEluZGljYXRvciI7CiAjZWxzZQogc3RhdGljIE5TU3RyaW5nICpjb25zdCBVSVNjcm9s
bFZpZXdJbmRpY2F0b3JDbGFzcyA9IEAiVUlJbWFnZVZpZXciOwpJbmRleDogVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5tbQkocmV2aXNp
b24gMjU0OTI3KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tX
ZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MjUsNyArNDI1LDcgQEAgLSAodm9pZClhY2Nl
c3NpYmlsaXR5UmV0cmlldmVTcGVha1NlbGVjdAogLSAodm9pZClzZXRPdmVycmlkZVNhZmVBcmVh
SW5zZXRzOihVSUVkZ2VJbnNldHMpaW5zZXRzCiB7CiAgICAgX292ZXJyaWRlU2FmZUFyZWFJbnNl
dHMgPSBpbnNldHM7Ci0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEw
MDAwCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBbc2Vs
ZiBfdXBkYXRlU2FmZUFyZWFJbnNldHNdOwogI2VuZGlmCiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>